From cb1eabefb8418e864c3d67786546560f6c139dce Mon Sep 17 00:00:00 2001 From: Val Packett Date: Sun, 19 Feb 2023 18:34:52 -0300 Subject: FreeBSD: add AT_RESOLVE_BENEATH --- libc-test/build.rs | 4 ++-- libc-test/semver/freebsd.txt | 1 + src/unix/bsd/freebsdlike/freebsd/mod.rs | 1 + 3 files changed, 4 insertions(+), 2 deletions(-) diff --git a/libc-test/build.rs b/libc-test/build.rs index d05672a47e..26dbd99dea 100644 --- a/libc-test/build.rs +++ b/libc-test/build.rs @@ -2074,8 +2074,8 @@ fn test_freebsd(target: &str) { // These constants were introduced in FreeBSD 13: "EFD_CLOEXEC" | "EFD_NONBLOCK" | "EFD_SEMAPHORE" if Some(13) > freebsd_ver => true, - // This constant was introduced in FreeBSD 12: - "O_RESOLVE_BENEATH" if Some(12) > freebsd_ver => true, + // These constants were introduced in FreeBSD 12: + "AT_RESOLVE_BENEATH" | "O_RESOLVE_BENEATH" if Some(12) > freebsd_ver => true, // These constants were introduced in FreeBSD 13: "O_DSYNC" | "O_PATH" | "O_EMPTY_PATH" | "AT_EMPTY_PATH" if Some(13) > freebsd_ver => { diff --git a/libc-test/semver/freebsd.txt b/libc-test/semver/freebsd.txt index 33442a4b11..ba0a3c1fd6 100644 --- a/libc-test/semver/freebsd.txt +++ b/libc-test/semver/freebsd.txt @@ -100,6 +100,7 @@ AT_PHDR AT_PHENT AT_PHNUM AT_REMOVEDIR +AT_RESOLVE_BENEATH AT_SYMLINK_FOLLOW AT_SYMLINK_NOFOLLOW AT_UID diff --git a/src/unix/bsd/freebsdlike/freebsd/mod.rs b/src/unix/bsd/freebsdlike/freebsd/mod.rs index e69c32ad9e..b70a40f15d 100644 --- a/src/unix/bsd/freebsdlike/freebsd/mod.rs +++ b/src/unix/bsd/freebsdlike/freebsd/mod.rs @@ -3737,6 +3737,7 @@ pub const AT_EACCESS: ::c_int = 0x100; pub const AT_SYMLINK_NOFOLLOW: ::c_int = 0x200; pub const AT_SYMLINK_FOLLOW: ::c_int = 0x400; pub const AT_REMOVEDIR: ::c_int = 0x800; +pub const AT_RESOLVE_BENEATH: ::c_int = 0x2000; pub const AT_EMPTY_PATH: ::c_int = 0x4000; pub const AT_NULL: ::c_int = 0; -- cgit v1.2.1 From 69659517e866debfe796b6f42043e042b4ccbd48 Mon Sep 17 00:00:00 2001 From: Val Packett Date: Sun, 19 Feb 2023 18:49:58 -0300 Subject: FreeBSD: add Linux-compatible clock aliases They were added in https://reviews.freebsd.org/D30988 which landed for 13, but as they're just aliases, they will work on any version. --- libc-test/build.rs | 8 ++++++++ libc-test/semver/freebsd.txt | 3 +++ src/unix/bsd/freebsdlike/mod.rs | 3 +++ 3 files changed, 14 insertions(+) diff --git a/libc-test/build.rs b/libc-test/build.rs index 26dbd99dea..3cab3ea70d 100644 --- a/libc-test/build.rs +++ b/libc-test/build.rs @@ -2082,6 +2082,14 @@ fn test_freebsd(target: &str) { true } + // These aliases were introduced in FreeBSD 13: + // (note however that the constants themselves work on any version) + "CLOCK_BOOTTIME" | "CLOCK_REALTIME_COARSE" | "CLOCK_MONOTONIC_COARSE" + if Some(13) > freebsd_ver => + { + true + } + // FIXME: These are deprecated - remove in a couple of releases. // These constants were removed in FreeBSD 11 (svn r273250) but will // still be accepted and ignored at runtime. diff --git a/libc-test/semver/freebsd.txt b/libc-test/semver/freebsd.txt index ba0a3c1fd6..429ae63eb8 100644 --- a/libc-test/semver/freebsd.txt +++ b/libc-test/semver/freebsd.txt @@ -149,10 +149,13 @@ CLD_EXITED CLD_KILLED CLD_STOPPED CLD_TRAPPED +CLOCK_BOOTTIME +CLOCK_MONOTONIC_COARSE CLOCK_MONOTONIC_FAST CLOCK_MONOTONIC_PRECISE CLOCK_PROCESS_CPUTIME_ID CLOCK_PROF +CLOCK_REALTIME_COARSE CLOCK_REALTIME_FAST CLOCK_REALTIME_PRECISE CLOCK_SECOND diff --git a/src/unix/bsd/freebsdlike/mod.rs b/src/unix/bsd/freebsdlike/mod.rs index 9aefb36e4e..6a0f383bc0 100644 --- a/src/unix/bsd/freebsdlike/mod.rs +++ b/src/unix/bsd/freebsdlike/mod.rs @@ -824,12 +824,15 @@ pub const CLOCK_VIRTUAL: ::clockid_t = 1; pub const CLOCK_PROF: ::clockid_t = 2; pub const CLOCK_MONOTONIC: ::clockid_t = 4; pub const CLOCK_UPTIME: ::clockid_t = 5; +pub const CLOCK_BOOTTIME: ::clockid_t = CLOCK_UPTIME; pub const CLOCK_UPTIME_PRECISE: ::clockid_t = 7; pub const CLOCK_UPTIME_FAST: ::clockid_t = 8; pub const CLOCK_REALTIME_PRECISE: ::clockid_t = 9; pub const CLOCK_REALTIME_FAST: ::clockid_t = 10; +pub const CLOCK_REALTIME_COARSE: ::clockid_t = CLOCK_REALTIME_FAST; pub const CLOCK_MONOTONIC_PRECISE: ::clockid_t = 11; pub const CLOCK_MONOTONIC_FAST: ::clockid_t = 12; +pub const CLOCK_MONOTONIC_COARSE: ::clockid_t = CLOCK_MONOTONIC_FAST; pub const CLOCK_SECOND: ::clockid_t = 13; pub const CLOCK_THREAD_CPUTIME_ID: ::clockid_t = 14; pub const CLOCK_PROCESS_CPUTIME_ID: ::clockid_t = 15; -- cgit v1.2.1