/[gxemul]/trunk/src/include/sysctl_netbsd.h
This is repository of my old source code which isn't updated any more. Go to git.rot13.org for current projects!
ViewVC logotype

Contents of /trunk/src/include/sysctl_netbsd.h

Parent Directory Parent Directory | Revision Log Revision Log


Revision 4 - (show annotations)
Mon Oct 8 16:18:00 2007 UTC (16 years, 5 months ago) by dpavlin
File MIME type: text/plain
File size: 27751 byte(s)
++ trunk/HISTORY	(local)
$Id: HISTORY,v 1.707 2005/04/27 16:37:33 debug Exp $
20050408	Some minor updates to the wdc. Linux now doesn't complain
		anymore if a disk is non-present.
20050409	Various minor fixes (a bintrans bug, and some other things).
		The wdc seems to work with Playstation2 emulation, but there
		is a _long_ annoying delay when disks are detected.
		Fixing a really important bintrans bug (when devices and RAM
		are mixed within 4KB pages), which was triggered with
		NetBSD/playstation2 kernels.
20050410	Adding a dummy dev_ps2_ether (just so that NetBSD doesn't
		complain as much during bootup).
		Symbols starting with '$' are now ignored.
		Renaming dev_ps2_ohci.c to dev_ohci.c, etc.
20050411	Moving the bintrans-cache-isolation check from cpu_mips.c to
		cpu_mips_coproc.c. (I thought this would give a speedup, but
		it's not noticable.)
		Better playstation2 sbus interrupt code.
		Skip ahead many ticks if the count register is read manually.
		(This increases the speed of delay-loops that simply read
		the count register.)
20050412	Updates to the playstation2 timer/interrupt code.
		Some other minor updates.
20050413	NetBSD/cobalt runs from a disk image :-) including userland;
		updating the documentation on how to install NetBSD/cobalt
		using NetBSD/pmax (!).
		Some minor bintrans updates (no real speed improvement) and
		other minor updates (playstation2 now uses the -o options).
20050414	Adding a dummy x86 (and AMD64) mode.
20050415	Adding some (32-bit and 16-bit) x86 instructions.
		Adding some initial support for non-SCSI, non-IDE floppy
		images. (The x86 mode can boot from these, more or less.)
		Moving the devices/ and include/ directories to src/devices/
		and src/include/, respectively.
20050416	Continuing on the x86 stuff. (Adding pc_bios.c and some simple
		support for software interrupts in 16-bit mode.)
20050417	Ripping out most of the x86 instruction decoding stuff, trying
		to rewrite it in a cleaner way.
		Disabling some of the least working CPU families in the
		configure script (sparc, x86, alpha, hppa), so that they are
		not enabled by default.
20050418	Trying to fix the bug which caused problems when turning on
		and off bintrans interactively, by flushing the bintrans cache
		whenever bintrans is manually (re)enabled.
20050419	Adding the 'lswi' ppc instruction.
		Minor updates to the x86 instruction decoding.
20050420	Renaming x86 register name indices from R_xx to X86_R_xx (this
		makes building on Tru64 nicer).
20050422	Adding a check for duplicate MIPS TLB entries on tlbwr/tlbwi.
20050427	Adding screenshots to guestoses.html.
		Some minor fixes and testing for the next release.

==============  RELEASE 0.3.2  ==============


1 /* gxemul: $Id: sysctl_netbsd.h,v 1.3 2005/03/05 12:34:03 debug Exp $ */
2 /* $NetBSD: sysctl.h,v 1.74 2002/03/20 00:23:46 christos 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. All advertising materials mentioning features or use of this software
20 * must display the following acknowledgement:
21 * This product includes software developed by the University of
22 * California, Berkeley and its contributors.
23 * 4. Neither the name of the University nor the names of its contributors
24 * may be used to endorse or promote products derived from this software
25 * without specific prior written permission.
26 *
27 * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
28 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
29 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
30 * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
31 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
32 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
33 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
34 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
35 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
36 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
37 * SUCH DAMAGE.
38 *
39 * @(#)sysctl.h 8.1 (Berkeley) 6/2/93
40 */
41
42 #ifndef NETBSD_SYS_SYSCTL_H_
43 #define NETBSD_SYS_SYSCTL_H_
44
45 /*
46 * These are for the eproc structure defined below.
47 */
48 /* #include <sys/time.h>
49 #include <sys/ucred.h>
50 #include <sys/proc.h>
51 #include <uvm/uvm_extern.h> */
52
53 /*
54 * Definitions for sysctl call. The sysctl call uses a hierarchical name
55 * for objects that can be examined or modified. The name is expressed as
56 * a sequence of integers. Like a file path name, the meaning of each
57 * component depends on its place in the hierarchy. The top-level and kern
58 * identifiers are defined here, and other identifiers are defined in the
59 * respective subsystem header files.
60 */
61
62 #define CTL_MAXNAME 12 /* largest number of components supported */
63
64 /*
65 * Each subsystem defined by sysctl defines a list of variables
66 * for that subsystem. Each name is either a node with further
67 * levels defined below it, or it is a leaf of some particular
68 * type given below. Each sysctl level defines a set of name/type
69 * pairs to be used by sysctl(1) in manipulating the subsystem.
70 */
71 struct ctlname {
72 const char *ctl_name; /* subsystem name */
73 int ctl_type; /* type of name */
74 };
75 #define CTLTYPE_NODE 1 /* name is a node */
76 #define CTLTYPE_INT 2 /* name describes an integer */
77 #define CTLTYPE_STRING 3 /* name describes a string */
78 #define CTLTYPE_QUAD 4 /* name describes a 64-bit number */
79 #define CTLTYPE_STRUCT 5 /* name describes a structure */
80
81 /*
82 * Top-level identifiers
83 */
84 #define CTL_UNSPEC 0 /* unused */
85 #define CTL_KERN 1 /* "high kernel": proc, limits */
86 #define CTL_VM 2 /* virtual memory */
87 #define CTL_VFS 3 /* file system, mount type is next */
88 #define CTL_NET 4 /* network, see socket.h */
89 #define CTL_DEBUG 5 /* debugging parameters */
90 #define CTL_HW 6 /* generic cpu/io */
91 #define CTL_MACHDEP 7 /* machine dependent */
92 #define CTL_USER 8 /* user-level */
93 #define CTL_DDB 9 /* in-kernel debugger */
94 #define CTL_PROC 10 /* per-proc attr */
95 #define CTL_VENDOR 11 /* vendor-specific data */
96 #define CTL_EMUL 12 /* emulation-specific data */
97 #define CTL_MAXID 13 /* number of valid top-level ids */
98
99 #define CTL_NAMES { \
100 { 0, 0 }, \
101 { "kern", CTLTYPE_NODE }, \
102 { "vm", CTLTYPE_NODE }, \
103 { "vfs", 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 { "proc", CTLTYPE_NODE }, \
111 { "vendor", CTLTYPE_NODE }, \
112 { "emul", CTLTYPE_NODE }, \
113 }
114
115 /*
116 * The "vendor" toplevel name is to be used by vendors who wish to
117 * have their own private MIB tree. If you do that, please use
118 * vendor.<yourname>.*
119 */
120
121 /*
122 * CTL_KERN identifiers
123 */
124 #define KERN_OSTYPE 1 /* string: system version */
125 #define KERN_OSRELEASE 2 /* string: system release */
126 #define KERN_OSREV 3 /* int: system revision */
127 #define KERN_VERSION 4 /* string: compile time info */
128 #define KERN_MAXVNODES 5 /* int: max vnodes */
129 #define KERN_MAXPROC 6 /* int: max processes */
130 #define KERN_MAXFILES 7 /* int: max open files */
131 #define KERN_ARGMAX 8 /* int: max arguments to exec */
132 #define KERN_SECURELVL 9 /* int: system security level */
133 #define KERN_HOSTNAME 10 /* string: hostname */
134 #define KERN_HOSTID 11 /* int: host identifier */
135 #define KERN_CLOCKRATE 12 /* struct: struct clockrate */
136 #define KERN_VNODE 13 /* struct: vnode structures */
137 #define KERN_PROC 14 /* struct: process entries */
138 #define KERN_FILE 15 /* struct: file entries */
139 #define KERN_PROF 16 /* node: kernel profiling info */
140 #define KERN_POSIX1 17 /* int: POSIX.1 version */
141 #define KERN_NGROUPS 18 /* int: # of supplemental group ids */
142 #define KERN_JOB_CONTROL 19 /* int: is job control available */
143 #define KERN_SAVED_IDS 20 /* int: saved set-user/group-ID */
144 #define KERN_BOOTTIME 21 /* struct: time kernel was booted */
145 #define KERN_DOMAINNAME 22 /* string: (YP) domainname */
146 #define KERN_MAXPARTITIONS 23 /* int: number of partitions/disk */
147 #define KERN_RAWPARTITION 24 /* int: raw partition number */
148 #define KERN_NTPTIME 25 /* struct: extended-precision time */
149 #define KERN_TIMEX 26 /* struct: ntp timekeeping state */
150 #define KERN_AUTONICETIME 27 /* int: proc time before autonice */
151 #define KERN_AUTONICEVAL 28 /* int: auto nice value */
152 #define KERN_RTC_OFFSET 29 /* int: offset of rtc from gmt */
153 #define KERN_ROOT_DEVICE 30 /* string: root device */
154 #define KERN_MSGBUFSIZE 31 /* int: max # of chars in msg buffer */
155 #define KERN_FSYNC 32 /* int: file synchronization support */
156 #define KERN_SYSVMSG 33 /* int: SysV message queue suppoprt */
157 #define KERN_SYSVSEM 34 /* int: SysV semaphore support */
158 #define KERN_SYSVSHM 35 /* int: SysV shared memory support */
159 #define KERN_OLDSHORTCORENAME 36 /* old, unimplemented */
160 #define KERN_SYNCHRONIZED_IO 37 /* int: POSIX synchronized I/O */
161 #define KERN_IOV_MAX 38 /* int: max iovec's for readv(2) etc. */
162 #define KERN_MBUF 39 /* node: mbuf parameters */
163 #define KERN_MAPPED_FILES 40 /* int: POSIX memory mapped files */
164 #define KERN_MEMLOCK 41 /* int: POSIX memory locking */
165 #define KERN_MEMLOCK_RANGE 42 /* int: POSIX memory range locking */
166 #define KERN_MEMORY_PROTECTION 43 /* int: POSIX memory protections */
167 #define KERN_LOGIN_NAME_MAX 44 /* int: max length login name + NUL */
168 #define KERN_DEFCORENAME 45 /* old: sort core name format */
169 #define KERN_LOGSIGEXIT 46 /* int: log signalled processes */
170 #define KERN_PROC2 47 /* struct: process entries */
171 #define KERN_PROC_ARGS 48 /* struct: process argv/env */
172 #define KERN_FSCALE 49 /* int: fixpt FSCALE */
173 #define KERN_CCPU 50 /* int: fixpt ccpu */
174 #define KERN_CP_TIME 51 /* struct: cpu time counters */
175 #define KERN_SYSVIPC_INFO 52 /* number of valid kern ids */
176 #define KERN_MSGBUF 53 /* kernel message buffer */
177 #define KERN_CONSDEV 54 /* dev_t: console terminal device */
178 #define KERN_MAXPTYS 55 /* int: maximum number of ptys */
179 #define KERN_PIPE 56 /* node: pipe limits */
180 #define KERN_MAXPHYS 57 /* int: kernel value of MAXPHYS */
181 #define KERN_SBMAX 58 /* int: max socket buffer size */
182 #define KERN_TKSTAT 59 /* tty in/out counters */
183 #define KERN_MONOTONIC_CLOCK 60 /* int: POSIX monotonic clock */
184 #define KERN_MAXID 61 /* number of valid kern ids */
185
186 #define CTL_KERN_NAMES { \
187 { 0, 0 }, \
188 { "ostype", CTLTYPE_STRING }, \
189 { "osrelease", CTLTYPE_STRING }, \
190 { "osrevision", CTLTYPE_INT }, \
191 { "version", CTLTYPE_STRING }, \
192 { "maxvnodes", CTLTYPE_INT }, \
193 { "maxproc", CTLTYPE_INT }, \
194 { "maxfiles", CTLTYPE_INT }, \
195 { "argmax", CTLTYPE_INT }, \
196 { "securelevel", CTLTYPE_INT }, \
197 { "hostname", CTLTYPE_STRING }, \
198 { "hostid", CTLTYPE_INT }, \
199 { "clockrate", CTLTYPE_STRUCT }, \
200 { "vnode", CTLTYPE_STRUCT }, \
201 { "proc", CTLTYPE_STRUCT }, \
202 { "file", CTLTYPE_STRUCT }, \
203 { "profiling", CTLTYPE_NODE }, \
204 { "posix1version", CTLTYPE_INT }, \
205 { "ngroups", CTLTYPE_INT }, \
206 { "job_control", CTLTYPE_INT }, \
207 { "saved_ids", CTLTYPE_INT }, \
208 { "boottime", CTLTYPE_STRUCT }, \
209 { "domainname", CTLTYPE_STRING }, \
210 { "maxpartitions", CTLTYPE_INT }, \
211 { "rawpartition", CTLTYPE_INT }, \
212 { "ntptime", CTLTYPE_STRUCT }, \
213 { "timex", CTLTYPE_STRUCT }, \
214 { "autonicetime", CTLTYPE_INT }, \
215 { "autoniceval", CTLTYPE_INT }, \
216 { "rtc_offset", CTLTYPE_INT }, \
217 { "root_device", CTLTYPE_STRING }, \
218 { "msgbufsize", CTLTYPE_INT }, \
219 { "fsync", CTLTYPE_INT }, \
220 { "sysvmsg", CTLTYPE_INT }, \
221 { "sysvsem", CTLTYPE_INT }, \
222 { "sysvshm", CTLTYPE_INT }, \
223 { 0, 0 }, \
224 { "synchronized_io", CTLTYPE_INT }, \
225 { "iov_max", CTLTYPE_INT }, \
226 { "mbuf", CTLTYPE_NODE }, \
227 { "mapped_files", CTLTYPE_INT }, \
228 { "memlock", CTLTYPE_INT }, \
229 { "memlock_range", CTLTYPE_INT }, \
230 { "memory_protection", CTLTYPE_INT }, \
231 { "login_name_max", CTLTYPE_INT }, \
232 { "defcorename", CTLTYPE_STRING }, \
233 { "logsigexit", CTLTYPE_INT }, \
234 { "proc2", CTLTYPE_STRUCT }, \
235 { "proc_args", CTLTYPE_STRING }, \
236 { "fscale", CTLTYPE_INT }, \
237 { "ccpu", CTLTYPE_INT }, \
238 { "cp_time", CTLTYPE_STRUCT }, \
239 { "sysvipc_info", CTLTYPE_STRUCT }, \
240 { "msgbuf", CTLTYPE_STRUCT }, \
241 { "consdev", CTLTYPE_STRUCT }, \
242 { "maxptys", CTLTYPE_INT }, \
243 { "pipe", CTLTYPE_NODE }, \
244 { "maxphys", CTLTYPE_INT }, \
245 { "sbmax", CTLTYPE_INT }, \
246 { "tkstat", CTLTYPE_NODE }, \
247 { "monotonic_clock", CTLTYPE_INT }, \
248 }
249
250 /*
251 * KERN_PROC subtypes
252 */
253 #define KERN_PROC_ALL 0 /* everything */
254 #define KERN_PROC_PID 1 /* by process id */
255 #define KERN_PROC_PGRP 2 /* by process group id */
256 #define KERN_PROC_SESSION 3 /* by session of pid */
257 #define KERN_PROC_TTY 4 /* by controlling tty */
258 #define KERN_PROC_UID 5 /* by effective uid */
259 #define KERN_PROC_RUID 6 /* by real uid */
260 #define KERN_PROC_GID 7 /* by effective gid */
261 #define KERN_PROC_RGID 8 /* by real gid */
262
263 /*
264 * KERN_PROC_TTY sub-subtypes
265 */
266 #define KERN_PROC_TTY_NODEV NODEV /* no controlling tty */
267 #define KERN_PROC_TTY_REVOKE ((dev_t)-2) /* revoked tty */
268
269 /*
270 * KERN_PROC subtype ops return arrays of augmented proc structures:
271 */
272 #if 0
273 /* Not in gxemul */
274 struct kinfo_proc {
275 struct proc kp_proc; /* proc structure */
276 struct eproc {
277 struct proc *e_paddr; /* address of proc */
278 struct session *e_sess; /* session pointer */
279 struct pcred e_pcred; /* process credentials */
280 struct ucred e_ucred; /* current credentials */
281 struct vmspace e_vm; /* address space */
282 pid_t e_ppid; /* parent process id */
283 pid_t e_pgid; /* process group id */
284 short e_jobc; /* job control counter */
285 dev_t e_tdev; /* controlling tty dev */
286 pid_t e_tpgid; /* tty process group id */
287 struct session *e_tsess; /* tty session pointer */
288 #define WMESGLEN 8
289 char e_wmesg[WMESGLEN]; /* wchan message */
290 segsz_t e_xsize; /* text size */
291 short e_xrssize; /* text rss */
292 short e_xccount; /* text references */
293 short e_xswrss;
294 long e_flag;
295 #define EPROC_CTTY 0x01 /* controlling tty vnode active */
296 #define EPROC_SLEADER 0x02 /* session leader */
297 char e_login[MAXLOGNAME]; /* setlogin() name */
298 pid_t e_sid; /* session id */
299 long e_spare[3];
300 } kp_eproc;
301 };
302 #endif
303
304 /*
305 * KERN_PROC2 subtype ops return arrays of relatively fixed size
306 * structures of process info. Use 8 byte alignment, and new
307 * elements should only be added to the end of this structure so
308 * binary compatibility can be preserved.
309 */
310 #define KI_NGROUPS 16
311 #define KI_MAXCOMLEN 24 /* extra for 8 byte alignment */
312 #define KI_WMESGLEN 8
313 #define KI_MAXLOGNAME 24 /* extra for 8 byte alignment */
314
315 #define KI_NOCPU (~(u_int64_t)0)
316
317 typedef struct {
318 u_int32_t __bits[4];
319 } ki_sigset_t;
320
321 #if 0
322 /* Not in gxemul */
323 struct kinfo_proc2 {
324 u_int64_t p_forw; /* PTR: linked run/sleep queue. */
325 u_int64_t p_back;
326 u_int64_t p_paddr; /* PTR: address of proc */
327
328 u_int64_t p_addr; /* PTR: Kernel virtual addr of u-area */
329 u_int64_t p_fd; /* PTR: Ptr to open files structure. */
330 u_int64_t p_cwdi; /* PTR: cdir/rdir/cmask info */
331 u_int64_t p_stats; /* PTR: Accounting/statistics */
332 u_int64_t p_limit; /* PTR: Process limits. */
333 u_int64_t p_vmspace; /* PTR: Address space. */
334 u_int64_t p_sigacts; /* PTR: Signal actions, state */
335 u_int64_t p_sess; /* PTR: session pointer */
336 u_int64_t p_tsess; /* PTR: tty session pointer */
337 u_int64_t p_ru; /* PTR: Exit information. XXX */
338
339 int32_t p_eflag; /* LONG: extra kinfo_proc2 flags */
340 int32_t p_exitsig; /* INT: signal to sent to parent on exit */
341 int32_t p_flag; /* INT: P_* flags. */
342
343 int32_t p_pid; /* PID_T: Process identifier. */
344 int32_t p_ppid; /* PID_T: Parent process id */
345 int32_t p_sid; /* PID_T: session id */
346 int32_t p__pgid; /* PID_T: process group id */
347 /* XXX: <sys/proc.h> hijacks p_pgid */
348 int32_t p_tpgid; /* PID_T: tty process group id */
349
350 u_int32_t p_uid; /* UID_T: effective user id */
351 u_int32_t p_ruid; /* UID_T: real user id */
352 u_int32_t p_gid; /* GID_T: effective group id */
353 u_int32_t p_rgid; /* GID_T: real group id */
354
355 u_int32_t p_groups[KI_NGROUPS]; /* GID_T: groups */
356 int16_t p_ngroups; /* SHORT: number of groups */
357
358 int16_t p_jobc; /* SHORT: job control counter */
359 u_int32_t p_tdev; /* DEV_T: controlling tty dev */
360
361 u_int32_t p_estcpu; /* U_INT: Time averaged value of p_cpticks. */
362 u_int32_t p_rtime_sec; /* STRUCT TIMEVAL: Real time. */
363 u_int32_t p_rtime_usec; /* STRUCT TIMEVAL: Real time. */
364 int32_t p_cpticks; /* INT: Ticks of cpu time. */
365 u_int32_t p_pctcpu; /* FIXPT_T: %cpu for this process during p_swtime */
366 u_int32_t p_swtime; /* U_INT: Time swapped in or out. */
367 u_int32_t p_slptime; /* U_INT: Time since last blocked. */
368 int32_t p_schedflags; /* INT: PSCHED_* flags */
369
370 u_int64_t p_uticks; /* U_QUAD_T: Statclock hits in user mode. */
371 u_int64_t p_sticks; /* U_QUAD_T: Statclock hits in system mode. */
372 u_int64_t p_iticks; /* U_QUAD_T: Statclock hits processing intr. */
373
374 u_int64_t p_tracep; /* PTR: Trace to vnode or file */
375 int32_t p_traceflag; /* INT: Kernel trace points. */
376
377 int32_t p_holdcnt; /* INT: If non-zero, don't swap. */
378
379 ki_sigset_t p_siglist; /* SIGSET_T: Signals arrived but not delivered. */
380 ki_sigset_t p_sigmask; /* SIGSET_T: Current signal mask. */
381 ki_sigset_t p_sigignore; /* SIGSET_T: Signals being ignored. */
382 ki_sigset_t p_sigcatch; /* SIGSET_T: Signals being caught by user. */
383
384 int8_t p_stat; /* CHAR: S* process status. */
385 u_int8_t p_priority; /* U_CHAR: Process priority. */
386 u_int8_t p_usrpri; /* U_CHAR: User-priority based on p_cpu and p_nice. */
387 u_int8_t p_nice; /* U_CHAR: Process "nice" value. */
388
389 u_int16_t p_xstat; /* U_SHORT: Exit status for wait; also stop signal. */
390 u_int16_t p_acflag; /* U_SHORT: Accounting flags. */
391
392 char p_comm[KI_MAXCOMLEN];
393
394 char p_wmesg[KI_WMESGLEN]; /* wchan message */
395 u_int64_t p_wchan; /* PTR: sleep address. */
396
397 char p_login[KI_MAXLOGNAME]; /* setlogin() name */
398
399 int32_t p_vm_rssize; /* SEGSZ_T: current resident set size in pages */
400 int32_t p_vm_tsize; /* SEGSZ_T: text size (pages) */
401 int32_t p_vm_dsize; /* SEGSZ_T: data size (pages) */
402 int32_t p_vm_ssize; /* SEGSZ_T: stack size (pages) */
403
404 int64_t p_uvalid; /* CHAR: following p_u* members from struct user are valid */
405 /* XXX 64 bits for alignment */
406 u_int32_t p_ustart_sec; /* STRUCT TIMEVAL: starting time. */
407 u_int32_t p_ustart_usec; /* STRUCT TIMEVAL: starting time. */
408
409 u_int32_t p_uutime_sec; /* STRUCT TIMEVAL: user time. */
410 u_int32_t p_uutime_usec; /* STRUCT TIMEVAL: user time. */
411 u_int32_t p_ustime_sec; /* STRUCT TIMEVAL: system time. */
412 u_int32_t p_ustime_usec; /* STRUCT TIMEVAL: system time. */
413
414 u_int64_t p_uru_maxrss; /* LONG: max resident set size. */
415 u_int64_t p_uru_ixrss; /* LONG: integral shared memory size. */
416 u_int64_t p_uru_idrss; /* LONG: integral unshared data ". */
417 u_int64_t p_uru_isrss; /* LONG: integral unshared stack ". */
418 u_int64_t p_uru_minflt; /* LONG: page reclaims. */
419 u_int64_t p_uru_majflt; /* LONG: page faults. */
420 u_int64_t p_uru_nswap; /* LONG: swaps. */
421 u_int64_t p_uru_inblock; /* LONG: block input operations. */
422 u_int64_t p_uru_oublock; /* LONG: block output operations. */
423 u_int64_t p_uru_msgsnd; /* LONG: messages sent. */
424 u_int64_t p_uru_msgrcv; /* LONG: messages received. */
425 u_int64_t p_uru_nsignals; /* LONG: signals received. */
426 u_int64_t p_uru_nvcsw; /* LONG: voluntary context switches. */
427 u_int64_t p_uru_nivcsw; /* LONG: involuntary ". */
428
429 u_int32_t p_uctime_sec; /* STRUCT TIMEVAL: child u+s time. */
430 u_int32_t p_uctime_usec; /* STRUCT TIMEVAL: child u+s time. */
431 u_int64_t p_cpuid; /* LONG: cpu id */
432 };
433 #endif
434
435 /*
436 * KERN_PROC_ARGS subtypes
437 */
438 #define KERN_PROC_ARGV 1 /* argv */
439 #define KERN_PROC_NARGV 2 /* number of strings in above */
440 #define KERN_PROC_ENV 3 /* environ */
441 #define KERN_PROC_NENV 4 /* number of strings in above */
442
443 /*
444 * KERN_SYSVIPC_INFO subtypes
445 */
446 #define KERN_SYSVIPC_MSG_INFO 1 /* msginfo and msqid_ds */
447 #define KERN_SYSVIPC_SEM_INFO 2 /* seminfo and semid_ds */
448 #define KERN_SYSVIPC_SHM_INFO 3 /* shminfo and shmid_ds */
449
450 /*
451 * tty counter sysctl variables
452 */
453 #define KERN_TKSTAT_NIN 1 /* total input character */
454 #define KERN_TKSTAT_NOUT 2 /* total output character */
455 #define KERN_TKSTAT_CANCC 3 /* canonical input character */
456 #define KERN_TKSTAT_RAWCC 4 /* raw input character */
457 #define KERN_TKSTAT_MAXID 5 /* number of valid TKSTAT ids */
458
459 #define KERN_TKSTAT_NAMES { \
460 { 0, 0 }, \
461 { "nin", CTLTYPE_QUAD }, \
462 { "nout", CTLTYPE_QUAD }, \
463 { "cancc", CTLTYPE_QUAD }, \
464 { "rawcc", CTLTYPE_QUAD }, \
465 }
466
467
468 /*
469 * CTL_HW identifiers
470 */
471 #define HW_MACHINE 1 /* string: machine class */
472 #define HW_MODEL 2 /* string: specific machine model */
473 #define HW_NCPU 3 /* int: number of cpus */
474 #define HW_BYTEORDER 4 /* int: machine byte order */
475 #define HW_PHYSMEM 5 /* int: total memory */
476 #define HW_USERMEM 6 /* int: non-kernel memory */
477 #define HW_PAGESIZE 7 /* int: software page size */
478 #define HW_DISKNAMES 8 /* string: disk drive names */
479 #define HW_DISKSTATS 9 /* struct: diskstats[] */
480 #define HW_MACHINE_ARCH 10 /* string: machine architecture */
481 #define HW_ALIGNBYTES 11 /* int: ALIGNBYTES for the kernel */
482 #define HW_CNMAGIC 12 /* string: console magic sequence(s) */
483 #define HW_MAXID 13 /* number of valid hw ids */
484
485 #define CTL_HW_NAMES { \
486 { 0, 0 }, \
487 { "machine", CTLTYPE_STRING }, \
488 { "model", CTLTYPE_STRING }, \
489 { "ncpu", CTLTYPE_INT }, \
490 { "byteorder", CTLTYPE_INT }, \
491 { "physmem", CTLTYPE_INT }, \
492 { "usermem", CTLTYPE_INT }, \
493 { "pagesize", CTLTYPE_INT }, \
494 { "disknames", CTLTYPE_STRING }, \
495 { "diskstats", CTLTYPE_STRUCT }, \
496 { "machine_arch", CTLTYPE_STRING }, \
497 { "alignbytes", CTLTYPE_INT }, \
498 { "cnmagic", CTLTYPE_STRING }, \
499 }
500
501 /*
502 * CTL_USER definitions
503 */
504 #define USER_CS_PATH 1 /* string: _CS_PATH */
505 #define USER_BC_BASE_MAX 2 /* int: BC_BASE_MAX */
506 #define USER_BC_DIM_MAX 3 /* int: BC_DIM_MAX */
507 #define USER_BC_SCALE_MAX 4 /* int: BC_SCALE_MAX */
508 #define USER_BC_STRING_MAX 5 /* int: BC_STRING_MAX */
509 #define USER_COLL_WEIGHTS_MAX 6 /* int: COLL_WEIGHTS_MAX */
510 #define USER_EXPR_NEST_MAX 7 /* int: EXPR_NEST_MAX */
511 #define USER_LINE_MAX 8 /* int: LINE_MAX */
512 #define USER_RE_DUP_MAX 9 /* int: RE_DUP_MAX */
513 #define USER_POSIX2_VERSION 10 /* int: POSIX2_VERSION */
514 #define USER_POSIX2_C_BIND 11 /* int: POSIX2_C_BIND */
515 #define USER_POSIX2_C_DEV 12 /* int: POSIX2_C_DEV */
516 #define USER_POSIX2_CHAR_TERM 13 /* int: POSIX2_CHAR_TERM */
517 #define USER_POSIX2_FORT_DEV 14 /* int: POSIX2_FORT_DEV */
518 #define USER_POSIX2_FORT_RUN 15 /* int: POSIX2_FORT_RUN */
519 #define USER_POSIX2_LOCALEDEF 16 /* int: POSIX2_LOCALEDEF */
520 #define USER_POSIX2_SW_DEV 17 /* int: POSIX2_SW_DEV */
521 #define USER_POSIX2_UPE 18 /* int: POSIX2_UPE */
522 #define USER_STREAM_MAX 19 /* int: POSIX2_STREAM_MAX */
523 #define USER_TZNAME_MAX 20 /* int: POSIX2_TZNAME_MAX */
524 #define USER_MAXID 21 /* number of valid user ids */
525
526 #define CTL_USER_NAMES { \
527 { 0, 0 }, \
528 { "cs_path", CTLTYPE_STRING }, \
529 { "bc_base_max", CTLTYPE_INT }, \
530 { "bc_dim_max", CTLTYPE_INT }, \
531 { "bc_scale_max", CTLTYPE_INT }, \
532 { "bc_string_max", CTLTYPE_INT }, \
533 { "coll_weights_max", CTLTYPE_INT }, \
534 { "expr_nest_max", CTLTYPE_INT }, \
535 { "line_max", CTLTYPE_INT }, \
536 { "re_dup_max", CTLTYPE_INT }, \
537 { "posix2_version", CTLTYPE_INT }, \
538 { "posix2_c_bind", CTLTYPE_INT }, \
539 { "posix2_c_dev", CTLTYPE_INT }, \
540 { "posix2_char_term", CTLTYPE_INT }, \
541 { "posix2_fort_dev", CTLTYPE_INT }, \
542 { "posix2_fort_run", CTLTYPE_INT }, \
543 { "posix2_localedef", CTLTYPE_INT }, \
544 { "posix2_sw_dev", CTLTYPE_INT }, \
545 { "posix2_upe", CTLTYPE_INT }, \
546 { "stream_max", CTLTYPE_INT }, \
547 { "tzname_max", CTLTYPE_INT }, \
548 }
549
550 /*
551 * CTL_DDB definitions
552 */
553 #define DDBCTL_RADIX 1 /* int: Input and output radix */
554 #define DDBCTL_MAXOFF 2 /* int: max symbol offset */
555 #define DDBCTL_MAXWIDTH 3 /* int: width of the display line */
556 #define DDBCTL_LINES 4 /* int: number of display lines */
557 #define DDBCTL_TABSTOPS 5 /* int: tab width */
558 #define DDBCTL_ONPANIC 6 /* int: DDB on panic if non-zero */
559 #define DDBCTL_FROMCONSOLE 7 /* int: DDB via console if non-zero */
560 #define DDBCTL_MAXID 8 /* number of valid DDB ids */
561
562 #define CTL_DDB_NAMES { \
563 { 0, 0 }, \
564 { "radix", CTLTYPE_INT }, \
565 { "maxoff", CTLTYPE_INT }, \
566 { "maxwidth", CTLTYPE_INT }, \
567 { "lines", CTLTYPE_INT }, \
568 { "tabstops", CTLTYPE_INT }, \
569 { "onpanic", CTLTYPE_INT }, \
570 { "fromconsole", CTLTYPE_INT }, \
571 }
572
573 /*
574 * CTL_DEBUG definitions
575 *
576 * Second level identifier specifies which debug variable.
577 * Third level identifier specifies which stucture component.
578 */
579 #define CTL_DEBUG_NAME 0 /* string: variable name */
580 #define CTL_DEBUG_VALUE 1 /* int: variable value */
581 #define CTL_DEBUG_MAXID 20
582
583 /*
584 * CTL_PROC subtype. Either a PID, or a magic value for the current proc.
585 */
586
587 #define PROC_CURPROC (~((u_int)1 << 31))
588
589 /*
590 * CTL_PROC tree: either corename (string), or a limit
591 * (rlimit.<type>.{hard,soft}, int).
592 */
593 #define PROC_PID_CORENAME 1
594 #define PROC_PID_LIMIT 2
595 #define PROC_PID_MAXID 3
596
597 #define PROC_PID_NAMES { \
598 { 0, 0 }, \
599 { "corename", CTLTYPE_STRING }, \
600 { "rlimit", CTLTYPE_NODE }, \
601 }
602
603 /* Limit types from <sys/resources.h> */
604 #define PROC_PID_LIMIT_CPU (RLIMIT_CPU+1)
605 #define PROC_PID_LIMIT_FSIZE (RLIMIT_FSIZE+1)
606 #define PROC_PID_LIMIT_DATA (RLIMIT_DATA+1)
607 #define PROC_PID_LIMIT_STACK (RLIMIT_STACK+1)
608 #define PROC_PID_LIMIT_CORE (RLIMIT_CORE+1)
609 #define PROC_PID_LIMIT_RSS (RLIMIT_RSS+1)
610 #define PROC_PID_LIMIT_MEMLOCK (RLIMIT_MEMLOCK+1)
611 #define PROC_PID_LIMIT_NPROC (RLIMIT_NPROC+1)
612 #define PROC_PID_LIMIT_NOFILE (RLIMIT_NOFILE+1)
613 #define PROC_PID_LIMIT_MAXID 10
614
615 #define PROC_PID_LIMIT_NAMES { \
616 { 0, 0 }, \
617 { "cputime", CTLTYPE_NODE }, \
618 { "filesize", CTLTYPE_NODE }, \
619 { "datasize", CTLTYPE_NODE }, \
620 { "stacksize", CTLTYPE_NODE }, \
621 { "coredumpsize", CTLTYPE_NODE }, \
622 { "memoryuse", CTLTYPE_NODE }, \
623 { "memorylocked", CTLTYPE_NODE }, \
624 { "maxproc", CTLTYPE_NODE }, \
625 { "descriptors", CTLTYPE_NODE }, \
626 }
627 /* for each type, either hard or soft value */
628 #define PROC_PID_LIMIT_TYPE_SOFT 1
629 #define PROC_PID_LIMIT_TYPE_HARD 2
630 #define PROC_PID_LIMIT_TYPE_MAXID 3
631
632 #define PROC_PID_LIMIT_TYPE_NAMES { \
633 {0, 0}, \
634 { "soft", CTLTYPE_QUAD }, \
635 { "hard", CTLTYPE_QUAD }, \
636 }
637
638 /*
639 * CTL_EMUL definitions
640 *
641 * Second level identifier specifies which emulation variable.
642 * Subsequent levels are specified in the emulations themselves.
643 */
644 #define EMUL_LINUX 1
645
646 #define EMUL_MAXID 2
647 #define CTL_EMUL_NAMES { \
648 { 0, 0 }, \
649 { "linux", CTLTYPE_NODE }, \
650 }
651
652 #ifdef _KERNEL
653 /*
654 * CTL_DEBUG variables.
655 *
656 * These are declared as separate variables so that they can be
657 * individually initialized at the location of their associated
658 * variable. The loader prevents multiple use by issuing errors
659 * if a variable is initialized in more than one place. They are
660 * aggregated into an array in debug_sysctl(), so that it can
661 * conveniently locate them when querried. If more debugging
662 * variables are added, they must also be declared here and also
663 * entered into the array.
664 */
665 struct ctldebug {
666 char *debugname; /* name of debugging variable */
667 int *debugvar; /* pointer to debugging variable */
668 };
669 #ifdef DEBUG
670 extern struct ctldebug debug0, debug1, debug2, debug3, debug4;
671 extern struct ctldebug debug5, debug6, debug7, debug8, debug9;
672 extern struct ctldebug debug10, debug11, debug12, debug13, debug14;
673 extern struct ctldebug debug15, debug16, debug17, debug18, debug19;
674 #endif /* DEBUG */
675
676 /*
677 * Internal sysctl function calling convention:
678 *
679 * (*sysctlfn)(name, namelen, oldval, oldlenp, newval, newlen);
680 *
681 * The name parameter points at the next component of the name to be
682 * interpreted. The namelen parameter is the number of integers in
683 * the name.
684 */
685 typedef int (sysctlfn)
686 (int *, u_int, void *, size_t *, void *, size_t, struct proc *);
687
688 int sysctl_int(void *, size_t *, void *, size_t, int *);
689 int sysctl_rdint(void *, size_t *, void *, int);
690 int sysctl_quad(void *, size_t *, void *, size_t, quad_t *);
691 int sysctl_rdquad(void *, size_t *, void *, quad_t);
692 int sysctl_string(void *, size_t *, void *, size_t, char *, int);
693 int sysctl_rdstring(void *, size_t *, void *, const char *);
694 int sysctl_struct(void *, size_t *, void *, size_t, void *, int);
695 int sysctl_rdstruct(void *, size_t *, void *, const void *, int);
696 int sysctl_rdminstruct(void *, size_t *, void *, const void *, int);
697 int sysctl_clockrate(void *, size_t *);
698 int sysctl_disknames(void *, size_t *);
699 int sysctl_diskstats(int *, u_int, void *, size_t *);
700 int sysctl_vnode(char *, size_t *, struct proc *);
701 int sysctl_ntptime(void *, size_t *);
702 #ifdef GPROF
703 int sysctl_doprof(int *, u_int, void *, size_t *, void *, size_t);
704 #endif
705 int sysctl_dombuf(int *, u_int, void *, size_t *, void *, size_t);
706
707 void fill_eproc(struct proc *, struct eproc *);
708
709 int kern_sysctl(int *, u_int, void *, size_t *, void *, size_t, struct proc *);
710 int hw_sysctl(int *, u_int, void *, size_t *, void *, size_t, struct proc *);
711 int proc_sysctl(int *, u_int, void *, size_t *, void *, size_t, struct proc *);
712 #ifdef DEBUG
713 int debug_sysctl(int *, u_int, void *, size_t *, void *, size_t, struct proc *);
714 #endif
715 int net_sysctl(int *, u_int, void *, size_t *, void *, size_t, struct proc *);
716 int cpu_sysctl(int *, u_int, void *, size_t *, void *, size_t, struct proc *);
717 int emul_sysctl(int *, u_int, void *, size_t *, void *, size_t, struct proc *);
718
719 /* ddb_sysctl() declared in ddb_var.h */
720
721 void sysctl_init(void);
722
723 #ifdef __SYSCTL_PRIVATE
724 extern struct lock sysctl_memlock;
725 #endif
726
727 #else /* !_KERNEL */
728 /* #include <sys/cdefs.h> */
729
730 /* __BEGIN_DECLS
731 int sysctl __P((int *, u_int, void *, size_t *, const void *, size_t));
732 __END_DECLS */
733 #endif /* _KERNEL */
734 #endif /* !NETBSD_SYS_SYSCTL_H_ */

  ViewVC Help
Powered by ViewVC 1.1.26