From c3f2de5e519926eb0029062fe8e782a6f9df9c05 Mon Sep 17 00:00:00 2001 From: Stephen Gregoratto Date: Wed, 24 Dec 2025 13:10:38 +1100 Subject: [PATCH] Linux: Update syscall list for 6.17 The 6.17 kernel added[1] syscalls for getting/setting certain file flags and attributes. It's meant to be a more extensible replacement for these ioctl's: - `FS_IOC_GETFLAGS`/`FS_IOC_SETFLAGS`. - `FS_IOC_FSGETXATTR`/`FS_IOC_FSSETXATTR`. The definitions of these calls are as follows: ```zig const file_attr = extern struct { /// Extended flags that apply to this file. (get/set). xflags: u64, /// Preferred extent allocation size, in bytes. (get/set). extsize: u32, /// One of: /// - The number of data extents in this file. /// - If `FS_IOC_FSGETXATTRA` is set, the number of extended attribute events in the file. /// (get) nextents: u32, /// Project Identifier (get/set). projid: u32, /// Preferred extent allocation size for CoW operations, in bytes (get/set). cowextsize: u32, }; // size=@sizeOf(file_attr) fn file_getattr(dirfd: fd_t, path: [*:0], fattr: *file_attr, size: usize, at_flags: u32) {} fn file_setattr(dirfd: fd_t, path: [*:0], fattr: *file_attr, size: usize, at_flags: u32) {} ``` Users need to set/check `xflags` with the `FS_XFLAG` flags defined in `linux/fs.h`. `ioctl_xfs_fsgetxattr(2)` has more information about the type of information one can retrieve. [1]: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=57fcb7d930d8f00f383e995aeebdcd2b416a187a --- lib/std/os/linux/syscalls.zig | 48 ++++++++++++++++++++++++++++++++++- 1 file changed, 47 insertions(+), 1 deletion(-) diff --git a/lib/std/os/linux/syscalls.zig b/lib/std/os/linux/syscalls.zig index 58005cfa359d729ff317b5fccc229b3ba6d3b8f2..0eec4dafee8fa9f0dda9ebb06033481c6a5f7cff 100644 --- a/lib/std/os/linux/syscalls.zig +++ b/lib/std/os/linux/syscalls.zig @@ -1,6 +1,6 @@ // This file is automatically generated, DO NOT edit it manually. // See tools/generate_linux_syscalls.zig for more info. -// This list current as of kernel: 6.16.0 +// This list current as of kernel: 6.18.2 pub const X86 = enum(usize) { restart_syscall = 0, @@ -460,6 +460,8 @@ pub const X86 = enum(usize) { listxattrat = 465, removexattrat = 466, open_tree_attr = 467, + file_getattr = 468, + file_setattr = 469, }; pub const X64 = enum(usize) { @@ -799,6 +801,7 @@ pub const X64 = enum(usize) { io_pgetevents = 333, rseq = 334, uretprobe = 335, + uprobe = 336, pidfd_send_signal = 424, io_uring_setup = 425, io_uring_enter = 426, @@ -843,6 +846,8 @@ pub const X64 = enum(usize) { listxattrat = 465, removexattrat = 466, open_tree_attr = 467, + file_getattr = 468, + file_setattr = 469, }; pub const X32 = enum(usize) { @@ -1135,6 +1140,7 @@ pub const X32 = enum(usize) { io_pgetevents = 1073742157, rseq = 1073742158, uretprobe = 1073742159, + uprobe = 1073742160, pidfd_send_signal = 1073742248, io_uring_setup = 1073742249, io_uring_enter = 1073742250, @@ -1179,6 +1185,8 @@ pub const X32 = enum(usize) { listxattrat = 1073742289, removexattrat = 1073742290, open_tree_attr = 1073742291, + file_getattr = 1073742292, + file_setattr = 1073742293, rt_sigaction = 1073742336, rt_sigreturn = 1073742337, ioctl = 1073742338, @@ -1640,6 +1648,8 @@ pub const Arm = enum(usize) { listxattrat = 465, removexattrat = 466, open_tree_attr = 467, + file_getattr = 468, + file_setattr = 469, breakpoint = arm_base + 1, cacheflush = arm_base + 2, @@ -2086,6 +2096,8 @@ pub const Sparc = enum(usize) { listxattrat = 465, removexattrat = 466, open_tree_attr = 467, + file_getattr = 468, + file_setattr = 469, }; pub const Sparc64 = enum(usize) { @@ -2488,6 +2500,8 @@ pub const Sparc64 = enum(usize) { listxattrat = 465, removexattrat = 466, open_tree_attr = 467, + file_getattr = 468, + file_setattr = 469, }; pub const M68k = enum(usize) { @@ -2930,6 +2944,8 @@ pub const M68k = enum(usize) { listxattrat = 465, removexattrat = 466, open_tree_attr = 467, + file_getattr = 468, + file_setattr = 469, }; pub const MipsO32 = enum(usize) { @@ -3366,6 +3382,8 @@ pub const MipsO32 = enum(usize) { listxattrat = 4465, removexattrat = 4466, open_tree_attr = 4467, + file_getattr = 4468, + file_setattr = 4469, }; pub const MipsN64 = enum(usize) { @@ -3738,6 +3756,8 @@ pub const MipsN64 = enum(usize) { listxattrat = 5465, removexattrat = 5466, open_tree_attr = 5467, + file_getattr = 5468, + file_setattr = 5469, }; pub const MipsN32 = enum(usize) { @@ -4134,6 +4154,8 @@ pub const MipsN32 = enum(usize) { listxattrat = 6465, removexattrat = 6466, open_tree_attr = 6467, + file_getattr = 6468, + file_setattr = 6469, }; pub const PowerPC = enum(usize) { @@ -4585,6 +4607,8 @@ pub const PowerPC = enum(usize) { listxattrat = 465, removexattrat = 466, open_tree_attr = 467, + file_getattr = 468, + file_setattr = 469, }; pub const PowerPC64 = enum(usize) { @@ -5008,6 +5032,8 @@ pub const PowerPC64 = enum(usize) { listxattrat = 465, removexattrat = 466, open_tree_attr = 467, + file_getattr = 468, + file_setattr = 469, }; pub const S390x = enum(usize) { @@ -5397,6 +5423,8 @@ pub const S390x = enum(usize) { listxattrat = 465, removexattrat = 466, open_tree_attr = 467, + file_getattr = 468, + file_setattr = 469, }; pub const Xtensa = enum(usize) { @@ -5790,6 +5818,8 @@ pub const Xtensa = enum(usize) { listxattrat = 465, removexattrat = 466, open_tree_attr = 467, + file_getattr = 468, + file_setattr = 469, }; pub const Arm64 = enum(usize) { @@ -6116,6 +6146,8 @@ pub const Arm64 = enum(usize) { listxattrat = 465, removexattrat = 466, open_tree_attr = 467, + file_getattr = 468, + file_setattr = 469, }; pub const RiscV32 = enum(usize) { @@ -6433,6 +6465,8 @@ pub const RiscV32 = enum(usize) { listxattrat = 465, removexattrat = 466, open_tree_attr = 467, + file_getattr = 468, + file_setattr = 469, }; pub const RiscV64 = enum(usize) { @@ -6760,6 +6794,8 @@ pub const RiscV64 = enum(usize) { listxattrat = 465, removexattrat = 466, open_tree_attr = 467, + file_getattr = 468, + file_setattr = 469, }; pub const LoongArch64 = enum(usize) { @@ -7082,6 +7118,8 @@ pub const LoongArch64 = enum(usize) { listxattrat = 465, removexattrat = 466, open_tree_attr = 467, + file_getattr = 468, + file_setattr = 469, }; pub const Arc = enum(usize) { @@ -7432,6 +7470,8 @@ pub const Arc = enum(usize) { listxattrat = 465, removexattrat = 466, open_tree_attr = 467, + file_getattr = 468, + file_setattr = 469, }; pub const CSky = enum(usize) { @@ -7778,6 +7818,8 @@ pub const CSky = enum(usize) { listxattrat = 465, removexattrat = 466, open_tree_attr = 467, + file_getattr = 468, + file_setattr = 469, }; pub const Hexagon = enum(usize) { @@ -8123,6 +8165,8 @@ pub const Hexagon = enum(usize) { listxattrat = 465, removexattrat = 466, open_tree_attr = 467, + file_getattr = 468, + file_setattr = 469, }; pub const OpenRisc = enum(usize) { @@ -8469,4 +8513,6 @@ pub const OpenRisc = enum(usize) { listxattrat = 465, removexattrat = 466, open_tree_attr = 467, + file_getattr = 468, + file_setattr = 469, }; -- 2.54.0