Skip to content

Commit 73320c5

Browse files
committed
Auto merge of #2549 - GuillaumeGomez:more-freebsd, r=JohnTitor
Add more items for FreeBSD
2 parents 1a4a999 + 441f195 commit 73320c5

File tree

2 files changed

+258
-5
lines changed

2 files changed

+258
-5
lines changed

libc-test/build.rs

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1863,6 +1863,7 @@ fn test_freebsd(target: &str) {
18631863
"sys/times.h",
18641864
"sys/timex.h",
18651865
"sys/types.h",
1866+
"sys/proc.h",
18661867
"kvm.h", // must be after "sys/types.h"
18671868
"sys/ucontext.h",
18681869
"sys/uio.h",
@@ -2062,6 +2063,36 @@ fn test_freebsd(target: &str) {
20622063

20632064
"VM_TOTAL" if Some(11) == freebsd_ver => true,
20642065

2066+
// Added in FreeBSD 14.
2067+
"KERN_STACKTOP" if Some(14) > freebsd_ver => true,
2068+
// Added in FreeBSD 13.
2069+
"KERN_PROC_SIGFASTBLK"
2070+
| "USER_LOCALBASE"
2071+
| "TDP_SIGFASTBLOCK"
2072+
| "TDP_UIOHELD"
2073+
| "TDP_SIGFASTPENDING"
2074+
| "TDP2_COMPAT32RB"
2075+
| "P2_PROTMAX_ENABLE"
2076+
| "P2_PROTMAX_DISABLE"
2077+
| "CTLFLAG_NEEDGIANT"
2078+
| "CTL_SYSCTL_NEXTNOSKIP"
2079+
if Some(13) > freebsd_ver =>
2080+
{
2081+
true
2082+
}
2083+
// Added in FreeBSD 12.
2084+
"KERN_MAXPHYS"
2085+
| "KVME_FLAG_USER_WIRED"
2086+
| "TDP2_SBPAGES"
2087+
| "P2_ASLR_ENABLE"
2088+
| "P2_ASLR_DISABLE"
2089+
| "P2_ASLR_IGNSTART"
2090+
| "P_TREE_GRPEXITED"
2091+
if Some(12) > freebsd_ver =>
2092+
{
2093+
true
2094+
}
2095+
20652096
_ => false,
20662097
}
20672098
});

src/unix/bsd/freebsdlike/freebsd/mod.rs

Lines changed: 227 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -370,6 +370,16 @@ s! {
370370
pub t_sw: i16,
371371
pub t_pad: [u16; 3],
372372
}
373+
374+
pub struct rusage_ext {
375+
pub rux_runtime: u64,
376+
pub rux_uticks: u64,
377+
pub rux_sticks: u64,
378+
pub rux_iticks: u64,
379+
pub rux_uu: u64,
380+
pub rux_su: u64,
381+
pub rux_tu: u64,
382+
}
373383
}
374384

375385
s_no_extra_traits! {
@@ -856,13 +866,67 @@ pub const CTL_HW: ::c_int = 6;
856866
pub const CTL_MACHDEP: ::c_int = 7;
857867
pub const CTL_USER: ::c_int = 8;
858868
pub const CTL_P1003_1B: ::c_int = 9;
869+
870+
// sys/sysctl.h
871+
pub const CTL_MAXNAME: ::c_int = 24;
872+
873+
pub const CTLTYPE: ::c_int = 0xf;
874+
pub const CTLTYPE_NODE: ::c_int = 1;
875+
pub const CTLTYPE_INT: ::c_int = 2;
876+
pub const CTLTYPE_STRING: ::c_int = 3;
877+
pub const CTLTYPE_S64: ::c_int = 4;
878+
pub const CTLTYPE_OPAQUE: ::c_int = 5;
879+
pub const CTLTYPE_STRUCT: ::c_int = CTLTYPE_OPAQUE;
880+
pub const CTLTYPE_UINT: ::c_int = 6;
881+
pub const CTLTYPE_LONG: ::c_int = 7;
882+
pub const CTLTYPE_ULONG: ::c_int = 8;
883+
pub const CTLTYPE_U64: ::c_int = 9;
884+
pub const CTLTYPE_U8: ::c_int = 0xa;
885+
pub const CTLTYPE_U16: ::c_int = 0xb;
886+
pub const CTLTYPE_S8: ::c_int = 0xc;
887+
pub const CTLTYPE_S16: ::c_int = 0xd;
888+
pub const CTLTYPE_S32: ::c_int = 0xe;
889+
pub const CTLTYPE_U32: ::c_int = 0xf;
890+
891+
pub const CTLFLAG_RD: ::c_int = 0x80000000;
892+
pub const CTLFLAG_WR: ::c_int = 0x40000000;
893+
pub const CTLFLAG_RW: ::c_int = CTLFLAG_RD | CTLFLAG_WR;
894+
pub const CTLFLAG_DORMANT: ::c_int = 0x20000000;
895+
pub const CTLFLAG_ANYBODY: ::c_int = 0x10000000;
896+
pub const CTLFLAG_SECURE: ::c_int = 0x08000000;
897+
pub const CTLFLAG_PRISON: ::c_int = 0x04000000;
898+
pub const CTLFLAG_DYN: ::c_int = 0x02000000;
899+
pub const CTLFLAG_SKIP: ::c_int = 0x01000000;
900+
pub const CTLMASK_SECURE: ::c_int = 0x00F00000;
901+
pub const CTLFLAG_TUN: ::c_int = 0x00080000;
902+
pub const CTLFLAG_RDTUN: ::c_int = CTLFLAG_RD | CTLFLAG_TUN;
903+
pub const CTLFLAG_RWTUN: ::c_int = CTLFLAG_RW | CTLFLAG_TUN;
904+
pub const CTLFLAG_MPSAFE: ::c_int = 0x00040000;
905+
pub const CTLFLAG_VNET: ::c_int = 0x00020000;
906+
pub const CTLFLAG_DYING: ::c_int = 0x00010000;
907+
pub const CTLFLAG_CAPRD: ::c_int = 0x00008000;
908+
pub const CTLFLAG_CAPWR: ::c_int = 0x00004000;
909+
pub const CTLFLAG_STATS: ::c_int = 0x00002000;
910+
pub const CTLFLAG_NOFETCH: ::c_int = 0x00001000;
911+
pub const CTLFLAG_CAPRW: ::c_int = CTLFLAG_CAPRD | CTLFLAG_CAPWR;
912+
pub const CTLFLAG_NEEDGIANT: ::c_int = 0x00000800;
913+
914+
pub const CTLSHIFT_SECURE: ::c_int = 20;
915+
pub const CTLFLAG_SECURE1: ::c_int = CTLFLAG_SECURE | (0 << CTLSHIFT_SECURE);
916+
pub const CTLFLAG_SECURE2: ::c_int = CTLFLAG_SECURE | (1 << CTLSHIFT_SECURE);
917+
pub const CTLFLAG_SECURE3: ::c_int = CTLFLAG_SECURE | (2 << CTLSHIFT_SECURE);
918+
919+
pub const OID_AUTO: ::c_int = -1;
920+
859921
pub const CTL_SYSCTL_DEBUG: ::c_int = 0;
860922
pub const CTL_SYSCTL_NAME: ::c_int = 1;
861923
pub const CTL_SYSCTL_NEXT: ::c_int = 2;
862924
pub const CTL_SYSCTL_NAME2OID: ::c_int = 3;
863925
pub const CTL_SYSCTL_OIDFMT: ::c_int = 4;
864926
pub const CTL_SYSCTL_OIDDESCR: ::c_int = 5;
865927
pub const CTL_SYSCTL_OIDLABEL: ::c_int = 6;
928+
pub const CTL_SYSCTL_NEXTNOSKIP: ::c_int = 7;
929+
866930
pub const KERN_OSTYPE: ::c_int = 1;
867931
pub const KERN_OSRELEASE: ::c_int = 2;
868932
pub const KERN_OSREV: ::c_int = 3;
@@ -900,6 +964,9 @@ pub const KERN_LOGSIGEXIT: ::c_int = 34;
900964
pub const KERN_IOV_MAX: ::c_int = 35;
901965
pub const KERN_HOSTUUID: ::c_int = 36;
902966
pub const KERN_ARND: ::c_int = 37;
967+
pub const KERN_MAXPHYS: ::c_int = 38;
968+
pub const KERN_STACKTOP: ::c_int = 39;
969+
903970
pub const KERN_PROC_ALL: ::c_int = 0;
904971
pub const KERN_PROC_PID: ::c_int = 1;
905972
pub const KERN_PROC_PGRP: ::c_int = 2;
@@ -927,13 +994,18 @@ pub const KERN_PROC_PS_STRINGS: ::c_int = 38;
927994
pub const KERN_PROC_UMASK: ::c_int = 39;
928995
pub const KERN_PROC_OSREL: ::c_int = 40;
929996
pub const KERN_PROC_SIGTRAMP: ::c_int = 41;
997+
pub const KERN_PROC_CWD: ::c_int = 42;
998+
pub const KERN_PROC_NFDS: ::c_int = 43;
999+
pub const KERN_PROC_SIGFASTBLK: ::c_int = 44;
1000+
9301001
pub const KIPC_MAXSOCKBUF: ::c_int = 1;
9311002
pub const KIPC_SOCKBUF_WASTE: ::c_int = 2;
9321003
pub const KIPC_SOMAXCONN: ::c_int = 3;
9331004
pub const KIPC_MAX_LINKHDR: ::c_int = 4;
9341005
pub const KIPC_MAX_PROTOHDR: ::c_int = 5;
9351006
pub const KIPC_MAX_HDR: ::c_int = 6;
9361007
pub const KIPC_MAX_DATALEN: ::c_int = 7;
1008+
9371009
pub const HW_MACHINE: ::c_int = 1;
9381010
pub const HW_MODEL: ::c_int = 2;
9391011
pub const HW_NCPU: ::c_int = 3;
@@ -946,6 +1018,7 @@ pub const HW_DISKSTATS: ::c_int = 9;
9461018
pub const HW_FLOATINGPT: ::c_int = 10;
9471019
pub const HW_MACHINE_ARCH: ::c_int = 11;
9481020
pub const HW_REALMEM: ::c_int = 12;
1021+
9491022
pub const USER_CS_PATH: ::c_int = 1;
9501023
pub const USER_BC_BASE_MAX: ::c_int = 2;
9511024
pub const USER_BC_DIM_MAX: ::c_int = 3;
@@ -966,6 +1039,8 @@ pub const USER_POSIX2_SW_DEV: ::c_int = 17;
9661039
pub const USER_POSIX2_UPE: ::c_int = 18;
9671040
pub const USER_STREAM_MAX: ::c_int = 19;
9681041
pub const USER_TZNAME_MAX: ::c_int = 20;
1042+
pub const USER_LOCALBASE: ::c_int = 21;
1043+
9691044
pub const CTL_P1003_1B_ASYNCHRONOUS_IO: ::c_int = 1;
9701045
pub const CTL_P1003_1B_MAPPED_FILES: ::c_int = 2;
9711046
pub const CTL_P1003_1B_MEMLOCK: ::c_int = 3;
@@ -991,6 +1066,7 @@ pub const CTL_P1003_1B_SEM_NSEMS_MAX: ::c_int = 22;
9911066
pub const CTL_P1003_1B_SEM_VALUE_MAX: ::c_int = 23;
9921067
pub const CTL_P1003_1B_SIGQUEUE_MAX: ::c_int = 24;
9931068
pub const CTL_P1003_1B_TIMER_MAX: ::c_int = 25;
1069+
9941070
pub const TIOCGPTN: ::c_uint = 0x4004740f;
9951071
pub const TIOCPTMASTER: ::c_uint = 0x2000741c;
9961072
pub const TIOCSIG: ::c_uint = 0x2004745f;
@@ -1770,11 +1846,7 @@ pub const KVME_FLAG_NOCOREDUMP: ::c_int = 0x00000004;
17701846
pub const KVME_FLAG_SUPER: ::c_int = 0x00000008;
17711847
pub const KVME_FLAG_GROWS_UP: ::c_int = 0x00000010;
17721848
pub const KVME_FLAG_GROWS_DOWN: ::c_int = 0x00000020;
1773-
cfg_if! {
1774-
if #[cfg(any(freebsd12, freebsd13, freebsd14))] {
1775-
pub const KVME_FLAG_USER_WIRED: ::c_int = 0x00000040;
1776-
}
1777-
}
1849+
pub const KVME_FLAG_USER_WIRED: ::c_int = 0x00000040;
17781850

17791851
pub const KKST_MAXLEN: ::c_int = 1024;
17801852
/// Stack is valid.
@@ -1897,6 +1969,156 @@ pub const _POSIX2_EXPR_NEST_MAX: ::c_int = 32;
18971969
pub const _POSIX2_LINE_MAX: ::c_int = 2048;
18981970
pub const _POSIX2_RE_DUP_MAX: ::c_int = 255;
18991971

1972+
// sys/proc.h
1973+
pub const TDF_BORROWING: ::c_int = 0x00000001;
1974+
pub const TDF_INPANIC: ::c_int = 0x00000002;
1975+
pub const TDF_INMEM: ::c_int = 0x00000004;
1976+
pub const TDF_SINTR: ::c_int = 0x00000008;
1977+
pub const TDF_TIMEOUT: ::c_int = 0x00000010;
1978+
pub const TDF_IDLETD: ::c_int = 0x00000020;
1979+
pub const TDF_CANSWAP: ::c_int = 0x00000040;
1980+
pub const TDF_KTH_SUSP: ::c_int = 0x00000100;
1981+
pub const TDF_ALLPROCSUSP: ::c_int = 0x00000200;
1982+
pub const TDF_BOUNDARY: ::c_int = 0x00000400;
1983+
pub const TDF_ASTPENDING: ::c_int = 0x00000800;
1984+
pub const TDF_SBDRY: ::c_int = 0x00002000;
1985+
pub const TDF_UPIBLOCKED: ::c_int = 0x00004000;
1986+
pub const TDF_NEEDSUSPCHK: ::c_int = 0x00008000;
1987+
pub const TDF_NEEDRESCHED: ::c_int = 0x00010000;
1988+
pub const TDF_NEEDSIGCHK: ::c_int = 0x00020000;
1989+
pub const TDF_NOLOAD: ::c_int = 0x00040000;
1990+
pub const TDF_SERESTART: ::c_int = 0x00080000;
1991+
pub const TDF_THRWAKEUP: ::c_int = 0x00100000;
1992+
pub const TDF_SEINTR: ::c_int = 0x00200000;
1993+
pub const TDF_SWAPINREQ: ::c_int = 0x00400000;
1994+
pub const TDF_UNUSED23: ::c_int = 0x00800000;
1995+
pub const TDF_SCHED0: ::c_int = 0x01000000;
1996+
pub const TDF_SCHED1: ::c_int = 0x02000000;
1997+
pub const TDF_SCHED2: ::c_int = 0x04000000;
1998+
pub const TDF_SCHED3: ::c_int = 0x08000000;
1999+
pub const TDF_ALRMPEND: ::c_int = 0x10000000;
2000+
pub const TDF_PROFPEND: ::c_int = 0x20000000;
2001+
pub const TDF_MACPEND: ::c_int = 0x40000000;
2002+
2003+
pub const TDB_SUSPEND: ::c_int = 0x00000001;
2004+
pub const TDB_XSIG: ::c_int = 0x00000002;
2005+
pub const TDB_USERWR: ::c_int = 0x00000004;
2006+
pub const TDB_SCE: ::c_int = 0x00000008;
2007+
pub const TDB_SCX: ::c_int = 0x00000010;
2008+
pub const TDB_EXEC: ::c_int = 0x00000020;
2009+
pub const TDB_FORK: ::c_int = 0x00000040;
2010+
pub const TDB_STOPATFORK: ::c_int = 0x00000080;
2011+
pub const TDB_CHILD: ::c_int = 0x00000100;
2012+
pub const TDB_BORN: ::c_int = 0x00000200;
2013+
pub const TDB_EXIT: ::c_int = 0x00000400;
2014+
pub const TDB_VFORK: ::c_int = 0x00000800;
2015+
pub const TDB_FSTP: ::c_int = 0x00001000;
2016+
pub const TDB_STEP: ::c_int = 0x00002000;
2017+
2018+
pub const TDP_OLDMASK: ::c_int = 0x00000001;
2019+
pub const TDP_INKTR: ::c_int = 0x00000002;
2020+
pub const TDP_INKTRACE: ::c_int = 0x00000004;
2021+
pub const TDP_BUFNEED: ::c_int = 0x00000008;
2022+
pub const TDP_COWINPROGRESS: ::c_int = 0x00000010;
2023+
pub const TDP_ALTSTACK: ::c_int = 0x00000020;
2024+
pub const TDP_DEADLKTREAT: ::c_int = 0x00000040;
2025+
pub const TDP_NOFAULTING: ::c_int = 0x00000080;
2026+
pub const TDP_OWEUPC: ::c_int = 0x00000200;
2027+
pub const TDP_ITHREAD: ::c_int = 0x00000400;
2028+
pub const TDP_SYNCIO: ::c_int = 0x00000800;
2029+
pub const TDP_SCHED1: ::c_int = 0x00001000;
2030+
pub const TDP_SCHED2: ::c_int = 0x00002000;
2031+
pub const TDP_SCHED3: ::c_int = 0x00004000;
2032+
pub const TDP_SCHED4: ::c_int = 0x00008000;
2033+
pub const TDP_GEOM: ::c_int = 0x00010000;
2034+
pub const TDP_SOFTDEP: ::c_int = 0x00020000;
2035+
pub const TDP_NORUNNINGBUF: ::c_int = 0x00040000;
2036+
pub const TDP_WAKEUP: ::c_int = 0x00080000;
2037+
pub const TDP_INBDFLUSH: ::c_int = 0x00100000;
2038+
pub const TDP_KTHREAD: ::c_int = 0x00200000;
2039+
pub const TDP_CALLCHAIN: ::c_int = 0x00400000;
2040+
pub const TDP_IGNSUSP: ::c_int = 0x00800000;
2041+
pub const TDP_AUDITREC: ::c_int = 0x01000000;
2042+
pub const TDP_RFPPWAIT: ::c_int = 0x02000000;
2043+
pub const TDP_RESETSPUR: ::c_int = 0x04000000;
2044+
pub const TDP_NERRNO: ::c_int = 0x08000000;
2045+
pub const TDP_EXECVMSPC: ::c_int = 0x40000000;
2046+
2047+
pub const TDI_SUSPENDED: ::c_int = 0x0001;
2048+
pub const TDI_SLEEPING: ::c_int = 0x0002;
2049+
pub const TDI_SWAPPED: ::c_int = 0x0004;
2050+
pub const TDI_LOCK: ::c_int = 0x0008;
2051+
pub const TDI_IWAIT: ::c_int = 0x0010;
2052+
2053+
pub const P_ADVLOCK: ::c_int = 0x00000001;
2054+
pub const P_CONTROLT: ::c_int = 0x00000002;
2055+
pub const P_KPROC: ::c_int = 0x00000004;
2056+
pub const P_UNUSED3: ::c_int = 0x00000008;
2057+
pub const P_PPWAIT: ::c_int = 0x00000010;
2058+
pub const P_PROFIL: ::c_int = 0x00000020;
2059+
pub const P_STOPPROF: ::c_int = 0x00000040;
2060+
pub const P_HADTHREADS: ::c_int = 0x00000080;
2061+
pub const P_SUGID: ::c_int = 0x00000100;
2062+
pub const P_SYSTEM: ::c_int = 0x00000200;
2063+
pub const P_SINGLE_EXIT: ::c_int = 0x00000400;
2064+
pub const P_TRACED: ::c_int = 0x00000800;
2065+
pub const P_WAITED: ::c_int = 0x00001000;
2066+
pub const P_WEXIT: ::c_int = 0x00002000;
2067+
pub const P_EXEC: ::c_int = 0x00004000;
2068+
pub const P_WKILLED: ::c_int = 0x00008000;
2069+
pub const P_CONTINUED: ::c_int = 0x00010000;
2070+
pub const P_STOPPED_SIG: ::c_int = 0x00020000;
2071+
pub const P_STOPPED_TRACE: ::c_int = 0x00040000;
2072+
pub const P_STOPPED_SINGLE: ::c_int = 0x00080000;
2073+
pub const P_PROTECTED: ::c_int = 0x00100000;
2074+
pub const P_SIGEVENT: ::c_int = 0x00200000;
2075+
pub const P_SINGLE_BOUNDARY: ::c_int = 0x00400000;
2076+
pub const P_HWPMC: ::c_int = 0x00800000;
2077+
pub const P_JAILED: ::c_int = 0x01000000;
2078+
pub const P_TOTAL_STOP: ::c_int = 0x02000000;
2079+
pub const P_INEXEC: ::c_int = 0x04000000;
2080+
pub const P_STATCHILD: ::c_int = 0x08000000;
2081+
pub const P_INMEM: ::c_int = 0x10000000;
2082+
pub const P_SWAPPINGOUT: ::c_int = 0x20000000;
2083+
pub const P_SWAPPINGIN: ::c_int = 0x40000000;
2084+
pub const P_PPTRACE: ::c_int = 0x80000000;
2085+
pub const P_STOPPED: ::c_int = P_STOPPED_SIG | P_STOPPED_SINGLE | P_STOPPED_TRACE;
2086+
2087+
pub const P2_INHERIT_PROTECTED: ::c_int = 0x00000001;
2088+
pub const P2_NOTRACE: ::c_int = 0x00000002;
2089+
pub const P2_NOTRACE_EXEC: ::c_int = 0x00000004;
2090+
pub const P2_AST_SU: ::c_int = 0x00000008;
2091+
pub const P2_PTRACE_FSTP: ::c_int = 0x00000010;
2092+
pub const P2_TRAPCAP: ::c_int = 0x00000020;
2093+
pub const P2_STKGAP_DISABLE: ::c_int = 0x00000800;
2094+
pub const P2_STKGAP_DISABLE_EXEC: ::c_int = 0x00001000;
2095+
2096+
pub const P_TREE_ORPHANED: ::c_int = 0x00000001;
2097+
pub const P_TREE_FIRST_ORPHAN: ::c_int = 0x00000002;
2098+
pub const P_TREE_REAPER: ::c_int = 0x00000004;
2099+
2100+
pub const SIDL: ::c_char = 1;
2101+
pub const SRUN: ::c_char = 2;
2102+
pub const SSLEEP: ::c_char = 3;
2103+
pub const SSTOP: ::c_char = 4;
2104+
pub const SZOMB: ::c_char = 5;
2105+
pub const SWAIT: ::c_char = 6;
2106+
pub const SLOCK: ::c_char = 7;
2107+
2108+
pub const P_MAGIC: ::c_int = 0xbeefface;
2109+
2110+
pub const TDP_SIGFASTBLOCK: ::c_int = 0x00000100;
2111+
pub const TDP_UIOHELD: ::c_int = 0x10000000;
2112+
pub const TDP_SIGFASTPENDING: ::c_int = 0x80000000;
2113+
pub const TDP2_COMPAT32RB: ::c_int = 0x00000002;
2114+
pub const P2_PROTMAX_ENABLE: ::c_int = 0x00000200;
2115+
pub const P2_PROTMAX_DISABLE: ::c_int = 0x00000400;
2116+
pub const TDP2_SBPAGES: ::c_int = 0x00000001;
2117+
pub const P2_ASLR_ENABLE: ::c_int = 0x00000040;
2118+
pub const P2_ASLR_DISABLE: ::c_int = 0x00000080;
2119+
pub const P2_ASLR_IGNSTART: ::c_int = 0x00000100;
2120+
pub const P_TREE_GRPEXITED: ::c_int = 0x00000008;
2121+
19002122
const_fn! {
19012123
{const} fn _ALIGN(p: usize) -> usize {
19022124
(p + _ALIGNBYTES) & !_ALIGNBYTES

0 commit comments

Comments
 (0)