authorgravatar for devnexen@gmail.comDavid Carlier <devnexen@gmail.com> 2023-04-30 14:32:12+01:00
committergravatar for git@vexu.euVeikka Tuominen <git@vexu.eu> 2023-05-09 12:04:53+03:00
log3dd0afe787e1cab4db41e685e67ce5594e92f7ef
treea616a340558eebd4cd9eaa3bee993204081dd273
parent297b5d1074008b52a8d08a32c9f3281542105bdd

std.c: adding freebsd's kinfo_proc type.


1 files changed, 186 insertions(+), 0 deletions(-)

lib/std/c/freebsd.zig+186
...@@ -64,6 +64,7 @@ pub extern "c" fn getpid() pid_t;...@@ -64,6 +64,7 @@ pub extern "c" fn getpid() pid_t;
6464
65pub extern "c" fn kinfo_getfile(pid: pid_t, cntp: *c_int) ?[*]kinfo_file;65pub extern "c" fn kinfo_getfile(pid: pid_t, cntp: *c_int) ?[*]kinfo_file;
66pub extern "c" fn kinfo_getvmmap(pid: pid_t, cntp: *c_int) ?[*]kinfo_vmentry;66pub extern "c" fn kinfo_getvmmap(pid: pid_t, cntp: *c_int) ?[*]kinfo_vmentry;
67pub extern "c" fn kinfo_getproc(pid: pid_t) ?[*]kinfo_proc;
6768
68pub extern "c" fn cpuset_getaffinity(level: cpulevel_t, which: cpuwhich_t, id: id_t, setsize: usize, mask: *cpuset_t) c_int;69pub extern "c" fn cpuset_getaffinity(level: cpulevel_t, which: cpuwhich_t, id: id_t, setsize: usize, mask: *cpuset_t) c_int;
69pub extern "c" fn cpuset_setaffinity(level: cpulevel_t, which: cpuwhich_t, id: id_t, setsize: usize, mask: *const cpuset_t) c_int;70pub 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 {...@@ -676,6 +677,191 @@ comptime {
676 std.debug.assert(@sizeOf(kinfo_vmentry) == KINFO_VMENTRY_SIZE);677 std.debug.assert(@sizeOf(kinfo_vmentry) == KINFO_VMENTRY_SIZE);
677}678}
678679
680pub const WMESGLEN = 8;
681pub const LOCKNAMELEN = 8;
682pub const TDNAMLEN = 16;
683pub const COMMLEN = 19;
684pub const MAXCOMLEN = 19;
685pub const KI_EMULNAMELEN = 16;
686pub const KI_NGROUPS = 16;
687pub const LOGNAMELEN = 17;
688pub const LOGINCLASSLEN = 17;
689
690pub const KI_NSPARE_INT = 2;
691pub const KI_NSPARE_LONG = 12;
692pub const KI_NSPARE_PTR = 5;
693
694pub const RUSAGE_SELF = 0;
695pub const RUSAGE_CHILDREN = -1;
696pub const RUSAGE_THREAD = 1;
697
698pub const proc = opaque {};
699pub const thread = opaque {};
700pub const vnode = opaque {};
701pub const filedesc = opaque {};
702pub const pwddesc = opaque {};
703pub const vmspace = opaque {};
704pub const pcb = opaque {};
705pub const lwpid_t = i32;
706pub const fixpt_t = u32;
707pub const vm_size_t = usize;
708pub const segsz_t = isize;
709
710pub const itimerval = extern struct {
711 interval: timeval,
712 value: timeval,
713};
714
715pub const pstats = extern struct {
716 cru: rusage,
717 timer: [3]itimerval,
718 prof: extern struct {
719 base: u8,
720 size: c_ulong,
721 off: c_ulong,
722 scale: c_ulong,
723 },
724 start: timeval,
725};
726
727pub const user = extern struct {
728 stats: pstats,
729 kproc: kinfo_proc,
730};
731
732pub const pargs = extern struct {
733 ref: c_uint,
734 length: c_uint,
735 args: [1]u8,
736};
737
738pub const priority = extern struct {
739 class: u8,
740 level: u8,
741 native: u8,
742 user: u8,
743};
744
745pub const rusage = extern struct {
746 utime: timeval,
747 stime: timeval,
748 maxrss: c_long,
749 ixrss: c_long,
750 idrss: c_long,
751 isrss: c_long,
752 minflt: c_long,
753 majflt: c_long,
754 nswap: c_long,
755 inblock: c_long,
756 oublock: c_long,
757 msgsnd: c_long,
758 msgrcv: c_long,
759 nsignals: c_long,
760 nvcsw: c_long,
761 nivcsw: c_long,
762};
763
764pub const kinfo_proc = extern struct {
765 structsize: c_int,
766 layout: c_int,
767 args: *pargs,
768 paddr: *proc,
769 addr: *user,
770 tracep: *vnode,
771 textvp: *vnode,
772 fd: *filedesc,
773 vmspace: *vmspace,
774 wchan: ?*const anyopaque,
775 pid: pid_t,
776 ppid: pid_t,
777 pgid: pid_t,
778 tpgid: pid_t,
779 sid: pid_t,
780 tsid: pid_t,
781 jobc: c_short,
782 spare_short1: c_short,
783 tdev_freebsd11: u32,
784 siglist: sigset_t,
785 sigmask: sigset_t,
786 sigignore: sigset_t,
787 sigcatch: sigset_t,
788 uid: uid_t,
789 ruid: uid_t,
790 svuid: uid_t,
791 rgid: gid_t,
792 svgid: gid_t,
793 ngroups: c_short,
794 spare_short2: c_short,
795 groups: [KI_NGROUPS]gid_t,
796 size: vm_size_t,
797 rssize: segsz_t,
798 swrss: segsz_t,
799 tsize: segsz_t,
800 dsize: segsz_t,
801 ssize: segsz_t,
802 xstat: c_ushort,
803 acflag: c_ushort,
804 pctcpu: fixpt_t,
805 estcpu: c_uint,
806 slptime: c_uint,
807 swtime: c_uint,
808 cow: c_uint,
809 runtime: u64,
810 start: timeval,
811 childtime: timeval,
812 flag: c_long,
813 kiflag: c_long,
814 traceflag: c_int,
815 stat: u8,
816 nice: i8,
817 lock: u8,
818 rqindex: u8,
819 oncpu_old: u8,
820 lastcpu_old: u8,
821 tdname: [TDNAMLEN + 1]u8,
822 wmesg: [WMESGLEN + 1]u8,
823 login: [LOGNAMELEN + 1]u8,
824 lockname: [LOCKNAMELEN + 1]u8,
825 comm: [COMMLEN + 1]u8,
826 emul: [KI_EMULNAMELEN + 1]u8,
827 loginclass: [LOGINCLASSLEN + 1]u8,
828 moretdname: [MAXCOMLEN - TDNAMLEN + 1]u8,
829 sparestrings: [46]u8,
830 spareints: [KI_NSPARE_INT]c_int,
831 tdev: u64,
832 oncpu: c_int,
833 lastcpu: c_int,
834 tracer: c_int,
835 flag2: c_int,
836 fibnum: c_int,
837 cr_flags: c_uint,
838 jid: c_int,
839 numthreads: c_int,
840 tid: lwpid_t,
841 pri: priority,
842 rusage: rusage,
843 rusage_ch: rusage,
844 pcb: *pcb,
845 stack: ?*anyopaque,
846 udata: ?*anyopaque,
847 tdaddr: *thread,
848 pd: *pwddesc,
849 spareptrs: [KI_NSPARE_PTR]?*anyopaque,
850 sparelongs: [KI_NSPARE_LONG]c_long,
851 sflag: c_long,
852 tdflag: c_long,
853};
854
855pub const KINFO_PROC_SIZE = switch (builtin.cpu.arch) {
856 .x86 => 768,
857 .arm => 816,
858 else => 1088,
859};
860
861comptime {
862 assert(@sizeOf(kinfo_proc) == KINFO_PROC_SIZE);
863}
864
679pub const CTL = struct {865pub const CTL = struct {
680 pub const KERN = 1;866 pub const KERN = 1;
681 pub const DEBUG = 5;867 pub const DEBUG = 5;