"Fossies" - the Fresh Open Source Software Archive

Member "dmd2/src/druntime/src/core/sys/solaris/sys/priocntl.d" (20 Nov 2020, 3180 Bytes) of package /linux/misc/dmd.2.094.2.linux.tar.xz:


As a special service "Fossies" has tried to format the requested source page into HTML format using (guessed) D source code syntax highlighting (style: standard) with prefixed line numbers and code folding option. Alternatively you can here view or download the uninterpreted source code file.

    1 /**
    2  * D header file for the Solaris priocntl(2) and priocntlset(2) functions.
    3  *
    4  * Copyright:   Copyright 2014 Jason King.
    5  * License:     $(HTTP www.boost.org/LICENSE_1.0.txt, Boost License 1.0).
    6  * Authors:     Jason King
    7  */
    8 
    9 /*
   10  * Copyright 2014 Jason King.
   11  * Distributed under the Boost Software License, Version 1.0.
   12  * See accompanying file LICENSE or copy at
   13  *  http://www.boost.org/LICENSE_1_0.txt
   14  */
   15 module core.sys.solaris.sys.priocntl;
   16 
   17 version (Solaris):
   18 nothrow:
   19 @nogc:
   20 extern (C):
   21 
   22 import core.sys.posix.sys.types : caddr_t, id_t;
   23 import core.sys.posix.sys.wait : idtype_t;
   24 import core.stdc.config : c_long;
   25 import core.sys.solaris.sys.procset;
   26 import core.sys.solaris.sys.types : pri_t;
   27 
   28 c_long priocntl(idtype_t, id_t, int, ...);
   29 c_long priocntlset(procset_t*, int, ...);
   30 
   31 
   32 enum PC_GETCID       = 0;       /* Get class ID */
   33 enum PC_GETCLINFO    = 1;       /* Get info about a configured class */
   34 enum PC_SETPARMS     = 2;       /* Set scheduling parameters */
   35 enum PC_GETPARMS     = 3;       /* Get scheduling parameters */
   36 enum PC_ADMIN        = 4;       /* Scheduler administration (used by */
   37                                 /* dispadmin(1M), not for general use) */
   38 enum PC_GETPRIRANGE  = 5;       /* Get priority range for a class */
   39                                 /* posix.4; scheduling, not for general use */
   40 enum PC_DONICE       = 6;       /* Set or get nice value */
   41 enum PC_SETXPARMS    = 7;       /* Set extended scheduling parameters */
   42 enum PC_GETXPARMS    = 8;       /* Get extended scheduling parameters */
   43 enum PC_SETDFLCL     = 9;       /* Set default class, not for general use */
   44 enum PC_GETDFLCL     = 10;      /* Get default class, not for general use */
   45 enum PC_DOPRIO       = 11;      /* Set or get priority, not for general use */
   46 
   47 enum PC_CLNULL       = -1;
   48 
   49 enum PC_CLNMSZ       = 16;
   50 enum PC_CLINFOSZ     = (32 / int.sizeof);
   51 enum PC_CLPARMSZ     = (32 / int.sizeof);
   52 
   53 enum PC_GETNICE = 0;
   54 enum PC_SETNICE = 1;
   55 
   56 enum PC_GETPRIO      = 0;
   57 enum PC_SETPRIO      = 1;
   58 
   59 struct pcinfo_t
   60 {
   61     id_t                pc_cid;     // class id
   62     char[PC_CLNMSZ]     pc_clname=0;// class name
   63     int[PC_CLINFOSZ]    pc_clinfo;  // class information
   64 }
   65 
   66 struct pcparms_t
   67 {
   68     id_t                pc_cid;     // process class
   69     int[PC_CLPARMSZ]    pc_clparms; //class specific parameters
   70 }
   71 
   72 struct pcnice_t
   73 {
   74     int pc_val; // nice value
   75     int pc_op;  // type of operation, set or get
   76 }
   77 
   78 struct pcprio_t
   79 {
   80     int     pc_op;  // type of operation, set or get
   81     id_t    pc_cid; // class id
   82     int     pc_val; // priority value
   83 }
   84 
   85 // Used by the priocntl varargs interface
   86 // PC_SETXPARMS and PC_GETXPARMS
   87 enum PC_VAPARMCNT = 8;  // max # of kv pairs
   88 enum PC_KY_NULL   = 0;  // kv chain terminator
   89 enum PC_KY_CLNAME = 1;  // get the class name of a process or LWP
   90 
   91 struct pc_vaparm_t
   92 {
   93     int     pc_key;
   94     ulong   pc_parm;
   95 }
   96 
   97 struct pc_vaparms_t
   98 {
   99     int                         pc_vaparmscnt; // # of kv pairs
  100     pc_vaparm_t[PC_VAPARMCNT]   pc_parm;
  101 }
  102 
  103 // Not for general use
  104 struct pcpri_t
  105 {
  106     id_t    pc_cid;
  107     pri_t   pc_clpmax;
  108     pri_t   pc_clpmin;
  109 }
  110 
  111 struct pcadmin_t
  112 {
  113     id_t    pc_cid;
  114     caddr_t pc_cladmin;
  115 }
  116