@zigc/lib 0.16.0 → 0.17.0-dev.131
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/c/fcntl.zig +6 -1
- package/c/inttypes.zig +0 -10
- package/c/math.zig +46 -122
- package/c/pthread.zig +57 -0
- package/c/search.zig +1 -27
- package/c/stdlib/drand48.zig +0 -57
- package/c/stdlib.zig +0 -100
- package/c/string.zig +20 -7
- package/c/strings.zig +0 -38
- package/c/unistd.zig +27 -26
- package/c/wchar.zig +10 -0
- package/c.zig +2 -2
- package/compiler/aro/aro/CodeGen.zig +5 -6
- package/compiler/aro/aro/Compilation.zig +17 -14
- package/compiler/aro/aro/Driver.zig +14 -13
- package/compiler/aro/aro/Parser.zig +20 -15
- package/compiler/aro/aro/Pragma.zig +3 -2
- package/compiler/aro/aro/Preprocessor.zig +9 -6
- package/compiler/aro/aro/pragmas/message.zig +3 -2
- package/compiler/aro/aro/text_literal.zig +3 -2
- package/compiler/aro/assembly_backend/x86_64.zig +4 -4
- package/compiler/build_runner.zig +0 -2
- package/compiler/reduce/Walk.zig +7 -7
- package/compiler/test_runner.zig +2 -2
- package/compiler/translate-c/Translator.zig +6 -2
- package/compiler/translate-c/main.zig +1 -1
- package/compiler_rt/cos.zig +0 -2
- package/compiler_rt/divmodei4.zig +40 -17
- package/compiler_rt/exp.zig +1 -6
- package/compiler_rt/exp2.zig +1 -6
- package/compiler_rt/exp_f128.zig +377 -0
- package/compiler_rt/fabs.zig +0 -2
- package/compiler_rt/fma.zig +0 -2
- package/compiler_rt/fmax.zig +0 -2
- package/compiler_rt/fmin.zig +0 -2
- package/compiler_rt/fmod.zig +0 -2
- package/compiler_rt/limb64.zig +876 -15
- package/compiler_rt/log.zig +0 -2
- package/compiler_rt/log10.zig +0 -2
- package/compiler_rt/log2.zig +0 -2
- package/compiler_rt/mulXi3.zig +1 -1
- package/compiler_rt/round.zig +0 -2
- package/compiler_rt/sin.zig +0 -2
- package/compiler_rt/sincos.zig +0 -2
- package/compiler_rt/sqrt.zig +0 -2
- package/compiler_rt/ssp.zig +1 -1
- package/compiler_rt/tan.zig +0 -2
- package/compiler_rt/trunc.zig +0 -2
- package/compiler_rt/udivmodei4.zig +28 -0
- package/fuzzer.zig +2 -0
- package/libc/musl/arch/mipsn32/syscall_arch.h +35 -32
- package/package.json +1 -1
- package/std/Build/Cache.zig +6 -6
- package/std/Build/Step/Compile.zig +0 -1
- package/std/Build/Step/Run.zig +2 -2
- package/std/Build/Step.zig +2 -4
- package/std/Build/WebServer.zig +2 -2
- package/std/Build.zig +0 -3
- package/std/Io/Dir.zig +7 -2
- package/std/Io/Dispatch.zig +3 -13
- package/std/Io/File/Writer.zig +8 -6
- package/std/Io/Reader.zig +8 -9
- package/std/Io/Semaphore.zig +112 -17
- package/std/Io/Terminal.zig +1 -1
- package/std/Io/Threaded.zig +171 -37
- package/std/Io/Uring.zig +13 -15
- package/std/Io/Writer.zig +46 -42
- package/std/Io/net.zig +11 -11
- package/std/Io.zig +90 -26
- package/std/SemanticVersion.zig +1 -1
- package/std/Target/Query.zig +2 -2
- package/std/Target.zig +50 -5
- package/std/array_hash_map.zig +9 -18
- package/std/builtin.zig +4 -0
- package/std/c/haiku.zig +3 -0
- package/std/c/serenity.zig +1 -6
- package/std/c.zig +89 -7
- package/std/compress/flate/Decompress.zig +2 -3
- package/std/compress/zstd/Decompress.zig +2 -4
- package/std/crypto/Certificate.zig +13 -1
- package/std/crypto/ascon.zig +75 -33
- package/std/crypto/codecs/asn1/Oid.zig +12 -1
- package/std/crypto/codecs/base64_hex_ct.zig +2 -4
- package/std/crypto/ml_kem.zig +2 -9
- package/std/crypto/tls/Client.zig +79 -4
- package/std/crypto/tls.zig +1 -1
- package/std/crypto.zig +1 -0
- package/std/debug/Pdb.zig +1 -1
- package/std/debug.zig +4 -3
- package/std/fmt.zig +8 -3
- package/std/fs/path.zig +6 -4
- package/std/heap/BufferFirstAllocator.zig +165 -0
- package/std/heap.zig +2 -126
- package/std/http/Client.zig +21 -24
- package/std/http.zig +3 -4
- package/std/json/Scanner.zig +2 -2
- package/std/os/emscripten.zig +1 -1
- package/std/os/linux/IoUring.zig +2 -0
- package/std/os/linux/aarch64.zig +41 -12
- package/std/os/linux/arc.zig +173 -0
- package/std/os/linux/arm.zig +41 -12
- package/std/os/linux/hexagon.zig +33 -11
- package/std/os/linux/loongarch32.zig +41 -13
- package/std/os/linux/loongarch64.zig +41 -12
- package/std/os/linux/m68k.zig +41 -13
- package/std/os/linux/mips.zig +67 -36
- package/std/os/linux/mips64.zig +60 -29
- package/std/os/linux/mipsn32.zig +60 -29
- package/std/os/linux/or1k.zig +41 -12
- package/std/os/linux/powerpc.zig +41 -12
- package/std/os/linux/powerpc64.zig +41 -12
- package/std/os/linux/riscv32.zig +41 -12
- package/std/os/linux/riscv64.zig +41 -12
- package/std/os/linux/s390x.zig +44 -7
- package/std/os/linux/sparc64.zig +83 -52
- package/std/os/linux/thumb.zig +52 -36
- package/std/os/linux/x32.zig +41 -12
- package/std/os/linux/x86.zig +42 -13
- package/std/os/linux/x86_64.zig +41 -12
- package/std/os/linux.zig +412 -436
- package/std/os/uefi/tables/boot_services.zig +9 -8
- package/std/os.zig +41 -0
- package/std/process.zig +1 -1
- package/std/sort.zig +3 -3
- package/std/zig/Ast/Render.zig +3 -3
- package/std/zig/AstGen.zig +44 -98
- package/std/zig/AstRlAnnotate.zig +0 -11
- package/std/zig/BuiltinFn.zig +0 -32
- package/std/zig/LibCInstallation.zig +4 -3
- package/std/zig/Parse.zig +7 -7
- package/std/zig/WindowsSdk.zig +13 -13
- package/std/zig/Zir.zig +50 -63
- package/std/zig/ZonGen.zig +6 -5
- package/std/zig/llvm/Builder.zig +12 -12
- package/std/zig.zig +1 -10
- package/std/zip.zig +5 -5
- package/zig.h +340 -1
- package/libc/mingw/math/fdiml.c +0 -24
- package/libc/mingw/winpthreads/spinlock.c +0 -82
- package/libc/musl/src/linux/tee.c +0 -8
- package/libc/musl/src/math/fdimf.c +0 -10
- package/libc/musl/src/math/fdiml.c +0 -18
- package/libc/musl/src/string/strdup.c +0 -10
- package/libc/musl/src/string/strndup.c +0 -12
- package/libc/musl/src/string/wcsdup.c +0 -10
- package/libc/musl/src/thread/pthread_spin_destroy.c +0 -6
- package/libc/musl/src/thread/pthread_spin_init.c +0 -6
- package/libc/musl/src/thread/pthread_spin_lock.c +0 -8
- package/libc/musl/src/thread/pthread_spin_trylock.c +0 -7
- package/libc/musl/src/thread/pthread_spin_unlock.c +0 -7
- package/libc/musl/src/unistd/dup2.c +0 -20
- package/libc/musl/src/unistd/dup3.c +0 -26
- package/libc/wasi/thread-stub/pthread_spin_lock.c +0 -8
- package/libc/wasi/thread-stub/pthread_spin_trylock.c +0 -8
- package/libc/wasi/thread-stub/pthread_spin_unlock.c +0 -7
package/std/os/linux.zig
CHANGED
|
@@ -31,6 +31,7 @@ test {
|
|
|
31
31
|
|
|
32
32
|
const arch_bits = switch (native_arch) {
|
|
33
33
|
.aarch64, .aarch64_be => @import("linux/aarch64.zig"),
|
|
34
|
+
.arc, .arceb => @import("linux/arc.zig"),
|
|
34
35
|
.arm, .armeb, .thumb, .thumbeb => @import("linux/arm.zig"),
|
|
35
36
|
.hexagon => @import("linux/hexagon.zig"),
|
|
36
37
|
.loongarch32 => @import("linux/loongarch32.zig"),
|
|
@@ -58,6 +59,7 @@ const arch_bits = switch (native_arch) {
|
|
|
58
59
|
|
|
59
60
|
const syscall_bits = if (native_arch.isThumb()) @import("linux/thumb.zig") else arch_bits;
|
|
60
61
|
|
|
62
|
+
pub const syscall_arg_t = syscall_bits.syscall_arg_t;
|
|
61
63
|
pub const syscall0 = syscall_bits.syscall0;
|
|
62
64
|
pub const syscall1 = syscall_bits.syscall1;
|
|
63
65
|
pub const syscall2 = syscall_bits.syscall2;
|
|
@@ -77,9 +79,9 @@ pub fn clone(
|
|
|
77
79
|
stack: usize,
|
|
78
80
|
flags: u32,
|
|
79
81
|
arg: usize,
|
|
80
|
-
ptid: ?*
|
|
82
|
+
ptid: ?*pid_t,
|
|
81
83
|
tp: usize, // aka tls
|
|
82
|
-
ctid: ?*
|
|
84
|
+
ctid: ?*pid_t,
|
|
83
85
|
) usize {
|
|
84
86
|
// Can't directly call a naked function; cast to C calling convention first.
|
|
85
87
|
return @as(*const fn (
|
|
@@ -87,9 +89,9 @@ pub fn clone(
|
|
|
87
89
|
usize,
|
|
88
90
|
u32,
|
|
89
91
|
usize,
|
|
90
|
-
?*
|
|
92
|
+
?*pid_t,
|
|
91
93
|
usize,
|
|
92
|
-
?*
|
|
94
|
+
?*pid_t,
|
|
93
95
|
) callconv(.c) usize, @ptrCast(&syscall_bits.clone))(func, stack, flags, arg, ptid, tp, ctid);
|
|
94
96
|
}
|
|
95
97
|
|
|
@@ -97,6 +99,8 @@ pub const ARCH = arch_bits.ARCH;
|
|
|
97
99
|
pub const HWCAP = arch_bits.HWCAP;
|
|
98
100
|
pub const SC = arch_bits.SC;
|
|
99
101
|
pub const VDSO = arch_bits.VDSO;
|
|
102
|
+
pub const user_desc = arch_bits.user_desc;
|
|
103
|
+
|
|
100
104
|
pub const blkcnt_t = u64;
|
|
101
105
|
pub const blksize_t = u32;
|
|
102
106
|
pub const dev_t = u64;
|
|
@@ -104,8 +108,13 @@ pub const ino_t = u64;
|
|
|
104
108
|
pub const mode_t = u32;
|
|
105
109
|
pub const nlink_t = u32;
|
|
106
110
|
pub const off_t = i64;
|
|
111
|
+
pub const pid_t = i32;
|
|
112
|
+
pub const fd_t = i32;
|
|
113
|
+
pub const socket_t = fd_t;
|
|
114
|
+
pub const uid_t = u32;
|
|
115
|
+
pub const gid_t = u32;
|
|
116
|
+
pub const clock_t = isize;
|
|
107
117
|
pub const time_t = arch_bits.time_t;
|
|
108
|
-
pub const user_desc = arch_bits.user_desc;
|
|
109
118
|
|
|
110
119
|
pub const tls = @import("linux/tls.zig");
|
|
111
120
|
pub const BPF = @import("linux/bpf.zig");
|
|
@@ -274,7 +283,13 @@ pub const MAP = switch (native_arch) {
|
|
|
274
283
|
UNINITIALIZED: bool = false,
|
|
275
284
|
_: u5 = 0,
|
|
276
285
|
},
|
|
277
|
-
.
|
|
286
|
+
.arc,
|
|
287
|
+
.arceb,
|
|
288
|
+
.hexagon,
|
|
289
|
+
.m68k,
|
|
290
|
+
.or1k,
|
|
291
|
+
.s390x,
|
|
292
|
+
=> packed struct(u32) {
|
|
278
293
|
TYPE: MAP_TYPE,
|
|
279
294
|
FIXED: bool = false,
|
|
280
295
|
ANONYMOUS: bool = false,
|
|
@@ -451,7 +466,12 @@ pub const O = switch (native_arch) {
|
|
|
451
466
|
TMPFILE: bool = false,
|
|
452
467
|
_23: u9 = 0,
|
|
453
468
|
},
|
|
454
|
-
.
|
|
469
|
+
.arc,
|
|
470
|
+
.arceb,
|
|
471
|
+
.hexagon,
|
|
472
|
+
.or1k,
|
|
473
|
+
.s390x,
|
|
474
|
+
=> packed struct(u32) {
|
|
455
475
|
ACCMODE: ACCMODE = .RDONLY,
|
|
456
476
|
_2: u4 = 0,
|
|
457
477
|
CREAT: bool = false,
|
|
@@ -554,9 +574,11 @@ fn getauxvalImpl(index: usize) callconv(.c) usize {
|
|
|
554
574
|
// in a even-aligned register pair.
|
|
555
575
|
const require_aligned_register_pair =
|
|
556
576
|
builtin.cpu.arch.isArm() or
|
|
577
|
+
builtin.cpu.arch == .csky or
|
|
557
578
|
builtin.cpu.arch == .hexagon or
|
|
558
579
|
builtin.cpu.arch.isMIPS32() or
|
|
559
|
-
builtin.cpu.arch.isPowerPC32()
|
|
580
|
+
builtin.cpu.arch.isPowerPC32() or
|
|
581
|
+
builtin.cpu.arch.isXtensa();
|
|
560
582
|
|
|
561
583
|
// Split a 64bit value into a {LSB,MSB} pair.
|
|
562
584
|
// The LE/BE variants specify the endianness to assume.
|
|
@@ -599,13 +621,13 @@ pub fn brk(addr: usize) usize {
|
|
|
599
621
|
return syscall1(.brk, addr);
|
|
600
622
|
}
|
|
601
623
|
|
|
602
|
-
pub fn dup(old:
|
|
603
|
-
return syscall1(.dup, @as(
|
|
624
|
+
pub fn dup(old: fd_t) usize {
|
|
625
|
+
return syscall1(.dup, @as(u32, @bitCast(old)));
|
|
604
626
|
}
|
|
605
627
|
|
|
606
|
-
pub fn dup2(old:
|
|
628
|
+
pub fn dup2(old: fd_t, new: fd_t) usize {
|
|
607
629
|
if (@hasField(SYS, "dup2")) {
|
|
608
|
-
return syscall2(.dup2, @as(
|
|
630
|
+
return syscall2(.dup2, @as(u32, @bitCast(old)), @as(u32, @bitCast(new)));
|
|
609
631
|
} else {
|
|
610
632
|
if (old == new) {
|
|
611
633
|
if (std.debug.runtime_safety) {
|
|
@@ -614,13 +636,13 @@ pub fn dup2(old: i32, new: i32) usize {
|
|
|
614
636
|
}
|
|
615
637
|
return @as(usize, @intCast(old));
|
|
616
638
|
} else {
|
|
617
|
-
return syscall3(.dup3, @as(
|
|
639
|
+
return syscall3(.dup3, @as(u32, @bitCast(old)), @as(u32, @bitCast(new)), 0);
|
|
618
640
|
}
|
|
619
641
|
}
|
|
620
642
|
}
|
|
621
643
|
|
|
622
|
-
pub fn dup3(old:
|
|
623
|
-
return syscall3(.dup3, @as(
|
|
644
|
+
pub fn dup3(old: fd_t, new: fd_t, flags: u32) usize {
|
|
645
|
+
return syscall3(.dup3, @as(u32, @bitCast(old)), @as(u32, @bitCast(new)), flags);
|
|
624
646
|
}
|
|
625
647
|
|
|
626
648
|
pub fn chdir(path: [*:0]const u8) usize {
|
|
@@ -628,7 +650,7 @@ pub fn chdir(path: [*:0]const u8) usize {
|
|
|
628
650
|
}
|
|
629
651
|
|
|
630
652
|
pub fn fchdir(fd: fd_t) usize {
|
|
631
|
-
return syscall1(.fchdir, @as(
|
|
653
|
+
return syscall1(.fchdir, @as(u32, @bitCast(fd)));
|
|
632
654
|
}
|
|
633
655
|
|
|
634
656
|
pub fn chroot(path: [*:0]const u8) usize {
|
|
@@ -650,7 +672,7 @@ pub const EXECVEAT = packed struct(u32) {
|
|
|
650
672
|
};
|
|
651
673
|
|
|
652
674
|
pub fn execveat(dirfd: fd_t, path: [*:0]const u8, argv: [*:null]const ?[*:0]const u8, envp: [*:null]const ?[*:0]const u8, flags: EXECVEAT) usize {
|
|
653
|
-
return syscall5(.execveat,
|
|
675
|
+
return syscall5(.execveat, @as(u32, @bitCast(dirfd)), @intFromPtr(path), @intFromPtr(argv), @intFromPtr(envp), @as(u32, @bitCast(flags)));
|
|
654
676
|
}
|
|
655
677
|
|
|
656
678
|
pub fn fork() usize {
|
|
@@ -663,37 +685,28 @@ pub fn fork() usize {
|
|
|
663
685
|
}
|
|
664
686
|
}
|
|
665
687
|
|
|
666
|
-
|
|
667
|
-
/// child does a return it will clobber the parent's stack.
|
|
668
|
-
/// It is advised to avoid this function and use clone instead, because
|
|
669
|
-
/// the compiler is not aware of how vfork affects control flow and you may
|
|
670
|
-
/// see different results in optimized builds.
|
|
671
|
-
pub inline fn vfork() usize {
|
|
672
|
-
return @call(.always_inline, syscall0, .{.vfork});
|
|
673
|
-
}
|
|
674
|
-
|
|
675
|
-
pub fn futimens(fd: i32, times: ?*const [2]timespec) usize {
|
|
688
|
+
pub fn futimens(fd: fd_t, times: ?*const [2]timespec) usize {
|
|
676
689
|
return utimensat(fd, null, times, 0);
|
|
677
690
|
}
|
|
678
691
|
|
|
679
|
-
pub fn utimensat(dirfd:
|
|
692
|
+
pub fn utimensat(dirfd: fd_t, path: ?[*:0]const u8, times: ?*const [2]timespec, flags: u32) usize {
|
|
680
693
|
return syscall4(
|
|
681
694
|
if (@hasField(SYS, "utimensat") and native_arch != .hexagon) .utimensat else .utimensat_time64,
|
|
682
|
-
@as(
|
|
695
|
+
@as(u32, @bitCast(dirfd)),
|
|
683
696
|
@intFromPtr(path),
|
|
684
697
|
@intFromPtr(times),
|
|
685
698
|
flags,
|
|
686
699
|
);
|
|
687
700
|
}
|
|
688
701
|
|
|
689
|
-
pub fn fallocate(fd:
|
|
690
|
-
if (
|
|
702
|
+
pub fn fallocate(fd: fd_t, mode: mode_t, offset: off_t, length: off_t) usize {
|
|
703
|
+
if (@sizeOf(syscall_arg_t) < @sizeOf(u64)) {
|
|
691
704
|
const offset_halves = splitValue64(offset);
|
|
692
705
|
const length_halves = splitValue64(length);
|
|
693
706
|
return syscall6(
|
|
694
707
|
.fallocate,
|
|
695
|
-
@as(
|
|
696
|
-
|
|
708
|
+
@as(u32, @bitCast(fd)),
|
|
709
|
+
mode,
|
|
697
710
|
offset_halves[0],
|
|
698
711
|
offset_halves[1],
|
|
699
712
|
length_halves[0],
|
|
@@ -702,8 +715,8 @@ pub fn fallocate(fd: i32, mode: i32, offset: i64, length: i64) usize {
|
|
|
702
715
|
} else {
|
|
703
716
|
return syscall4(
|
|
704
717
|
.fallocate,
|
|
705
|
-
@as(
|
|
706
|
-
|
|
718
|
+
@as(u32, @bitCast(fd)),
|
|
719
|
+
mode,
|
|
707
720
|
@as(u64, @bitCast(offset)),
|
|
708
721
|
@as(u64, @bitCast(length)),
|
|
709
722
|
);
|
|
@@ -874,21 +887,21 @@ pub fn getcwd(buf: [*]u8, size: usize) usize {
|
|
|
874
887
|
return syscall2(.getcwd, @intFromPtr(buf), size);
|
|
875
888
|
}
|
|
876
889
|
|
|
877
|
-
pub fn getdents(fd:
|
|
890
|
+
pub fn getdents(fd: fd_t, dirp: [*]u8, len: c_uint) usize {
|
|
878
891
|
return syscall3(
|
|
879
892
|
.getdents,
|
|
880
|
-
@as(
|
|
893
|
+
@as(u32, @bitCast(fd)),
|
|
881
894
|
@intFromPtr(dirp),
|
|
882
|
-
|
|
895
|
+
len,
|
|
883
896
|
);
|
|
884
897
|
}
|
|
885
898
|
|
|
886
|
-
pub fn getdents64(fd:
|
|
899
|
+
pub fn getdents64(fd: fd_t, dirp: [*]u8, len: c_uint) usize {
|
|
887
900
|
return syscall3(
|
|
888
901
|
.getdents64,
|
|
889
|
-
@as(
|
|
902
|
+
@as(u32, @bitCast(fd)),
|
|
890
903
|
@intFromPtr(dirp),
|
|
891
|
-
|
|
904
|
+
len,
|
|
892
905
|
);
|
|
893
906
|
}
|
|
894
907
|
|
|
@@ -896,12 +909,12 @@ pub fn inotify_init1(flags: u32) usize {
|
|
|
896
909
|
return syscall1(.inotify_init1, flags);
|
|
897
910
|
}
|
|
898
911
|
|
|
899
|
-
pub fn inotify_add_watch(fd:
|
|
900
|
-
return syscall3(.inotify_add_watch, @as(
|
|
912
|
+
pub fn inotify_add_watch(fd: fd_t, pathname: [*:0]const u8, mask: u32) usize {
|
|
913
|
+
return syscall3(.inotify_add_watch, @as(u32, @bitCast(fd)), @intFromPtr(pathname), mask);
|
|
901
914
|
}
|
|
902
915
|
|
|
903
|
-
pub fn inotify_rm_watch(fd:
|
|
904
|
-
return syscall2(.inotify_rm_watch, @as(
|
|
916
|
+
pub fn inotify_rm_watch(fd: fd_t, wd: fd_t) usize {
|
|
917
|
+
return syscall2(.inotify_rm_watch, @as(u32, @bitCast(fd)), @as(u32, @bitCast(wd)));
|
|
905
918
|
}
|
|
906
919
|
|
|
907
920
|
pub fn fanotify_init(flags: fanotify.InitFlags, event_f_flags: u32) usize {
|
|
@@ -915,24 +928,24 @@ pub fn fanotify_mark(
|
|
|
915
928
|
dirfd: fd_t,
|
|
916
929
|
pathname: ?[*:0]const u8,
|
|
917
930
|
) usize {
|
|
918
|
-
if (
|
|
931
|
+
if (@sizeOf(syscall_arg_t) < @sizeOf(u64)) {
|
|
919
932
|
const mask_halves = splitValue64(@bitCast(mask));
|
|
920
933
|
return syscall6(
|
|
921
934
|
.fanotify_mark,
|
|
922
|
-
@
|
|
935
|
+
@as(u32, @bitCast(fd)),
|
|
923
936
|
@as(u32, @bitCast(flags)),
|
|
924
937
|
mask_halves[0],
|
|
925
938
|
mask_halves[1],
|
|
926
|
-
@
|
|
939
|
+
@as(u32, @bitCast(dirfd)),
|
|
927
940
|
@intFromPtr(pathname),
|
|
928
941
|
);
|
|
929
942
|
} else {
|
|
930
943
|
return syscall5(
|
|
931
944
|
.fanotify_mark,
|
|
932
|
-
@
|
|
945
|
+
@as(u32, @bitCast(fd)),
|
|
933
946
|
@as(u32, @bitCast(flags)),
|
|
934
|
-
@bitCast(mask),
|
|
935
|
-
@
|
|
947
|
+
@as(u64, @bitCast(mask)),
|
|
948
|
+
@as(u32, @bitCast(dirfd)),
|
|
936
949
|
@intFromPtr(pathname),
|
|
937
950
|
);
|
|
938
951
|
}
|
|
@@ -941,7 +954,7 @@ pub fn fanotify_mark(
|
|
|
941
954
|
pub fn name_to_handle_at(
|
|
942
955
|
dirfd: fd_t,
|
|
943
956
|
pathname: [*:0]const u8,
|
|
944
|
-
handle: *
|
|
957
|
+
handle: *file_handle,
|
|
945
958
|
mount_id: *i32,
|
|
946
959
|
flags: u32,
|
|
947
960
|
) usize {
|
|
@@ -959,27 +972,27 @@ pub fn readlink(noalias path: [*:0]const u8, noalias buf_ptr: [*]u8, buf_len: us
|
|
|
959
972
|
if (@hasField(SYS, "readlink")) {
|
|
960
973
|
return syscall3(.readlink, @intFromPtr(path), @intFromPtr(buf_ptr), buf_len);
|
|
961
974
|
} else {
|
|
962
|
-
return syscall4(.readlinkat, @as(
|
|
975
|
+
return syscall4(.readlinkat, @as(u32, @bitCast(@as(i32, AT.FDCWD))), @intFromPtr(path), @intFromPtr(buf_ptr), buf_len);
|
|
963
976
|
}
|
|
964
977
|
}
|
|
965
978
|
|
|
966
|
-
pub fn readlinkat(dirfd:
|
|
967
|
-
return syscall4(.readlinkat, @as(
|
|
979
|
+
pub fn readlinkat(dirfd: fd_t, noalias path: [*:0]const u8, noalias buf_ptr: [*]u8, buf_len: usize) usize {
|
|
980
|
+
return syscall4(.readlinkat, @as(u32, @bitCast(dirfd)), @intFromPtr(path), @intFromPtr(buf_ptr), buf_len);
|
|
968
981
|
}
|
|
969
982
|
|
|
970
983
|
pub fn mkdir(path: [*:0]const u8, mode: mode_t) usize {
|
|
971
984
|
if (@hasField(SYS, "mkdir")) {
|
|
972
985
|
return syscall2(.mkdir, @intFromPtr(path), mode);
|
|
973
986
|
} else {
|
|
974
|
-
return syscall3(.mkdirat, @as(
|
|
987
|
+
return syscall3(.mkdirat, @as(u32, @bitCast(@as(i32, AT.FDCWD))), @intFromPtr(path), mode);
|
|
975
988
|
}
|
|
976
989
|
}
|
|
977
990
|
|
|
978
|
-
pub fn mkdirat(dirfd:
|
|
979
|
-
return syscall3(.mkdirat, @as(
|
|
991
|
+
pub fn mkdirat(dirfd: fd_t, path: [*:0]const u8, mode: mode_t) usize {
|
|
992
|
+
return syscall3(.mkdirat, @as(u32, @bitCast(dirfd)), @intFromPtr(path), mode);
|
|
980
993
|
}
|
|
981
994
|
|
|
982
|
-
pub fn mknod(path: [*:0]const u8, mode:
|
|
995
|
+
pub fn mknod(path: [*:0]const u8, mode: mode_t, dev: dev_t) usize {
|
|
983
996
|
if (@hasField(SYS, "mknod")) {
|
|
984
997
|
return syscall3(.mknod, @intFromPtr(path), mode, dev);
|
|
985
998
|
} else {
|
|
@@ -987,8 +1000,8 @@ pub fn mknod(path: [*:0]const u8, mode: u32, dev: u32) usize {
|
|
|
987
1000
|
}
|
|
988
1001
|
}
|
|
989
1002
|
|
|
990
|
-
pub fn mknodat(dirfd:
|
|
991
|
-
return syscall4(.mknodat, @as(
|
|
1003
|
+
pub fn mknodat(dirfd: dev_t, path: [*:0]const u8, mode: mode_t, dev: dev_t) usize {
|
|
1004
|
+
return syscall4(.mknodat, @as(u32, @bitCast(dirfd)), @intFromPtr(path), mode, dev);
|
|
992
1005
|
}
|
|
993
1006
|
|
|
994
1007
|
pub fn mount(special: ?[*:0]const u8, dir: [*:0]const u8, fstype: ?[*:0]const u8, flags: u32, data: usize) usize {
|
|
@@ -1024,7 +1037,14 @@ pub const MOVE_MOUNT = packed struct(u32) {
|
|
|
1024
1037
|
};
|
|
1025
1038
|
|
|
1026
1039
|
pub fn move_mount(from_dirfd: fd_t, from_path: [*:0]const u8, to_dirfd: fd_t, to_path: [*:0]const u8, flags: MOVE_MOUNT) usize {
|
|
1027
|
-
return syscall5(
|
|
1040
|
+
return syscall5(
|
|
1041
|
+
.move_mount,
|
|
1042
|
+
@as(u32, @bitCast(from_dirfd)),
|
|
1043
|
+
@intFromPtr(from_path),
|
|
1044
|
+
@as(u32, @bitCast(to_dirfd)),
|
|
1045
|
+
@intFromPtr(to_path),
|
|
1046
|
+
@as(u32, @bitCast(flags)),
|
|
1047
|
+
);
|
|
1028
1048
|
}
|
|
1029
1049
|
|
|
1030
1050
|
pub const MOUNT_ATTR = packed struct(u32) {
|
|
@@ -1056,7 +1076,7 @@ pub const MOUNT_ATTR = packed struct(u32) {
|
|
|
1056
1076
|
};
|
|
1057
1077
|
|
|
1058
1078
|
pub fn mount_setattr(dirfd: fd_t, path: [*:0]const u8, flags: MOUNT_ATTR) usize {
|
|
1059
|
-
return syscall3(.mount_setattr,
|
|
1079
|
+
return syscall3(.mount_setattr, @as(u32, @bitCast(dirfd)), @intFromPtr(path), @as(u32, @bitCast(flags)));
|
|
1060
1080
|
}
|
|
1061
1081
|
|
|
1062
1082
|
pub const FSOPEN = packed struct(u32) {
|
|
@@ -1089,7 +1109,7 @@ pub const FSCONFIG_CMD = enum(u32) {
|
|
|
1089
1109
|
};
|
|
1090
1110
|
|
|
1091
1111
|
pub fn fsconfig(fd: fd_t, cmd: FSCONFIG_CMD, key: ?[*:0]const u8, value: ?[*:0]const u8, aux: u32) usize {
|
|
1092
|
-
return syscall5(.fsconfig,
|
|
1112
|
+
return syscall5(.fsconfig, @as(u32, @bitCast(fd)), @intFromEnum(cmd), @intFromPtr(key), @intFromPtr(value), aux);
|
|
1093
1113
|
}
|
|
1094
1114
|
|
|
1095
1115
|
pub const FSMOUNT = packed struct(u32) {
|
|
@@ -1099,7 +1119,7 @@ pub const FSMOUNT = packed struct(u32) {
|
|
|
1099
1119
|
};
|
|
1100
1120
|
|
|
1101
1121
|
pub fn fsmount(fsfd: fd_t, flags: FSMOUNT, attr_flags: MOUNT_ATTR) usize {
|
|
1102
|
-
return syscall3(.fsmount,
|
|
1122
|
+
return syscall3(.fsmount, @as(u32, @bitCast(fsfd)), @as(u32, @bitCast(flags)), @as(u32, @bitCast(attr_flags)));
|
|
1103
1123
|
}
|
|
1104
1124
|
|
|
1105
1125
|
pub const FSPICK = packed struct(u32) {
|
|
@@ -1112,7 +1132,7 @@ pub const FSPICK = packed struct(u32) {
|
|
|
1112
1132
|
};
|
|
1113
1133
|
|
|
1114
1134
|
pub fn fspick(dirfd: fd_t, path: [*:0]const u8, flags: FSPICK) usize {
|
|
1115
|
-
return syscall3(.fspick,
|
|
1135
|
+
return syscall3(.fspick, @as(u32, @bitCast(dirfd)), @intFromPtr(path), @as(u32, @bitCast(flags)));
|
|
1116
1136
|
}
|
|
1117
1137
|
|
|
1118
1138
|
pub fn pivot_root(new_root: [*:0]const u8, put_old: [*:0]const u8) usize {
|
|
@@ -1127,7 +1147,7 @@ fn mmap2Unit() u64 {
|
|
|
1127
1147
|
};
|
|
1128
1148
|
}
|
|
1129
1149
|
|
|
1130
|
-
pub fn mmap(address: ?[*]u8, length: usize, prot: PROT, flags: MAP, fd:
|
|
1150
|
+
pub fn mmap(address: ?[*]u8, length: usize, prot: PROT, flags: MAP, fd: fd_t, offset: off_t) usize {
|
|
1131
1151
|
if (@hasField(SYS, "mmap2")) {
|
|
1132
1152
|
return syscall6(
|
|
1133
1153
|
.mmap2,
|
|
@@ -1135,7 +1155,7 @@ pub fn mmap(address: ?[*]u8, length: usize, prot: PROT, flags: MAP, fd: i32, off
|
|
|
1135
1155
|
length,
|
|
1136
1156
|
@as(u32, @bitCast(prot)),
|
|
1137
1157
|
@as(u32, @bitCast(flags)),
|
|
1138
|
-
@
|
|
1158
|
+
@as(u32, @bitCast(fd)),
|
|
1139
1159
|
@truncate(@as(u64, @bitCast(offset)) / mmap2Unit()),
|
|
1140
1160
|
);
|
|
1141
1161
|
} else {
|
|
@@ -1148,7 +1168,7 @@ pub fn mmap(address: ?[*]u8, length: usize, prot: PROT, flags: MAP, fd: i32, off
|
|
|
1148
1168
|
length,
|
|
1149
1169
|
@as(u32, @bitCast(prot)),
|
|
1150
1170
|
@as(u32, @bitCast(flags)),
|
|
1151
|
-
@
|
|
1171
|
+
@as(u32, @bitCast(fd)),
|
|
1152
1172
|
@as(u64, @bitCast(offset)),
|
|
1153
1173
|
}),
|
|
1154
1174
|
) else syscall6(
|
|
@@ -1157,7 +1177,7 @@ pub fn mmap(address: ?[*]u8, length: usize, prot: PROT, flags: MAP, fd: i32, off
|
|
|
1157
1177
|
length,
|
|
1158
1178
|
@as(u32, @bitCast(prot)),
|
|
1159
1179
|
@as(u32, @bitCast(flags)),
|
|
1160
|
-
@
|
|
1180
|
+
@as(u32, @bitCast(fd)),
|
|
1161
1181
|
@as(u64, @bitCast(offset)),
|
|
1162
1182
|
);
|
|
1163
1183
|
}
|
|
@@ -1264,70 +1284,142 @@ pub fn ppoll(fds: [*]pollfd, n: nfds_t, timeout: ?*timespec, sigmask: ?*const si
|
|
|
1264
1284
|
);
|
|
1265
1285
|
}
|
|
1266
1286
|
|
|
1267
|
-
pub fn read(fd:
|
|
1268
|
-
return syscall3(.read, @as(
|
|
1287
|
+
pub fn read(fd: fd_t, buf: [*]u8, count: usize) usize {
|
|
1288
|
+
return syscall3(.read, @as(u32, @bitCast(fd)), @intFromPtr(buf), count);
|
|
1289
|
+
}
|
|
1290
|
+
|
|
1291
|
+
pub fn pread(fd: fd_t, buf: [*]u8, count: usize, offset: off_t) usize {
|
|
1292
|
+
if (@sizeOf(syscall_arg_t) < @sizeOf(u64)) {
|
|
1293
|
+
const offset_halves = splitValue64(offset);
|
|
1294
|
+
if (require_aligned_register_pair) {
|
|
1295
|
+
return syscall6(
|
|
1296
|
+
.pread64,
|
|
1297
|
+
@as(u32, @bitCast(fd)),
|
|
1298
|
+
@intFromPtr(buf),
|
|
1299
|
+
count,
|
|
1300
|
+
0,
|
|
1301
|
+
offset_halves[0],
|
|
1302
|
+
offset_halves[1],
|
|
1303
|
+
);
|
|
1304
|
+
} else {
|
|
1305
|
+
return syscall5(
|
|
1306
|
+
.pread64,
|
|
1307
|
+
@as(u32, @bitCast(fd)),
|
|
1308
|
+
@intFromPtr(buf),
|
|
1309
|
+
count,
|
|
1310
|
+
offset_halves[0],
|
|
1311
|
+
offset_halves[1],
|
|
1312
|
+
);
|
|
1313
|
+
}
|
|
1314
|
+
} else {
|
|
1315
|
+
return syscall4(
|
|
1316
|
+
.pread64,
|
|
1317
|
+
@as(u32, @bitCast(fd)),
|
|
1318
|
+
@intFromPtr(buf),
|
|
1319
|
+
count,
|
|
1320
|
+
@as(u64, @bitCast(offset)),
|
|
1321
|
+
);
|
|
1322
|
+
}
|
|
1323
|
+
}
|
|
1324
|
+
|
|
1325
|
+
pub fn readv(fd: fd_t, iov: [*]const iovec, count: usize) usize {
|
|
1326
|
+
return syscall3(.readv, @as(u32, @bitCast(fd)), @intFromPtr(iov), count);
|
|
1269
1327
|
}
|
|
1270
1328
|
|
|
1271
|
-
pub fn preadv(fd:
|
|
1329
|
+
pub fn preadv(fd: fd_t, iov: [*]const iovec, count: usize, offset: off_t) usize {
|
|
1272
1330
|
const offset_u: u64 = @bitCast(offset);
|
|
1273
1331
|
return syscall5(
|
|
1274
1332
|
.preadv,
|
|
1275
|
-
@as(
|
|
1333
|
+
@as(u32, @bitCast(fd)),
|
|
1276
1334
|
@intFromPtr(iov),
|
|
1277
1335
|
count,
|
|
1278
1336
|
// Kernel expects the offset is split into largest natural word-size.
|
|
1279
1337
|
// See following link for detail:
|
|
1280
1338
|
// https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=601cc11d054ae4b5e9b5babec3d8e4667a2cb9b5
|
|
1281
|
-
@
|
|
1282
|
-
if (
|
|
1339
|
+
@truncate(offset_u),
|
|
1340
|
+
if (@sizeOf(syscall_arg_t) < @sizeOf(u64)) @truncate(offset_u >> 32) else 0,
|
|
1283
1341
|
);
|
|
1284
1342
|
}
|
|
1285
1343
|
|
|
1286
|
-
pub fn preadv2(fd:
|
|
1344
|
+
pub fn preadv2(fd: fd_t, iov: [*]const iovec, count: usize, offset: off_t, flags: kernel_rwf) usize {
|
|
1287
1345
|
const offset_u: u64 = @bitCast(offset);
|
|
1288
1346
|
return syscall6(
|
|
1289
1347
|
.preadv2,
|
|
1290
|
-
@as(
|
|
1348
|
+
@as(u32, @bitCast(fd)),
|
|
1291
1349
|
@intFromPtr(iov),
|
|
1292
1350
|
count,
|
|
1293
1351
|
// See comments in preadv
|
|
1294
|
-
@
|
|
1295
|
-
if (
|
|
1352
|
+
@truncate(offset_u),
|
|
1353
|
+
if (@sizeOf(syscall_arg_t) < @sizeOf(u64)) @truncate(offset_u >> 32) else 0,
|
|
1296
1354
|
flags,
|
|
1297
1355
|
);
|
|
1298
1356
|
}
|
|
1299
1357
|
|
|
1300
|
-
pub fn
|
|
1301
|
-
return syscall3(.
|
|
1358
|
+
pub fn write(fd: fd_t, buf: [*]const u8, count: usize) usize {
|
|
1359
|
+
return syscall3(.write, @as(u32, @bitCast(fd)), @intFromPtr(buf), count);
|
|
1302
1360
|
}
|
|
1303
1361
|
|
|
1304
|
-
pub fn
|
|
1305
|
-
|
|
1362
|
+
pub fn pwrite(fd: fd_t, buf: [*]const u8, count: usize, offset: off_t) usize {
|
|
1363
|
+
if (@sizeOf(syscall_arg_t) < @sizeOf(u64)) {
|
|
1364
|
+
const offset_halves = splitValue64(offset);
|
|
1365
|
+
if (require_aligned_register_pair) {
|
|
1366
|
+
return syscall6(
|
|
1367
|
+
.pwrite64,
|
|
1368
|
+
@as(u32, @bitCast(fd)),
|
|
1369
|
+
@intFromPtr(buf),
|
|
1370
|
+
count,
|
|
1371
|
+
0,
|
|
1372
|
+
offset_halves[0],
|
|
1373
|
+
offset_halves[1],
|
|
1374
|
+
);
|
|
1375
|
+
} else {
|
|
1376
|
+
return syscall5(
|
|
1377
|
+
.pwrite64,
|
|
1378
|
+
@as(u32, @bitCast(fd)),
|
|
1379
|
+
@intFromPtr(buf),
|
|
1380
|
+
count,
|
|
1381
|
+
offset_halves[0],
|
|
1382
|
+
offset_halves[1],
|
|
1383
|
+
);
|
|
1384
|
+
}
|
|
1385
|
+
} else {
|
|
1386
|
+
return syscall4(
|
|
1387
|
+
.pwrite64,
|
|
1388
|
+
@as(u32, @bitCast(fd)),
|
|
1389
|
+
@intFromPtr(buf),
|
|
1390
|
+
count,
|
|
1391
|
+
@as(u64, @bitCast(offset)),
|
|
1392
|
+
);
|
|
1393
|
+
}
|
|
1306
1394
|
}
|
|
1307
1395
|
|
|
1308
|
-
pub fn
|
|
1396
|
+
pub fn writev(fd: fd_t, iov: [*]const iovec_const, count: usize) usize {
|
|
1397
|
+
return syscall3(.writev, @as(u32, @bitCast(fd)), @intFromPtr(iov), count);
|
|
1398
|
+
}
|
|
1399
|
+
|
|
1400
|
+
pub fn pwritev(fd: fd_t, iov: [*]const iovec_const, count: usize, offset: off_t) usize {
|
|
1309
1401
|
const offset_u: u64 = @bitCast(offset);
|
|
1310
1402
|
return syscall5(
|
|
1311
1403
|
.pwritev,
|
|
1312
|
-
@as(
|
|
1404
|
+
@as(u32, @bitCast(fd)),
|
|
1313
1405
|
@intFromPtr(iov),
|
|
1314
1406
|
count,
|
|
1315
1407
|
// See comments in preadv
|
|
1316
|
-
@
|
|
1317
|
-
if (
|
|
1408
|
+
@truncate(offset_u),
|
|
1409
|
+
if (@sizeOf(syscall_arg_t) < @sizeOf(u64)) @truncate(offset_u >> 32) else 0,
|
|
1318
1410
|
);
|
|
1319
1411
|
}
|
|
1320
1412
|
|
|
1321
|
-
pub fn pwritev2(fd:
|
|
1413
|
+
pub fn pwritev2(fd: fd_t, iov: [*]const iovec_const, count: usize, offset: off_t, flags: kernel_rwf) usize {
|
|
1322
1414
|
const offset_u: u64 = @bitCast(offset);
|
|
1323
1415
|
return syscall6(
|
|
1324
1416
|
.pwritev2,
|
|
1325
|
-
@as(
|
|
1417
|
+
@as(u32, @bitCast(fd)),
|
|
1326
1418
|
@intFromPtr(iov),
|
|
1327
1419
|
count,
|
|
1328
1420
|
// See comments in preadv
|
|
1329
|
-
@
|
|
1330
|
-
if (
|
|
1421
|
+
@truncate(offset_u),
|
|
1422
|
+
if (@sizeOf(syscall_arg_t) < @sizeOf(u64)) @truncate(offset_u >> 32) else 0,
|
|
1331
1423
|
flags,
|
|
1332
1424
|
);
|
|
1333
1425
|
}
|
|
@@ -1336,7 +1428,7 @@ pub fn rmdir(path: [*:0]const u8) usize {
|
|
|
1336
1428
|
if (@hasField(SYS, "rmdir")) {
|
|
1337
1429
|
return syscall1(.rmdir, @intFromPtr(path));
|
|
1338
1430
|
} else {
|
|
1339
|
-
return syscall3(.unlinkat, @as(
|
|
1431
|
+
return syscall3(.unlinkat, @as(u32, @bitCast(@as(i32, AT.FDCWD))), @intFromPtr(path), AT.REMOVEDIR);
|
|
1340
1432
|
}
|
|
1341
1433
|
}
|
|
1342
1434
|
|
|
@@ -1344,54 +1436,15 @@ pub fn symlink(existing: [*:0]const u8, new: [*:0]const u8) usize {
|
|
|
1344
1436
|
if (@hasField(SYS, "symlink")) {
|
|
1345
1437
|
return syscall2(.symlink, @intFromPtr(existing), @intFromPtr(new));
|
|
1346
1438
|
} else {
|
|
1347
|
-
return syscall3(.symlinkat, @intFromPtr(existing), @as(
|
|
1439
|
+
return syscall3(.symlinkat, @intFromPtr(existing), @as(u32, @bitCast(@as(i32, AT.FDCWD))), @intFromPtr(new));
|
|
1348
1440
|
}
|
|
1349
1441
|
}
|
|
1350
1442
|
|
|
1351
|
-
pub fn symlinkat(existing: [*:0]const u8, newfd:
|
|
1352
|
-
return syscall3(.symlinkat, @intFromPtr(existing), @as(
|
|
1353
|
-
}
|
|
1354
|
-
|
|
1355
|
-
pub fn pread(fd: i32, buf: [*]u8, count: usize, offset: i64) usize {
|
|
1356
|
-
if (@hasField(SYS, "pread64") and usize_bits < 64) {
|
|
1357
|
-
const offset_halves = splitValue64(offset);
|
|
1358
|
-
if (require_aligned_register_pair) {
|
|
1359
|
-
return syscall6(
|
|
1360
|
-
.pread64,
|
|
1361
|
-
@as(usize, @bitCast(@as(isize, fd))),
|
|
1362
|
-
@intFromPtr(buf),
|
|
1363
|
-
count,
|
|
1364
|
-
0,
|
|
1365
|
-
offset_halves[0],
|
|
1366
|
-
offset_halves[1],
|
|
1367
|
-
);
|
|
1368
|
-
} else {
|
|
1369
|
-
return syscall5(
|
|
1370
|
-
.pread64,
|
|
1371
|
-
@as(usize, @bitCast(@as(isize, fd))),
|
|
1372
|
-
@intFromPtr(buf),
|
|
1373
|
-
count,
|
|
1374
|
-
offset_halves[0],
|
|
1375
|
-
offset_halves[1],
|
|
1376
|
-
);
|
|
1377
|
-
}
|
|
1378
|
-
} else {
|
|
1379
|
-
// Some architectures (eg. 64bit SPARC) pread is called pread64.
|
|
1380
|
-
const syscall_number = if (!@hasField(SYS, "pread") and @hasField(SYS, "pread64"))
|
|
1381
|
-
.pread64
|
|
1382
|
-
else
|
|
1383
|
-
.pread;
|
|
1384
|
-
return syscall4(
|
|
1385
|
-
syscall_number,
|
|
1386
|
-
@as(usize, @bitCast(@as(isize, fd))),
|
|
1387
|
-
@intFromPtr(buf),
|
|
1388
|
-
count,
|
|
1389
|
-
@as(u64, @bitCast(offset)),
|
|
1390
|
-
);
|
|
1391
|
-
}
|
|
1443
|
+
pub fn symlinkat(existing: [*:0]const u8, newfd: fd_t, newpath: [*:0]const u8) usize {
|
|
1444
|
+
return syscall3(.symlinkat, @intFromPtr(existing), @as(u32, @bitCast(newfd)), @intFromPtr(newpath));
|
|
1392
1445
|
}
|
|
1393
1446
|
|
|
1394
|
-
pub fn access(path: [*:0]const u8, mode:
|
|
1447
|
+
pub fn access(path: [*:0]const u8, mode: mode_t) usize {
|
|
1395
1448
|
if (@hasField(SYS, "access")) {
|
|
1396
1449
|
return syscall2(.access, @intFromPtr(path), mode);
|
|
1397
1450
|
} else {
|
|
@@ -1399,19 +1452,19 @@ pub fn access(path: [*:0]const u8, mode: u32) usize {
|
|
|
1399
1452
|
}
|
|
1400
1453
|
}
|
|
1401
1454
|
|
|
1402
|
-
pub fn faccessat(dirfd:
|
|
1455
|
+
pub fn faccessat(dirfd: fd_t, path: [*:0]const u8, mode: mode_t, flags: u32) usize {
|
|
1403
1456
|
if (flags == 0) {
|
|
1404
|
-
return syscall3(.faccessat, @as(
|
|
1457
|
+
return syscall3(.faccessat, @as(u32, @bitCast(dirfd)), @intFromPtr(path), mode);
|
|
1405
1458
|
}
|
|
1406
|
-
return syscall4(.faccessat2, @as(
|
|
1459
|
+
return syscall4(.faccessat2, @as(u32, @bitCast(dirfd)), @intFromPtr(path), mode, flags);
|
|
1407
1460
|
}
|
|
1408
1461
|
|
|
1409
1462
|
pub fn acct(path: [*:0]const u8) usize {
|
|
1410
1463
|
return syscall1(.acct, @intFromPtr(path));
|
|
1411
1464
|
}
|
|
1412
1465
|
|
|
1413
|
-
pub fn pipe(fd: *[2]
|
|
1414
|
-
if (
|
|
1466
|
+
pub fn pipe(fd: *[2]fd_t) usize {
|
|
1467
|
+
if (native_arch.isMIPS() or native_arch.isSPARC()) {
|
|
1415
1468
|
return syscall_pipe(fd);
|
|
1416
1469
|
} else if (@hasField(SYS, "pipe")) {
|
|
1417
1470
|
return syscall1(.pipe, @intFromPtr(fd));
|
|
@@ -1420,21 +1473,17 @@ pub fn pipe(fd: *[2]i32) usize {
|
|
|
1420
1473
|
}
|
|
1421
1474
|
}
|
|
1422
1475
|
|
|
1423
|
-
pub fn pipe2(fd: *[2]
|
|
1476
|
+
pub fn pipe2(fd: *[2]fd_t, flags: O) usize {
|
|
1424
1477
|
return syscall2(.pipe2, @intFromPtr(fd), @as(u32, @bitCast(flags)));
|
|
1425
1478
|
}
|
|
1426
1479
|
|
|
1427
|
-
pub fn
|
|
1428
|
-
|
|
1429
|
-
}
|
|
1430
|
-
|
|
1431
|
-
pub fn ftruncate(fd: i32, length: i64) usize {
|
|
1432
|
-
if (@hasField(SYS, "ftruncate64") and usize_bits < 64) {
|
|
1480
|
+
pub fn ftruncate(fd: fd_t, length: off_t) usize {
|
|
1481
|
+
if (@sizeOf(syscall_arg_t) < @sizeOf(u64)) {
|
|
1433
1482
|
const length_halves = splitValue64(length);
|
|
1434
1483
|
if (require_aligned_register_pair) {
|
|
1435
1484
|
return syscall4(
|
|
1436
1485
|
.ftruncate64,
|
|
1437
|
-
@as(
|
|
1486
|
+
@as(u32, @bitCast(fd)),
|
|
1438
1487
|
0,
|
|
1439
1488
|
length_halves[0],
|
|
1440
1489
|
length_halves[1],
|
|
@@ -1442,7 +1491,7 @@ pub fn ftruncate(fd: i32, length: i64) usize {
|
|
|
1442
1491
|
} else {
|
|
1443
1492
|
return syscall3(
|
|
1444
1493
|
.ftruncate64,
|
|
1445
|
-
@as(
|
|
1494
|
+
@as(u32, @bitCast(fd)),
|
|
1446
1495
|
length_halves[0],
|
|
1447
1496
|
length_halves[1],
|
|
1448
1497
|
);
|
|
@@ -1450,48 +1499,8 @@ pub fn ftruncate(fd: i32, length: i64) usize {
|
|
|
1450
1499
|
} else {
|
|
1451
1500
|
return syscall2(
|
|
1452
1501
|
.ftruncate,
|
|
1453
|
-
@as(
|
|
1454
|
-
@as(
|
|
1455
|
-
);
|
|
1456
|
-
}
|
|
1457
|
-
}
|
|
1458
|
-
|
|
1459
|
-
pub fn pwrite(fd: i32, buf: [*]const u8, count: usize, offset: i64) usize {
|
|
1460
|
-
if (@hasField(SYS, "pwrite64") and usize_bits < 64) {
|
|
1461
|
-
const offset_halves = splitValue64(offset);
|
|
1462
|
-
|
|
1463
|
-
if (require_aligned_register_pair) {
|
|
1464
|
-
return syscall6(
|
|
1465
|
-
.pwrite64,
|
|
1466
|
-
@as(usize, @bitCast(@as(isize, fd))),
|
|
1467
|
-
@intFromPtr(buf),
|
|
1468
|
-
count,
|
|
1469
|
-
0,
|
|
1470
|
-
offset_halves[0],
|
|
1471
|
-
offset_halves[1],
|
|
1472
|
-
);
|
|
1473
|
-
} else {
|
|
1474
|
-
return syscall5(
|
|
1475
|
-
.pwrite64,
|
|
1476
|
-
@as(usize, @bitCast(@as(isize, fd))),
|
|
1477
|
-
@intFromPtr(buf),
|
|
1478
|
-
count,
|
|
1479
|
-
offset_halves[0],
|
|
1480
|
-
offset_halves[1],
|
|
1481
|
-
);
|
|
1482
|
-
}
|
|
1483
|
-
} else {
|
|
1484
|
-
// Some architectures (eg. 64bit SPARC) pwrite is called pwrite64.
|
|
1485
|
-
const syscall_number = if (!@hasField(SYS, "pwrite") and @hasField(SYS, "pwrite64"))
|
|
1486
|
-
.pwrite64
|
|
1487
|
-
else
|
|
1488
|
-
.pwrite;
|
|
1489
|
-
return syscall4(
|
|
1490
|
-
syscall_number,
|
|
1491
|
-
@as(usize, @bitCast(@as(isize, fd))),
|
|
1492
|
-
@intFromPtr(buf),
|
|
1493
|
-
count,
|
|
1494
|
-
@as(u64, @bitCast(offset)),
|
|
1502
|
+
@as(u32, @bitCast(fd)),
|
|
1503
|
+
@as(u64, @bitCast(length)),
|
|
1495
1504
|
);
|
|
1496
1505
|
}
|
|
1497
1506
|
}
|
|
@@ -1502,50 +1511,50 @@ pub fn rename(old: [*:0]const u8, new: [*:0]const u8) usize {
|
|
|
1502
1511
|
} else if (@hasField(SYS, "renameat")) {
|
|
1503
1512
|
return syscall4(
|
|
1504
1513
|
.renameat,
|
|
1505
|
-
@as(
|
|
1514
|
+
@as(u32, @bitCast(@as(i32, AT.FDCWD))),
|
|
1506
1515
|
@intFromPtr(old),
|
|
1507
|
-
@as(
|
|
1516
|
+
@as(u32, @bitCast(@as(i32, AT.FDCWD))),
|
|
1508
1517
|
@intFromPtr(new),
|
|
1509
1518
|
);
|
|
1510
1519
|
} else {
|
|
1511
1520
|
return syscall5(
|
|
1512
1521
|
.renameat2,
|
|
1513
|
-
@as(
|
|
1522
|
+
@as(u32, @bitCast(@as(i32, AT.FDCWD))),
|
|
1514
1523
|
@intFromPtr(old),
|
|
1515
|
-
@as(
|
|
1524
|
+
@as(u32, @bitCast(@as(i32, AT.FDCWD))),
|
|
1516
1525
|
@intFromPtr(new),
|
|
1517
1526
|
0,
|
|
1518
1527
|
);
|
|
1519
1528
|
}
|
|
1520
1529
|
}
|
|
1521
1530
|
|
|
1522
|
-
pub fn renameat(oldfd:
|
|
1531
|
+
pub fn renameat(oldfd: fd_t, oldpath: [*:0]const u8, newfd: fd_t, newpath: [*:0]const u8) usize {
|
|
1523
1532
|
if (@hasField(SYS, "renameat")) {
|
|
1524
1533
|
return syscall4(
|
|
1525
1534
|
.renameat,
|
|
1526
|
-
@as(
|
|
1535
|
+
@as(u32, @bitCast(oldfd)),
|
|
1527
1536
|
@intFromPtr(oldpath),
|
|
1528
|
-
@as(
|
|
1537
|
+
@as(u32, @bitCast(newfd)),
|
|
1529
1538
|
@intFromPtr(newpath),
|
|
1530
1539
|
);
|
|
1531
1540
|
} else {
|
|
1532
1541
|
return syscall5(
|
|
1533
1542
|
.renameat2,
|
|
1534
|
-
@as(
|
|
1543
|
+
@as(u32, @bitCast(oldfd)),
|
|
1535
1544
|
@intFromPtr(oldpath),
|
|
1536
|
-
@as(
|
|
1545
|
+
@as(u32, @bitCast(newfd)),
|
|
1537
1546
|
@intFromPtr(newpath),
|
|
1538
1547
|
0,
|
|
1539
1548
|
);
|
|
1540
1549
|
}
|
|
1541
1550
|
}
|
|
1542
1551
|
|
|
1543
|
-
pub fn renameat2(oldfd:
|
|
1552
|
+
pub fn renameat2(oldfd: fd_t, oldpath: [*:0]const u8, newfd: fd_t, newpath: [*:0]const u8, flags: RENAME) usize {
|
|
1544
1553
|
return syscall5(
|
|
1545
1554
|
.renameat2,
|
|
1546
|
-
@as(
|
|
1555
|
+
@as(u32, @bitCast(oldfd)),
|
|
1547
1556
|
@intFromPtr(oldpath),
|
|
1548
|
-
@as(
|
|
1557
|
+
@as(u32, @bitCast(newfd)),
|
|
1549
1558
|
@intFromPtr(newpath),
|
|
1550
1559
|
@as(u32, @bitCast(flags)),
|
|
1551
1560
|
);
|
|
@@ -1557,7 +1566,7 @@ pub fn open(path: [*:0]const u8, flags: O, perm: mode_t) usize {
|
|
|
1557
1566
|
} else {
|
|
1558
1567
|
return syscall4(
|
|
1559
1568
|
.openat,
|
|
1560
|
-
@bitCast(@as(
|
|
1569
|
+
@as(u32, @bitCast(@as(i32, AT.FDCWD))),
|
|
1561
1570
|
@intFromPtr(path),
|
|
1562
1571
|
@as(u32, @bitCast(flags)),
|
|
1563
1572
|
perm,
|
|
@@ -1569,13 +1578,13 @@ pub fn create(path: [*:0]const u8, perm: mode_t) usize {
|
|
|
1569
1578
|
return syscall2(.creat, @intFromPtr(path), perm);
|
|
1570
1579
|
}
|
|
1571
1580
|
|
|
1572
|
-
pub fn openat(dirfd:
|
|
1581
|
+
pub fn openat(dirfd: fd_t, path: [*:0]const u8, flags: O, mode: mode_t) usize {
|
|
1573
1582
|
// dirfd could be negative, for example AT.FDCWD is -100
|
|
1574
|
-
return syscall4(.openat, @
|
|
1583
|
+
return syscall4(.openat, @as(u32, @bitCast(dirfd)), @intFromPtr(path), @as(u32, @bitCast(flags)), mode);
|
|
1575
1584
|
}
|
|
1576
1585
|
|
|
1577
1586
|
/// See also `clone` (from the arch-specific include)
|
|
1578
|
-
pub fn clone5(flags: usize, child_stack_ptr: usize, parent_tid: *
|
|
1587
|
+
pub fn clone5(flags: usize, child_stack_ptr: usize, parent_tid: *pid_t, child_tid: *pid_t, newtls: usize) usize {
|
|
1579
1588
|
return syscall5(.clone, flags, child_stack_ptr, @intFromPtr(parent_tid), @intFromPtr(child_tid), newtls);
|
|
1580
1589
|
}
|
|
1581
1590
|
|
|
@@ -1590,7 +1599,7 @@ pub fn set_tid_address(tidptr: ?*pid_t) pid_t {
|
|
|
1590
1599
|
}
|
|
1591
1600
|
|
|
1592
1601
|
pub fn close(fd: fd_t) usize {
|
|
1593
|
-
return syscall1(.close, @as(
|
|
1602
|
+
return syscall1(.close, @as(u32, @bitCast(fd)));
|
|
1594
1603
|
}
|
|
1595
1604
|
|
|
1596
1605
|
pub const CLOSE_RANGE = packed struct(u32) {
|
|
@@ -1602,11 +1611,11 @@ pub const CLOSE_RANGE = packed struct(u32) {
|
|
|
1602
1611
|
};
|
|
1603
1612
|
|
|
1604
1613
|
pub fn close_range(first: fd_t, last: fd_t, flags: CLOSE_RANGE) usize {
|
|
1605
|
-
return syscall3(.close_range,
|
|
1614
|
+
return syscall3(.close_range, @as(u32, @bitCast(first)), @as(u32, @bitCast(last)), @as(u32, @bitCast(flags)));
|
|
1606
1615
|
}
|
|
1607
1616
|
|
|
1608
|
-
pub fn fchmod(fd:
|
|
1609
|
-
return syscall2(.fchmod, @as(
|
|
1617
|
+
pub fn fchmod(fd: fd_t, mode: mode_t) usize {
|
|
1618
|
+
return syscall2(.fchmod, @as(u32, @bitCast(fd)), mode);
|
|
1610
1619
|
}
|
|
1611
1620
|
|
|
1612
1621
|
pub fn chmod(path: [*:0]const u8, mode: mode_t) usize {
|
|
@@ -1617,16 +1626,16 @@ pub fn chmod(path: [*:0]const u8, mode: mode_t) usize {
|
|
|
1617
1626
|
}
|
|
1618
1627
|
}
|
|
1619
1628
|
|
|
1620
|
-
pub fn fchown(fd:
|
|
1629
|
+
pub fn fchown(fd: fd_t, owner: uid_t, group: gid_t) usize {
|
|
1621
1630
|
if (@hasField(SYS, "fchown32")) {
|
|
1622
|
-
return syscall3(.fchown32, @as(
|
|
1631
|
+
return syscall3(.fchown32, @as(u32, @bitCast(fd)), owner, group);
|
|
1623
1632
|
} else {
|
|
1624
|
-
return syscall3(.fchown, @as(
|
|
1633
|
+
return syscall3(.fchown, @as(u32, @bitCast(fd)), owner, group);
|
|
1625
1634
|
}
|
|
1626
1635
|
}
|
|
1627
1636
|
|
|
1628
|
-
pub fn fchownat(fd:
|
|
1629
|
-
return syscall5(.fchownat, @as(
|
|
1637
|
+
pub fn fchownat(fd: fd_t, path: [*:0]const u8, owner: uid_t, group: gid_t, flags: u32) usize {
|
|
1638
|
+
return syscall5(.fchownat, @as(u32, @bitCast(fd)), @intFromPtr(path), owner, group, flags);
|
|
1630
1639
|
}
|
|
1631
1640
|
|
|
1632
1641
|
pub fn chown(path: [*:0]const u8, owner: uid_t, group: gid_t) usize {
|
|
@@ -1649,40 +1658,40 @@ pub fn lchown(path: [*:0]const u8, owner: uid_t, group: gid_t) usize {
|
|
|
1649
1658
|
}
|
|
1650
1659
|
}
|
|
1651
1660
|
|
|
1652
|
-
pub fn fchmodat(fd:
|
|
1653
|
-
return syscall3(.fchmodat, @
|
|
1661
|
+
pub fn fchmodat(fd: fd_t, path: [*:0]const u8, mode: mode_t) usize {
|
|
1662
|
+
return syscall3(.fchmodat, @as(u32, @bitCast(fd)), @intFromPtr(path), mode);
|
|
1654
1663
|
}
|
|
1655
1664
|
|
|
1656
|
-
pub fn fchmodat2(fd:
|
|
1657
|
-
return syscall4(.fchmodat2, @
|
|
1665
|
+
pub fn fchmodat2(fd: fd_t, path: [*:0]const u8, mode: mode_t, flags: u32) usize {
|
|
1666
|
+
return syscall4(.fchmodat2, @as(u32, @bitCast(fd)), @intFromPtr(path), mode, flags);
|
|
1658
1667
|
}
|
|
1659
1668
|
|
|
1660
1669
|
/// Can only be called on 32 bit systems. For 64 bit see `lseek`.
|
|
1661
|
-
pub fn llseek(fd:
|
|
1670
|
+
pub fn llseek(fd: fd_t, offset: off_t, result: ?*off_t, whence: u32) usize {
|
|
1662
1671
|
// NOTE: The offset parameter splitting is independent from the target
|
|
1663
1672
|
// endianness.
|
|
1664
1673
|
return syscall5(
|
|
1665
1674
|
.llseek,
|
|
1666
|
-
@as(
|
|
1667
|
-
@as(
|
|
1668
|
-
@as(
|
|
1675
|
+
@as(u32, @bitCast(fd)),
|
|
1676
|
+
@truncate(@as(u64, @bitCast(offset >> 32))),
|
|
1677
|
+
@truncate(@as(u64, @bitCast(offset))),
|
|
1669
1678
|
@intFromPtr(result),
|
|
1670
1679
|
whence,
|
|
1671
1680
|
);
|
|
1672
1681
|
}
|
|
1673
1682
|
|
|
1674
1683
|
/// Can only be called on 64 bit systems. For 32 bit see `llseek`.
|
|
1675
|
-
pub fn lseek(fd:
|
|
1676
|
-
return syscall3(.lseek, @as(
|
|
1684
|
+
pub fn lseek(fd: fd_t, offset: off_t, whence: u32) usize {
|
|
1685
|
+
return syscall3(.lseek, @as(u32, @bitCast(fd)), @as(u64, @bitCast(offset)), whence);
|
|
1677
1686
|
}
|
|
1678
1687
|
|
|
1679
1688
|
pub fn exit(status: i32) noreturn {
|
|
1680
|
-
_ = syscall1(.exit, @as(
|
|
1689
|
+
_ = syscall1(.exit, @as(u32, @bitCast(status)));
|
|
1681
1690
|
unreachable;
|
|
1682
1691
|
}
|
|
1683
1692
|
|
|
1684
1693
|
pub fn exit_group(status: i32) noreturn {
|
|
1685
|
-
_ = syscall1(.exit_group, @as(
|
|
1694
|
+
_ = syscall1(.exit_group, @as(u32, @bitCast(status)));
|
|
1686
1695
|
unreachable;
|
|
1687
1696
|
}
|
|
1688
1697
|
|
|
@@ -1748,15 +1757,15 @@ pub fn getrandom(buf: [*]u8, count: usize, flags: u32) usize {
|
|
|
1748
1757
|
}
|
|
1749
1758
|
|
|
1750
1759
|
pub fn kill(pid: pid_t, sig: SIG) usize {
|
|
1751
|
-
return syscall2(.kill, @as(
|
|
1760
|
+
return syscall2(.kill, @as(u32, @bitCast(pid)), @intFromEnum(sig));
|
|
1752
1761
|
}
|
|
1753
1762
|
|
|
1754
1763
|
pub fn tkill(tid: pid_t, sig: SIG) usize {
|
|
1755
|
-
return syscall2(.tkill, @as(
|
|
1764
|
+
return syscall2(.tkill, @as(u32, @bitCast(tid)), @intFromEnum(sig));
|
|
1756
1765
|
}
|
|
1757
1766
|
|
|
1758
1767
|
pub fn tgkill(tgid: pid_t, tid: pid_t, sig: SIG) usize {
|
|
1759
|
-
return syscall3(.tgkill, @as(
|
|
1768
|
+
return syscall3(.tgkill, @as(u32, @bitCast(tgid)), @as(u32, @bitCast(tid)), @intFromEnum(sig));
|
|
1760
1769
|
}
|
|
1761
1770
|
|
|
1762
1771
|
pub fn link(oldpath: [*:0]const u8, newpath: [*:0]const u8) usize {
|
|
@@ -1769,9 +1778,9 @@ pub fn link(oldpath: [*:0]const u8, newpath: [*:0]const u8) usize {
|
|
|
1769
1778
|
} else {
|
|
1770
1779
|
return syscall5(
|
|
1771
1780
|
.linkat,
|
|
1772
|
-
@as(
|
|
1781
|
+
@as(u32, @bitCast(@as(i32, AT.FDCWD))),
|
|
1773
1782
|
@intFromPtr(oldpath),
|
|
1774
|
-
@as(
|
|
1783
|
+
@as(u32, @bitCast(@as(i32, AT.FDCWD))),
|
|
1775
1784
|
@intFromPtr(newpath),
|
|
1776
1785
|
0,
|
|
1777
1786
|
);
|
|
@@ -1781,9 +1790,9 @@ pub fn link(oldpath: [*:0]const u8, newpath: [*:0]const u8) usize {
|
|
|
1781
1790
|
pub fn linkat(oldfd: fd_t, oldpath: [*:0]const u8, newfd: fd_t, newpath: [*:0]const u8, flags: u32) usize {
|
|
1782
1791
|
return syscall5(
|
|
1783
1792
|
.linkat,
|
|
1784
|
-
@as(
|
|
1793
|
+
@as(u32, @bitCast(oldfd)),
|
|
1785
1794
|
@intFromPtr(oldpath),
|
|
1786
|
-
@as(
|
|
1795
|
+
@as(u32, @bitCast(newfd)),
|
|
1787
1796
|
@intFromPtr(newpath),
|
|
1788
1797
|
flags,
|
|
1789
1798
|
);
|
|
@@ -1793,33 +1802,33 @@ pub fn unlink(path: [*:0]const u8) usize {
|
|
|
1793
1802
|
if (@hasField(SYS, "unlink")) {
|
|
1794
1803
|
return syscall1(.unlink, @intFromPtr(path));
|
|
1795
1804
|
} else {
|
|
1796
|
-
return syscall3(.unlinkat, @as(
|
|
1805
|
+
return syscall3(.unlinkat, @as(u32, @bitCast(@as(i32, AT.FDCWD))), @intFromPtr(path), 0);
|
|
1797
1806
|
}
|
|
1798
1807
|
}
|
|
1799
1808
|
|
|
1800
|
-
pub fn unlinkat(dirfd:
|
|
1801
|
-
return syscall3(.unlinkat, @as(
|
|
1809
|
+
pub fn unlinkat(dirfd: fd_t, path: [*:0]const u8, flags: u32) usize {
|
|
1810
|
+
return syscall3(.unlinkat, @as(u32, @bitCast(dirfd)), @intFromPtr(path), flags);
|
|
1802
1811
|
}
|
|
1803
1812
|
|
|
1804
|
-
pub fn waitpid(pid: pid_t, status: *
|
|
1805
|
-
return syscall4(.wait4, @as(
|
|
1813
|
+
pub fn waitpid(pid: pid_t, status: *i32, flags: u32) usize {
|
|
1814
|
+
return syscall4(.wait4, @as(u32, @bitCast(pid)), @intFromPtr(status), flags, 0);
|
|
1806
1815
|
}
|
|
1807
1816
|
|
|
1808
|
-
pub fn wait4(pid: pid_t, status: *
|
|
1817
|
+
pub fn wait4(pid: pid_t, status: *i32, flags: u32, usage: ?*rusage) usize {
|
|
1809
1818
|
return syscall4(
|
|
1810
1819
|
.wait4,
|
|
1811
|
-
@as(
|
|
1820
|
+
@as(u32, @bitCast(pid)),
|
|
1812
1821
|
@intFromPtr(status),
|
|
1813
1822
|
flags,
|
|
1814
1823
|
@intFromPtr(usage),
|
|
1815
1824
|
);
|
|
1816
1825
|
}
|
|
1817
1826
|
|
|
1818
|
-
pub fn waitid(id_type: P, id:
|
|
1827
|
+
pub fn waitid(id_type: P, id: pid_t, infop: *siginfo_t, flags: u32, usage: ?*rusage) usize {
|
|
1819
1828
|
return syscall5(
|
|
1820
1829
|
.waitid,
|
|
1821
1830
|
@intFromEnum(id_type),
|
|
1822
|
-
@as(
|
|
1831
|
+
@as(u32, @bitCast(id)),
|
|
1823
1832
|
@intFromPtr(infop),
|
|
1824
1833
|
flags,
|
|
1825
1834
|
@intFromPtr(usage),
|
|
@@ -1918,14 +1927,14 @@ pub const Flock = extern struct {
|
|
|
1918
1927
|
|
|
1919
1928
|
pub fn fcntl(fd: fd_t, cmd: i32, arg: usize) usize {
|
|
1920
1929
|
if (@hasField(SYS, "fcntl64")) {
|
|
1921
|
-
return syscall3(.fcntl64, @as(
|
|
1930
|
+
return syscall3(.fcntl64, @as(u32, @bitCast(fd)), @as(u32, @bitCast(cmd)), arg);
|
|
1922
1931
|
} else {
|
|
1923
|
-
return syscall3(.fcntl, @as(
|
|
1932
|
+
return syscall3(.fcntl, @as(u32, @bitCast(fd)), @as(u32, @bitCast(cmd)), arg);
|
|
1924
1933
|
}
|
|
1925
1934
|
}
|
|
1926
1935
|
|
|
1927
1936
|
pub fn flock(fd: fd_t, operation: i32) usize {
|
|
1928
|
-
return syscall2(.flock, @as(
|
|
1937
|
+
return syscall2(.flock, @as(u32, @bitCast(fd)), @as(u32, @bitCast(operation)));
|
|
1929
1938
|
}
|
|
1930
1939
|
|
|
1931
1940
|
pub const Elf_Symndx = if (native_arch == .s390x) u64 else u32;
|
|
@@ -1965,7 +1974,7 @@ fn init_vdso_clock_gettime(clk: clockid_t, ts: *timespec) callconv(.c) usize {
|
|
|
1965
1974
|
pub fn clock_getres(clk_id: clockid_t, tp: *timespec) usize {
|
|
1966
1975
|
return syscall2(
|
|
1967
1976
|
if (@hasField(SYS, "clock_getres") and native_arch != .hexagon) .clock_getres else .clock_getres_time64,
|
|
1968
|
-
@
|
|
1977
|
+
@intFromEnum(clk_id),
|
|
1969
1978
|
@intFromPtr(tp),
|
|
1970
1979
|
);
|
|
1971
1980
|
}
|
|
@@ -1973,7 +1982,7 @@ pub fn clock_getres(clk_id: clockid_t, tp: *timespec) usize {
|
|
|
1973
1982
|
pub fn clock_settime(clk_id: clockid_t, tp: *const timespec) usize {
|
|
1974
1983
|
return syscall2(
|
|
1975
1984
|
if (@hasField(SYS, "clock_settime") and native_arch != .hexagon) .clock_settime else .clock_settime64,
|
|
1976
|
-
@
|
|
1985
|
+
@intFromEnum(clk_id),
|
|
1977
1986
|
@intFromPtr(tp),
|
|
1978
1987
|
);
|
|
1979
1988
|
}
|
|
@@ -2127,11 +2136,11 @@ pub fn setresgid(rgid: gid_t, egid: gid_t, sgid: gid_t) usize {
|
|
|
2127
2136
|
}
|
|
2128
2137
|
|
|
2129
2138
|
pub fn setpgid(pid: pid_t, pgid: pid_t) usize {
|
|
2130
|
-
return syscall2(.setpgid, @
|
|
2139
|
+
return syscall2(.setpgid, @as(u32, @bitCast(pid)), @as(u32, @bitCast(pgid)));
|
|
2131
2140
|
}
|
|
2132
2141
|
|
|
2133
2142
|
pub fn getpgid(pid: pid_t) usize {
|
|
2134
|
-
return syscall1(.getpgid, @
|
|
2143
|
+
return syscall1(.getpgid, @as(u32, @bitCast(pid)));
|
|
2135
2144
|
}
|
|
2136
2145
|
|
|
2137
2146
|
pub fn getgroups(size: usize, list: ?[*]gid_t) usize {
|
|
@@ -2155,7 +2164,7 @@ pub fn setsid() usize {
|
|
|
2155
2164
|
}
|
|
2156
2165
|
|
|
2157
2166
|
pub fn getsid(pid: pid_t) usize {
|
|
2158
|
-
return syscall1(.getsid, @
|
|
2167
|
+
return syscall1(.getsid, @as(u32, @bitCast(pid)));
|
|
2159
2168
|
}
|
|
2160
2169
|
|
|
2161
2170
|
pub fn getpid() pid_t {
|
|
@@ -2226,8 +2235,6 @@ pub fn sigaction(sig: SIG, noalias act: ?*const Sigaction, noalias oact: ?*Sigac
|
|
|
2226
2235
|
return 0;
|
|
2227
2236
|
}
|
|
2228
2237
|
|
|
2229
|
-
const usize_bits = @typeInfo(usize).int.bits;
|
|
2230
|
-
|
|
2231
2238
|
/// Defined as one greater than the largest defined signal number.
|
|
2232
2239
|
pub const NSIG = if (is_mips) 128 else 65;
|
|
2233
2240
|
|
|
@@ -2288,18 +2295,18 @@ pub fn sigismember(set: *const sigset_t, sig: SIG) bool {
|
|
|
2288
2295
|
return ((set.*)[index.word] & index.mask) != 0;
|
|
2289
2296
|
}
|
|
2290
2297
|
|
|
2291
|
-
pub fn getsockname(fd:
|
|
2298
|
+
pub fn getsockname(fd: fd_t, noalias addr: *sockaddr, noalias len: *socklen_t) usize {
|
|
2292
2299
|
if (native_arch == .x86) {
|
|
2293
|
-
return socketcall(SC.getsockname, &[3]usize{ @as(
|
|
2300
|
+
return socketcall(SC.getsockname, &[3]usize{ @as(u32, @bitCast(fd)), @intFromPtr(addr), @intFromPtr(len) });
|
|
2294
2301
|
}
|
|
2295
|
-
return syscall3(.getsockname, @as(
|
|
2302
|
+
return syscall3(.getsockname, @as(u32, @bitCast(fd)), @intFromPtr(addr), @intFromPtr(len));
|
|
2296
2303
|
}
|
|
2297
2304
|
|
|
2298
|
-
pub fn getpeername(fd:
|
|
2305
|
+
pub fn getpeername(fd: fd_t, noalias addr: *sockaddr, noalias len: *socklen_t) usize {
|
|
2299
2306
|
if (native_arch == .x86) {
|
|
2300
|
-
return socketcall(SC.getpeername, &[3]usize{ @as(
|
|
2307
|
+
return socketcall(SC.getpeername, &[3]usize{ @as(u32, @bitCast(fd)), @intFromPtr(addr), @intFromPtr(len) });
|
|
2301
2308
|
}
|
|
2302
|
-
return syscall3(.getpeername, @as(
|
|
2309
|
+
return syscall3(.getpeername, @as(u32, @bitCast(fd)), @intFromPtr(addr), @intFromPtr(len));
|
|
2303
2310
|
}
|
|
2304
2311
|
|
|
2305
2312
|
pub fn socket(domain: u32, socket_type: u32, protocol: u32) usize {
|
|
@@ -2309,58 +2316,52 @@ pub fn socket(domain: u32, socket_type: u32, protocol: u32) usize {
|
|
|
2309
2316
|
return syscall3(.socket, domain, socket_type, protocol);
|
|
2310
2317
|
}
|
|
2311
2318
|
|
|
2312
|
-
pub fn setsockopt(fd:
|
|
2319
|
+
pub fn setsockopt(fd: fd_t, level: i32, optname: u32, optval: [*]const u8, optlen: socklen_t) usize {
|
|
2313
2320
|
if (native_arch == .x86) {
|
|
2314
|
-
return socketcall(SC.setsockopt, &[5]usize{ @as(
|
|
2321
|
+
return socketcall(SC.setsockopt, &[5]usize{ @as(u32, @bitCast(fd)), @as(usize, @bitCast(@as(isize, level))), optname, @intFromPtr(optval), @as(usize, @intCast(optlen)) });
|
|
2315
2322
|
}
|
|
2316
|
-
return syscall5(.setsockopt, @as(
|
|
2323
|
+
return syscall5(.setsockopt, @as(u32, @bitCast(fd)), @as(usize, @bitCast(@as(isize, level))), optname, @intFromPtr(optval), @as(usize, @intCast(optlen)));
|
|
2317
2324
|
}
|
|
2318
2325
|
|
|
2319
|
-
pub fn getsockopt(fd:
|
|
2326
|
+
pub fn getsockopt(fd: fd_t, level: i32, optname: u32, noalias optval: [*]u8, noalias optlen: *socklen_t) usize {
|
|
2320
2327
|
if (native_arch == .x86) {
|
|
2321
|
-
return socketcall(SC.getsockopt, &[5]usize{ @as(
|
|
2328
|
+
return socketcall(SC.getsockopt, &[5]usize{ @as(u32, @bitCast(fd)), @as(usize, @bitCast(@as(isize, level))), optname, @intFromPtr(optval), @intFromPtr(optlen) });
|
|
2322
2329
|
}
|
|
2323
|
-
return syscall5(.getsockopt, @as(
|
|
2330
|
+
return syscall5(.getsockopt, @as(u32, @bitCast(fd)), @as(usize, @bitCast(@as(isize, level))), optname, @intFromPtr(optval), @intFromPtr(optlen));
|
|
2324
2331
|
}
|
|
2325
2332
|
|
|
2326
|
-
pub fn sendmsg(fd:
|
|
2327
|
-
const fd_usize = @as(usize, @bitCast(@as(isize, fd)));
|
|
2328
|
-
const msg_usize = @intFromPtr(msg);
|
|
2333
|
+
pub fn sendmsg(fd: fd_t, msg: *const msghdr_const, flags: u32) usize {
|
|
2329
2334
|
if (native_arch == .x86) {
|
|
2330
|
-
return socketcall(SC.sendmsg, &[3]usize{
|
|
2335
|
+
return socketcall(SC.sendmsg, &[3]usize{ @as(u32, @bitCast(fd)), @intFromPtr(msg), flags });
|
|
2331
2336
|
} else {
|
|
2332
|
-
return syscall3(.sendmsg,
|
|
2337
|
+
return syscall3(.sendmsg, @as(u32, @bitCast(fd)), @intFromPtr(msg), flags);
|
|
2333
2338
|
}
|
|
2334
2339
|
}
|
|
2335
2340
|
|
|
2336
|
-
pub fn sendmmsg(fd:
|
|
2337
|
-
return syscall4(.sendmmsg, @as(
|
|
2341
|
+
pub fn sendmmsg(fd: fd_t, msgvec: [*]mmsghdr, vlen: u32, flags: u32) usize {
|
|
2342
|
+
return syscall4(.sendmmsg, @as(u32, @bitCast(fd)), @intFromPtr(msgvec), vlen, flags);
|
|
2338
2343
|
}
|
|
2339
2344
|
|
|
2340
|
-
pub fn connect(fd:
|
|
2341
|
-
const fd_usize = @as(usize, @bitCast(@as(isize, fd)));
|
|
2342
|
-
const addr_usize = @intFromPtr(addr);
|
|
2345
|
+
pub fn connect(fd: fd_t, addr: *const anyopaque, len: socklen_t) usize {
|
|
2343
2346
|
if (native_arch == .x86) {
|
|
2344
|
-
return socketcall(SC.connect, &[3]usize{
|
|
2347
|
+
return socketcall(SC.connect, &[3]usize{ @as(u32, @bitCast(fd)), @intFromPtr(addr), len });
|
|
2345
2348
|
} else {
|
|
2346
|
-
return syscall3(.connect,
|
|
2349
|
+
return syscall3(.connect, @as(u32, @bitCast(fd)), @intFromPtr(addr), len);
|
|
2347
2350
|
}
|
|
2348
2351
|
}
|
|
2349
2352
|
|
|
2350
|
-
pub fn recvmsg(fd:
|
|
2351
|
-
const fd_usize = @as(usize, @bitCast(@as(isize, fd)));
|
|
2352
|
-
const msg_usize = @intFromPtr(msg);
|
|
2353
|
+
pub fn recvmsg(fd: fd_t, msg: *msghdr, flags: u32) usize {
|
|
2353
2354
|
if (native_arch == .x86) {
|
|
2354
|
-
return socketcall(SC.recvmsg, &[3]usize{
|
|
2355
|
+
return socketcall(SC.recvmsg, &[3]usize{ @as(u32, @bitCast(fd)), @intFromPtr(msg), flags });
|
|
2355
2356
|
} else {
|
|
2356
|
-
return syscall3(.recvmsg,
|
|
2357
|
+
return syscall3(.recvmsg, @as(u32, @bitCast(fd)), @intFromPtr(msg), flags);
|
|
2357
2358
|
}
|
|
2358
2359
|
}
|
|
2359
2360
|
|
|
2360
|
-
pub fn recvmmsg(fd:
|
|
2361
|
+
pub fn recvmmsg(fd: fd_t, msgvec: ?[*]mmsghdr, vlen: u32, flags: u32, timeout: ?*timespec) usize {
|
|
2361
2362
|
return syscall5(
|
|
2362
2363
|
if (@hasField(SYS, "recvmmsg") and native_arch != .hexagon) .recvmmsg else .recvmmsg_time64,
|
|
2363
|
-
@as(
|
|
2364
|
+
@as(u32, @bitCast(fd)),
|
|
2364
2365
|
@intFromPtr(msgvec),
|
|
2365
2366
|
vlen,
|
|
2366
2367
|
flags,
|
|
@@ -2369,43 +2370,39 @@ pub fn recvmmsg(fd: i32, msgvec: ?[*]mmsghdr, vlen: u32, flags: u32, timeout: ?*
|
|
|
2369
2370
|
}
|
|
2370
2371
|
|
|
2371
2372
|
pub fn recvfrom(
|
|
2372
|
-
fd:
|
|
2373
|
+
fd: fd_t,
|
|
2373
2374
|
noalias buf: [*]u8,
|
|
2374
2375
|
len: usize,
|
|
2375
2376
|
flags: u32,
|
|
2376
2377
|
noalias addr: ?*sockaddr,
|
|
2377
2378
|
noalias alen: ?*socklen_t,
|
|
2378
2379
|
) usize {
|
|
2379
|
-
const fd_usize = @as(usize, @bitCast(@as(isize, fd)));
|
|
2380
|
-
const buf_usize = @intFromPtr(buf);
|
|
2381
|
-
const addr_usize = @intFromPtr(addr);
|
|
2382
|
-
const alen_usize = @intFromPtr(alen);
|
|
2383
2380
|
if (native_arch == .x86) {
|
|
2384
|
-
return socketcall(SC.recvfrom, &[6]usize{
|
|
2381
|
+
return socketcall(SC.recvfrom, &[6]usize{ @as(u32, @bitCast(fd)), @intFromPtr(buf), len, flags, @intFromPtr(addr), @intFromPtr(alen) });
|
|
2385
2382
|
} else {
|
|
2386
|
-
return syscall6(.recvfrom,
|
|
2383
|
+
return syscall6(.recvfrom, @as(u32, @bitCast(fd)), @intFromPtr(buf), len, flags, @intFromPtr(addr), @intFromPtr(alen));
|
|
2387
2384
|
}
|
|
2388
2385
|
}
|
|
2389
2386
|
|
|
2390
|
-
pub fn shutdown(fd:
|
|
2387
|
+
pub fn shutdown(fd: fd_t, how: i32) usize {
|
|
2391
2388
|
if (native_arch == .x86) {
|
|
2392
|
-
return socketcall(SC.shutdown, &[2]usize{ @as(
|
|
2389
|
+
return socketcall(SC.shutdown, &[2]usize{ @as(u32, @bitCast(fd)), @as(u32, @bitCast(how)) });
|
|
2393
2390
|
}
|
|
2394
|
-
return syscall2(.shutdown, @as(
|
|
2391
|
+
return syscall2(.shutdown, @as(u32, @bitCast(fd)), @as(u32, @bitCast(how)));
|
|
2395
2392
|
}
|
|
2396
2393
|
|
|
2397
|
-
pub fn bind(fd:
|
|
2394
|
+
pub fn bind(fd: fd_t, addr: *const sockaddr, len: socklen_t) usize {
|
|
2398
2395
|
if (native_arch == .x86) {
|
|
2399
|
-
return socketcall(SC.bind, &[3]usize{ @as(
|
|
2396
|
+
return socketcall(SC.bind, &[3]usize{ @as(u32, @bitCast(fd)), @intFromPtr(addr), len });
|
|
2400
2397
|
}
|
|
2401
|
-
return syscall3(.bind, @as(
|
|
2398
|
+
return syscall3(.bind, @as(u32, @bitCast(fd)), @intFromPtr(addr), len);
|
|
2402
2399
|
}
|
|
2403
2400
|
|
|
2404
|
-
pub fn listen(fd:
|
|
2401
|
+
pub fn listen(fd: fd_t, backlog: u32) usize {
|
|
2405
2402
|
if (native_arch == .x86) {
|
|
2406
|
-
return socketcall(SC.listen, &[2]usize{ @as(
|
|
2403
|
+
return socketcall(SC.listen, &[2]usize{ @as(u32, @bitCast(fd)), backlog });
|
|
2407
2404
|
}
|
|
2408
|
-
return syscall2(.listen, @as(
|
|
2405
|
+
return syscall2(.listen, @as(u32, @bitCast(fd)), backlog);
|
|
2409
2406
|
}
|
|
2410
2407
|
|
|
2411
2408
|
pub fn sendto(fd: i32, buf: [*]const u8, len: usize, flags: u32, addr: ?*const sockaddr, alen: socklen_t) usize {
|
|
@@ -2415,51 +2412,41 @@ pub fn sendto(fd: i32, buf: [*]const u8, len: usize, flags: u32, addr: ?*const s
|
|
|
2415
2412
|
return syscall6(.sendto, @as(usize, @bitCast(@as(isize, fd))), @intFromPtr(buf), len, flags, @intFromPtr(addr), @as(usize, @intCast(alen)));
|
|
2416
2413
|
}
|
|
2417
2414
|
|
|
2418
|
-
pub fn sendfile(outfd:
|
|
2419
|
-
|
|
2420
|
-
|
|
2421
|
-
|
|
2422
|
-
|
|
2423
|
-
|
|
2424
|
-
|
|
2425
|
-
|
|
2426
|
-
);
|
|
2427
|
-
} else {
|
|
2428
|
-
return syscall4(
|
|
2429
|
-
.sendfile,
|
|
2430
|
-
@as(usize, @bitCast(@as(isize, outfd))),
|
|
2431
|
-
@as(usize, @bitCast(@as(isize, infd))),
|
|
2432
|
-
@intFromPtr(offset),
|
|
2433
|
-
count,
|
|
2434
|
-
);
|
|
2435
|
-
}
|
|
2415
|
+
pub fn sendfile(outfd: fd_t, infd: fd_t, offset: ?*off_t, count: usize) usize {
|
|
2416
|
+
return syscall4(
|
|
2417
|
+
if (@hasField(SYS, "sendfile64")) .sendfile64 else .sendfile,
|
|
2418
|
+
@as(u32, @bitCast(outfd)),
|
|
2419
|
+
@as(u32, @bitCast(infd)),
|
|
2420
|
+
@intFromPtr(offset),
|
|
2421
|
+
count,
|
|
2422
|
+
);
|
|
2436
2423
|
}
|
|
2437
2424
|
|
|
2438
|
-
pub fn socketpair(domain: u32, socket_type: u32, protocol: u32, fd: *[2]
|
|
2425
|
+
pub fn socketpair(domain: u32, socket_type: u32, protocol: u32, fd: *[2]fd_t) usize {
|
|
2439
2426
|
if (native_arch == .x86) {
|
|
2440
2427
|
return socketcall(SC.socketpair, &[4]usize{ domain, socket_type, protocol, @intFromPtr(fd) });
|
|
2441
2428
|
}
|
|
2442
2429
|
return syscall4(.socketpair, domain, socket_type, protocol, @intFromPtr(fd));
|
|
2443
2430
|
}
|
|
2444
2431
|
|
|
2445
|
-
pub fn accept(fd:
|
|
2432
|
+
pub fn accept(fd: fd_t, noalias addr: ?*sockaddr, noalias len: ?*socklen_t) usize {
|
|
2446
2433
|
if (native_arch == .x86) {
|
|
2447
|
-
return socketcall(SC.accept, &[4]usize{ @as(
|
|
2434
|
+
return socketcall(SC.accept, &[4]usize{ @as(u32, @bitCast(fd)), @intFromPtr(addr), @intFromPtr(len), 0 });
|
|
2448
2435
|
}
|
|
2449
2436
|
return accept4(fd, addr, len, 0);
|
|
2450
2437
|
}
|
|
2451
2438
|
|
|
2452
|
-
pub fn accept4(fd:
|
|
2439
|
+
pub fn accept4(fd: fd_t, noalias addr: ?*sockaddr, noalias len: ?*socklen_t, flags: u32) usize {
|
|
2453
2440
|
if (native_arch == .x86) {
|
|
2454
|
-
return socketcall(SC.accept4, &[4]usize{ @as(
|
|
2441
|
+
return socketcall(SC.accept4, &[4]usize{ @as(u32, @bitCast(fd)), @intFromPtr(addr), @intFromPtr(len), flags });
|
|
2455
2442
|
}
|
|
2456
|
-
return syscall4(.accept4, @as(
|
|
2443
|
+
return syscall4(.accept4, @as(u32, @bitCast(fd)), @intFromPtr(addr), @intFromPtr(len), flags);
|
|
2457
2444
|
}
|
|
2458
2445
|
|
|
2459
|
-
pub fn statx(dirfd:
|
|
2446
|
+
pub fn statx(dirfd: fd_t, path: [*:0]const u8, flags: u32, mask: STATX, statx_buf: *Statx) usize {
|
|
2460
2447
|
return syscall5(
|
|
2461
2448
|
.statx,
|
|
2462
|
-
@as(
|
|
2449
|
+
@as(u32, @bitCast(dirfd)),
|
|
2463
2450
|
@intFromPtr(path),
|
|
2464
2451
|
flags,
|
|
2465
2452
|
@as(u32, @bitCast(mask)),
|
|
@@ -2476,7 +2463,7 @@ pub fn llistxattr(path: [*:0]const u8, list: [*]u8, size: usize) usize {
|
|
|
2476
2463
|
}
|
|
2477
2464
|
|
|
2478
2465
|
pub fn flistxattr(fd: fd_t, list: [*]u8, size: usize) usize {
|
|
2479
|
-
return syscall3(.flistxattr, @as(
|
|
2466
|
+
return syscall3(.flistxattr, @as(u32, @bitCast(fd)), @intFromPtr(list), size);
|
|
2480
2467
|
}
|
|
2481
2468
|
|
|
2482
2469
|
pub fn getxattr(path: [*:0]const u8, name: [*:0]const u8, value: [*]u8, size: usize) usize {
|
|
@@ -2488,7 +2475,7 @@ pub fn lgetxattr(path: [*:0]const u8, name: [*:0]const u8, value: [*]u8, size: u
|
|
|
2488
2475
|
}
|
|
2489
2476
|
|
|
2490
2477
|
pub fn fgetxattr(fd: fd_t, name: [*:0]const u8, value: [*]u8, size: usize) usize {
|
|
2491
|
-
return syscall4(.fgetxattr, @as(
|
|
2478
|
+
return syscall4(.fgetxattr, @as(u32, @bitCast(fd)), @intFromPtr(name), @intFromPtr(value), size);
|
|
2492
2479
|
}
|
|
2493
2480
|
|
|
2494
2481
|
pub fn setxattr(path: [*:0]const u8, name: [*:0]const u8, value: [*]const u8, size: usize, flags: usize) usize {
|
|
@@ -2500,7 +2487,7 @@ pub fn lsetxattr(path: [*:0]const u8, name: [*:0]const u8, value: [*]const u8, s
|
|
|
2500
2487
|
}
|
|
2501
2488
|
|
|
2502
2489
|
pub fn fsetxattr(fd: fd_t, name: [*:0]const u8, value: [*]const u8, size: usize, flags: usize) usize {
|
|
2503
|
-
return syscall5(.fsetxattr, @as(
|
|
2490
|
+
return syscall5(.fsetxattr, @as(u32, @bitCast(fd)), @intFromPtr(name), @intFromPtr(value), size, flags);
|
|
2504
2491
|
}
|
|
2505
2492
|
|
|
2506
2493
|
pub fn removexattr(path: [*:0]const u8, name: [*:0]const u8) usize {
|
|
@@ -2511,8 +2498,8 @@ pub fn lremovexattr(path: [*:0]const u8, name: [*:0]const u8) usize {
|
|
|
2511
2498
|
return syscall2(.lremovexattr, @intFromPtr(path), @intFromPtr(name));
|
|
2512
2499
|
}
|
|
2513
2500
|
|
|
2514
|
-
pub fn fremovexattr(fd:
|
|
2515
|
-
return syscall2(.fremovexattr, fd, @intFromPtr(name));
|
|
2501
|
+
pub fn fremovexattr(fd: fd_t, name: [*:0]const u8) usize {
|
|
2502
|
+
return syscall2(.fremovexattr, @as(u32, @bitCast(fd)), @intFromPtr(name));
|
|
2516
2503
|
}
|
|
2517
2504
|
|
|
2518
2505
|
pub const sched_param = extern struct {
|
|
@@ -2542,27 +2529,27 @@ pub const SCHED = packed struct(i32) {
|
|
|
2542
2529
|
};
|
|
2543
2530
|
|
|
2544
2531
|
pub fn sched_setparam(pid: pid_t, param: *const sched_param) usize {
|
|
2545
|
-
return syscall2(.sched_setparam, @as(
|
|
2532
|
+
return syscall2(.sched_setparam, @as(u32, @bitCast(pid)), @intFromPtr(param));
|
|
2546
2533
|
}
|
|
2547
2534
|
|
|
2548
2535
|
pub fn sched_getparam(pid: pid_t, param: *sched_param) usize {
|
|
2549
|
-
return syscall2(.sched_getparam, @as(
|
|
2536
|
+
return syscall2(.sched_getparam, @as(u32, @bitCast(pid)), @intFromPtr(param));
|
|
2550
2537
|
}
|
|
2551
2538
|
|
|
2552
2539
|
pub fn sched_setscheduler(pid: pid_t, policy: SCHED, param: *const sched_param) usize {
|
|
2553
|
-
return syscall3(.sched_setscheduler, @as(
|
|
2540
|
+
return syscall3(.sched_setscheduler, @as(u32, @bitCast(pid)), @as(u32, @bitCast(policy)), @intFromPtr(param));
|
|
2554
2541
|
}
|
|
2555
2542
|
|
|
2556
2543
|
pub fn sched_getscheduler(pid: pid_t) usize {
|
|
2557
|
-
return syscall1(.sched_getscheduler, @as(
|
|
2544
|
+
return syscall1(.sched_getscheduler, @as(u32, @bitCast(pid)));
|
|
2558
2545
|
}
|
|
2559
2546
|
|
|
2560
2547
|
pub fn sched_get_priority_max(policy: SCHED) usize {
|
|
2561
|
-
return syscall1(.sched_get_priority_max, @
|
|
2548
|
+
return syscall1(.sched_get_priority_max, @as(u32, @bitCast(policy)));
|
|
2562
2549
|
}
|
|
2563
2550
|
|
|
2564
2551
|
pub fn sched_get_priority_min(policy: SCHED) usize {
|
|
2565
|
-
return syscall1(.sched_get_priority_min, @
|
|
2552
|
+
return syscall1(.sched_get_priority_min, @as(u32, @bitCast(policy)));
|
|
2566
2553
|
}
|
|
2567
2554
|
|
|
2568
2555
|
pub fn getcpu(cpu: ?*usize, node: ?*usize) usize {
|
|
@@ -2581,24 +2568,24 @@ pub const sched_attr = extern struct {
|
|
|
2581
2568
|
period: u64 = 0,
|
|
2582
2569
|
};
|
|
2583
2570
|
|
|
2584
|
-
pub fn sched_setattr(pid: pid_t, attr: *const sched_attr, flags:
|
|
2585
|
-
return syscall3(.sched_setattr, @as(
|
|
2571
|
+
pub fn sched_setattr(pid: pid_t, attr: *const sched_attr, flags: u32) usize {
|
|
2572
|
+
return syscall3(.sched_setattr, @as(u32, @bitCast(pid)), @intFromPtr(attr), flags);
|
|
2586
2573
|
}
|
|
2587
2574
|
|
|
2588
|
-
pub fn sched_getattr(pid: pid_t, attr: *sched_attr, size:
|
|
2589
|
-
return syscall4(.sched_getattr, @as(
|
|
2575
|
+
pub fn sched_getattr(pid: pid_t, attr: *sched_attr, size: u32, flags: u32) usize {
|
|
2576
|
+
return syscall4(.sched_getattr, @as(u32, @bitCast(pid)), @intFromPtr(attr), size, flags);
|
|
2590
2577
|
}
|
|
2591
2578
|
|
|
2592
2579
|
pub fn sched_rr_get_interval(pid: pid_t, tp: *timespec) usize {
|
|
2593
|
-
return syscall2(.sched_rr_get_interval, @as(
|
|
2580
|
+
return syscall2(.sched_rr_get_interval, @as(u32, @bitCast(pid)), @intFromPtr(tp));
|
|
2594
2581
|
}
|
|
2595
2582
|
|
|
2596
2583
|
pub fn sched_yield() usize {
|
|
2597
2584
|
return syscall0(.sched_yield);
|
|
2598
2585
|
}
|
|
2599
2586
|
|
|
2600
|
-
pub fn sched_getaffinity(pid: pid_t, size:
|
|
2601
|
-
const rc = syscall3(.sched_getaffinity, @as(
|
|
2587
|
+
pub fn sched_getaffinity(pid: pid_t, size: u32, set: *cpu_set_t) usize {
|
|
2588
|
+
const rc = syscall3(.sched_getaffinity, @as(u32, @bitCast(pid)), size, @intFromPtr(set));
|
|
2602
2589
|
if (@as(isize, @bitCast(rc)) < 0) return rc;
|
|
2603
2590
|
if (rc < size) @memset(@as([*]u8, @ptrCast(set))[rc..size], 0);
|
|
2604
2591
|
return 0;
|
|
@@ -2606,7 +2593,7 @@ pub fn sched_getaffinity(pid: pid_t, size: usize, set: *cpu_set_t) usize {
|
|
|
2606
2593
|
|
|
2607
2594
|
pub fn sched_setaffinity(pid: pid_t, set: *const cpu_set_t) !void {
|
|
2608
2595
|
const size = @sizeOf(cpu_set_t);
|
|
2609
|
-
const rc = syscall3(.sched_setaffinity, @as(
|
|
2596
|
+
const rc = syscall3(.sched_setaffinity, @as(u32, @bitCast(pid)), size, @intFromPtr(set));
|
|
2610
2597
|
|
|
2611
2598
|
switch (errno(rc)) {
|
|
2612
2599
|
.SUCCESS => return,
|
|
@@ -2618,25 +2605,25 @@ pub fn epoll_create() usize {
|
|
|
2618
2605
|
return epoll_create1(0);
|
|
2619
2606
|
}
|
|
2620
2607
|
|
|
2621
|
-
pub fn epoll_create1(flags:
|
|
2608
|
+
pub fn epoll_create1(flags: u32) usize {
|
|
2622
2609
|
return syscall1(.epoll_create1, flags);
|
|
2623
2610
|
}
|
|
2624
2611
|
|
|
2625
|
-
pub fn epoll_ctl(epoll_fd:
|
|
2626
|
-
return syscall4(.epoll_ctl, @as(
|
|
2612
|
+
pub fn epoll_ctl(epoll_fd: fd_t, op: u32, fd: fd_t, ev: ?*epoll_event) usize {
|
|
2613
|
+
return syscall4(.epoll_ctl, @as(u32, @bitCast(epoll_fd)), op, @as(u32, @bitCast(fd)), @intFromPtr(ev));
|
|
2627
2614
|
}
|
|
2628
2615
|
|
|
2629
|
-
pub fn epoll_wait(epoll_fd:
|
|
2616
|
+
pub fn epoll_wait(epoll_fd: fd_t, events: [*]epoll_event, maxevents: u32, timeout: i32) usize {
|
|
2630
2617
|
return epoll_pwait(epoll_fd, events, maxevents, timeout, null);
|
|
2631
2618
|
}
|
|
2632
2619
|
|
|
2633
|
-
pub fn epoll_pwait(epoll_fd:
|
|
2620
|
+
pub fn epoll_pwait(epoll_fd: fd_t, events: [*]epoll_event, maxevents: u32, timeout: i32, sigmask: ?*const sigset_t) usize {
|
|
2634
2621
|
return syscall6(
|
|
2635
2622
|
.epoll_pwait,
|
|
2636
|
-
@as(
|
|
2623
|
+
@as(u32, @bitCast(epoll_fd)),
|
|
2637
2624
|
@intFromPtr(events),
|
|
2638
|
-
|
|
2639
|
-
@as(
|
|
2625
|
+
maxevents,
|
|
2626
|
+
@as(u32, @bitCast(timeout)),
|
|
2640
2627
|
@intFromPtr(sigmask),
|
|
2641
2628
|
NSIG / 8,
|
|
2642
2629
|
);
|
|
@@ -2659,18 +2646,18 @@ pub const itimerspec = extern struct {
|
|
|
2659
2646
|
it_value: timespec,
|
|
2660
2647
|
};
|
|
2661
2648
|
|
|
2662
|
-
pub fn timerfd_gettime(fd:
|
|
2649
|
+
pub fn timerfd_gettime(fd: fd_t, curr_value: *itimerspec) usize {
|
|
2663
2650
|
return syscall2(
|
|
2664
2651
|
if (@hasField(SYS, "timerfd_gettime") and native_arch != .hexagon) .timerfd_gettime else .timerfd_gettime64,
|
|
2665
|
-
@
|
|
2652
|
+
@as(u32, @bitCast(fd)),
|
|
2666
2653
|
@intFromPtr(curr_value),
|
|
2667
2654
|
);
|
|
2668
2655
|
}
|
|
2669
2656
|
|
|
2670
|
-
pub fn timerfd_settime(fd:
|
|
2657
|
+
pub fn timerfd_settime(fd: fd_t, flags: TFD.TIMER, new_value: *const itimerspec, old_value: ?*itimerspec) usize {
|
|
2671
2658
|
return syscall4(
|
|
2672
2659
|
if (@hasField(SYS, "timerfd_settime") and native_arch != .hexagon) .timerfd_settime else .timerfd_settime64,
|
|
2673
|
-
@
|
|
2660
|
+
@as(u32, @bitCast(fd)),
|
|
2674
2661
|
@as(u32, @bitCast(flags)),
|
|
2675
2662
|
@intFromPtr(new_value),
|
|
2676
2663
|
@intFromPtr(old_value),
|
|
@@ -2685,11 +2672,11 @@ pub const ITIMER = enum(i32) {
|
|
|
2685
2672
|
};
|
|
2686
2673
|
|
|
2687
2674
|
pub fn getitimer(which: i32, curr_value: *itimerspec) usize {
|
|
2688
|
-
return syscall2(.getitimer, @as(
|
|
2675
|
+
return syscall2(.getitimer, @as(u32, @bitCast(which)), @intFromPtr(curr_value));
|
|
2689
2676
|
}
|
|
2690
2677
|
|
|
2691
2678
|
pub fn setitimer(which: i32, new_value: *const itimerspec, old_value: ?*itimerspec) usize {
|
|
2692
|
-
return syscall3(.setitimer, @as(
|
|
2679
|
+
return syscall3(.setitimer, @as(u32, @bitCast(which)), @intFromPtr(new_value), @intFromPtr(old_value));
|
|
2693
2680
|
}
|
|
2694
2681
|
|
|
2695
2682
|
pub fn unshare(flags: usize) usize {
|
|
@@ -2697,7 +2684,7 @@ pub fn unshare(flags: usize) usize {
|
|
|
2697
2684
|
}
|
|
2698
2685
|
|
|
2699
2686
|
pub fn setns(fd: fd_t, flags: u32) usize {
|
|
2700
|
-
return syscall2(.setns, @as(
|
|
2687
|
+
return syscall2(.setns, @as(u32, @bitCast(fd)), flags);
|
|
2701
2688
|
}
|
|
2702
2689
|
|
|
2703
2690
|
pub fn capget(hdrp: *cap_user_header_t, datap: *cap_user_data_t) usize {
|
|
@@ -2720,12 +2707,12 @@ pub fn io_uring_setup(entries: u32, p: *io_uring_params) usize {
|
|
|
2720
2707
|
return syscall2(.io_uring_setup, entries, @intFromPtr(p));
|
|
2721
2708
|
}
|
|
2722
2709
|
|
|
2723
|
-
pub fn io_uring_enter(fd:
|
|
2724
|
-
return syscall6(.io_uring_enter, @as(
|
|
2710
|
+
pub fn io_uring_enter(fd: fd_t, to_submit: u32, min_complete: u32, flags: u32, sig: ?*sigset_t) usize {
|
|
2711
|
+
return syscall6(.io_uring_enter, @as(u32, @bitCast(fd)), to_submit, min_complete, flags, @intFromPtr(sig), NSIG / 8);
|
|
2725
2712
|
}
|
|
2726
2713
|
|
|
2727
|
-
pub fn io_uring_register(fd:
|
|
2728
|
-
return syscall4(.io_uring_register, @as(
|
|
2714
|
+
pub fn io_uring_register(fd: fd_t, opcode: IORING_REGISTER, arg: ?*const anyopaque, nr_args: u32) usize {
|
|
2715
|
+
return syscall4(.io_uring_register, @as(u32, @bitCast(fd)), @intFromEnum(opcode), @intFromPtr(arg), nr_args);
|
|
2729
2716
|
}
|
|
2730
2717
|
|
|
2731
2718
|
pub fn memfd_create(name: [*:0]const u8, flags: u32) usize {
|
|
@@ -2733,43 +2720,43 @@ pub fn memfd_create(name: [*:0]const u8, flags: u32) usize {
|
|
|
2733
2720
|
}
|
|
2734
2721
|
|
|
2735
2722
|
pub fn getrusage(who: i32, usage: *rusage) usize {
|
|
2736
|
-
return syscall2(.getrusage, @as(
|
|
2723
|
+
return syscall2(.getrusage, @as(u32, @bitCast(who)), @intFromPtr(usage));
|
|
2737
2724
|
}
|
|
2738
2725
|
|
|
2739
2726
|
pub fn tcgetattr(fd: fd_t, termios_p: *termios) usize {
|
|
2740
|
-
return syscall3(.ioctl, @as(
|
|
2727
|
+
return syscall3(.ioctl, @as(u32, @bitCast(fd)), T.CGETS, @intFromPtr(termios_p));
|
|
2741
2728
|
}
|
|
2742
2729
|
|
|
2743
2730
|
pub fn tcsetattr(fd: fd_t, optional_action: TCSA, termios_p: *const termios) usize {
|
|
2744
|
-
return syscall3(.ioctl, @as(
|
|
2731
|
+
return syscall3(.ioctl, @as(u32, @bitCast(fd)), T.CSETS + @intFromEnum(optional_action), @intFromPtr(termios_p));
|
|
2745
2732
|
}
|
|
2746
2733
|
|
|
2747
2734
|
pub fn tcgetpgrp(fd: fd_t, pgrp: *pid_t) usize {
|
|
2748
|
-
return syscall3(.ioctl, @as(
|
|
2735
|
+
return syscall3(.ioctl, @as(u32, @bitCast(fd)), T.IOCGPGRP, @intFromPtr(pgrp));
|
|
2749
2736
|
}
|
|
2750
2737
|
|
|
2751
2738
|
pub fn tcsetpgrp(fd: fd_t, pgrp: *const pid_t) usize {
|
|
2752
|
-
return syscall3(.ioctl, @as(
|
|
2739
|
+
return syscall3(.ioctl, @as(u32, @bitCast(fd)), T.IOCSPGRP, @intFromPtr(pgrp));
|
|
2753
2740
|
}
|
|
2754
2741
|
|
|
2755
2742
|
pub fn tcdrain(fd: fd_t) usize {
|
|
2756
|
-
return syscall3(.ioctl, @as(
|
|
2743
|
+
return syscall3(.ioctl, @as(u32, @bitCast(fd)), T.CSBRK, 1);
|
|
2757
2744
|
}
|
|
2758
2745
|
|
|
2759
2746
|
pub fn ioctl(fd: fd_t, request: u32, arg: usize) usize {
|
|
2760
|
-
return syscall3(.ioctl, @as(
|
|
2747
|
+
return syscall3(.ioctl, @as(u32, @bitCast(fd)), request, arg);
|
|
2761
2748
|
}
|
|
2762
2749
|
|
|
2763
2750
|
pub fn signalfd(fd: fd_t, mask: *const sigset_t, flags: u32) usize {
|
|
2764
|
-
return syscall4(.signalfd4, @as(
|
|
2751
|
+
return syscall4(.signalfd4, @as(u32, @bitCast(fd)), @intFromPtr(mask), NSIG / 8, flags);
|
|
2765
2752
|
}
|
|
2766
2753
|
|
|
2767
|
-
pub fn copy_file_range(fd_in: fd_t, off_in: ?*
|
|
2754
|
+
pub fn copy_file_range(fd_in: fd_t, off_in: ?*off_t, fd_out: fd_t, off_out: ?*off_t, len: usize, flags: u32) usize {
|
|
2768
2755
|
return syscall6(
|
|
2769
2756
|
.copy_file_range,
|
|
2770
|
-
@as(
|
|
2757
|
+
@as(u32, @bitCast(fd_in)),
|
|
2771
2758
|
@intFromPtr(off_in),
|
|
2772
|
-
@as(
|
|
2759
|
+
@as(u32, @bitCast(fd_out)),
|
|
2773
2760
|
@intFromPtr(off_out),
|
|
2774
2761
|
len,
|
|
2775
2762
|
flags,
|
|
@@ -2785,19 +2772,19 @@ pub fn sync() void {
|
|
|
2785
2772
|
}
|
|
2786
2773
|
|
|
2787
2774
|
pub fn syncfs(fd: fd_t) usize {
|
|
2788
|
-
return syscall1(.syncfs, @as(
|
|
2775
|
+
return syscall1(.syncfs, @as(u32, @bitCast(fd)));
|
|
2789
2776
|
}
|
|
2790
2777
|
|
|
2791
2778
|
pub fn fsync(fd: fd_t) usize {
|
|
2792
|
-
return syscall1(.fsync, @as(
|
|
2779
|
+
return syscall1(.fsync, @as(u32, @bitCast(fd)));
|
|
2793
2780
|
}
|
|
2794
2781
|
|
|
2795
2782
|
pub fn fdatasync(fd: fd_t) usize {
|
|
2796
|
-
return syscall1(.fdatasync, @as(
|
|
2783
|
+
return syscall1(.fdatasync, @as(u32, @bitCast(fd)));
|
|
2797
2784
|
}
|
|
2798
2785
|
|
|
2799
2786
|
pub fn prctl(option: i32, arg2: usize, arg3: usize, arg4: usize, arg5: usize) usize {
|
|
2800
|
-
return syscall5(.prctl, @as(
|
|
2787
|
+
return syscall5(.prctl, @as(u32, @bitCast(option)), arg2, arg3, arg4, arg5);
|
|
2801
2788
|
}
|
|
2802
2789
|
|
|
2803
2790
|
pub fn getrlimit(resource: rlimit_resource, rlim: *rlimit) usize {
|
|
@@ -2813,8 +2800,8 @@ pub fn setrlimit(resource: rlimit_resource, rlim: *const rlimit) usize {
|
|
|
2813
2800
|
pub fn prlimit(pid: pid_t, resource: rlimit_resource, new_limit: ?*const rlimit, old_limit: ?*rlimit) usize {
|
|
2814
2801
|
return syscall4(
|
|
2815
2802
|
.prlimit64,
|
|
2816
|
-
@as(
|
|
2817
|
-
@as(
|
|
2803
|
+
@as(u32, @bitCast(pid)),
|
|
2804
|
+
@as(u32, @bitCast(@as(i32, @intFromEnum(resource)))),
|
|
2818
2805
|
@intFromPtr(new_limit),
|
|
2819
2806
|
@intFromPtr(old_limit),
|
|
2820
2807
|
);
|
|
@@ -2829,14 +2816,14 @@ pub fn madvise(address: [*]u8, len: usize, advice: u32) usize {
|
|
|
2829
2816
|
}
|
|
2830
2817
|
|
|
2831
2818
|
pub fn pidfd_open(pid: pid_t, flags: u32) usize {
|
|
2832
|
-
return syscall2(.pidfd_open, @as(
|
|
2819
|
+
return syscall2(.pidfd_open, @as(u32, @bitCast(pid)), flags);
|
|
2833
2820
|
}
|
|
2834
2821
|
|
|
2835
2822
|
pub fn pidfd_getfd(pidfd: fd_t, targetfd: fd_t, flags: u32) usize {
|
|
2836
2823
|
return syscall3(
|
|
2837
2824
|
.pidfd_getfd,
|
|
2838
|
-
@as(
|
|
2839
|
-
@as(
|
|
2825
|
+
@as(u32, @bitCast(pidfd)),
|
|
2826
|
+
@as(u32, @bitCast(targetfd)),
|
|
2840
2827
|
flags,
|
|
2841
2828
|
);
|
|
2842
2829
|
}
|
|
@@ -2844,7 +2831,7 @@ pub fn pidfd_getfd(pidfd: fd_t, targetfd: fd_t, flags: u32) usize {
|
|
|
2844
2831
|
pub fn pidfd_send_signal(pidfd: fd_t, sig: SIG, info: ?*siginfo_t, flags: u32) usize {
|
|
2845
2832
|
return syscall4(
|
|
2846
2833
|
.pidfd_send_signal,
|
|
2847
|
-
@as(
|
|
2834
|
+
@as(u32, @bitCast(pidfd)),
|
|
2848
2835
|
@intFromEnum(sig),
|
|
2849
2836
|
@intFromPtr(info),
|
|
2850
2837
|
flags,
|
|
@@ -2854,7 +2841,7 @@ pub fn pidfd_send_signal(pidfd: fd_t, sig: SIG, info: ?*siginfo_t, flags: u32) u
|
|
|
2854
2841
|
pub fn process_vm_readv(pid: pid_t, local: []const iovec, remote: []const iovec_const, flags: usize) usize {
|
|
2855
2842
|
return syscall6(
|
|
2856
2843
|
.process_vm_readv,
|
|
2857
|
-
@as(
|
|
2844
|
+
@as(u32, @bitCast(pid)),
|
|
2858
2845
|
@intFromPtr(local.ptr),
|
|
2859
2846
|
local.len,
|
|
2860
2847
|
@intFromPtr(remote.ptr),
|
|
@@ -2866,7 +2853,7 @@ pub fn process_vm_readv(pid: pid_t, local: []const iovec, remote: []const iovec_
|
|
|
2866
2853
|
pub fn process_vm_writev(pid: pid_t, local: []const iovec_const, remote: []const iovec_const, flags: usize) usize {
|
|
2867
2854
|
return syscall6(
|
|
2868
2855
|
.process_vm_writev,
|
|
2869
|
-
@as(
|
|
2856
|
+
@as(u32, @bitCast(pid)),
|
|
2870
2857
|
@intFromPtr(local.ptr),
|
|
2871
2858
|
local.len,
|
|
2872
2859
|
@intFromPtr(remote.ptr),
|
|
@@ -2876,50 +2863,43 @@ pub fn process_vm_writev(pid: pid_t, local: []const iovec_const, remote: []const
|
|
|
2876
2863
|
}
|
|
2877
2864
|
|
|
2878
2865
|
pub fn fadvise(fd: fd_t, offset: i64, len: i64, advice: usize) usize {
|
|
2879
|
-
if (
|
|
2880
|
-
//
|
|
2881
|
-
// register
|
|
2866
|
+
if (native_arch.isMIPS32()) {
|
|
2867
|
+
// MIPS O32 weirdly differs from the other architectures that require
|
|
2868
|
+
// aligned register pairs for this specific syscall.
|
|
2882
2869
|
|
|
2883
2870
|
const offset_halves = splitValue64(offset);
|
|
2884
2871
|
const length_halves = splitValue64(len);
|
|
2885
2872
|
|
|
2886
|
-
return
|
|
2887
|
-
.
|
|
2888
|
-
@as(
|
|
2889
|
-
|
|
2873
|
+
return syscall7(
|
|
2874
|
+
.fadvise64,
|
|
2875
|
+
@as(u32, @bitCast(fd)),
|
|
2876
|
+
0,
|
|
2890
2877
|
offset_halves[0],
|
|
2891
2878
|
offset_halves[1],
|
|
2892
2879
|
length_halves[0],
|
|
2893
2880
|
length_halves[1],
|
|
2881
|
+
advice,
|
|
2894
2882
|
);
|
|
2895
|
-
} else if (
|
|
2896
|
-
// MIPS O32 does not deal with the register alignment issue, so pass a dummy value.
|
|
2897
|
-
|
|
2883
|
+
} else if (require_aligned_register_pair) {
|
|
2898
2884
|
const offset_halves = splitValue64(offset);
|
|
2899
2885
|
const length_halves = splitValue64(len);
|
|
2900
2886
|
|
|
2901
|
-
return
|
|
2902
|
-
.
|
|
2903
|
-
@as(
|
|
2904
|
-
|
|
2887
|
+
return syscall6(
|
|
2888
|
+
.fadvise64_64,
|
|
2889
|
+
@as(u32, @bitCast(fd)),
|
|
2890
|
+
advice,
|
|
2905
2891
|
offset_halves[0],
|
|
2906
2892
|
offset_halves[1],
|
|
2907
2893
|
length_halves[0],
|
|
2908
2894
|
length_halves[1],
|
|
2909
|
-
advice,
|
|
2910
2895
|
);
|
|
2911
|
-
} else if (
|
|
2912
|
-
// Other 32-bit architectures do not require register alignment.
|
|
2913
|
-
|
|
2896
|
+
} else if (@sizeOf(syscall_arg_t) < @sizeOf(u64)) {
|
|
2914
2897
|
const offset_halves = splitValue64(offset);
|
|
2915
2898
|
const length_halves = splitValue64(len);
|
|
2916
2899
|
|
|
2917
2900
|
return syscall6(
|
|
2918
|
-
|
|
2919
|
-
|
|
2920
|
-
else => .fadvise64_64,
|
|
2921
|
-
},
|
|
2922
|
-
@as(usize, @bitCast(@as(isize, fd))),
|
|
2901
|
+
.fadvise64_64,
|
|
2902
|
+
@as(u32, @bitCast(fd)),
|
|
2923
2903
|
offset_halves[0],
|
|
2924
2904
|
offset_halves[1],
|
|
2925
2905
|
length_halves[0],
|
|
@@ -2927,14 +2907,11 @@ pub fn fadvise(fd: fd_t, offset: i64, len: i64, advice: usize) usize {
|
|
|
2927
2907
|
advice,
|
|
2928
2908
|
);
|
|
2929
2909
|
} else {
|
|
2930
|
-
// On 64-bit architectures, fadvise64_64 and fadvise64 are the same. Generally, older ports
|
|
2931
|
-
// call it fadvise64 (x86, PowerPC, etc), while newer ports call it fadvise64_64 (RISC-V,
|
|
2932
|
-
// LoongArch, etc). SPARC is the odd one out because it has both.
|
|
2933
2910
|
return syscall4(
|
|
2934
|
-
|
|
2935
|
-
@as(
|
|
2936
|
-
@as(
|
|
2937
|
-
@as(
|
|
2911
|
+
.fadvise64,
|
|
2912
|
+
@as(u32, @bitCast(fd)),
|
|
2913
|
+
@as(u64, @bitCast(offset)),
|
|
2914
|
+
@as(u64, @bitCast(len)),
|
|
2938
2915
|
advice,
|
|
2939
2916
|
);
|
|
2940
2917
|
}
|
|
@@ -2950,9 +2927,9 @@ pub fn perf_event_open(
|
|
|
2950
2927
|
return syscall5(
|
|
2951
2928
|
.perf_event_open,
|
|
2952
2929
|
@intFromPtr(attr),
|
|
2953
|
-
@as(
|
|
2954
|
-
@as(
|
|
2955
|
-
@as(
|
|
2930
|
+
@as(u32, @bitCast(pid)),
|
|
2931
|
+
@as(u32, @bitCast(cpu)),
|
|
2932
|
+
@as(u32, @bitCast(group_fd)),
|
|
2956
2933
|
flags,
|
|
2957
2934
|
);
|
|
2958
2935
|
}
|
|
@@ -2971,7 +2948,7 @@ pub fn ptrace(
|
|
|
2971
2948
|
return syscall5(
|
|
2972
2949
|
.ptrace,
|
|
2973
2950
|
req,
|
|
2974
|
-
@as(
|
|
2951
|
+
@as(u32, @bitCast(pid)),
|
|
2975
2952
|
addr,
|
|
2976
2953
|
data,
|
|
2977
2954
|
addr2,
|
|
@@ -2993,17 +2970,27 @@ pub fn cachestat(
|
|
|
2993
2970
|
) usize {
|
|
2994
2971
|
return syscall4(
|
|
2995
2972
|
.cachestat,
|
|
2996
|
-
@as(
|
|
2973
|
+
@as(u32, @bitCast(fd)),
|
|
2997
2974
|
@intFromPtr(cstat_range),
|
|
2998
2975
|
@intFromPtr(cstat),
|
|
2999
2976
|
flags,
|
|
3000
2977
|
);
|
|
3001
2978
|
}
|
|
3002
2979
|
|
|
3003
|
-
pub fn map_shadow_stack(addr:
|
|
2980
|
+
pub fn map_shadow_stack(addr: usize, size: usize, flags: u32) usize {
|
|
3004
2981
|
return syscall3(.map_shadow_stack, addr, size, flags);
|
|
3005
2982
|
}
|
|
3006
2983
|
|
|
2984
|
+
pub fn tee(src: fd_t, dest: fd_t, len: usize, flags: u32) usize {
|
|
2985
|
+
return syscall4(
|
|
2986
|
+
.tee,
|
|
2987
|
+
@as(u32, @bitCast(src)),
|
|
2988
|
+
@as(u32, @bitCast(dest)),
|
|
2989
|
+
len,
|
|
2990
|
+
flags,
|
|
2991
|
+
);
|
|
2992
|
+
}
|
|
2993
|
+
|
|
3007
2994
|
pub const Sysinfo = switch (native_abi) {
|
|
3008
2995
|
.gnux32, .muslx32 => extern struct {
|
|
3009
2996
|
/// Seconds since boot
|
|
@@ -3664,13 +3651,6 @@ pub const E = switch (native_arch) {
|
|
|
3664
3651
|
},
|
|
3665
3652
|
};
|
|
3666
3653
|
|
|
3667
|
-
pub const pid_t = i32;
|
|
3668
|
-
pub const fd_t = i32;
|
|
3669
|
-
pub const socket_t = i32;
|
|
3670
|
-
pub const uid_t = u32;
|
|
3671
|
-
pub const gid_t = u32;
|
|
3672
|
-
pub const clock_t = isize;
|
|
3673
|
-
|
|
3674
3654
|
pub const NAME_MAX = 255;
|
|
3675
3655
|
pub const PATH_MAX = 4096;
|
|
3676
3656
|
pub const IOV_MAX = 1024;
|
|
@@ -10162,7 +10142,3 @@ pub const cmsghdr = extern struct {
|
|
|
10162
10142
|
level: i32,
|
|
10163
10143
|
type: i32,
|
|
10164
10144
|
};
|
|
10165
|
-
|
|
10166
|
-
inline fn fd_to_usize(fd: fd_t) usize {
|
|
10167
|
-
return @as(usize, @bitCast(@as(isize, fd)));
|
|
10168
|
-
}
|