Skip to content

Commit 0008319

Browse files
committed
Update statx constants and types (Linux 6.8-6.14)
1 parent 79d1bdb commit 0008319

File tree

3 files changed

+61
-1
lines changed

3 files changed

+61
-1
lines changed

libc-test/build.rs

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4220,6 +4220,51 @@ fn test_linux(target: &str) {
42204220
// Not present in glibc
42214221
"PR_SME_VL_LEN_MAX" | "PR_SME_SET_VL_INHERIT" | "PR_SME_SET_VL_ONE_EXEC" if gnu => true,
42224222

4223+
// linux 5.17 min
4224+
"PR_SET_VMA" | "PR_SET_VMA_ANON_NAME" => true,
4225+
4226+
// present in recent kernels only
4227+
"PR_SCHED_CORE" | "PR_SCHED_CORE_CREATE" | "PR_SCHED_CORE_GET" | "PR_SCHED_CORE_MAX" | "PR_SCHED_CORE_SCOPE_PROCESS_GROUP" | "PR_SCHED_CORE_SCOPE_THREAD" | "PR_SCHED_CORE_SCOPE_THREAD_GROUP" | "PR_SCHED_CORE_SHARE_FROM" | "PR_SCHED_CORE_SHARE_TO" => true,
4228+
4229+
// present in recent kernels only >= 5.13
4230+
"PR_PAC_SET_ENABLED_KEYS" | "PR_PAC_GET_ENABLED_KEYS" => true,
4231+
// present in recent kernels only >= 5.19
4232+
"PR_SME_SET_VL" | "PR_SME_GET_VL" | "PR_SME_VL_LEN_MAX" | "PR_SME_SET_VL_INHERIT" | "PR_SME_SET_VL_ONE_EXEC" => true,
4233+
4234+
// Added in Linux 5.14
4235+
"FUTEX_LOCK_PI2" => true,
4236+
4237+
// Added in linux 6.1
4238+
"STATX_DIOALIGN"
4239+
| "CAN_RAW_XL_FRAMES"
4240+
| "CANXL_HDR_SIZE"
4241+
| "CANXL_MAX_DLC"
4242+
| "CANXL_MAX_DLC_MASK"
4243+
| "CANXL_MAX_DLEN"
4244+
| "CANXL_MAX_MTU"
4245+
| "CANXL_MIN_DLC"
4246+
| "CANXL_MIN_DLEN"
4247+
| "CANXL_MIN_MTU"
4248+
| "CANXL_MTU"
4249+
| "CANXL_PRIO_BITS"
4250+
| "CANXL_PRIO_MASK"
4251+
| "CANXL_SEC"
4252+
| "CANXL_XLF"
4253+
=> true,
4254+
4255+
"STATX_MNT_ID_UNIQUE" // Added in Linux 6.8
4256+
| "STATX_SUBVOL" // Added in Linux 6.10
4257+
| "STATX_WRITE_ATOMIC" // Added in Linux 6.11
4258+
| "STATX_ATTR_WRITE_ATOMIC" // Added in Linux 6.11
4259+
| "STATX_DIO_READ_ALIGN" // Added in Linux 6.14
4260+
=> true,
4261+
4262+
// FIXME(linux): Parts of netfilter/nfnetlink*.h require more recent kernel headers:
4263+
| "RTNLGRP_MCTP_IFADDR" // linux v5.17+
4264+
| "RTNLGRP_TUNNEL" // linux v5.18+
4265+
| "RTNLGRP_STATS" // linux v5.18+
4266+
=> true,
4267+
42234268
// FIXME(linux): The below is no longer const in glibc 2.34:
42244269
// https://github.com/bminor/glibc/commit/5d98a7dae955bafa6740c26eaba9c86060ae0344
42254270
"PTHREAD_STACK_MIN" | "SIGSTKSZ" | "MINSIGSTKSZ" if gnu => true,

libc-test/semver/linux-gnu.txt

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -418,20 +418,25 @@ STATX_ATTR_IMMUTABLE
418418
STATX_ATTR_MOUNT_ROOT
419419
STATX_ATTR_NODUMP
420420
STATX_ATTR_VERITY
421+
STATX_ATTR_WRITE_ATOMIC
421422
STATX_BASIC_STATS
422423
STATX_BLOCKS
423424
STATX_BTIME
424425
STATX_CTIME
425426
STATX_DIOALIGN
427+
STATX_DIO_READ_ALIGN
426428
STATX_GID
427429
STATX_INO
428430
STATX_MNT_ID
431+
STATX_MNT_ID_UNIQUE
429432
STATX_MODE
430433
STATX_MTIME
431434
STATX_NLINK
432435
STATX_SIZE
436+
STATX_SUBVOL
433437
STATX_TYPE
434438
STATX_UID
439+
STATX_WRITE_ATOMIC
435440
STATX__RESERVED
436441
STA_CLK
437442
STA_CLOCKERR

src/unix/linux_like/mod.rs

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -270,7 +270,12 @@ cfg_if! {
270270
pub stx_mnt_id: crate::__u64,
271271
pub stx_dio_mem_align: crate::__u32,
272272
pub stx_dio_offset_align: crate::__u32,
273-
__statx_pad3: [crate::__u64; 12],
273+
pub stx_subvol: crate::__u64,
274+
pub stx_atomic_write_unit_min: crate::__u32,
275+
pub stx_atomic_write_unit_max: crate::__u32,
276+
pub stx_atomic_write_segments_max: crate::__u32,
277+
pub stx_dio_read_offset_align: crate::__u32,
278+
__statx_pad3: [crate::__u64; 9],
274279
}
275280

276281
pub struct statx_timestamp {
@@ -1719,6 +1724,10 @@ cfg_if! {
17191724
pub const STATX_ALL: c_uint = 0x0fff;
17201725
pub const STATX_MNT_ID: c_uint = 0x1000;
17211726
pub const STATX_DIOALIGN: c_uint = 0x2000;
1727+
pub const STATX_MNT_ID_UNIQUE: c_uint = 0x4000;
1728+
pub const STATX_SUBVOL: c_uint = 0x_0000_8000;
1729+
pub const STATX_WRITE_ATOMIC: c_uint = 0x_0001_0000;
1730+
pub const STATX_DIO_READ_ALIGN: c_uint = 0x_0002_0000;
17221731
pub const STATX__RESERVED: c_int = 0x80000000;
17231732
pub const STATX_ATTR_COMPRESSED: c_int = 0x0004;
17241733
pub const STATX_ATTR_IMMUTABLE: c_int = 0x0010;
@@ -1729,6 +1738,7 @@ cfg_if! {
17291738
pub const STATX_ATTR_MOUNT_ROOT: c_int = 0x2000;
17301739
pub const STATX_ATTR_VERITY: c_int = 0x100000;
17311740
pub const STATX_ATTR_DAX: c_int = 0x200000;
1741+
pub const STATX_ATTR_WRITE_ATOMIC: c_int = 0x400000;
17321742
}
17331743
}
17341744

0 commit comments

Comments
 (0)