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