Commit 3dd0afe787
Changed files (1)
lib
std
lib/std/c/freebsd.zig
@@ -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;