#ifndef _SYS_SYSCTL_H_
#define _SYS_SYSCTL_H_
#include <sys/syslimits.h>
#include <uvm/uvmexp.h>
#define CTL_MAXNAME 12
struct ctlname {
char *ctl_name;
int ctl_type;
};
#define CTLTYPE_NODE 1
#define CTLTYPE_INT 2
#define CTLTYPE_STRING 3
#define CTLTYPE_QUAD 4
#define CTLTYPE_STRUCT 5
#define CTL_UNSPEC 0
#define CTL_KERN 1
#define CTL_VM 2
#define CTL_NET 4
#define CTL_DEBUG 5
#define CTL_HW 6
#define CTL_MACHDEP 7
#define CTL_DDB 9
#define CTL_VFS 10
#define CTL_MAXID 11
#define CTL_NAMES { \
{ 0, 0 }, \
{ "kern", CTLTYPE_NODE }, \
{ "vm", CTLTYPE_NODE }, \
{ "gap", 0 }, \
{ "net", CTLTYPE_NODE }, \
{ "debug", CTLTYPE_NODE }, \
{ "hw", CTLTYPE_NODE }, \
{ "machdep", CTLTYPE_NODE }, \
{ "gap", 0 }, \
{ "ddb", CTLTYPE_NODE }, \
{ "vfs", CTLTYPE_NODE }, \
}
#define KERN_OSTYPE 1
#define KERN_OSRELEASE 2
#define KERN_OSREV 3
#define KERN_VERSION 4
#define KERN_MAXVNODES 5
#define KERN_MAXPROC 6
#define KERN_MAXFILES 7
#define KERN_ARGMAX 8
#define KERN_SECURELVL 9
#define KERN_HOSTNAME 10
#define KERN_HOSTID 11
#define KERN_CLOCKRATE 12
#define KERN_PROF 16
#define KERN_POSIX1 17
#define KERN_NGROUPS 18
#define KERN_JOB_CONTROL 19
#define KERN_SAVED_IDS 20
#define KERN_BOOTTIME 21
#define KERN_DOMAINNAME 22
#define KERN_MAXPARTITIONS 23
#define KERN_RAWPARTITION 24
#define KERN_MAXTHREAD 25
#define KERN_NTHREADS 26
#define KERN_OSVERSION 27
#define KERN_SOMAXCONN 28
#define KERN_SOMINCONN 29
#define KERN_NOSUIDCOREDUMP 32
#define KERN_FSYNC 33
#define KERN_SYSVMSG 34
#define KERN_SYSVSEM 35
#define KERN_SYSVSHM 36
#define KERN_MSGBUFSIZE 38
#define KERN_MALLOCSTATS 39
#define KERN_CPTIME 40
#define KERN_NCHSTATS 41
#define KERN_FORKSTAT 42
#define KERN_TTY 44
#define KERN_CCPU 45
#define KERN_FSCALE 46
#define KERN_NPROCS 47
#define KERN_MSGBUF 48
#define KERN_POOL 49
#define KERN_STACKGAPRANDOM 50
#define KERN_SYSVIPC_INFO 51
#define KERN_ALLOWKMEM 52
#define KERN_WITNESSWATCH 53
#define KERN_SPLASSERT 54
#define KERN_PROC_ARGS 55
#define KERN_NFILES 56
#define KERN_TTYCOUNT 57
#define KERN_NUMVNODES 58
#define KERN_MBSTAT 59
#define KERN_WITNESS 60
#define KERN_SEMINFO 61
#define KERN_SHMINFO 62
#define KERN_INTRCNT 63
#define KERN_WATCHDOG 64
#define KERN_ALLOWDT 65
#define KERN_PROC 66
#define KERN_MAXCLUSTERS 67
#define KERN_EVCOUNT 68
#define KERN_TIMECOUNTER 69
#define KERN_MAXLOCKSPERUID 70
#define KERN_CPTIME2 71
#define KERN_CACHEPCT 72
#define KERN_FILE 73
#define KERN_WXABORT 74
#define KERN_CONSDEV 75
#define KERN_NETLIVELOCKS 76
#define KERN_POOL_DEBUG 77
#define KERN_PROC_CWD 78
#define KERN_PROC_NOBROADCASTKILL 79
#define KERN_PROC_VMMAP 80
#define KERN_GLOBAL_PTRACE 81
#define KERN_CONSBUFSIZE 82
#define KERN_CONSBUF 83
#define KERN_AUDIO 84
#define KERN_CPUSTATS 85
#define KERN_PFSTATUS 86
#define KERN_TIMEOUT_STATS 87
#define KERN_UTC_OFFSET 88
#define KERN_VIDEO 89
#define KERN_CLOCKINTR 90
#define KERN_AUTOCONF_SERIAL 91
#define KERN_MAXID 92
#define CTL_KERN_NAMES { \
{ 0, 0 }, \
{ "ostype", CTLTYPE_STRING }, \
{ "osrelease", CTLTYPE_STRING }, \
{ "osrevision", CTLTYPE_INT }, \
{ "version", CTLTYPE_STRING }, \
{ "maxvnodes", CTLTYPE_INT }, \
{ "maxproc", CTLTYPE_INT }, \
{ "maxfiles", CTLTYPE_INT }, \
{ "argmax", CTLTYPE_INT }, \
{ "securelevel", CTLTYPE_INT }, \
{ "hostname", CTLTYPE_STRING }, \
{ "hostid", CTLTYPE_INT }, \
{ "clockrate", CTLTYPE_STRUCT }, \
{ "gap", 0 }, \
{ "gap", 0 }, \
{ "gap", 0 }, \
{ "profiling", CTLTYPE_NODE }, \
{ "posix1version", CTLTYPE_INT }, \
{ "ngroups", CTLTYPE_INT }, \
{ "job_control", CTLTYPE_INT }, \
{ "saved_ids", CTLTYPE_INT }, \
{ "boottime", CTLTYPE_STRUCT }, \
{ "domainname", CTLTYPE_STRING }, \
{ "maxpartitions", CTLTYPE_INT }, \
{ "rawpartition", CTLTYPE_INT }, \
{ "maxthread", CTLTYPE_INT }, \
{ "nthreads", CTLTYPE_INT }, \
{ "osversion", CTLTYPE_STRING }, \
{ "somaxconn", CTLTYPE_INT }, \
{ "sominconn", CTLTYPE_INT }, \
{ "gap", 0 }, \
{ "gap", 0 }, \
{ "nosuidcoredump", CTLTYPE_INT }, \
{ "fsync", CTLTYPE_INT }, \
{ "sysvmsg", CTLTYPE_INT }, \
{ "sysvsem", CTLTYPE_INT }, \
{ "sysvshm", CTLTYPE_INT }, \
{ "gap", 0 }, \
{ "msgbufsize", CTLTYPE_INT }, \
{ "malloc", CTLTYPE_NODE }, \
{ "cp_time", CTLTYPE_STRUCT }, \
{ "nchstats", CTLTYPE_STRUCT }, \
{ "forkstat", CTLTYPE_STRUCT }, \
{ "gap", 0 }, \
{ "tty", CTLTYPE_NODE }, \
{ "ccpu", CTLTYPE_INT }, \
{ "fscale", CTLTYPE_INT }, \
{ "nprocs", CTLTYPE_INT }, \
{ "msgbuf", CTLTYPE_STRUCT }, \
{ "pool", CTLTYPE_NODE }, \
{ "stackgap_random", CTLTYPE_INT }, \
{ "sysvipc_info", CTLTYPE_INT }, \
{ "allowkmem", CTLTYPE_INT }, \
{ "witnesswatch", CTLTYPE_INT }, \
{ "splassert", CTLTYPE_INT }, \
{ "procargs", CTLTYPE_NODE }, \
{ "nfiles", CTLTYPE_INT }, \
{ "ttycount", CTLTYPE_INT }, \
{ "numvnodes", CTLTYPE_INT }, \
{ "mbstat", CTLTYPE_STRUCT }, \
{ "witness", CTLTYPE_NODE }, \
{ "seminfo", CTLTYPE_STRUCT }, \
{ "shminfo", CTLTYPE_STRUCT }, \
{ "intrcnt", CTLTYPE_NODE }, \
{ "watchdog", CTLTYPE_NODE }, \
{ "allowdt", CTLTYPE_INT }, \
{ "proc", CTLTYPE_STRUCT }, \
{ "maxclusters", CTLTYPE_INT }, \
{ "evcount", CTLTYPE_NODE }, \
{ "timecounter", CTLTYPE_NODE }, \
{ "maxlocksperuid", CTLTYPE_INT }, \
{ "cp_time2", CTLTYPE_STRUCT }, \
{ "bufcachepercent", CTLTYPE_INT }, \
{ "file", CTLTYPE_STRUCT }, \
{ "wxabort", CTLTYPE_INT }, \
{ "consdev", CTLTYPE_STRUCT }, \
{ "netlivelocks", CTLTYPE_INT }, \
{ "pool_debug", CTLTYPE_INT }, \
{ "proc_cwd", CTLTYPE_NODE }, \
{ "proc_nobroadcastkill", CTLTYPE_NODE }, \
{ "proc_vmmap", CTLTYPE_NODE }, \
{ "global_ptrace", CTLTYPE_INT }, \
{ "consbufsize", CTLTYPE_INT }, \
{ "consbuf", CTLTYPE_STRUCT }, \
{ "audio", CTLTYPE_STRUCT }, \
{ "cpustats", CTLTYPE_STRUCT }, \
{ "pfstatus", CTLTYPE_STRUCT }, \
{ "timeout_stats", CTLTYPE_STRUCT }, \
{ "utc_offset", CTLTYPE_INT }, \
{ "video", CTLTYPE_STRUCT }, \
{ "clockintr", CTLTYPE_NODE }, \
{ "autoconf_serial", CTLTYPE_INT }, \
}
#define KERN_PROC_ALL 0
#define KERN_PROC_PID 1
#define KERN_PROC_PGRP 2
#define KERN_PROC_SESSION 3
#define KERN_PROC_TTY 4
#define KERN_PROC_UID 5
#define KERN_PROC_RUID 6
#define KERN_PROC_KTHREAD 7
#define KERN_PROC_SHOW_THREADS 0x40000000
#define KERN_SYSVIPC_MSG_INFO 1
#define KERN_SYSVIPC_SEM_INFO 2
#define KERN_SYSVIPC_SHM_INFO 3
#define KERN_PROC_ARGV 1
#define KERN_PROC_NARGV 2
#define KERN_PROC_ENV 3
#define KERN_PROC_NENV 4
#define KERN_AUDIO_RECORD 1
#define KERN_AUDIO_KBDCONTROL 2
#define KERN_AUDIO_MAXID 3
#define CTL_KERN_AUDIO_NAMES { \
{ 0, 0 }, \
{ "record", CTLTYPE_INT }, \
{ "kbdcontrol", CTLTYPE_INT }, \
}
#define KERN_VIDEO_RECORD 1
#define KERN_VIDEO_MAXID 2
#define CTL_KERN_VIDEO_NAMES { \
{ 0, 0 }, \
{ "record", CTLTYPE_INT }, \
}
#define KERN_WITNESS_WATCH 1
#define KERN_WITNESS_LOCKTRACE 2
#define KERN_WITNESS_MAXID 3
#define CTL_KERN_WITNESS_NAMES { \
{ 0, 0 }, \
{ "watch", CTLTYPE_INT }, \
{ "locktrace", CTLTYPE_INT }, \
}
#define KI_NGROUPS 16
#define KI_MAXCOMLEN _MAXCOMLEN
#define KI_WMESGLEN 8
#define KI_MAXLOGNAME 32
#define KI_EMULNAMELEN 8
#define KI_NOCPU (~(u_int64_t)0)
struct kinfo_proc {
u_int64_t p_forw;
u_int64_t p_back;
u_int64_t p_paddr;
u_int64_t p_addr;
u_int64_t p_fd;
u_int64_t p_stats;
u_int64_t p_limit;
u_int64_t p_vmspace;
u_int64_t p_sigacts;
u_int64_t p_sess;
u_int64_t p_tsess;
u_int64_t p_ru;
int32_t p_eflag;
#define EPROC_CTTY 0x01
#define EPROC_SLEADER 0x02
#define EPROC_UNVEIL 0x04
#define EPROC_LKUNVEIL 0x08
int32_t p_exitsig;
int32_t p_flag;
int32_t p_pid;
int32_t p_ppid;
int32_t p_sid;
int32_t p__pgid;
int32_t p_tpgid;
u_int32_t p_uid;
u_int32_t p_ruid;
u_int32_t p_gid;
u_int32_t p_rgid;
u_int32_t p_groups[KI_NGROUPS];
int16_t p_ngroups;
int16_t p_jobc;
u_int32_t p_tdev;
u_int32_t p_estcpu;
u_int32_t p_rtime_sec;
u_int32_t p_rtime_usec;
int32_t p_cpticks;
u_int32_t p_pctcpu;
u_int32_t p_swtime;
u_int32_t p_slptime;
int32_t p_schedflags;
u_int64_t p_uticks;
u_int64_t p_sticks;
u_int64_t p_iticks;
u_int64_t p_tracep;
int32_t p_traceflag;
int32_t p_holdcnt;
int32_t p_siglist;
u_int32_t p_sigmask;
u_int32_t p_sigignore;
u_int32_t p_sigcatch;
int8_t p_stat;
u_int8_t p_priority;
u_int8_t p_usrpri;
u_int8_t p_nice;
u_int16_t p_xstat;
u_int16_t p_spare;
char p_comm[KI_MAXCOMLEN];
char p_wmesg[KI_WMESGLEN];
u_int64_t p_wchan;
char p_login[KI_MAXLOGNAME];
int32_t p_vm_rssize;
int32_t p_vm_tsize;
int32_t p_vm_dsize;
int32_t p_vm_ssize;
int64_t p_uvalid;
u_int64_t p_ustart_sec;
u_int32_t p_ustart_usec;
u_int32_t p_uutime_sec;
u_int32_t p_uutime_usec;
u_int32_t p_ustime_sec;
u_int32_t p_ustime_usec;
u_int64_t p_uru_maxrss;
u_int64_t p_uru_ixrss;
u_int64_t p_uru_idrss;
u_int64_t p_uru_isrss;
u_int64_t p_uru_minflt;
u_int64_t p_uru_majflt;
u_int64_t p_uru_nswap;
u_int64_t p_uru_inblock;
u_int64_t p_uru_oublock;
u_int64_t p_uru_msgsnd;
u_int64_t p_uru_msgrcv;
u_int64_t p_uru_nsignals;
u_int64_t p_uru_nvcsw;
u_int64_t p_uru_nivcsw;
u_int32_t p_uctime_sec;
u_int32_t p_uctime_usec;
u_int32_t p_psflags;
u_int32_t p_acflag;
u_int32_t p_svuid;
u_int32_t p_svgid;
char p_emul[KI_EMULNAMELEN];
u_int64_t p_rlim_rss_cur;
u_int64_t p_cpuid;
u_int64_t p_vm_map_size;
int32_t p_tid;
u_int32_t p_rtableid;
u_int64_t p_pledge;
char p_name[KI_MAXCOMLEN];
};
struct kinfo_vmentry {
u_long kve_start;
u_long kve_end;
u_long kve_guard;
u_long kve_fspace;
u_long kve_fspace_augment;
u_int64_t kve_offset;
int kve_wired_count;
int kve_etype;
int kve_protection;
int kve_max_protection;
int kve_advice;
int kve_inheritance;
u_int8_t kve_flags;
};
#define KVE_ET_OBJ 0x00000001
#define KVE_ET_SUBMAP 0x00000002
#define KVE_ET_COPYONWRITE 0x00000004
#define KVE_ET_NEEDSCOPY 0x00000008
#define KVE_ET_HOLE 0x00000010
#define KVE_ET_NOFAULT 0x00000020
#define KVE_ET_STACK 0x00000040
#define KVE_ET_WC 0x00000080
#define KVE_ET_CONCEAL 0x00000100
#define KVE_ET_SYSCALL 0x00000200
#define KVE_ET_FREEMAPPED 0x00000800
#define KVE_PROT_NONE 0x00000000
#define KVE_PROT_READ 0x00000001
#define KVE_PROT_WRITE 0x00000002
#define KVE_PROT_EXEC 0x00000004
#define KVE_ADV_NORMAL 0x00000000
#define KVE_ADV_RANDOM 0x00000001
#define KVE_ADV_SEQUENTIAL 0x00000002
#define KVE_INH_SHARE 0x00000000
#define KVE_INH_COPY 0x00000010
#define KVE_INH_NONE 0x00000020
#define KVE_INH_ZERO 0x00000030
#define KVE_F_STATIC 0x01
#define KVE_F_KMEM 0x02
#if defined(_KERNEL) || defined(_LIBKVM)
#if defined(_KERNEL)
#define PR_LOCK(pr) mtx_enter(&(pr)->ps_mtx)
#define PR_UNLOCK(pr) mtx_leave(&(pr)->ps_mtx)
#else
#define PR_LOCK(pr)
#define PR_UNLOCK(pr)
#endif
#define _getcompatprio(_p) \
((_p)->p_stat == SRUN ? (_p)->p_runpri : \
((_p)->p_stat == SSLEEP) ? (_p)->p_slppri : (_p)->p_usrpri)
#define PTRTOINT64(_x) ((u_int64_t)(u_long)(_x))
#define _FILL_KPROC_MIN(a,b) (((a)<(b))?(a):(b))
#define FILL_KPROC(kp, copy_str, p, pr, uc, pg, paddr, \
praddr, sess, vm, lim, sa, tu, isthread, show_addresses) \
do { \
memset((kp), 0, sizeof(*(kp))); \
\
if (show_addresses) { \
(kp)->p_paddr = PTRTOINT64(paddr); \
(kp)->p_fd = PTRTOINT64((pr)->ps_fd); \
(kp)->p_limit = PTRTOINT64((pr)->ps_limit); \
(kp)->p_vmspace = PTRTOINT64((pr)->ps_vmspace); \
(kp)->p_sigacts = PTRTOINT64((pr)->ps_sigacts); \
(kp)->p_sess = PTRTOINT64((pg)->pg_session); \
(kp)->p_ru = PTRTOINT64((pr)->ps_ru); \
} \
(kp)->p_stats = 0; \
(kp)->p_exitsig = 0; \
(kp)->p_flag = (p)->p_flag; \
(kp)->p_pid = (pr)->ps_pid; \
(kp)->p_psflags = (pr)->ps_flags; \
\
(kp)->p__pgid = (pg)->pg_id; \
\
(kp)->p_uid = (uc)->cr_uid; \
(kp)->p_ruid = (uc)->cr_ruid; \
(kp)->p_gid = (uc)->cr_gid; \
(kp)->p_rgid = (uc)->cr_rgid; \
(kp)->p_svuid = (uc)->cr_svuid; \
(kp)->p_svgid = (uc)->cr_svgid; \
\
memcpy((kp)->p_groups, (uc)->cr_groups, \
_FILL_KPROC_MIN(sizeof((kp)->p_groups), sizeof((uc)->cr_groups))); \
(kp)->p_ngroups = (uc)->cr_ngroups; \
\
(kp)->p_jobc = (pg)->pg_jobc; \
\
(kp)->p_estcpu = (p)->p_estcpu; \
if (isthread) { \
(kp)->p_tid = (p)->p_tid + THREAD_PID_OFFSET; \
strlcpy((kp)->p_name, (p)->p_name, sizeof((kp)->p_name)); \
} else { \
(kp)->p_tid = -1; \
} \
(kp)->p_rtime_sec = (tu)->tu_runtime.tv_sec; \
(kp)->p_rtime_usec = (tu)->tu_runtime.tv_nsec/1000; \
(kp)->p_uticks = (tu)->tu_uticks; \
(kp)->p_sticks = (tu)->tu_sticks; \
(kp)->p_iticks = (tu)->tu_iticks; \
(kp)->p_cpticks = (p)->p_cpticks; \
\
if (show_addresses) \
(kp)->p_tracep = PTRTOINT64((pr)->ps_tracevp); \
(kp)->p_traceflag = (pr)->ps_traceflag; \
\
(kp)->p_siglist = (p)->p_siglist | (pr)->ps_siglist; \
(kp)->p_sigmask = (p)->p_sigmask; \
\
PR_LOCK(pr); \
(kp)->p_ppid = (pr)->ps_ppid; \
(kp)->p_sigignore = (sa) ? (sa)->ps_sigignore : 0; \
(kp)->p_sigcatch = (sa) ? (sa)->ps_sigcatch : 0; \
\
if (lim) \
(kp)->p_rlim_rss_cur = \
(lim)->pl_rlimit[RLIMIT_RSS].rlim_cur; \
PR_UNLOCK(pr); \
\
(kp)->p_stat = (p)->p_stat; \
(kp)->p_nice = (pr)->ps_nice; \
\
(kp)->p_xstat = W_EXITCODE((pr)->ps_xexit, (pr)->ps_xsig); \
(kp)->p_acflag = (pr)->ps_acflag; \
(kp)->p_pledge = (pr)->ps_pledge; \
\
strlcpy((kp)->p_emul, "native", sizeof((kp)->p_emul)); \
strlcpy((kp)->p_comm, (pr)->ps_comm, sizeof((kp)->p_comm)); \
strlcpy((kp)->p_login, (sess)->s_login, \
_FILL_KPROC_MIN(sizeof((kp)->p_login), sizeof((sess)->s_login))); \
\
if ((sess)->s_ttyvp) \
(kp)->p_eflag |= EPROC_CTTY; \
if ((pr)->ps_uvpaths) \
(kp)->p_eflag |= EPROC_UNVEIL; \
if ((pr)->ps_uvdone || \
(((pr)->ps_flags & PS_PLEDGE) && \
((pr)->ps_pledge & PLEDGE_UNVEIL) == 0)) \
(kp)->p_eflag |= EPROC_LKUNVEIL; \
\
if (((pr)->ps_flags & (PS_EMBRYO | PS_ZOMBIE)) == 0) { \
if ((vm) != NULL) { \
(kp)->p_vm_rssize = (vm)->vm_rssize; \
(kp)->p_vm_tsize = (vm)->vm_tsize; \
(kp)->p_vm_dsize = (vm)->vm_dused; \
(kp)->p_vm_ssize = (vm)->vm_ssize; \
} \
(kp)->p_addr = PTRTOINT64((p)->p_addr); \
(kp)->p_stat = (p)->p_stat; \
(kp)->p_slptime = (p)->p_slptime; \
(kp)->p_holdcnt = 1; \
(kp)->p_priority = _getcompatprio(p); \
(kp)->p_usrpri = (p)->p_usrpri; \
if ((p)->p_wchan && (p)->p_wmesg) \
copy_str((kp)->p_wmesg, (p)->p_wmesg, \
sizeof((kp)->p_wmesg)); \
if (show_addresses) \
(kp)->p_wchan = PTRTOINT64((p)->p_wchan); \
} \
\
if (((pr)->ps_flags & PS_ZOMBIE) == 0) { \
struct timeval __tv; \
\
(kp)->p_uvalid = 1; \
\
(kp)->p_uru_maxrss = (p)->p_ru.ru_maxrss; \
(kp)->p_uru_ixrss = (p)->p_ru.ru_ixrss; \
(kp)->p_uru_idrss = (p)->p_ru.ru_idrss; \
(kp)->p_uru_isrss = (p)->p_ru.ru_isrss; \
(kp)->p_uru_minflt = (p)->p_ru.ru_minflt; \
(kp)->p_uru_majflt = (p)->p_ru.ru_majflt; \
(kp)->p_uru_nswap = (p)->p_ru.ru_nswap; \
(kp)->p_uru_inblock = (p)->p_ru.ru_inblock; \
(kp)->p_uru_oublock = (p)->p_ru.ru_oublock; \
(kp)->p_uru_msgsnd = (p)->p_ru.ru_msgsnd; \
(kp)->p_uru_msgrcv = (p)->p_ru.ru_msgrcv; \
(kp)->p_uru_nsignals = (p)->p_ru.ru_nsignals; \
(kp)->p_uru_nvcsw = (p)->p_ru.ru_nvcsw; \
(kp)->p_uru_nivcsw = (p)->p_ru.ru_nivcsw; \
\
timeradd(&(pr)->ps_cru.ru_utime, \
&(pr)->ps_cru.ru_stime, &__tv); \
(kp)->p_uctime_sec = __tv.tv_sec; \
(kp)->p_uctime_usec = __tv.tv_usec; \
} \
\
(kp)->p_cpuid = KI_NOCPU; \
(kp)->p_rtableid = (pr)->ps_rtableid; \
} while (0)
#endif
#define KERN_FILE_BYFILE 1
#define KERN_FILE_BYPID 2
#define KERN_FILE_BYUID 3
#define KERN_FILESLOP 10
#define KERN_FILE_TEXT -1
#define KERN_FILE_CDIR -2
#define KERN_FILE_RDIR -3
#define KERN_FILE_TRACE -4
#define KI_MNAMELEN 96
#define KI_UNPPATHLEN 104
struct kinfo_file {
uint64_t f_fileaddr;
uint32_t f_flag;
uint32_t f_iflags;
uint32_t f_type;
uint32_t f_count;
uint32_t f_msgcount;
uint32_t f_usecount;
uint64_t f_ucred;
uint32_t f_uid;
uint32_t f_gid;
uint64_t f_ops;
uint64_t f_offset;
uint64_t f_data;
uint64_t f_rxfer;
uint64_t f_rwfer;
uint64_t f_seek;
uint64_t f_rbytes;
uint64_t f_wbytes;
uint64_t v_un;
uint32_t v_type;
uint32_t v_tag;
uint32_t v_flag;
uint32_t va_rdev;
uint64_t v_data;
uint64_t v_mount;
uint64_t va_fileid;
uint64_t va_size;
uint32_t va_mode;
uint32_t va_fsid;
char f_mntonname[KI_MNAMELEN];
uint32_t so_type;
uint32_t so_state;
uint64_t so_pcb;
uint32_t so_protocol;
uint32_t so_family;
uint64_t inp_ppcb;
uint32_t inp_lport;
uint32_t inp_laddru[4];
uint32_t inp_fport;
uint32_t inp_faddru[4];
uint64_t unp_conn;
uint64_t pipe_peer;
uint32_t pipe_state;
uint32_t kq_count;
uint32_t kq_state;
uint32_t __unused1;
uint32_t p_pid;
int32_t fd_fd;
uint32_t fd_ofileflags;
uint32_t p_uid;
uint32_t p_gid;
uint32_t p_tid;
char p_comm[KI_MAXCOMLEN];
uint32_t inp_rtableid;
uint64_t so_splice;
int64_t so_splicelen;
uint64_t so_rcv_cc;
uint64_t so_snd_cc;
uint64_t unp_refs;
uint64_t unp_nextref;
uint64_t unp_addr;
char unp_path[KI_UNPPATHLEN];
uint32_t inp_proto;
uint32_t t_state;
uint64_t t_rcv_wnd;
uint64_t t_snd_wnd;
uint64_t t_snd_cwnd;
uint32_t va_nlink;
};
#define KERN_INTRCNT_NUM 1
#define KERN_INTRCNT_CNT 2
#define KERN_INTRCNT_NAME 3
#define KERN_INTRCNT_VECTOR 4
#define KERN_INTRCNT_MAXID 5
#define CTL_KERN_INTRCNT_NAMES { \
{ 0, 0 }, \
{ "nintrcnt", CTLTYPE_INT }, \
{ "intrcnt", CTLTYPE_NODE }, \
{ "intrname", CTLTYPE_NODE }, \
}
#define KERN_WATCHDOG_PERIOD 1
#define KERN_WATCHDOG_AUTO 2
#define KERN_WATCHDOG_MAXID 3
#define CTL_KERN_WATCHDOG_NAMES { \
{ 0, 0 }, \
{ "period", CTLTYPE_INT }, \
{ "auto", CTLTYPE_INT }, \
}
#define KERN_TIMECOUNTER_TICK 1
#define KERN_TIMECOUNTER_TIMESTEPWARNINGS 2
#define KERN_TIMECOUNTER_HARDWARE 3
#define KERN_TIMECOUNTER_CHOICE 4
#define KERN_TIMECOUNTER_MAXID 5
#define CTL_KERN_TIMECOUNTER_NAMES { \
{ 0, 0 }, \
{ "tick", CTLTYPE_INT }, \
{ "timestepwarnings", CTLTYPE_INT }, \
{ "hardware", CTLTYPE_STRING }, \
{ "choice", CTLTYPE_STRING }, \
}
#define KERN_CLOCKINTR_STATS 1
#define KERN_CLOCKINTR_MAXID 2
#define CTL_KERN_CLOCKINTR_NAMES { \
{ 0, 0 }, \
{ "stats", CTLTYPE_STRUCT }, \
}
#define HW_MACHINE 1
#define HW_MODEL 2
#define HW_NCPU 3
#define HW_BYTEORDER 4
#define HW_PHYSMEM 5
#define HW_USERMEM 6
#define HW_PAGESIZE 7
#define HW_DISKNAMES 8
#define HW_DISKSTATS 9
#define HW_DISKCOUNT 10
#define HW_SENSORS 11
#define HW_CPUSPEED 12
#define HW_SETPERF 13
#define HW_VENDOR 14
#define HW_PRODUCT 15
#define HW_VERSION 16
#define HW_SERIALNO 17
#define HW_UUID 18
#define HW_PHYSMEM64 19
#define HW_USERMEM64 20
#define HW_NCPUFOUND 21
#define HW_ALLOWPOWERDOWN 22
#define HW_PERFPOLICY 23
#define HW_SMT 24
#define HW_NCPUONLINE 25
#define HW_POWER 26
#define HW_BATTERY 27
#define HW_UCOMNAMES 28
#define HW_BLOCKCPU 29
#define HW_MAXID 30
#define CTL_HW_NAMES { \
{ 0, 0 }, \
{ "machine", CTLTYPE_STRING }, \
{ "model", CTLTYPE_STRING }, \
{ "ncpu", CTLTYPE_INT }, \
{ "byteorder", CTLTYPE_INT }, \
{ "gap", 0 }, \
{ "gap", 0 }, \
{ "pagesize", CTLTYPE_INT }, \
{ "disknames", CTLTYPE_STRING }, \
{ "diskstats", CTLTYPE_STRUCT }, \
{ "diskcount", CTLTYPE_INT }, \
{ "sensors", CTLTYPE_NODE}, \
{ "cpuspeed", CTLTYPE_INT }, \
{ "setperf", CTLTYPE_INT }, \
{ "vendor", CTLTYPE_STRING }, \
{ "product", CTLTYPE_STRING }, \
{ "version", CTLTYPE_STRING }, \
{ "serialno", CTLTYPE_STRING }, \
{ "uuid", CTLTYPE_STRING }, \
{ "physmem", CTLTYPE_QUAD }, \
{ "usermem", CTLTYPE_QUAD }, \
{ "ncpufound", CTLTYPE_INT }, \
{ "allowpowerdown", CTLTYPE_INT }, \
{ "perfpolicy", CTLTYPE_STRING }, \
{ "smt", CTLTYPE_INT }, \
{ "ncpuonline", CTLTYPE_INT }, \
{ "power", CTLTYPE_INT }, \
{ "battery", CTLTYPE_NODE }, \
{ "ucomnames", CTLTYPE_STRING }, \
{ "blockcpu", CTLTYPE_STRING }, \
}
#define HW_BATTERY_CHARGEMODE 1
#define HW_BATTERY_CHARGESTART 2
#define HW_BATTERY_CHARGESTOP 3
#define HW_BATTERY_MAXID 4
#define CTL_HW_BATTERY_NAMES { \
{ 0, 0 }, \
{ "chargemode", CTLTYPE_INT }, \
{ "chargestart", CTLTYPE_INT }, \
{ "chargestop", CTLTYPE_INT }, \
}
#define CTL_DEBUG_NAME 0
#define CTL_DEBUG_VALUE 1
#define CTL_DEBUG_MAXID 20
#ifdef _KERNEL
#ifdef DEBUG_SYSCTL
struct ctldebug {
char *debugname;
int *debugvar;
};
#endif
struct sysctl_bounded_args {
int mib;
int *var;
int minimum;
int maximum;
};
#define SYSCTL_INT_READONLY 1,0
typedef int (sysctlfn)(int *, u_int, void *, size_t *, void *, size_t, struct proc *);
extern struct rwlock sysctl_lock;
int sysctl_vslock(void *, size_t);
void sysctl_vsunlock(void *, size_t);
int sysctl_int_lower(void *, size_t *, void *, size_t, int *);
int sysctl_int(void *, size_t *, void *, size_t, int *);
int sysctl_rdint(void *, size_t *, void *, int);
int sysctl_securelevel_int(void *, size_t *, void *, size_t, int *);
int sysctl_int_bounded(void *, size_t *, void *, size_t, int *, int, int);
int sysctl_bounded_arr(const struct sysctl_bounded_args *, u_int,
int *, u_int, void *, size_t *, void *, size_t);
int sysctl_rdquad(void *, size_t *, void *, int64_t);
int sysctl_string(void *, size_t *, void *, size_t, char *, size_t);
int sysctl_tstring(void *, size_t *, void *, size_t, char *, size_t);
int sysctl__string(void *, size_t *, void *, size_t, char *, size_t, int);
int sysctl_rdstring(void *, size_t *, void *, const char *);
int sysctl_rdstruct(void *, size_t *, void *, const void *, size_t);
int sysctl_struct(void *, size_t *, void *, size_t, void *, size_t);
int sysctl_file(int *, u_int, char *, size_t *, struct proc *);
int sysctl_doproc(int *, u_int, char *, size_t *);
struct mbuf_queue;
int sysctl_mq(int *, u_int, void *, size_t *, void *, size_t,
struct mbuf_queue *);
struct rtentry;
int sysctl_dumpentry(const struct rtentry *, void *, unsigned int);
int sysctl_rtable(int *, u_int, void *, size_t *, void *, size_t);
int sysctl_clockrate(char *, size_t *, void *);
#if defined(GPROF) || defined(DDBPROF)
int sysctl_doprof(int *, u_int, void *, size_t *, void *, size_t);
#endif
int sysctl_dopool(int *, u_int, char *, size_t *);
int kern_sysctl(int *, u_int, void *, size_t *, void *, size_t,
struct proc *);
int hw_sysctl(int *, u_int, void *, size_t *, void *, size_t,
struct proc *);
#ifdef DEBUG_SYSCTL
int debug_sysctl(int *, u_int, void *, size_t *, void *, size_t,
struct proc *);
#endif
int net_sysctl(int *, u_int, void *, size_t *, void *, size_t,
struct proc *);
int cpu_sysctl(int *, u_int, void *, size_t *, void *, size_t,
struct proc *);
int vfs_sysctl(int *, u_int, void *, size_t *, void *, size_t,
struct proc *);
int sysctl_sysvipc(int *, u_int, void *, size_t *);
int sysctl_wdog(int *, u_int, void *, size_t *, void *, size_t);
extern int (*cpu_cpuspeed)(int *);
extern void (*cpu_setperf)(int);
int net_ifiq_sysctl(int *, u_int, void *, size_t *, void *, size_t);
int bpf_sysctl(int *, u_int, void *, size_t *, void *, size_t);
int pflow_sysctl(int *, u_int, void *, size_t *, void *, size_t);
int pipex_sysctl(int *, u_int, void *, size_t *, void *, size_t);
int mpls_sysctl(int *, u_int, void *, size_t *, void *, size_t);
int pf_sysctl(void *, size_t *, void *, size_t);
int uipc_sysctl(int *, u_int, void *, size_t *, void *, size_t);
#else
__BEGIN_DECLS
int sysctl(const int *, u_int, void *, size_t *, void *, size_t);
__END_DECLS
#endif
#endif