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 #pragma ident "%Z%%M% %I% %E% SMI" 32 33 #include <sys/proc.h> 34 #include <sys/priocntl.h> 35 #include <sys/class.h> 36 #include <sys/disp.h> 37 #include <sys/rt.h> 38 #include <sys/rtpriocntl.h> 39 #include <sys/modctl.h> 40 41 /* 42 * The purpose of this file is to allow a user to make their own 43 * rt_dptbl. The contents of this file should be included in the 44 * rt_dptbl(4) man page with proper instructions for making 45 * and replacing the RT_DPTBL.kmod in modules/sched. This was the 46 * only way to provide functionality equivalent to the mkboot/cunix 47 * method in SVr4 without having the utilities mkboot/cunix in 48 * SunOS/Svr4. 49 * It is recommended that the system calls be used to change the time 50 * quantums instead of re-building the module. 51 */ 52 53 static struct modlmisc modlmisc = { 54 &mod_miscops, "realtime dispatch table" 55 }; 56 57 static struct modlinkage modlinkage = { 58 MODREV_1, &modlmisc, 0 59 }; 60 61 int 62 _init() 63 { 64 return (mod_install(&modlinkage)); 65 } 66 67 int 68 _info(struct modinfo *modinfop) 69 { 70 return (mod_info(&modlinkage, modinfop)); 71 } 72 73 #define RTGPPRIO0 100 /* Global priority for RT priority 0 */ 74 75 rtdpent_t config_rt_dptbl[] = { 76 77 /* prilevel Time quantum */ 78 79 RTGPPRIO0, 100, 80 RTGPPRIO0+1, 100, 81 RTGPPRIO0+2, 100, 82 RTGPPRIO0+3, 100, 83 RTGPPRIO0+4, 100, 84 RTGPPRIO0+5, 100, 85 RTGPPRIO0+6, 100, 86 RTGPPRIO0+7, 100, 87 RTGPPRIO0+8, 100, 88 RTGPPRIO0+9, 100, 89 RTGPPRIO0+10, 80, 90 RTGPPRIO0+11, 80, 91 RTGPPRIO0+12, 80, 92 RTGPPRIO0+13, 80, 93 RTGPPRIO0+14, 80, 94 RTGPPRIO0+15, 80, 95 RTGPPRIO0+16, 80, 96 RTGPPRIO0+17, 80, 97 RTGPPRIO0+18, 80, 98 RTGPPRIO0+19, 80, 99 RTGPPRIO0+20, 60, 100 RTGPPRIO0+21, 60, 101 RTGPPRIO0+22, 60, 102 RTGPPRIO0+23, 60, 103 RTGPPRIO0+24, 60, 104 RTGPPRIO0+25, 60, 105 RTGPPRIO0+26, 60, 106 RTGPPRIO0+27, 60, 107 RTGPPRIO0+28, 60, 108 RTGPPRIO0+29, 60, 109 RTGPPRIO0+30, 40, 110 RTGPPRIO0+31, 40, 111 RTGPPRIO0+32, 40, 112 RTGPPRIO0+33, 40, 113 RTGPPRIO0+34, 40, 114 RTGPPRIO0+35, 40, 115 RTGPPRIO0+36, 40, 116 RTGPPRIO0+37, 40, 117 RTGPPRIO0+38, 40, 118 RTGPPRIO0+39, 40, 119 RTGPPRIO0+40, 20, 120 RTGPPRIO0+41, 20, 121 RTGPPRIO0+42, 20, 122 RTGPPRIO0+43, 20, 123 RTGPPRIO0+44, 20, 124 RTGPPRIO0+45, 20, 125 RTGPPRIO0+46, 20, 126 RTGPPRIO0+47, 20, 127 RTGPPRIO0+48, 20, 128 RTGPPRIO0+49, 20, 129 RTGPPRIO0+50, 10, 130 RTGPPRIO0+51, 10, 131 RTGPPRIO0+52, 10, 132 RTGPPRIO0+53, 10, 133 RTGPPRIO0+54, 10, 134 RTGPPRIO0+55, 10, 135 RTGPPRIO0+56, 10, 136 RTGPPRIO0+57, 10, 137 RTGPPRIO0+58, 10, 138 RTGPPRIO0+59, 10 139 }; 140 141 /* 142 * Return the address of config_rt_dptbl 143 */ 144 rtdpent_t * 145 rt_getdptbl() 146 { 147 return (config_rt_dptbl); 148 } 149