1 /* 2 * CDDL HEADER START 3 * 4 * The contents of this file are subject to the terms of the 5 * Common Development and Distribution License, Version 1.0 only 6 * (the "License"). You may not use this file except in compliance 7 * with the License. 8 * 9 * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE 10 * or http://www.opensolaris.org/os/licensing. 11 * See the License for the specific language governing permissions 12 * and limitations under the License. 13 * 14 * When distributing Covered Code, include this CDDL HEADER in each 15 * file and include the License file at usr/src/OPENSOLARIS.LICENSE. 16 * If applicable, add the following below this CDDL HEADER, with the 17 * fields enclosed by brackets "[]" replaced with your own identifying 18 * information: Portions Copyright [yyyy] [name of copyright owner] 19 * 20 * CDDL HEADER END 21 */ 22 /* 23 * Copyright 2004 Sun Microsystems, Inc. All rights reserved. 24 * Use is subject to license terms. 25 */ 26 27 /* Copyright (c) 1990, 1991 UNIX System Laboratories, Inc. */ 28 /* Copyright (c) 1984, 1986, 1987, 1988, 1989, 1990 AT&T */ 29 /* All Rights Reserved */ 30 31 #include <sys/proc.h> 32 #include <sys/priocntl.h> 33 #include <sys/class.h> 34 #include <sys/disp.h> 35 #include <sys/rt.h> 36 #include <sys/rtpriocntl.h> 37 #include <sys/modctl.h> 38 39 /* 40 * The purpose of this file is to allow a user to make their own 41 * rt_dptbl. The contents of this file should be included in the 42 * rt_dptbl(4) man page with proper instructions for making 43 * and replacing the RT_DPTBL.kmod in modules/sched. This was the 44 * only way to provide functionality equivalent to the mkboot/cunix 45 * method in SVr4 without having the utilities mkboot/cunix in 46 * SunOS/Svr4. 47 * It is recommended that the system calls be used to change the time 48 * quantums instead of re-building the module. 49 */ 50 51 static struct modlmisc modlmisc = { 52 &mod_miscops, "realtime dispatch table" 53 }; 54 55 static struct modlinkage modlinkage = { 56 MODREV_1, { &modlmisc, NULL } 57 }; 58 59 int 60 _init() 61 { 62 return (mod_install(&modlinkage)); 63 } 64 65 int 66 _info(struct modinfo *modinfop) 67 { 68 return (mod_info(&modlinkage, modinfop)); 69 } 70 71 #define RTGPPRIO0 100 /* Global priority for RT priority 0 */ 72 73 rtdpent_t config_rt_dptbl[] = { 74 75 /* prilevel Time quantum */ 76 77 { RTGPPRIO0, 100 }, 78 { RTGPPRIO0+1, 100 }, 79 { RTGPPRIO0+2, 100 }, 80 { RTGPPRIO0+3, 100 }, 81 { RTGPPRIO0+4, 100 }, 82 { RTGPPRIO0+5, 100 }, 83 { RTGPPRIO0+6, 100 }, 84 { RTGPPRIO0+7, 100 }, 85 { RTGPPRIO0+8, 100 }, 86 { RTGPPRIO0+9, 100 }, 87 { RTGPPRIO0+10, 80 }, 88 { RTGPPRIO0+11, 80 }, 89 { RTGPPRIO0+12, 80 }, 90 { RTGPPRIO0+13, 80 }, 91 { RTGPPRIO0+14, 80 }, 92 { RTGPPRIO0+15, 80 }, 93 { RTGPPRIO0+16, 80 }, 94 { RTGPPRIO0+17, 80 }, 95 { RTGPPRIO0+18, 80 }, 96 { RTGPPRIO0+19, 80 }, 97 { RTGPPRIO0+20, 60 }, 98 { RTGPPRIO0+21, 60 }, 99 { RTGPPRIO0+22, 60 }, 100 { RTGPPRIO0+23, 60 }, 101 { RTGPPRIO0+24, 60 }, 102 { RTGPPRIO0+25, 60 }, 103 { RTGPPRIO0+26, 60 }, 104 { RTGPPRIO0+27, 60 }, 105 { RTGPPRIO0+28, 60 }, 106 { RTGPPRIO0+29, 60 }, 107 { RTGPPRIO0+30, 40 }, 108 { RTGPPRIO0+31, 40 }, 109 { RTGPPRIO0+32, 40 }, 110 { RTGPPRIO0+33, 40 }, 111 { RTGPPRIO0+34, 40 }, 112 { RTGPPRIO0+35, 40 }, 113 { RTGPPRIO0+36, 40 }, 114 { RTGPPRIO0+37, 40 }, 115 { RTGPPRIO0+38, 40 }, 116 { RTGPPRIO0+39, 40 }, 117 { RTGPPRIO0+40, 20 }, 118 { RTGPPRIO0+41, 20 }, 119 { RTGPPRIO0+42, 20 }, 120 { RTGPPRIO0+43, 20 }, 121 { RTGPPRIO0+44, 20 }, 122 { RTGPPRIO0+45, 20 }, 123 { RTGPPRIO0+46, 20 }, 124 { RTGPPRIO0+47, 20 }, 125 { RTGPPRIO0+48, 20 }, 126 { RTGPPRIO0+49, 20 }, 127 { RTGPPRIO0+50, 10 }, 128 { RTGPPRIO0+51, 10 }, 129 { RTGPPRIO0+52, 10 }, 130 { RTGPPRIO0+53, 10 }, 131 { RTGPPRIO0+54, 10 }, 132 { RTGPPRIO0+55, 10 }, 133 { RTGPPRIO0+56, 10 }, 134 { RTGPPRIO0+57, 10 }, 135 { RTGPPRIO0+58, 10 }, 136 { RTGPPRIO0+59, 10 } 137 }; 138 139 /* 140 * Return the address of config_rt_dptbl 141 */ 142 rtdpent_t * 143 rt_getdptbl() 144 { 145 return (config_rt_dptbl); 146 }