commit ebd9efa85052fc19d8296e8e0f4da079da9cab45 (tree)
parent 40bab4df69fb6d77c83ae79b9d6bc47ac4ff67fd
Author: Techatrix <techatrix@mailbox.org>
Date: Thu, 18 Jul 2024 22:44:36 +0200
fix fanotify_mark on 32-bit
Diffstat:
1 file changed, 21 insertions(+), 8 deletions(-)
diff --git a/lib/std/os/linux.zig b/lib/std/os/linux.zig
@@ -712,14 +712,27 @@ pub fn fanotify_mark(
dirfd: fd_t,
pathname: ?[*:0]const u8,
) usize {
- return syscall5(
- .fanotify_mark,
- @bitCast(@as(isize, fd)),
- @as(u32, @bitCast(flags)),
- @bitCast(mask),
- @bitCast(@as(isize, dirfd)),
- @intFromPtr(pathname),
- );
+ if (usize_bits < 64) {
+ const mask_halves = splitValue64(@bitCast(mask));
+ return syscall6(
+ .fanotify_mark,
+ @bitCast(@as(isize, fd)),
+ @as(u32, @bitCast(flags)),
+ mask_halves[0],
+ mask_halves[1],
+ @bitCast(@as(isize, dirfd)),
+ @intFromPtr(pathname),
+ );
+ } else {
+ return syscall5(
+ .fanotify_mark,
+ @bitCast(@as(isize, fd)),
+ @as(u32, @bitCast(flags)),
+ @bitCast(mask),
+ @bitCast(@as(isize, dirfd)),
+ @intFromPtr(pathname),
+ );
+ }
}
pub fn name_to_handle_at(