| ... | @@ -64,6 +64,7 @@ pub extern "c" fn getpid() pid_t; | ... | @@ -64,6 +64,7 @@ pub extern "c" fn getpid() pid_t; |
| 64 | | 64 | |
| 65 | pub extern "c" fn kinfo_getfile(pid: pid_t, cntp: *c_int) ?[*]kinfo_file; | 65 | pub extern "c" fn kinfo_getfile(pid: pid_t, cntp: *c_int) ?[*]kinfo_file; |
| 66 | pub extern "c" fn kinfo_getvmmap(pid: pid_t, cntp: *c_int) ?[*]kinfo_vmentry; | 66 | pub extern "c" fn kinfo_getvmmap(pid: pid_t, cntp: *c_int) ?[*]kinfo_vmentry; |
| | 67 | pub extern "c" fn kinfo_getproc(pid: pid_t) ?[*]kinfo_proc; |
| 67 | | 68 | |
| 68 | pub extern "c" fn cpuset_getaffinity(level: cpulevel_t, which: cpuwhich_t, id: id_t, setsize: usize, mask: *cpuset_t) c_int; | 69 | pub extern "c" fn cpuset_getaffinity(level: cpulevel_t, which: cpuwhich_t, id: id_t, setsize: usize, mask: *cpuset_t) c_int; |
| 69 | pub extern "c" fn cpuset_setaffinity(level: cpulevel_t, which: cpuwhich_t, id: id_t, setsize: usize, mask: *const cpuset_t) c_int; | 70 | 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 { | ... | @@ -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 | } |
| 678 | | 679 | |
| | 680 | pub const WMESGLEN = 8; |
| | 681 | pub const LOCKNAMELEN = 8; |
| | 682 | pub const TDNAMLEN = 16; |
| | 683 | pub const COMMLEN = 19; |
| | 684 | pub const MAXCOMLEN = 19; |
| | 685 | pub const KI_EMULNAMELEN = 16; |
| | 686 | pub const KI_NGROUPS = 16; |
| | 687 | pub const LOGNAMELEN = 17; |
| | 688 | pub const LOGINCLASSLEN = 17; |
| | 689 | |
| | 690 | pub const KI_NSPARE_INT = 2; |
| | 691 | pub const KI_NSPARE_LONG = 12; |
| | 692 | pub const KI_NSPARE_PTR = 5; |
| | 693 | |
| | 694 | pub const RUSAGE_SELF = 0; |
| | 695 | pub const RUSAGE_CHILDREN = -1; |
| | 696 | pub const RUSAGE_THREAD = 1; |
| | 697 | |
| | 698 | pub const proc = opaque {}; |
| | 699 | pub const thread = opaque {}; |
| | 700 | pub const vnode = opaque {}; |
| | 701 | pub const filedesc = opaque {}; |
| | 702 | pub const pwddesc = opaque {}; |
| | 703 | pub const vmspace = opaque {}; |
| | 704 | pub const pcb = opaque {}; |
| | 705 | pub const lwpid_t = i32; |
| | 706 | pub const fixpt_t = u32; |
| | 707 | pub const vm_size_t = usize; |
| | 708 | pub const segsz_t = isize; |
| | 709 | |
| | 710 | pub const itimerval = extern struct { |
| | 711 | interval: timeval, |
| | 712 | value: timeval, |
| | 713 | }; |
| | 714 | |
| | 715 | pub 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 | |
| | 727 | pub const user = extern struct { |
| | 728 | stats: pstats, |
| | 729 | kproc: kinfo_proc, |
| | 730 | }; |
| | 731 | |
| | 732 | pub const pargs = extern struct { |
| | 733 | ref: c_uint, |
| | 734 | length: c_uint, |
| | 735 | args: [1]u8, |
| | 736 | }; |
| | 737 | |
| | 738 | pub const priority = extern struct { |
| | 739 | class: u8, |
| | 740 | level: u8, |
| | 741 | native: u8, |
| | 742 | user: u8, |
| | 743 | }; |
| | 744 | |
| | 745 | pub 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 | |
| | 764 | pub 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 | |
| | 855 | pub const KINFO_PROC_SIZE = switch (builtin.cpu.arch) { |
| | 856 | .x86 => 768, |
| | 857 | .arm => 816, |
| | 858 | else => 1088, |
| | 859 | }; |
| | 860 | |
| | 861 | comptime { |
| | 862 | assert(@sizeOf(kinfo_proc) == KINFO_PROC_SIZE); |
| | 863 | } |
| | 864 | |
| 679 | pub const CTL = struct { | 865 | pub const CTL = struct { |
| 680 | pub const KERN = 1; | 866 | pub const KERN = 1; |
| 681 | pub const DEBUG = 5; | 867 | pub const DEBUG = 5; |