From ae18de7d8a8fa54372baa0cb5585d9b9d3300985 Mon Sep 17 00:00:00 2001 From: pin Date: Sat, 23 Sep 2023 15:18:16 +0200 Subject: [PATCH] Squash commits Add backtrace definitions and support for statvfs android adding few more pthread api calls. Declare `pthread_attr_setguardsize` and `pthread_attr_getstacksize`. Declare `pthread_attr_setguardsize` and `pthread_attr_getstacksize` on all platforms which have `pthread_attr_getguardsize` and `pthread_attr_setstacksize`, respectively. Delete a now-redundant `pthread_attr_getstacksize` declaration. Add symbols Add statvfs also --- libc-test/build.rs | 3 ++ libc-test/semver/android.txt | 2 ++ libc-test/semver/dragonfly.txt | 1 + libc-test/semver/freebsd.txt | 1 + libc-test/semver/fuchsia.txt | 1 + libc-test/semver/linux.txt | 1 + libc-test/semver/netbsd.txt | 13 +++++++++ libc-test/semver/openbsd.txt | 1 + libc-test/semver/unix.txt | 1 + src/fuchsia/mod.rs | 5 ++++ src/unix/aix/mod.rs | 1 + src/unix/bsd/freebsdlike/mod.rs | 1 + src/unix/bsd/netbsdlike/netbsd/mod.rs | 40 ++++++++++++++++++++++++++ src/unix/bsd/netbsdlike/openbsd/mod.rs | 1 + src/unix/haiku/mod.rs | 1 + src/unix/linux_like/android/mod.rs | 9 ++++++ src/unix/linux_like/linux/mod.rs | 1 + src/unix/mod.rs | 4 +++ src/unix/nto/mod.rs | 1 + 19 files changed, 88 insertions(+) diff --git a/libc-test/build.rs b/libc-test/build.rs index b1fdcd9b7e1c8..322b62dd01553 100644 --- a/libc-test/build.rs +++ b/libc-test/build.rs @@ -1881,6 +1881,9 @@ fn test_android(target: &str) { // Added in API level 28, but some tests use level 24. "syncfs" => true, + // Added in API level 28, but some tests use level 24. + "pthread_attr_getinheritsched" | "pthread_attr_setinheritsched" => true, + _ => false, } }); diff --git a/libc-test/semver/android.txt b/libc-test/semver/android.txt index 9dc691cb4009c..5153069559f68 100644 --- a/libc-test/semver/android.txt +++ b/libc-test/semver/android.txt @@ -3375,8 +3375,10 @@ pthread_atfork pthread_attr_destroy pthread_attr_getguardsize pthread_attr_getstack +pthread_attr_getstacksize pthread_attr_init pthread_attr_setdetachstate +pthread_attr_setguardsize pthread_attr_setstacksize pthread_attr_t pthread_barrierattr_destroy diff --git a/libc-test/semver/dragonfly.txt b/libc-test/semver/dragonfly.txt index e27bfa41831a8..1e1261cad8803 100644 --- a/libc-test/semver/dragonfly.txt +++ b/libc-test/semver/dragonfly.txt @@ -1437,6 +1437,7 @@ pseudo_AF_XTP pthread_attr_get_np pthread_attr_getguardsize pthread_attr_getstack +pthread_attr_setguardsize pthread_barrierattr_destroy pthread_barrierattr_getpshared pthread_barrierattr_init diff --git a/libc-test/semver/freebsd.txt b/libc-test/semver/freebsd.txt index 8dce49824aa94..0adb0dcf736e3 100644 --- a/libc-test/semver/freebsd.txt +++ b/libc-test/semver/freebsd.txt @@ -2010,6 +2010,7 @@ pseudo_AF_XTP pthread_attr_get_np pthread_attr_getguardsize pthread_attr_getstack +pthread_attr_setguardsize pthread_barrierattr_destroy pthread_barrierattr_getpshared pthread_barrierattr_init diff --git a/libc-test/semver/fuchsia.txt b/libc-test/semver/fuchsia.txt index 5e7213c0bea25..429d59e626ce4 100644 --- a/libc-test/semver/fuchsia.txt +++ b/libc-test/semver/fuchsia.txt @@ -1294,6 +1294,7 @@ ppoll preadv pthread_attr_getguardsize pthread_attr_getstack +pthread_attr_setguardsize pthread_cancel pthread_condattr_getclock pthread_condattr_setclock diff --git a/libc-test/semver/linux.txt b/libc-test/semver/linux.txt index e818d2dce675e..b4091a707047d 100644 --- a/libc-test/semver/linux.txt +++ b/libc-test/semver/linux.txt @@ -3333,6 +3333,7 @@ pread64 preadv pthread_attr_getguardsize pthread_attr_getstack +pthread_attr_setguardsize pthread_cancel pthread_condattr_getclock pthread_condattr_getpshared diff --git a/libc-test/semver/netbsd.txt b/libc-test/semver/netbsd.txt index 6150dbb81c41c..870c38fc1a3e8 100644 --- a/libc-test/semver/netbsd.txt +++ b/libc-test/semver/netbsd.txt @@ -671,6 +671,9 @@ MNT_RELATIME MNT_SOFTDEP MNT_SYMPERM MNT_UNION +MNT_WAIT +MNT_NOWAIT +MNT_LAZY MOD_CLKA MOD_CLKB MOD_ESTERROR @@ -1188,6 +1191,11 @@ arc4random arc4random_buf arc4random_uniform arphdr +backtrace +backtrace_symbols +backtrace_symbols_fd +backtrace_symbols_fmt +backtrace_symbols_fd_fmt bsearch chflags chroot @@ -1246,6 +1254,7 @@ fgetxattr flistxattr fremovexattr fsetxattr +fstatvfs flags_to_string fmemopen forkpty @@ -1275,6 +1284,7 @@ getitimer getlastlogx getline getloadavg +getmntinfo getnameinfo getopt_long getpeereid @@ -1295,6 +1305,7 @@ getutmpx getutxent getutxid getutxline +getvfsstat getxattr glob glob_t @@ -1425,6 +1436,7 @@ pseudo_AF_XTP pthread_attr_get_np pthread_attr_getguardsize pthread_attr_getstack +pthread_attr_setguardsize pthread_cancel pthread_condattr_setclock pthread_getattr_np @@ -1521,6 +1533,7 @@ sockcred srand srand48 stack_t +statvfs strcasecmp strcasestr string_to_flags diff --git a/libc-test/semver/openbsd.txt b/libc-test/semver/openbsd.txt index ea9cda0659ce4..e56760a9e8118 100644 --- a/libc-test/semver/openbsd.txt +++ b/libc-test/semver/openbsd.txt @@ -1146,6 +1146,7 @@ pseudo_AF_RTIP pseudo_AF_XTP pthread_attr_getguardsize pthread_attr_getstack +pthread_attr_setguardsize pthread_cancel pthread_condattr_setclock pthread_get_name_np diff --git a/libc-test/semver/unix.txt b/libc-test/semver/unix.txt index 8928c27feff9f..5e84434b46bf4 100644 --- a/libc-test/semver/unix.txt +++ b/libc-test/semver/unix.txt @@ -671,6 +671,7 @@ protoent pselect pthread_attr_destroy pthread_attr_init +pthread_attr_getstacksize pthread_attr_setdetachstate pthread_attr_setstacksize pthread_attr_t diff --git a/src/fuchsia/mod.rs b/src/fuchsia/mod.rs index 3e922e766cba4..772ffda68e10f 100644 --- a/src/fuchsia/mod.rs +++ b/src/fuchsia/mod.rs @@ -3687,6 +3687,10 @@ extern "C" { pub fn pthread_exit(value: *mut ::c_void) -> !; pub fn pthread_attr_init(attr: *mut ::pthread_attr_t) -> ::c_int; pub fn pthread_attr_destroy(attr: *mut ::pthread_attr_t) -> ::c_int; + pub fn pthread_attr_getstacksize( + attr: *const ::pthread_attr_t, + stacksize: *mut ::size_t, + ) -> ::c_int; pub fn pthread_attr_setstacksize(attr: *mut ::pthread_attr_t, stack_size: ::size_t) -> ::c_int; pub fn pthread_attr_setdetachstate(attr: *mut ::pthread_attr_t, state: ::c_int) -> ::c_int; pub fn pthread_detach(thread: ::pthread_t) -> ::c_int; @@ -4161,6 +4165,7 @@ extern "C" { attr: *const ::pthread_attr_t, guardsize: *mut ::size_t, ) -> ::c_int; + pub fn pthread_attr_setguardsize(attr: *mut ::pthread_attr_t, guardsize: ::size_t) -> ::c_int; pub fn sethostname(name: *const ::c_char, len: ::size_t) -> ::c_int; pub fn sched_get_priority_min(policy: ::c_int) -> ::c_int; pub fn umount2(target: *const ::c_char, flags: ::c_int) -> ::c_int; diff --git a/src/unix/aix/mod.rs b/src/unix/aix/mod.rs index 325d7d654fd7e..bc02b108dc412 100644 --- a/src/unix/aix/mod.rs +++ b/src/unix/aix/mod.rs @@ -2669,6 +2669,7 @@ extern "C" { attr: *const ::pthread_attr_t, guardsize: *mut ::size_t, ) -> ::c_int; + pub fn pthread_attr_setguardsize(attr: *mut ::pthread_attr_t, guardsize: ::size_t) -> ::c_int; pub fn pthread_attr_getschedparam( attr: *const ::pthread_attr_t, param: *mut sched_param, diff --git a/src/unix/bsd/freebsdlike/mod.rs b/src/unix/bsd/freebsdlike/mod.rs index fe69ca42044ca..8eb4a8e7bf480 100644 --- a/src/unix/bsd/freebsdlike/mod.rs +++ b/src/unix/bsd/freebsdlike/mod.rs @@ -1590,6 +1590,7 @@ extern "C" { attr: *const ::pthread_attr_t, guardsize: *mut ::size_t, ) -> ::c_int; + pub fn pthread_attr_setguardsize(attr: *mut ::pthread_attr_t, guardsize: ::size_t) -> ::c_int; pub fn pthread_attr_getstack( attr: *const ::pthread_attr_t, stackaddr: *mut *mut ::c_void, diff --git a/src/unix/bsd/netbsdlike/netbsd/mod.rs b/src/unix/bsd/netbsdlike/netbsd/mod.rs index 46035df31188c..298c22dd90e12 100644 --- a/src/unix/bsd/netbsdlike/netbsd/mod.rs +++ b/src/unix/bsd/netbsdlike/netbsd/mod.rs @@ -1853,6 +1853,11 @@ pub const MNT_SOFTDEP: ::c_int = 0x80000000; pub const MNT_POSIX1EACLS: ::c_int = 0x00000800; pub const MNT_ACLS: ::c_int = MNT_POSIX1EACLS; +// For use with vfs_sync and getvfsstat +pub const MNT_WAIT: ::c_int = 1; +pub const MNT_NOWAIT: ::c_int = 2; +pub const MNT_LAZY: ::c_int = 3; + // pub const NTP_API: ::c_int = 4; pub const MAXPHASE: ::c_long = 500000000; @@ -2727,6 +2732,7 @@ extern "C" { attr: *const ::pthread_attr_t, guardsize: *mut ::size_t, ) -> ::c_int; + pub fn pthread_attr_setguardsize(attr: *mut ::pthread_attr_t, guardsize: ::size_t) -> ::c_int; pub fn pthread_attr_getstack( attr: *const ::pthread_attr_t, stackaddr: *mut *mut ::c_void, @@ -3153,6 +3159,40 @@ extern "C" { pub fn kinfo_getvmmap(pid: ::pid_t, cntp: *mut ::size_t) -> *mut kinfo_vmentry; } +#[link(name = "execinfo")] +extern "C" { + pub fn backtrace(addrlist: *mut *mut ::c_void, len: ::size_t) -> ::size_t; + pub fn backtrace_symbols(addrlist: *const *mut ::c_void, len: ::size_t) -> *mut *mut ::c_char; + pub fn backtrace_symbols_fd( + addrlist: *const *mut ::c_void, + len: ::size_t, + fd: ::c_int, + ) -> ::c_int; + pub fn backtrace_symbols_fmt( + addrlist: *const *mut ::c_void, + len: ::size_t, + fmt: *const ::c_char, + ) -> *mut *mut ::c_char; + pub fn backtrace_symbols_fd_fmt( + addrlist: *const *mut ::c_void, + len: ::size_t, + fd: ::c_int, + fmt: *const ::c_char, + ) -> ::c_int; +} + +cfg_if! { + if #[cfg(libc_union)] { + extern { + // these functions use statvfs: + pub fn statvfs(path: *const ::c_char, buf: *mut statvfs) -> ::c_int; + pub fn fstatvfs(fd: ::c_int, buf: *mut statvfs) -> ::c_int; + pub fn getmntinfo(mntbufp: *mut *mut ::statvfs, flags: ::c_int) -> ::c_int; + pub fn getvfsstat(buf: *mut statvfs, bufsize: ::size_t, flags: ::c_int) -> ::c_int; + } + } +} + cfg_if! { if #[cfg(target_arch = "aarch64")] { mod aarch64; diff --git a/src/unix/bsd/netbsdlike/openbsd/mod.rs b/src/unix/bsd/netbsdlike/openbsd/mod.rs index 5455bd344b657..38fa29c97e02b 100644 --- a/src/unix/bsd/netbsdlike/openbsd/mod.rs +++ b/src/unix/bsd/netbsdlike/openbsd/mod.rs @@ -1827,6 +1827,7 @@ extern "C" { attr: *const ::pthread_attr_t, guardsize: *mut ::size_t, ) -> ::c_int; + pub fn pthread_attr_setguardsize(attr: *mut ::pthread_attr_t, guardsize: ::size_t) -> ::c_int; pub fn pthread_attr_getstack( attr: *const ::pthread_attr_t, stackaddr: *mut *mut ::c_void, diff --git a/src/unix/haiku/mod.rs b/src/unix/haiku/mod.rs index 24aa599c07070..d8ecf4985d0d1 100644 --- a/src/unix/haiku/mod.rs +++ b/src/unix/haiku/mod.rs @@ -1679,6 +1679,7 @@ extern "C" { attr: *const ::pthread_attr_t, guardsize: *mut ::size_t, ) -> ::c_int; + pub fn pthread_attr_setguardsize(attr: *mut ::pthread_attr_t, guardsize: ::size_t) -> ::c_int; pub fn pthread_attr_getstack( attr: *const ::pthread_attr_t, stackaddr: *mut *mut ::c_void, diff --git a/src/unix/linux_like/android/mod.rs b/src/unix/linux_like/android/mod.rs index 40fbb607a99a0..cdac6c32ee3f4 100644 --- a/src/unix/linux_like/android/mod.rs +++ b/src/unix/linux_like/android/mod.rs @@ -1224,6 +1224,9 @@ pub const PTHREAD_MUTEX_RECURSIVE: ::c_int = 1; pub const PTHREAD_MUTEX_ERRORCHECK: ::c_int = 2; pub const PTHREAD_MUTEX_DEFAULT: ::c_int = PTHREAD_MUTEX_NORMAL; +pub const PTHREAD_EXPLICIT_SCHED: ::c_int = 0; +pub const PTHREAD_INHERIT_SCHED: ::c_int = 1; + // stdio.h pub const RENAME_NOREPLACE: ::c_int = 1; pub const RENAME_EXCHANGE: ::c_int = 2; @@ -3494,6 +3497,12 @@ extern "C" { attr: *const ::pthread_attr_t, guardsize: *mut ::size_t, ) -> ::c_int; + pub fn pthread_attr_setguardsize(attr: *mut ::pthread_attr_t, guardsize: ::size_t) -> ::c_int; + pub fn pthread_attr_getinheritsched( + attr: *const ::pthread_attr_t, + flag: *mut ::c_int, + ) -> ::c_int; + pub fn pthread_attr_setinheritsched(attr: *mut ::pthread_attr_t, flag: ::c_int) -> ::c_int; pub fn sethostname(name: *const ::c_char, len: ::size_t) -> ::c_int; pub fn sched_get_priority_min(policy: ::c_int) -> ::c_int; pub fn pthread_condattr_getpshared( diff --git a/src/unix/linux_like/linux/mod.rs b/src/unix/linux_like/linux/mod.rs index 187c73815e599..067fe07c71f2f 100644 --- a/src/unix/linux_like/linux/mod.rs +++ b/src/unix/linux_like/linux/mod.rs @@ -4582,6 +4582,7 @@ extern "C" { attr: *const ::pthread_attr_t, guardsize: *mut ::size_t, ) -> ::c_int; + pub fn pthread_attr_setguardsize(attr: *mut ::pthread_attr_t, guardsize: ::size_t) -> ::c_int; pub fn sethostname(name: *const ::c_char, len: ::size_t) -> ::c_int; pub fn sched_get_priority_min(policy: ::c_int) -> ::c_int; pub fn pthread_condattr_getpshared( diff --git a/src/unix/mod.rs b/src/unix/mod.rs index 9697d20fe558f..088e4fd30abb7 100644 --- a/src/unix/mod.rs +++ b/src/unix/mod.rs @@ -1076,6 +1076,10 @@ extern "C" { pub fn pthread_exit(value: *mut ::c_void) -> !; pub fn pthread_attr_init(attr: *mut ::pthread_attr_t) -> ::c_int; pub fn pthread_attr_destroy(attr: *mut ::pthread_attr_t) -> ::c_int; + pub fn pthread_attr_getstacksize( + attr: *const ::pthread_attr_t, + stacksize: *mut ::size_t, + ) -> ::c_int; pub fn pthread_attr_setstacksize(attr: *mut ::pthread_attr_t, stack_size: ::size_t) -> ::c_int; pub fn pthread_attr_setdetachstate(attr: *mut ::pthread_attr_t, state: ::c_int) -> ::c_int; pub fn pthread_detach(thread: ::pthread_t) -> ::c_int; diff --git a/src/unix/nto/mod.rs b/src/unix/nto/mod.rs index a79450f4e1fd2..ed6f6df41368e 100644 --- a/src/unix/nto/mod.rs +++ b/src/unix/nto/mod.rs @@ -3092,6 +3092,7 @@ extern "C" { attr: *const ::pthread_attr_t, guardsize: *mut ::size_t, ) -> ::c_int; + pub fn pthread_attr_setguardsize(attr: *mut ::pthread_attr_t, guardsize: ::size_t) -> ::c_int; pub fn sethostname(name: *const ::c_char, len: ::size_t) -> ::c_int; pub fn sched_get_priority_min(policy: ::c_int) -> ::c_int; pub fn pthread_condattr_getpshared(