std.c: adding freebsd's kinfo_proc type.

This commit is contained in:
David CARLIER 2023-04-30 14:32:12 +01:00 committed by Veikka Tuominen
parent 297b5d1074
commit 3dd0afe787

View file

@ -64,6 +64,7 @@ pub extern "c" fn getpid() pid_t;
pub extern "c" fn kinfo_getfile(pid: pid_t, cntp: *c_int) ?[*]kinfo_file;
pub extern "c" fn kinfo_getvmmap(pid: pid_t, cntp: *c_int) ?[*]kinfo_vmentry;
pub extern "c" fn kinfo_getproc(pid: pid_t) ?[*]kinfo_proc;
pub extern "c" fn cpuset_getaffinity(level: cpulevel_t, which: cpuwhich_t, id: id_t, setsize: usize, mask: *cpuset_t) c_int;
pub extern "c" fn cpuset_setaffinity(level: cpulevel_t, which: cpuwhich_t, id: id_t, setsize: usize, mask: *const cpuset_t) c_int;
@ -676,6 +677,191 @@ comptime {
std.debug.assert(@sizeOf(kinfo_vmentry) == KINFO_VMENTRY_SIZE);
}
pub const WMESGLEN = 8;
pub const LOCKNAMELEN = 8;
pub const TDNAMLEN = 16;
pub const COMMLEN = 19;
pub const MAXCOMLEN = 19;
pub const KI_EMULNAMELEN = 16;
pub const KI_NGROUPS = 16;
pub const LOGNAMELEN = 17;
pub const LOGINCLASSLEN = 17;
pub const KI_NSPARE_INT = 2;
pub const KI_NSPARE_LONG = 12;
pub const KI_NSPARE_PTR = 5;
pub const RUSAGE_SELF = 0;
pub const RUSAGE_CHILDREN = -1;
pub const RUSAGE_THREAD = 1;
pub const proc = opaque {};
pub const thread = opaque {};
pub const vnode = opaque {};
pub const filedesc = opaque {};
pub const pwddesc = opaque {};
pub const vmspace = opaque {};
pub const pcb = opaque {};
pub const lwpid_t = i32;
pub const fixpt_t = u32;
pub const vm_size_t = usize;
pub const segsz_t = isize;
pub const itimerval = extern struct {
interval: timeval,
value: timeval,
};
pub const pstats = extern struct {
cru: rusage,
timer: [3]itimerval,
prof: extern struct {
base: u8,
size: c_ulong,
off: c_ulong,
scale: c_ulong,
},
start: timeval,
};
pub const user = extern struct {
stats: pstats,
kproc: kinfo_proc,
};
pub const pargs = extern struct {
ref: c_uint,
length: c_uint,
args: [1]u8,
};
pub const priority = extern struct {
class: u8,
level: u8,
native: u8,
user: u8,
};
pub const rusage = extern struct {
utime: timeval,
stime: timeval,
maxrss: c_long,
ixrss: c_long,
idrss: c_long,
isrss: c_long,
minflt: c_long,
majflt: c_long,
nswap: c_long,
inblock: c_long,
oublock: c_long,
msgsnd: c_long,
msgrcv: c_long,
nsignals: c_long,
nvcsw: c_long,
nivcsw: c_long,
};
pub const kinfo_proc = extern struct {
structsize: c_int,
layout: c_int,
args: *pargs,
paddr: *proc,
addr: *user,
tracep: *vnode,
textvp: *vnode,
fd: *filedesc,
vmspace: *vmspace,
wchan: ?*const anyopaque,
pid: pid_t,
ppid: pid_t,
pgid: pid_t,
tpgid: pid_t,
sid: pid_t,
tsid: pid_t,
jobc: c_short,
spare_short1: c_short,
tdev_freebsd11: u32,
siglist: sigset_t,
sigmask: sigset_t,
sigignore: sigset_t,
sigcatch: sigset_t,
uid: uid_t,
ruid: uid_t,
svuid: uid_t,
rgid: gid_t,
svgid: gid_t,
ngroups: c_short,
spare_short2: c_short,
groups: [KI_NGROUPS]gid_t,
size: vm_size_t,
rssize: segsz_t,
swrss: segsz_t,
tsize: segsz_t,
dsize: segsz_t,
ssize: segsz_t,
xstat: c_ushort,
acflag: c_ushort,
pctcpu: fixpt_t,
estcpu: c_uint,
slptime: c_uint,
swtime: c_uint,
cow: c_uint,
runtime: u64,
start: timeval,
childtime: timeval,
flag: c_long,
kiflag: c_long,
traceflag: c_int,
stat: u8,
nice: i8,
lock: u8,
rqindex: u8,
oncpu_old: u8,
lastcpu_old: u8,
tdname: [TDNAMLEN + 1]u8,
wmesg: [WMESGLEN + 1]u8,
login: [LOGNAMELEN + 1]u8,
lockname: [LOCKNAMELEN + 1]u8,
comm: [COMMLEN + 1]u8,
emul: [KI_EMULNAMELEN + 1]u8,
loginclass: [LOGINCLASSLEN + 1]u8,
moretdname: [MAXCOMLEN - TDNAMLEN + 1]u8,
sparestrings: [46]u8,
spareints: [KI_NSPARE_INT]c_int,
tdev: u64,
oncpu: c_int,
lastcpu: c_int,
tracer: c_int,
flag2: c_int,
fibnum: c_int,
cr_flags: c_uint,
jid: c_int,
numthreads: c_int,
tid: lwpid_t,
pri: priority,
rusage: rusage,
rusage_ch: rusage,
pcb: *pcb,
stack: ?*anyopaque,
udata: ?*anyopaque,
tdaddr: *thread,
pd: *pwddesc,
spareptrs: [KI_NSPARE_PTR]?*anyopaque,
sparelongs: [KI_NSPARE_LONG]c_long,
sflag: c_long,
tdflag: c_long,
};
pub const KINFO_PROC_SIZE = switch (builtin.cpu.arch) {
.x86 => 768,
.arm => 816,
else => 1088,
};
comptime {
assert(@sizeOf(kinfo_proc) == KINFO_PROC_SIZE);
}
pub const CTL = struct {
pub const KERN = 1;
pub const DEBUG = 5;