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