1 /* 2 * Copyright (c) 1989, 1993 The Regents of the University of California. 3 * All rights reserved. 4 * 5 * This code is derived from software contributed to Berkeley by 6 * Mike Karels at Berkeley Software Design, Inc. 7 * 8 * %sccs.include.redist.c% 9 * 10 * @(#)sysctl.h 7.16 (Berkeley) 03/04/93 11 */ 12 13 /* 14 * Definitions for sysctl call. The sysctl call uses a hierarchical name 15 * for objects that can be examined or modified. The name is expressed as 16 * a sequence of integers. Like a file path name, the meaning of each 17 * component depends on its place in the hierarchy. The top-level and kern 18 * identifiers are defined here, and other identifiers are defined in the 19 * respective subsystem header files. 20 */ 21 22 #define CTL_MAXNAME 12 /* largest number of components supported */ 23 24 /* 25 * Top-level identifiers 26 */ 27 #define CTL_UNSPEC 0 /* unused */ 28 #define CTL_KERN 1 /* "high kernel": proc, limits */ 29 #define CTL_VM 2 /* virtual memory */ 30 #define CTL_FS 3 /* file system, mount type is next */ 31 #define CTL_NET 4 /* network, see socket.h */ 32 #define CTL_DEBUG 5 /* debugging parameters */ 33 #define CTL_HW 6 /* generic cpu/io */ 34 #define CTL_MACHDEP 7 /* machine dependent */ 35 #define CTL_MAXID 8 /* number of valid top-level ids */ 36 37 #define CTL_NAMES { \ 38 "unspec", \ 39 "kern", \ 40 "vm", \ 41 "fs", \ 42 "net", \ 43 "debug", \ 44 "hw", \ 45 "machdep", \ 46 } 47 48 /* 49 * CTL_KERN identifiers 50 */ 51 #define KERN_OSTYPE 1 /* string: system version */ 52 #define KERN_OSRELEASE 2 /* string: system release */ 53 #define KERN_OSREV 3 /* int: system revision */ 54 #define KERN_VERSION 4 /* string: compile time info */ 55 #define KERN_POSIX1 5 /* int: POSIX.1 version */ 56 #define KERN_MAXPROC 6 /* int: max simultaneous processes */ 57 #define KERN_MAXFILES 7 /* int: max open files */ 58 #define KERN_ARGMAX 8 /* int: max arguments to exec */ 59 #define KERN_SECURELVL 9 /* int: system security level */ 60 #define KERN_HOSTNAME 10 /* string: hostname */ 61 #define KERN_HOSTID 11 /* int: host identifier */ 62 #define KERN_CLOCKRATE 12 /* struct clockrate */ 63 #define KERN_VNODE 13 /* vnode structures */ 64 #define KERN_PROC 14 /* process entries */ 65 #define KERN_FILE 15 /* file entries */ 66 #define KERN_MAXID 16 /* number of valid kern ids */ 67 68 #define CTL_KERN_NAMES { \ 69 "unspec", \ 70 "ostype", \ 71 "osrelease", \ 72 "osrevision", \ 73 "version", \ 74 "posix1version", \ 75 "maxproc", \ 76 "maxfiles", \ 77 "argmax", \ 78 "securelevel", \ 79 "hostname", \ 80 "hostid", \ 81 "clockrate", \ 82 "vnode", \ 83 "proc", \ 84 "file", \ 85 } 86 87 /* 88 * KERN_PROC subtypes 89 */ 90 #define KERN_PROC_ALL 0 /* everything */ 91 #define KERN_PROC_PID 1 /* by process id */ 92 #define KERN_PROC_PGRP 2 /* by process group id */ 93 #define KERN_PROC_SESSION 3 /* by session of pid */ 94 #define KERN_PROC_TTY 4 /* by controlling tty */ 95 #define KERN_PROC_UID 5 /* by effective uid */ 96 #define KERN_PROC_RUID 6 /* by real uid */ 97 98 /* 99 * CTL_HW identifiers 100 */ 101 #define HW_MACHINE 1 /* string: machine class */ 102 #define HW_MODEL 2 /* string: specific machine model */ 103 #define HW_NCPU 3 /* int: number of cpus */ 104 #define HW_CPUSPEED 4 /* int: relative cpuspeed */ 105 #define HW_PHYSMEM 5 /* int: total memory */ 106 #define HW_USERMEM 6 /* int: non-kernel memory */ 107 #define HW_PAGESIZE 7 /* int: software page size */ 108 #define HW_DISKNAMES 8 /* strings: disk drive names */ 109 #define HW_DISKSTATS 9 /* diskstats[] */ 110 #define HW_MAXID 10 /* number of valid hw ids */ 111 112 #define CTL_HW_NAMES { \ 113 "unspec", \ 114 "machine", \ 115 "model", \ 116 "ncpu", \ 117 "cpuspeed", \ 118 "physmem", \ 119 "usermem", \ 120 "pagesize", \ 121 "disknames", \ 122 "diskstats", \ 123 } 124 125 #ifdef KERNEL 126 /* 127 * Internal sysctl function calling convention: 128 * 129 * (*sysctlfn)(name, namelen, oldval, oldlenp, newval, newlen); 130 * 131 * The name parameter points at the next component of the name to be 132 * interpreted. The namelen parameter is the number of integers in 133 * the name. 134 */ 135 typedef int (sysctlfn) 136 __P((int *, u_int, void *, size_t *, void *, size_t, struct proc *)); 137 138 int sysctl_int __P((void *, size_t *, void *, size_t, int *)); 139 int sysctl_rdint __P((void *, size_t *, void *, int)); 140 int sysctl_string __P((void *, size_t *, void *, size_t, char *, int)); 141 int sysctl_rdstring __P((void *, size_t *, void *, char *)); 142 int sysctl_rdstruct __P((void *, size_t *, void *, void *, int)); 143 144 #else /* !KERNEL */ 145 #include <sys/cdefs.h> 146 147 __BEGIN_DECLS 148 int sysctl __P((int *, u_int, void *, size_t *, void *, size_t)); 149 __END_DECLS 150 #endif /* KERNEL */ 151