From 0618743543464e0b5862255ebb89f265bd29c8b9 Mon Sep 17 00:00:00 2001 From: Huang Zhichao Date: Fri, 29 May 2026 13:15:21 +0800 Subject: [PATCH] std.os.linux: make dev_t u32 glibc and musl define dev_t as u64, but in the kernel it is u32. see https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/include/linux/types.h?id=v7.0#n17 --- lib/std/c.zig | 4 ++-- lib/std/os/linux.zig | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/lib/std/c.zig b/lib/std/c.zig index 7b7cfc61bf61ba05ddb57cb310dc72cbb8a12ba5..d4efb2c07e0fc412e495a993dbb451e09964e0b6 100644 --- a/lib/std/c.zig +++ b/lib/std/c.zig @@ -148,12 +148,12 @@ pub const timespec = switch (native_os) { }; pub const dev_t = switch (native_os) { - .linux => linux.dev_t, .emscripten => emscripten.dev_t, .wasi => wasi.device_t, .openbsd, .haiku, .illumos, .driverkit, .ios, .maccatalyst, .macos, .tvos, .visionos, .watchos => i32, + // glibc and musl define dev_t as u64, while in Linux kernel it is u32. // https://github.com/SerenityOS/serenity/blob/b98f537f117b341788023ab82e0c11ca9ae29a57/Kernel/API/POSIX/sys/types.h#L43 - .netbsd, .freebsd, .serenity => u64, + .linux, .netbsd, .freebsd, .serenity => u64, else => void, }; diff --git a/lib/std/os/linux.zig b/lib/std/os/linux.zig index 772cec58cf61a22356f3b72302d8a2c3071e3b13..8326b406b652defa174a6190f553513e15ca0009 100644 --- a/lib/std/os/linux.zig +++ b/lib/std/os/linux.zig @@ -106,7 +106,7 @@ pub const user_desc = arch_bits.user_desc; pub const blkcnt_t = u64; pub const blksize_t = u32; -pub const dev_t = u64; +pub const dev_t = u32; pub const ino_t = u64; pub const mode_t = u32; pub const nlink_t = u32; -- 2.54.0