[BACK]Return to sysctl.h CVS log [TXT][DIR] Up to [local] / sys / sys

Annotation of sys/sys/sysctl.h, Revision 1.1

1.1     ! nbrk        1: /*     $OpenBSD: sysctl.h,v 1.91 2007/04/12 22:14:15 tedu Exp $        */
        !             2: /*     $NetBSD: sysctl.h,v 1.16 1996/04/09 20:55:36 cgd Exp $  */
        !             3:
        !             4: /*
        !             5:  * Copyright (c) 1989, 1993
        !             6:  *     The Regents of the University of California.  All rights reserved.
        !             7:  *
        !             8:  * This code is derived from software contributed to Berkeley by
        !             9:  * Mike Karels at Berkeley Software Design, Inc.
        !            10:  *
        !            11:  * Redistribution and use in source and binary forms, with or without
        !            12:  * modification, are permitted provided that the following conditions
        !            13:  * are met:
        !            14:  * 1. Redistributions of source code must retain the above copyright
        !            15:  *    notice, this list of conditions and the following disclaimer.
        !            16:  * 2. Redistributions in binary form must reproduce the above copyright
        !            17:  *    notice, this list of conditions and the following disclaimer in the
        !            18:  *    documentation and/or other materials provided with the distribution.
        !            19:  * 3. Neither the name of the University nor the names of its contributors
        !            20:  *    may be used to endorse or promote products derived from this software
        !            21:  *    without specific prior written permission.
        !            22:  *
        !            23:  * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
        !            24:  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
        !            25:  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
        !            26:  * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
        !            27:  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
        !            28:  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
        !            29:  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
        !            30:  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
        !            31:  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
        !            32:  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
        !            33:  * SUCH DAMAGE.
        !            34:  *
        !            35:  *     @(#)sysctl.h    8.2 (Berkeley) 3/30/95
        !            36:  */
        !            37:
        !            38: #ifndef _SYS_SYSCTL_H_
        !            39: #define        _SYS_SYSCTL_H_
        !            40:
        !            41: /*
        !            42:  * These are for the eproc structure defined below.
        !            43:  */
        !            44: #ifndef _KERNEL
        !            45: #include <sys/time.h>
        !            46: #include <sys/ucred.h>
        !            47: #include <sys/proc.h>
        !            48: #include <sys/resource.h>
        !            49: #endif
        !            50:
        !            51: #include <sys/resourcevar.h>   /* XXX */
        !            52:
        !            53: #include <uvm/uvm_extern.h>
        !            54:
        !            55: /*
        !            56:  * Definitions for sysctl call.  The sysctl call uses a hierarchical name
        !            57:  * for objects that can be examined or modified.  The name is expressed as
        !            58:  * a sequence of integers.  Like a file path name, the meaning of each
        !            59:  * component depends on its place in the hierarchy.  The top-level and kern
        !            60:  * identifiers are defined here, and other identifiers are defined in the
        !            61:  * respective subsystem header files.
        !            62:  */
        !            63:
        !            64: #define        CTL_MAXNAME     12      /* largest number of components supported */
        !            65:
        !            66: /*
        !            67:  * Each subsystem defined by sysctl defines a list of variables
        !            68:  * for that subsystem. Each name is either a node with further
        !            69:  * levels defined below it, or it is a leaf of some particular
        !            70:  * type given below. Each sysctl level defines a set of name/type
        !            71:  * pairs to be used by sysctl(1) in manipulating the subsystem.
        !            72:  */
        !            73: struct ctlname {
        !            74:        char    *ctl_name;      /* subsystem name */
        !            75:        int     ctl_type;       /* type of name */
        !            76: };
        !            77: #define        CTLTYPE_NODE    1       /* name is a node */
        !            78: #define        CTLTYPE_INT     2       /* name describes an integer */
        !            79: #define        CTLTYPE_STRING  3       /* name describes a string */
        !            80: #define        CTLTYPE_QUAD    4       /* name describes a 64-bit number */
        !            81: #define        CTLTYPE_STRUCT  5       /* name describes a structure */
        !            82:
        !            83: /*
        !            84:  * Top-level identifiers
        !            85:  */
        !            86: #define        CTL_UNSPEC      0               /* unused */
        !            87: #define        CTL_KERN        1               /* "high kernel": proc, limits */
        !            88: #define        CTL_VM          2               /* virtual memory */
        !            89: #define        CTL_FS          3               /* file system, mount type is next */
        !            90: #define        CTL_NET         4               /* network, see socket.h */
        !            91: #define        CTL_DEBUG       5               /* debugging parameters */
        !            92: #define        CTL_HW          6               /* generic cpu/io */
        !            93: #define        CTL_MACHDEP     7               /* machine dependent */
        !            94: #define        CTL_USER        8               /* user-level */
        !            95: #define        CTL_DDB         9               /* DDB user interface, see db_var.h */
        !            96: #define        CTL_VFS         10              /* VFS sysctl's */
        !            97: #define        CTL_MAXID       11              /* number of valid top-level ids */
        !            98:
        !            99: #define        CTL_NAMES { \
        !           100:        { 0, 0 }, \
        !           101:        { "kern", CTLTYPE_NODE }, \
        !           102:        { "vm", CTLTYPE_NODE }, \
        !           103:        { "fs", CTLTYPE_NODE }, \
        !           104:        { "net", CTLTYPE_NODE }, \
        !           105:        { "debug", CTLTYPE_NODE }, \
        !           106:        { "hw", CTLTYPE_NODE }, \
        !           107:        { "machdep", CTLTYPE_NODE }, \
        !           108:        { "user", CTLTYPE_NODE }, \
        !           109:        { "ddb", CTLTYPE_NODE }, \
        !           110:        { "vfs", CTLTYPE_NODE }, \
        !           111: }
        !           112:
        !           113: /*
        !           114:  * CTL_KERN identifiers
        !           115:  */
        !           116: #define        KERN_OSTYPE              1      /* string: system version */
        !           117: #define        KERN_OSRELEASE           2      /* string: system release */
        !           118: #define        KERN_OSREV               3      /* int: system revision */
        !           119: #define        KERN_VERSION             4      /* string: compile time info */
        !           120: #define        KERN_MAXVNODES           5      /* int: max vnodes */
        !           121: #define        KERN_MAXPROC             6      /* int: max processes */
        !           122: #define        KERN_MAXFILES            7      /* int: max open files */
        !           123: #define        KERN_ARGMAX              8      /* int: max arguments to exec */
        !           124: #define        KERN_SECURELVL           9      /* int: system security level */
        !           125: #define        KERN_HOSTNAME           10      /* string: hostname */
        !           126: #define        KERN_HOSTID             11      /* int: host identifier */
        !           127: #define        KERN_CLOCKRATE          12      /* struct: struct clockinfo */
        !           128: #define        KERN_VNODE              13      /* struct: vnode structures */
        !           129: #define        KERN_PROC               14      /* struct: process entries */
        !           130: #define        KERN_FILE               15      /* struct: file entries */
        !           131: #define        KERN_PROF               16      /* node: kernel profiling info */
        !           132: #define        KERN_POSIX1             17      /* int: POSIX.1 version */
        !           133: #define        KERN_NGROUPS            18      /* int: # of supplemental group ids */
        !           134: #define        KERN_JOB_CONTROL        19      /* int: is job control available */
        !           135: #define        KERN_SAVED_IDS          20      /* int: saved set-user/group-ID */
        !           136: #define        KERN_BOOTTIME           21      /* struct: time kernel was booted */
        !           137: #define        KERN_DOMAINNAME         22      /* string: (YP) domainname */
        !           138: #define        KERN_MAXPARTITIONS      23      /* int: number of partitions/disk */
        !           139: #define        KERN_RAWPARTITION       24      /* int: raw partition number */
        !           140: /*define gap                   25      */
        !           141: /*define gap                   26      */
        !           142: #define        KERN_OSVERSION          27      /* string: kernel build version */
        !           143: #define        KERN_SOMAXCONN          28      /* int: listen queue maximum */
        !           144: #define        KERN_SOMINCONN          29      /* int: half-open controllable param */
        !           145: #define        KERN_USERMOUNT          30      /* int: users may mount filesystems */
        !           146: #define        KERN_RND                31      /* struct: rnd(4) statistics */
        !           147: #define        KERN_NOSUIDCOREDUMP     32      /* int: no setuid coredumps ever */
        !           148: #define        KERN_FSYNC              33      /* int: file synchronization support */
        !           149: #define        KERN_SYSVMSG            34      /* int: SysV message queue suppoprt */
        !           150: #define        KERN_SYSVSEM            35      /* int: SysV semaphore support */
        !           151: #define        KERN_SYSVSHM            36      /* int: SysV shared memory support */
        !           152: #define        KERN_ARND               37      /* int: random integer from arc4rnd */
        !           153: #define        KERN_MSGBUFSIZE         38      /* int: size of message buffer */
        !           154: #define KERN_MALLOCSTATS       39      /* node: malloc statistics */
        !           155: #define KERN_CPTIME            40      /* array: cp_time */
        !           156: #define KERN_NCHSTATS          41      /* struct: vfs cache statistics */
        !           157: #define KERN_FORKSTAT          42      /* struct: fork statistics */
        !           158: #define KERN_NSELCOLL          43      /* int: select(2) collisions */
        !           159: #define KERN_TTY               44      /* node: tty information */
        !           160: #define        KERN_CCPU               45      /* int: ccpu */
        !           161: #define        KERN_FSCALE             46      /* int: fscale */
        !           162: #define        KERN_NPROCS             47      /* int: number of processes */
        !           163: #define        KERN_MSGBUF             48      /* message buffer, KERN_MSGBUFSIZE */
        !           164: #define        KERN_POOL               49      /* struct: pool information */
        !           165: #define        KERN_STACKGAPRANDOM     50      /* int: stackgap_random */
        !           166: #define        KERN_SYSVIPC_INFO       51      /* struct: SysV sem/shm/msg info */
        !           167: #define KERN_USERCRYPTO                52      /* int: usercrypto */
        !           168: #define KERN_CRYPTODEVALLOWSOFT        53      /* int: cryptodevallowsoft */
        !           169: #define KERN_SPLASSERT         54      /* int: splassert */
        !           170: #define KERN_PROC_ARGS         55      /* node: proc args and env */
        !           171: #define        KERN_NFILES             56      /* int: number of open files */
        !           172: #define        KERN_TTYCOUNT           57      /* int: number of tty devices */
        !           173: #define KERN_NUMVNODES         58      /* int: number of vnodes in use */
        !           174: #define        KERN_MBSTAT             59      /* struct: mbuf statistics */
        !           175: #define KERN_USERASYMCRYPTO    60      /* int: usercrypto */
        !           176: #define        KERN_SEMINFO            61      /* struct: SysV struct seminfo */
        !           177: #define        KERN_SHMINFO            62      /* struct: SysV struct shminfo */
        !           178: #define KERN_INTRCNT           63      /* node: interrupt counters */
        !           179: #define        KERN_WATCHDOG           64      /* node: watchdog */
        !           180: #define        KERN_EMUL               65      /* node: emuls */
        !           181: #define        KERN_PROC2              66      /* struct: process entries */
        !           182: #define        KERN_MAXCLUSTERS        67      /* number of mclusters */
        !           183: #define KERN_EVCOUNT           68      /* node: event counters */
        !           184: #define        KERN_TIMECOUNTER        69      /* node: timecounter */
        !           185: #define        KERN_MAXLOCKSPERUID     70      /* int: locks per uid */
        !           186: #define        KERN_CPTIME2            71      /* array: cp_time2 */
        !           187: #define        KERN_MAXID              72      /* number of valid kern ids */
        !           188:
        !           189: #define        CTL_KERN_NAMES { \
        !           190:        { 0, 0 }, \
        !           191:        { "ostype", CTLTYPE_STRING }, \
        !           192:        { "osrelease", CTLTYPE_STRING }, \
        !           193:        { "osrevision", CTLTYPE_INT }, \
        !           194:        { "version", CTLTYPE_STRING }, \
        !           195:        { "maxvnodes", CTLTYPE_INT }, \
        !           196:        { "maxproc", CTLTYPE_INT }, \
        !           197:        { "maxfiles", CTLTYPE_INT }, \
        !           198:        { "argmax", CTLTYPE_INT }, \
        !           199:        { "securelevel", CTLTYPE_INT }, \
        !           200:        { "hostname", CTLTYPE_STRING }, \
        !           201:        { "hostid", CTLTYPE_INT }, \
        !           202:        { "clockrate", CTLTYPE_STRUCT }, \
        !           203:        { "vnode", CTLTYPE_STRUCT }, \
        !           204:        { "proc", CTLTYPE_STRUCT }, \
        !           205:        { "file", CTLTYPE_STRUCT }, \
        !           206:        { "profiling", CTLTYPE_NODE }, \
        !           207:        { "posix1version", CTLTYPE_INT }, \
        !           208:        { "ngroups", CTLTYPE_INT }, \
        !           209:        { "job_control", CTLTYPE_INT }, \
        !           210:        { "saved_ids", CTLTYPE_INT }, \
        !           211:        { "boottime", CTLTYPE_STRUCT }, \
        !           212:        { "domainname", CTLTYPE_STRING }, \
        !           213:        { "maxpartitions", CTLTYPE_INT }, \
        !           214:        { "rawpartition", CTLTYPE_INT }, \
        !           215:        { "gap", 0 }, \
        !           216:        { "gap", 0 }, \
        !           217:        { "osversion", CTLTYPE_STRING }, \
        !           218:        { "somaxconn", CTLTYPE_INT }, \
        !           219:        { "sominconn", CTLTYPE_INT }, \
        !           220:        { "usermount", CTLTYPE_INT }, \
        !           221:        { "random", CTLTYPE_STRUCT }, \
        !           222:        { "nosuidcoredump", CTLTYPE_INT }, \
        !           223:        { "fsync", CTLTYPE_INT }, \
        !           224:        { "sysvmsg", CTLTYPE_INT }, \
        !           225:        { "sysvsem", CTLTYPE_INT }, \
        !           226:        { "sysvshm", CTLTYPE_INT }, \
        !           227:        { "arandom", CTLTYPE_INT }, \
        !           228:        { "msgbufsize", CTLTYPE_INT }, \
        !           229:        { "malloc", CTLTYPE_NODE }, \
        !           230:        { "cp_time", CTLTYPE_STRUCT }, \
        !           231:        { "nchstats", CTLTYPE_STRUCT }, \
        !           232:        { "forkstat", CTLTYPE_STRUCT }, \
        !           233:        { "nselcoll", CTLTYPE_INT }, \
        !           234:        { "tty", CTLTYPE_NODE }, \
        !           235:        { "ccpu", CTLTYPE_INT }, \
        !           236:        { "fscale", CTLTYPE_INT }, \
        !           237:        { "nprocs", CTLTYPE_INT }, \
        !           238:        { "msgbuf", CTLTYPE_STRUCT }, \
        !           239:        { "pool", CTLTYPE_NODE }, \
        !           240:        { "stackgap_random", CTLTYPE_INT }, \
        !           241:        { "sysvipc_info", CTLTYPE_INT }, \
        !           242:        { "usercrypto", CTLTYPE_INT }, \
        !           243:        { "cryptodevallowsoft", CTLTYPE_INT }, \
        !           244:        { "splassert", CTLTYPE_INT }, \
        !           245:        { "procargs", CTLTYPE_NODE }, \
        !           246:        { "nfiles", CTLTYPE_INT }, \
        !           247:        { "ttycount", CTLTYPE_INT }, \
        !           248:        { "numvnodes", CTLTYPE_INT }, \
        !           249:        { "mbstat", CTLTYPE_STRUCT }, \
        !           250:        { "userasymcrypto", CTLTYPE_INT }, \
        !           251:        { "seminfo", CTLTYPE_STRUCT }, \
        !           252:        { "shminfo", CTLTYPE_STRUCT }, \
        !           253:        { "intrcnt", CTLTYPE_NODE }, \
        !           254:        { "watchdog", CTLTYPE_NODE }, \
        !           255:        { "emul", CTLTYPE_NODE }, \
        !           256:        { "proc2", CTLTYPE_STRUCT }, \
        !           257:        { "maxclusters", CTLTYPE_INT }, \
        !           258:        { "evcount", CTLTYPE_NODE }, \
        !           259:        { "timecounter", CTLTYPE_NODE }, \
        !           260:        { "maxlocksperuid", CTLTYPE_INT }, \
        !           261:        { "cp_time2", CTLTYPE_STRUCT }, \
        !           262: }
        !           263:
        !           264: /*
        !           265:  * KERN_EMUL subtypes.
        !           266:  */
        !           267: #define        KERN_EMUL_NUM           0
        !           268: /* Fourth level sysctl names */
        !           269: #define KERN_EMUL_NAME         0
        !           270: #define KERN_EMUL_ENABLED      1
        !           271:
        !           272:
        !           273: /*
        !           274:  * KERN_PROC subtypes
        !           275:  */
        !           276: #define        KERN_PROC_ALL           0       /* everything but kernel threads */
        !           277: #define        KERN_PROC_PID           1       /* by process id */
        !           278: #define        KERN_PROC_PGRP          2       /* by process group id */
        !           279: #define        KERN_PROC_SESSION       3       /* by session of pid */
        !           280: #define        KERN_PROC_TTY           4       /* by controlling tty */
        !           281: #define        KERN_PROC_UID           5       /* by effective uid */
        !           282: #define        KERN_PROC_RUID          6       /* by real uid */
        !           283: #define        KERN_PROC_KTHREAD       7       /* also return kernel threads */
        !           284:
        !           285: /*
        !           286:  * KERN_SYSVIPC_INFO subtypes
        !           287:  */
        !           288: #define KERN_SYSVIPC_MSG_INFO  1       /* msginfo and msqid_ds */
        !           289: #define KERN_SYSVIPC_SEM_INFO  2       /* seminfo and semid_ds */
        !           290: #define KERN_SYSVIPC_SHM_INFO  3       /* shminfo and shmid_ds */
        !           291:
        !           292: /*
        !           293:  * KERN_PROC_ARGS subtypes
        !           294:  */
        !           295: #define KERN_PROC_ARGV         1
        !           296: #define KERN_PROC_NARGV                2
        !           297: #define KERN_PROC_ENV          3
        !           298: #define KERN_PROC_NENV         4
        !           299:
        !           300: /*
        !           301:  * KERN_PROC subtype ops return arrays of augmented proc structures:
        !           302:  */
        !           303: struct kinfo_proc {
        !           304:        struct  proc kp_proc;                   /* proc structure */
        !           305:        struct  eproc {
        !           306:                struct  proc *e_paddr;          /* address of proc */
        !           307:                struct  session *e_sess;        /* session pointer */
        !           308:                struct  pcred e_pcred;          /* process credentials */
        !           309:                struct  ucred e_ucred;          /* current credentials */
        !           310:                struct  vmspace e_vm;           /* address space */
        !           311:                struct  pstats e_pstats;        /* process stats */
        !           312:                int     e_pstats_valid;         /* pstats valid? */
        !           313:                pid_t   e_ppid;                 /* parent process id */
        !           314:                pid_t   e_pgid;                 /* process group id */
        !           315:                short   e_jobc;                 /* job control counter */
        !           316:                dev_t   e_tdev;                 /* controlling tty dev */
        !           317:                pid_t   e_tpgid;                /* tty process group id */
        !           318:                struct  session *e_tsess;       /* tty session pointer */
        !           319: #define        WMESGLEN        7
        !           320:                char    e_wmesg[WMESGLEN+1];    /* wchan message */
        !           321:                segsz_t e_xsize;                /* text size */
        !           322:                short   e_xrssize;              /* text rss */
        !           323:                short   e_xccount;              /* text references */
        !           324:                short   e_xswrss;
        !           325:                long    e_flag;
        !           326: #define        EPROC_CTTY      0x01    /* controlling tty vnode active */
        !           327: #define        EPROC_SLEADER   0x02    /* session leader */
        !           328:                char    e_login[MAXLOGNAME];    /* setlogin() name */
        !           329: #define        EMULNAMELEN     7
        !           330:                char    e_emul[EMULNAMELEN+1];  /* syscall emulation name */
        !           331:                rlim_t  e_maxrss;
        !           332:                struct plimit *e_limit;
        !           333:        } kp_eproc;
        !           334: };
        !           335:
        !           336: /*
        !           337:  * KERN_PROC2 subtype ops return arrays of relatively fixed size
        !           338:  * structures of process info.   Use 8 byte alignment, and new
        !           339:  * elements should only be added to the end of this structure so
        !           340:  * binary compatibility can be preserved.
        !           341:  */
        !           342: #define        KI_NGROUPS      16
        !           343: #define        KI_MAXCOMLEN    24      /* extra for 8 byte alignment */
        !           344: #define        KI_WMESGLEN     8
        !           345: #define        KI_MAXLOGNAME   32
        !           346: #define        KI_EMULNAMELEN  8
        !           347:
        !           348: #define KI_NOCPU       (~(u_int64_t)0)
        !           349:
        !           350: struct kinfo_proc2 {
        !           351:        u_int64_t p_forw;               /* PTR: linked run/sleep queue. */
        !           352:        u_int64_t p_back;
        !           353:        u_int64_t p_paddr;              /* PTR: address of proc */
        !           354:
        !           355:        u_int64_t p_addr;               /* PTR: Kernel virtual addr of u-area */
        !           356:        u_int64_t p_fd;                 /* PTR: Ptr to open files structure. */
        !           357:        u_int64_t p_stats;              /* PTR: Accounting/statistics */
        !           358:        u_int64_t p_limit;              /* PTR: Process limits. */
        !           359:        u_int64_t p_vmspace;            /* PTR: Address space. */
        !           360:        u_int64_t p_sigacts;            /* PTR: Signal actions, state */
        !           361:        u_int64_t p_sess;               /* PTR: session pointer */
        !           362:        u_int64_t p_tsess;              /* PTR: tty session pointer */
        !           363:        u_int64_t p_ru;                 /* PTR: Exit information. XXX */
        !           364:
        !           365:        int32_t p_eflag;                /* LONG: extra kinfo_proc2 flags */
        !           366:        int32_t p_exitsig;              /* INT: signal to sent to parent on exit */
        !           367:        int32_t p_flag;                 /* INT: P_* flags. */
        !           368:
        !           369:        int32_t p_pid;                  /* PID_T: Process identifier. */
        !           370:        int32_t p_ppid;                 /* PID_T: Parent process id */
        !           371:        int32_t p_sid;                  /* PID_T: session id */
        !           372:        int32_t p__pgid;                /* PID_T: process group id */
        !           373:                                        /* XXX: <sys/proc.h> hijacks p_pgid */
        !           374:        int32_t p_tpgid;                /* PID_T: tty process group id */
        !           375:
        !           376:        u_int32_t p_uid;                /* UID_T: effective user id */
        !           377:        u_int32_t p_ruid;               /* UID_T: real user id */
        !           378:        u_int32_t p_gid;                /* GID_T: effective group id */
        !           379:        u_int32_t p_rgid;               /* GID_T: real group id */
        !           380:
        !           381:        u_int32_t p_groups[KI_NGROUPS]; /* GID_T: groups */
        !           382:        int16_t p_ngroups;              /* SHORT: number of groups */
        !           383:
        !           384:        int16_t p_jobc;                 /* SHORT: job control counter */
        !           385:        u_int32_t p_tdev;               /* DEV_T: controlling tty dev */
        !           386:
        !           387:        u_int32_t p_estcpu;             /* U_INT: Time averaged value of p_cpticks. */
        !           388:        u_int32_t p_rtime_sec;          /* STRUCT TIMEVAL: Real time. */
        !           389:        u_int32_t p_rtime_usec;         /* STRUCT TIMEVAL: Real time. */
        !           390:        int32_t p_cpticks;              /* INT: Ticks of cpu time. */
        !           391:        u_int32_t p_pctcpu;             /* FIXPT_T: %cpu for this process during p_swtime */
        !           392:        u_int32_t p_swtime;             /* U_INT: Time swapped in or out. */
        !           393:        u_int32_t p_slptime;            /* U_INT: Time since last blocked. */
        !           394:        int32_t p_schedflags;           /* INT: PSCHED_* flags */
        !           395:
        !           396:        u_int64_t p_uticks;             /* U_QUAD_T: Statclock hits in user mode. */
        !           397:        u_int64_t p_sticks;             /* U_QUAD_T: Statclock hits in system mode. */
        !           398:        u_int64_t p_iticks;             /* U_QUAD_T: Statclock hits processing intr. */
        !           399:
        !           400:        u_int64_t p_tracep;             /* PTR: Trace to vnode or file */
        !           401:        int32_t p_traceflag;            /* INT: Kernel trace points. */
        !           402:
        !           403:        int32_t p_holdcnt;              /* INT: If non-zero, don't swap. */
        !           404:
        !           405:        int32_t p_siglist;              /* INT: Signals arrived but not delivered. */
        !           406:        u_int32_t p_sigmask;            /* SIGSET_T: Current signal mask. */
        !           407:        u_int32_t p_sigignore;          /* SIGSET_T: Signals being ignored. */
        !           408:        u_int32_t p_sigcatch;           /* SIGSET_T: Signals being caught by user. */
        !           409:
        !           410:        int8_t  p_stat;                 /* CHAR: S* process status (from LWP). */
        !           411:        u_int8_t p_priority;            /* U_CHAR: Process priority. */
        !           412:        u_int8_t p_usrpri;              /* U_CHAR: User-priority based on p_cpu and p_nice. */
        !           413:        u_int8_t p_nice;                /* U_CHAR: Process "nice" value. */
        !           414:
        !           415:        u_int16_t p_xstat;              /* U_SHORT: Exit status for wait; also stop signal. */
        !           416:        u_int16_t p_acflag;             /* U_SHORT: Accounting flags. */
        !           417:
        !           418:        char    p_comm[KI_MAXCOMLEN];
        !           419:
        !           420:        char    p_wmesg[KI_WMESGLEN];   /* wchan message */
        !           421:        u_int64_t p_wchan;              /* PTR: sleep address. */
        !           422:
        !           423:        char    p_login[KI_MAXLOGNAME]; /* setlogin() name */
        !           424:
        !           425:        int32_t p_vm_rssize;            /* SEGSZ_T: current resident set size in pages */
        !           426:        int32_t p_vm_tsize;             /* SEGSZ_T: text size (pages) */
        !           427:        int32_t p_vm_dsize;             /* SEGSZ_T: data size (pages) */
        !           428:        int32_t p_vm_ssize;             /* SEGSZ_T: stack size (pages) */
        !           429:
        !           430:        int64_t p_uvalid;               /* CHAR: following p_u* members from struct user are valid */
        !           431:                                        /* XXX 64 bits for alignment */
        !           432:        u_int32_t p_ustart_sec;         /* STRUCT TIMEVAL: starting time. */
        !           433:        u_int32_t p_ustart_usec;        /* STRUCT TIMEVAL: starting time. */
        !           434:
        !           435:        u_int32_t p_uutime_sec;         /* STRUCT TIMEVAL: user time. */
        !           436:        u_int32_t p_uutime_usec;        /* STRUCT TIMEVAL: user time. */
        !           437:        u_int32_t p_ustime_sec;         /* STRUCT TIMEVAL: system time. */
        !           438:        u_int32_t p_ustime_usec;        /* STRUCT TIMEVAL: system time. */
        !           439:
        !           440:        u_int64_t p_uru_maxrss;         /* LONG: max resident set size. */
        !           441:        u_int64_t p_uru_ixrss;          /* LONG: integral shared memory size. */
        !           442:        u_int64_t p_uru_idrss;          /* LONG: integral unshared data ". */
        !           443:        u_int64_t p_uru_isrss;          /* LONG: integral unshared stack ". */
        !           444:        u_int64_t p_uru_minflt;         /* LONG: page reclaims. */
        !           445:        u_int64_t p_uru_majflt;         /* LONG: page faults. */
        !           446:        u_int64_t p_uru_nswap;          /* LONG: swaps. */
        !           447:        u_int64_t p_uru_inblock;        /* LONG: block input operations. */
        !           448:        u_int64_t p_uru_oublock;        /* LONG: block output operations. */
        !           449:        u_int64_t p_uru_msgsnd;         /* LONG: messages sent. */
        !           450:        u_int64_t p_uru_msgrcv;         /* LONG: messages received. */
        !           451:        u_int64_t p_uru_nsignals;       /* LONG: signals received. */
        !           452:        u_int64_t p_uru_nvcsw;          /* LONG: voluntary context switches. */
        !           453:        u_int64_t p_uru_nivcsw;         /* LONG: involuntary ". */
        !           454:
        !           455:        u_int32_t p_uctime_sec;         /* STRUCT TIMEVAL: child u+s time. */
        !           456:        u_int32_t p_uctime_usec;        /* STRUCT TIMEVAL: child u+s time. */
        !           457:        u_int64_t p_realflag;           /* INT: P_* flags (not including LWPs). */
        !           458:        u_int32_t p_svuid;              /* UID_T: saved user id */
        !           459:        u_int32_t p_svgid;              /* GID_T: saved group id */
        !           460:        char    p_emul[KI_EMULNAMELEN]; /* syscall emulation name */
        !           461:        u_int64_t p_rlim_rss_cur;       /* RLIM_T: soft limit for rss */
        !           462:        u_int64_t p_cpuid;              /* LONG: CPU id */
        !           463:        u_int64_t p_vm_map_size;        /* VSIZE_T: virtual size */
        !           464: };
        !           465:
        !           466: /*
        !           467:  * KERN_INTRCNT
        !           468:  */
        !           469: #define KERN_INTRCNT_NUM       1       /* int: # intrcnt */
        !           470: #define KERN_INTRCNT_CNT       2       /* node: intrcnt */
        !           471: #define KERN_INTRCNT_NAME      3       /* node: names */
        !           472: #define KERN_INTRCNT_VECTOR    4       /* node: interrupt vector # */
        !           473: #define KERN_INTRCNT_MAXID     5
        !           474:
        !           475: #define CTL_KERN_INTRCNT_NAMES { \
        !           476:        { 0, 0 }, \
        !           477:        { "nintrcnt", CTLTYPE_INT }, \
        !           478:        { "intrcnt", CTLTYPE_NODE }, \
        !           479:        { "intrname", CTLTYPE_NODE }, \
        !           480: }
        !           481:
        !           482: /*
        !           483:  * KERN_WATCHDOG
        !           484:  */
        !           485: #define KERN_WATCHDOG_PERIOD   1       /* int: watchdog period */
        !           486: #define KERN_WATCHDOG_AUTO     2       /* int: automatic tickle */
        !           487: #define KERN_WATCHDOG_MAXID    3
        !           488:
        !           489: #define CTL_KERN_WATCHDOG_NAMES { \
        !           490:        { 0, 0 }, \
        !           491:        { "period", CTLTYPE_INT }, \
        !           492:        { "auto", CTLTYPE_INT }, \
        !           493: }
        !           494:
        !           495: /*
        !           496:  * KERN_TIMECOUNTER
        !           497:  */
        !           498: #define KERN_TIMECOUNTER_TICK          1       /* int: number of revolutions */
        !           499: #define KERN_TIMECOUNTER_TIMESTEPWARNINGS 2    /* int: log a warning when time changes */
        !           500: #define KERN_TIMECOUNTER_HARDWARE      3       /* string: tick hardware used */
        !           501: #define KERN_TIMECOUNTER_CHOICE                4       /* string: tick hardware used */
        !           502: #define KERN_TIMECOUNTER_MAXID         5
        !           503:
        !           504: #define CTL_KERN_TIMECOUNTER_NAMES { \
        !           505:        { 0, 0 }, \
        !           506:        { "tick", CTLTYPE_INT }, \
        !           507:        { "timestepwarnings", CTLTYPE_INT }, \
        !           508:        { "hardware", CTLTYPE_STRING }, \
        !           509:        { "choice", CTLTYPE_STRING }, \
        !           510: }
        !           511:
        !           512: /*
        !           513:  * CTL_FS identifiers
        !           514:  */
        !           515: #define        FS_POSIX        1               /* POSIX flags */
        !           516: #define        FS_MAXID        2
        !           517:
        !           518: #define        CTL_FS_NAMES { \
        !           519:        { 0, 0 }, \
        !           520:        { "posix", CTLTYPE_NODE }, \
        !           521: }
        !           522:
        !           523: /*
        !           524:  * CTL_FS identifiers
        !           525:  */
        !           526: #define        FS_POSIX_SETUID 1               /* int: always clear SGID/SUID bit when owner change */
        !           527: #define        FS_POSIX_MAXID  2
        !           528:
        !           529: #define        CTL_FS_POSIX_NAMES { \
        !           530:        { 0, 0 }, \
        !           531:        { "setuid", CTLTYPE_INT }, \
        !           532: }
        !           533:
        !           534: /*
        !           535:  * CTL_HW identifiers
        !           536:  */
        !           537: #define        HW_MACHINE       1              /* string: machine class */
        !           538: #define        HW_MODEL         2              /* string: specific machine model */
        !           539: #define        HW_NCPU          3              /* int: number of cpus */
        !           540: #define        HW_BYTEORDER     4              /* int: machine byte order */
        !           541: #define        HW_PHYSMEM       5              /* int: total memory */
        !           542: #define        HW_USERMEM       6              /* int: non-kernel memory */
        !           543: #define        HW_PAGESIZE      7              /* int: software page size */
        !           544: #define        HW_DISKNAMES     8              /* strings: disk drive names */
        !           545: #define        HW_DISKSTATS     9              /* struct: diskstats[] */
        !           546: #define        HW_DISKCOUNT    10              /* int: number of disks */
        !           547: #define        HW_SENSORS      11              /* node: hardware monitors */
        !           548: #define        HW_CPUSPEED     12              /* get CPU frequency */
        !           549: #define        HW_SETPERF      13              /* set CPU performance % */
        !           550: #define        HW_VENDOR       14              /* string: vendor name */
        !           551: #define        HW_PRODUCT      15              /* string: product name */
        !           552: #define        HW_VERSION      16              /* string: hardware version */
        !           553: #define        HW_SERIALNO     17              /* string: hardware serial number */
        !           554: #define        HW_UUID         18              /* string: universal unique id */
        !           555: #define        HW_MAXID        19              /* number of valid hw ids */
        !           556:
        !           557: #define        CTL_HW_NAMES { \
        !           558:        { 0, 0 }, \
        !           559:        { "machine", CTLTYPE_STRING }, \
        !           560:        { "model", CTLTYPE_STRING }, \
        !           561:        { "ncpu", CTLTYPE_INT }, \
        !           562:        { "byteorder", CTLTYPE_INT }, \
        !           563:        { "physmem", CTLTYPE_INT }, \
        !           564:        { "usermem", CTLTYPE_INT }, \
        !           565:        { "pagesize", CTLTYPE_INT }, \
        !           566:        { "disknames", CTLTYPE_STRING }, \
        !           567:        { "diskstats", CTLTYPE_STRUCT }, \
        !           568:        { "diskcount", CTLTYPE_INT }, \
        !           569:        { "sensors", CTLTYPE_NODE}, \
        !           570:        { "cpuspeed", CTLTYPE_INT }, \
        !           571:        { "setperf", CTLTYPE_INT }, \
        !           572:        { "vendor", CTLTYPE_STRING }, \
        !           573:        { "product", CTLTYPE_STRING }, \
        !           574:        { "version", CTLTYPE_STRING }, \
        !           575:        { "serialno", CTLTYPE_STRING }, \
        !           576:        { "uuid", CTLTYPE_STRING }, \
        !           577: }
        !           578:
        !           579: /*
        !           580:  * CTL_USER definitions
        !           581:  */
        !           582: #define        USER_CS_PATH             1      /* string: _CS_PATH */
        !           583: #define        USER_BC_BASE_MAX         2      /* int: BC_BASE_MAX */
        !           584: #define        USER_BC_DIM_MAX          3      /* int: BC_DIM_MAX */
        !           585: #define        USER_BC_SCALE_MAX        4      /* int: BC_SCALE_MAX */
        !           586: #define        USER_BC_STRING_MAX       5      /* int: BC_STRING_MAX */
        !           587: #define        USER_COLL_WEIGHTS_MAX    6      /* int: COLL_WEIGHTS_MAX */
        !           588: #define        USER_EXPR_NEST_MAX       7      /* int: EXPR_NEST_MAX */
        !           589: #define        USER_LINE_MAX            8      /* int: LINE_MAX */
        !           590: #define        USER_RE_DUP_MAX          9      /* int: RE_DUP_MAX */
        !           591: #define        USER_POSIX2_VERSION     10      /* int: POSIX2_VERSION */
        !           592: #define        USER_POSIX2_C_BIND      11      /* int: POSIX2_C_BIND */
        !           593: #define        USER_POSIX2_C_DEV       12      /* int: POSIX2_C_DEV */
        !           594: #define        USER_POSIX2_CHAR_TERM   13      /* int: POSIX2_CHAR_TERM */
        !           595: #define        USER_POSIX2_FORT_DEV    14      /* int: POSIX2_FORT_DEV */
        !           596: #define        USER_POSIX2_FORT_RUN    15      /* int: POSIX2_FORT_RUN */
        !           597: #define        USER_POSIX2_LOCALEDEF   16      /* int: POSIX2_LOCALEDEF */
        !           598: #define        USER_POSIX2_SW_DEV      17      /* int: POSIX2_SW_DEV */
        !           599: #define        USER_POSIX2_UPE         18      /* int: POSIX2_UPE */
        !           600: #define        USER_STREAM_MAX         19      /* int: POSIX2_STREAM_MAX */
        !           601: #define        USER_TZNAME_MAX         20      /* int: POSIX2_TZNAME_MAX */
        !           602: #define        USER_MAXID              21      /* number of valid user ids */
        !           603:
        !           604: #define        CTL_USER_NAMES { \
        !           605:        { 0, 0 }, \
        !           606:        { "cs_path", CTLTYPE_STRING }, \
        !           607:        { "bc_base_max", CTLTYPE_INT }, \
        !           608:        { "bc_dim_max", CTLTYPE_INT }, \
        !           609:        { "bc_scale_max", CTLTYPE_INT }, \
        !           610:        { "bc_string_max", CTLTYPE_INT }, \
        !           611:        { "coll_weights_max", CTLTYPE_INT }, \
        !           612:        { "expr_nest_max", CTLTYPE_INT }, \
        !           613:        { "line_max", CTLTYPE_INT }, \
        !           614:        { "re_dup_max", CTLTYPE_INT }, \
        !           615:        { "posix2_version", CTLTYPE_INT }, \
        !           616:        { "posix2_c_bind", CTLTYPE_INT }, \
        !           617:        { "posix2_c_dev", CTLTYPE_INT }, \
        !           618:        { "posix2_char_term", CTLTYPE_INT }, \
        !           619:        { "posix2_fort_dev", CTLTYPE_INT }, \
        !           620:        { "posix2_fort_run", CTLTYPE_INT }, \
        !           621:        { "posix2_localedef", CTLTYPE_INT }, \
        !           622:        { "posix2_sw_dev", CTLTYPE_INT }, \
        !           623:        { "posix2_upe", CTLTYPE_INT }, \
        !           624:        { "stream_max", CTLTYPE_INT }, \
        !           625:        { "tzname_max", CTLTYPE_INT }, \
        !           626: }
        !           627:
        !           628: /*
        !           629:  * CTL_DEBUG definitions
        !           630:  *
        !           631:  * Second level identifier specifies which debug variable.
        !           632:  * Third level identifier specifies which structure component.
        !           633:  */
        !           634: #define        CTL_DEBUG_NAME          0       /* string: variable name */
        !           635: #define        CTL_DEBUG_VALUE         1       /* int: variable value */
        !           636: #define        CTL_DEBUG_MAXID         20
        !           637:
        !           638: #ifdef _KERNEL
        !           639: #ifdef DEBUG
        !           640: /*
        !           641:  * CTL_DEBUG variables.
        !           642:  *
        !           643:  * These are declared as separate variables so that they can be
        !           644:  * individually initialized at the location of their associated
        !           645:  * variable. The loader prevents multiple use by issuing errors
        !           646:  * if a variable is initialized in more than one place. They are
        !           647:  * aggregated into an array in debug_sysctl(), so that it can
        !           648:  * conveniently locate them when querried. If more debugging
        !           649:  * variables are added, they must also be declared here and also
        !           650:  * entered into the array.
        !           651:  */
        !           652: struct ctldebug {
        !           653:        char    *debugname;     /* name of debugging variable */
        !           654:        int     *debugvar;      /* pointer to debugging variable */
        !           655: };
        !           656: extern struct ctldebug debug0, debug1, debug2, debug3, debug4;
        !           657: extern struct ctldebug debug5, debug6, debug7, debug8, debug9;
        !           658: extern struct ctldebug debug10, debug11, debug12, debug13, debug14;
        !           659: extern struct ctldebug debug15, debug16, debug17, debug18, debug19;
        !           660: #endif /* DEBUG */
        !           661:
        !           662: /*
        !           663:  * Internal sysctl function calling convention:
        !           664:  *
        !           665:  *     (*sysctlfn)(name, namelen, oldval, oldlenp, newval, newlen);
        !           666:  *
        !           667:  * The name parameter points at the next component of the name to be
        !           668:  * interpreted.  The namelen parameter is the number of integers in
        !           669:  * the name.
        !           670:  */
        !           671: typedef int (sysctlfn)(int *, u_int, void *, size_t *, void *, size_t, struct proc *);
        !           672:
        !           673: int sysctl_int(void *, size_t *, void *, size_t, int *);
        !           674: int sysctl_int_lower(void *, size_t *, void *, size_t, int *);
        !           675: int sysctl_rdint(void *, size_t *, void *, int);
        !           676: int sysctl_int_arr(int **, int *, u_int, void *, size_t *, void *, size_t);
        !           677: int sysctl_quad(void *, size_t *, void *, size_t, int64_t *);
        !           678: int sysctl_rdquad(void *, size_t *, void *, int64_t);
        !           679: int sysctl_string(void *, size_t *, void *, size_t, char *, int);
        !           680: int sysctl_tstring(void *, size_t *, void *, size_t, char *, int);
        !           681: int sysctl__string(void *, size_t *, void *, size_t, char *, int, int);
        !           682: int sysctl_rdstring(void *, size_t *, void *, const char *);
        !           683: int sysctl_rdstruct(void *, size_t *, void *, const void *, int);
        !           684: int sysctl_struct(void *, size_t *, void *, size_t, void *, int);
        !           685: int sysctl_file(char *, size_t *);
        !           686: int sysctl_doproc(int *, u_int, char *, size_t *);
        !           687: struct radix_node;
        !           688: struct walkarg;
        !           689: int sysctl_dumpentry(struct radix_node *, void *);
        !           690: int sysctl_iflist(int, struct walkarg *);
        !           691: int sysctl_rtable(int *, u_int, void *, size_t *, void *, size_t);
        !           692: int sysctl_clockrate(char *, size_t *);
        !           693: int sysctl_vnode(char *, size_t *, struct proc *);
        !           694: #ifdef GPROF
        !           695: int sysctl_doprof(int *, u_int, void *, size_t *, void *, size_t);
        !           696: #endif
        !           697: int sysctl_dopool(int *, u_int, char *, size_t *);
        !           698:
        !           699: void fill_eproc(struct proc *, struct eproc *);
        !           700: void fill_kproc2(struct proc *, struct kinfo_proc2 *);
        !           701:
        !           702: int kern_sysctl(int *, u_int, void *, size_t *, void *, size_t,
        !           703:                     struct proc *);
        !           704: int hw_sysctl(int *, u_int, void *, size_t *, void *, size_t,
        !           705:                   struct proc *);
        !           706: #ifdef DEBUG
        !           707: int debug_sysctl(int *, u_int, void *, size_t *, void *, size_t,
        !           708:                      struct proc *);
        !           709: #endif
        !           710: int vm_sysctl(int *, u_int, void *, size_t *, void *, size_t,
        !           711:                   struct proc *);
        !           712: int fs_sysctl(int *, u_int, void *, size_t *, void *, size_t,
        !           713:                   struct proc *);
        !           714: int fs_posix_sysctl(int *, u_int, void *, size_t *, void *, size_t,
        !           715:                         struct proc *);
        !           716: int net_sysctl(int *, u_int, void *, size_t *, void *, size_t,
        !           717:                    struct proc *);
        !           718: int cpu_sysctl(int *, u_int, void *, size_t *, void *, size_t,
        !           719:                    struct proc *);
        !           720: int vfs_sysctl(int *, u_int, void *, size_t *, void *, size_t,
        !           721:                    struct proc *);
        !           722: int sysctl_sysvipc(int *, u_int, void *, size_t *);
        !           723: int sysctl_wdog(int *, u_int, void *, size_t *, void *, size_t);
        !           724:
        !           725: extern int (*cpu_cpuspeed)(int *);
        !           726: extern void (*cpu_setperf)(int);
        !           727:
        !           728: int bpf_sysctl(int *, u_int, void *, size_t *, void *, size_t);
        !           729:
        !           730: #else  /* !_KERNEL */
        !           731: #include <sys/cdefs.h>
        !           732:
        !           733: __BEGIN_DECLS
        !           734: int    sysctl(int *, u_int, void *, size_t *, void *, size_t);
        !           735: __END_DECLS
        !           736: #endif /* _KERNEL */
        !           737: #endif /* !_SYS_SYSCTL_H_ */

CVSweb