@zigc/lib 0.16.0-test.1 → 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/LICENSE +19 -0
- package/c/fcntl.zig +6 -1
- package/c/inttypes.zig +0 -10
- package/c/math.zig +138 -114
- 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/stropts.zig +17 -0
- package/c/unistd.zig +27 -26
- package/c/wchar.zig +10 -0
- package/c.zig +3 -2
- package/compiler/aro/aro/Attribute/names.zig +604 -589
- package/compiler/aro/aro/Attribute.zig +202 -116
- package/compiler/aro/aro/Builtins/common.zig +874 -863
- package/compiler/aro/aro/Builtins/eval.zig +15 -7
- package/compiler/aro/aro/Builtins.zig +0 -1
- package/compiler/aro/aro/CodeGen.zig +8 -7
- package/compiler/aro/aro/Compilation.zig +137 -111
- package/compiler/aro/aro/Diagnostics.zig +21 -17
- package/compiler/aro/aro/Driver/GCCDetector.zig +635 -0
- package/compiler/aro/aro/Driver.zig +138 -63
- package/compiler/aro/aro/LangOpts.zig +12 -2
- package/compiler/aro/aro/Parser/Diagnostic.zig +79 -19
- package/compiler/aro/aro/Parser.zig +352 -153
- package/compiler/aro/aro/Pragma.zig +3 -2
- package/compiler/aro/aro/Preprocessor/Diagnostic.zig +21 -0
- package/compiler/aro/aro/Preprocessor.zig +136 -62
- package/compiler/aro/aro/Target.zig +17 -12
- package/compiler/aro/aro/Tokenizer.zig +31 -14
- package/compiler/aro/aro/Toolchain.zig +4 -7
- package/compiler/aro/aro/Tree.zig +178 -148
- package/compiler/aro/aro/TypeStore.zig +82 -24
- package/compiler/aro/aro/Value.zig +13 -17
- package/compiler/aro/aro/features.zig +1 -0
- package/compiler/aro/aro/pragmas/message.zig +3 -2
- package/compiler/aro/aro/pragmas/once.zig +0 -1
- package/compiler/aro/aro/record_layout.zig +3 -3
- package/compiler/aro/aro/text_literal.zig +3 -2
- package/compiler/aro/assembly_backend/x86_64.zig +7 -8
- package/compiler/aro/backend/Assembly.zig +1 -2
- package/compiler/aro/backend/Interner.zig +2 -2
- package/compiler/aro/backend/Ir.zig +100 -92
- package/compiler/aro/include/ptrcheck.h +49 -0
- package/compiler/aro/main.zig +26 -10
- package/compiler/build_runner.zig +1 -2
- package/compiler/objdump.zig +93 -0
- package/compiler/reduce/Walk.zig +7 -7
- package/compiler/reduce.zig +5 -1
- package/compiler/resinator/compile.zig +2 -2
- package/compiler/resinator/main.zig +7 -1
- package/compiler/resinator/preprocess.zig +1 -3
- package/compiler/std-docs.zig +8 -1
- package/compiler/test_runner.zig +194 -62
- package/compiler/translate-c/MacroTranslator.zig +80 -11
- package/compiler/translate-c/PatternList.zig +1 -9
- package/compiler/translate-c/Scope.zig +43 -6
- package/compiler/translate-c/Translator.zig +369 -127
- package/compiler/translate-c/ast.zig +19 -11
- package/compiler/translate-c/main.zig +76 -17
- package/compiler_rt/cos.zig +140 -53
- 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 +1127 -0
- package/compiler_rt/log.zig +0 -2
- package/compiler_rt/log10.zig +0 -2
- package/compiler_rt/log2.zig +0 -2
- package/compiler_rt/long_double.zig +37 -0
- package/compiler_rt/mulXi3.zig +1 -1
- package/compiler_rt/mulo.zig +6 -1
- package/compiler_rt/rem_pio2l.zig +173 -0
- package/compiler_rt/round.zig +0 -2
- package/compiler_rt/sin.zig +139 -56
- package/compiler_rt/sincos.zig +277 -72
- package/compiler_rt/sqrt.zig +0 -2
- package/compiler_rt/ssp.zig +1 -1
- package/compiler_rt/tan.zig +117 -48
- package/compiler_rt/trig.zig +256 -6
- package/compiler_rt/trunc.zig +0 -2
- package/compiler_rt/udivmodei4.zig +28 -0
- package/compiler_rt.zig +2 -0
- package/fuzzer.zig +857 -307
- package/libc/musl/arch/mipsn32/syscall_arch.h +35 -32
- package/libc/musl/src/math/pow.c +343 -0
- package/package.json +1 -1
- package/std/Build/Cache.zig +6 -6
- package/std/Build/Fuzz.zig +6 -19
- package/std/Build/Module.zig +1 -1
- package/std/Build/Step/CheckObject.zig +3 -3
- package/std/Build/Step/Compile.zig +18 -1
- package/std/Build/Step/ConfigHeader.zig +49 -33
- package/std/Build/Step/InstallArtifact.zig +18 -0
- package/std/Build/Step/Run.zig +538 -89
- package/std/Build/Step/TranslateC.zig +0 -6
- package/std/Build/Step.zig +10 -19
- package/std/Build/WebServer.zig +31 -19
- package/std/Build/abi.zig +47 -11
- package/std/Build.zig +17 -17
- package/std/Io/Dir.zig +7 -2
- package/std/Io/Dispatch.zig +5 -13
- package/std/Io/File/Reader.zig +3 -1
- package/std/Io/File/Writer.zig +8 -6
- package/std/Io/File.zig +1 -0
- package/std/Io/Kqueue.zig +2 -2
- 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 +352 -180
- package/std/Io/Uring.zig +15 -16
- package/std/Io/Writer.zig +46 -42
- package/std/Io/net.zig +11 -11
- package/std/Io.zig +1052 -20
- package/std/SemanticVersion.zig +1 -1
- package/std/Target/Query.zig +2 -2
- package/std/Target.zig +53 -7
- package/std/Thread.zig +8 -3
- package/std/array_hash_map.zig +105 -573
- package/std/array_list.zig +22 -31
- package/std/bit_set.zig +22 -6
- package/std/builtin/assembly.zig +68 -0
- package/std/builtin.zig +4 -0
- package/std/c/haiku.zig +3 -0
- package/std/c/serenity.zig +1 -6
- package/std/c.zig +106 -24
- package/std/compress/flate/Compress.zig +3 -3
- package/std/compress/flate/Decompress.zig +2 -3
- package/std/compress/zstd/Decompress.zig +2 -4
- package/std/crypto/Certificate/Bundle.zig +15 -1
- 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/asn1.zig +33 -18
- package/std/crypto/codecs/base64_hex_ct.zig +16 -8
- 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/Dwarf.zig +29 -9
- package/std/debug/Info.zig +4 -0
- package/std/debug/MachOFile.zig +46 -8
- package/std/debug/Pdb.zig +540 -37
- package/std/debug/SelfInfo/Elf.zig +19 -18
- package/std/debug/SelfInfo/MachO.zig +18 -7
- package/std/debug/SelfInfo/Windows.zig +138 -36
- package/std/debug.zig +181 -66
- package/std/enums.zig +25 -19
- package/std/fmt.zig +8 -3
- package/std/fs/path.zig +6 -4
- package/std/heap/ArenaAllocator.zig +145 -154
- package/std/heap/BufferFirstAllocator.zig +165 -0
- package/std/heap/debug_allocator.zig +7 -7
- package/std/heap.zig +2 -126
- package/std/http/Client.zig +31 -30
- package/std/http.zig +14 -13
- package/std/json/Scanner.zig +2 -2
- package/std/json/Stringify.zig +3 -3
- package/std/json/dynamic.zig +4 -4
- package/std/math/big/int.zig +16 -17
- package/std/mem/Allocator.zig +4 -5
- package/std/mem.zig +48 -0
- package/std/os/emscripten.zig +2 -18
- 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 +419 -438
- package/std/os/uefi/tables/boot_services.zig +9 -8
- package/std/os/windows.zig +2 -2
- package/std/os.zig +41 -0
- package/std/pdb.zig +143 -4
- package/std/posix.zig +6 -12
- package/std/priority_dequeue.zig +13 -12
- package/std/priority_queue.zig +5 -4
- package/std/process/Child.zig +1 -1
- package/std/process/Environ.zig +1 -1
- package/std/process.zig +1 -1
- package/std/sort.zig +3 -3
- package/std/start.zig +17 -4
- package/std/std.zig +19 -6
- package/std/testing/FailingAllocator.zig +4 -4
- package/std/testing/Smith.zig +37 -2
- package/std/zig/Ast/Render.zig +187 -459
- package/std/zig/Ast.zig +0 -4
- package/std/zig/AstGen.zig +86 -103
- package/std/zig/AstRlAnnotate.zig +0 -11
- package/std/zig/AstSmith.zig +2602 -0
- package/std/zig/BuiltinFn.zig +0 -32
- package/std/zig/Client.zig +8 -3
- package/std/zig/LibCInstallation.zig +4 -3
- package/std/zig/Parse.zig +90 -81
- package/std/zig/Server.zig +26 -0
- package/std/zig/WindowsSdk.zig +13 -13
- package/std/zig/Zir.zig +66 -62
- package/std/zig/ZonGen.zig +6 -5
- package/std/zig/c_translation/helpers.zig +14 -9
- package/std/zig/llvm/Builder.zig +119 -60
- package/std/zig/system.zig +20 -4
- package/std/zig/tokenizer.zig +2 -1
- package/std/zig.zig +7 -10
- package/std/zip.zig +5 -5
- package/zig.h +340 -1
- package/compiler/aro/aro/Driver/Filesystem.zig +0 -241
- package/libc/mingw/complex/cabs.c +0 -48
- package/libc/mingw/complex/cabsf.c +0 -48
- package/libc/mingw/complex/cacos.c +0 -50
- package/libc/mingw/complex/cacosf.c +0 -50
- package/libc/mingw/complex/carg.c +0 -48
- package/libc/mingw/complex/cargf.c +0 -48
- package/libc/mingw/complex/casin.c +0 -50
- package/libc/mingw/complex/casinf.c +0 -50
- package/libc/mingw/complex/catan.c +0 -50
- package/libc/mingw/complex/catanf.c +0 -50
- package/libc/mingw/complex/ccos.c +0 -50
- package/libc/mingw/complex/ccosf.c +0 -50
- package/libc/mingw/complex/cexp.c +0 -48
- package/libc/mingw/complex/cexpf.c +0 -48
- package/libc/mingw/complex/cimag.c +0 -48
- package/libc/mingw/complex/cimagf.c +0 -48
- package/libc/mingw/complex/clog.c +0 -48
- package/libc/mingw/complex/clog10.c +0 -49
- package/libc/mingw/complex/clog10f.c +0 -49
- package/libc/mingw/complex/clogf.c +0 -48
- package/libc/mingw/complex/conj.c +0 -48
- package/libc/mingw/complex/conjf.c +0 -48
- package/libc/mingw/complex/cpow.c +0 -48
- package/libc/mingw/complex/cpowf.c +0 -48
- package/libc/mingw/complex/cproj.c +0 -48
- package/libc/mingw/complex/cprojf.c +0 -48
- package/libc/mingw/complex/creal.c +0 -48
- package/libc/mingw/complex/crealf.c +0 -48
- package/libc/mingw/complex/csin.c +0 -50
- package/libc/mingw/complex/csinf.c +0 -50
- package/libc/mingw/complex/csqrt.c +0 -48
- package/libc/mingw/complex/csqrtf.c +0 -48
- package/libc/mingw/complex/ctan.c +0 -50
- package/libc/mingw/complex/ctanf.c +0 -50
- package/libc/mingw/math/arm/s_rint.c +0 -86
- package/libc/mingw/math/arm/s_rintf.c +0 -51
- package/libc/mingw/math/arm/sincos.S +0 -30
- package/libc/mingw/math/arm-common/sincosl.c +0 -13
- package/libc/mingw/math/arm64/rint.c +0 -12
- package/libc/mingw/math/arm64/rintf.c +0 -12
- package/libc/mingw/math/arm64/sincos.S +0 -32
- package/libc/mingw/math/bsd_private_base.h +0 -148
- package/libc/mingw/math/fdiml.c +0 -24
- package/libc/mingw/math/frexpf.c +0 -13
- package/libc/mingw/math/frexpl.c +0 -71
- package/libc/mingw/math/x86/acosf.c +0 -29
- package/libc/mingw/math/x86/atanf.c +0 -23
- package/libc/mingw/math/x86/atanl.c +0 -18
- package/libc/mingw/math/x86/cos.def.h +0 -65
- package/libc/mingw/math/x86/cosl.c +0 -46
- package/libc/mingw/math/x86/cosl_internal.S +0 -55
- package/libc/mingw/math/x86/ldexp.c +0 -23
- package/libc/mingw/math/x86/scalbn.S +0 -41
- package/libc/mingw/math/x86/scalbnf.S +0 -40
- package/libc/mingw/math/x86/sin.def.h +0 -65
- package/libc/mingw/math/x86/sinl.c +0 -46
- package/libc/mingw/math/x86/sinl_internal.S +0 -58
- package/libc/mingw/math/x86/tanl.S +0 -62
- package/libc/mingw/misc/btowc.c +0 -28
- package/libc/mingw/misc/wcstof.c +0 -66
- package/libc/mingw/misc/wcstoimax.c +0 -132
- package/libc/mingw/misc/wcstoumax.c +0 -126
- package/libc/mingw/misc/wctob.c +0 -29
- package/libc/mingw/misc/winbs_uint64.c +0 -6
- package/libc/mingw/misc/winbs_ulong.c +0 -6
- package/libc/mingw/misc/winbs_ushort.c +0 -6
- package/libc/mingw/stdio/_Exit.c +0 -10
- package/libc/mingw/stdio/_findfirst64i32.c +0 -21
- package/libc/mingw/stdio/_findnext64i32.c +0 -21
- package/libc/mingw/stdio/_fstat64i32.c +0 -37
- package/libc/mingw/stdio/_stat64i32.c +0 -37
- package/libc/mingw/stdio/_wfindfirst64i32.c +0 -21
- package/libc/mingw/stdio/_wfindnext64i32.c +0 -21
- package/libc/mingw/stdio/_wstat64i32.c +0 -37
- package/libc/mingw/winpthreads/spinlock.c +0 -82
- package/libc/musl/src/legacy/isastream.c +0 -7
- package/libc/musl/src/legacy/valloc.c +0 -8
- package/libc/musl/src/linux/tee.c +0 -8
- package/libc/musl/src/math/__cosl.c +0 -96
- package/libc/musl/src/math/__sinl.c +0 -78
- package/libc/musl/src/math/__tanl.c +0 -143
- package/libc/musl/src/math/aarch64/lrint.c +0 -10
- package/libc/musl/src/math/aarch64/lrintf.c +0 -10
- package/libc/musl/src/math/aarch64/rintf.c +0 -7
- package/libc/musl/src/math/cosl.c +0 -39
- package/libc/musl/src/math/fdim.c +0 -10
- package/libc/musl/src/math/fdimf.c +0 -10
- package/libc/musl/src/math/fdiml.c +0 -18
- package/libc/musl/src/math/finite.c +0 -7
- package/libc/musl/src/math/finitef.c +0 -7
- package/libc/musl/src/math/frexp.c +0 -23
- package/libc/musl/src/math/frexpf.c +0 -23
- package/libc/musl/src/math/frexpl.c +0 -29
- package/libc/musl/src/math/i386/lrint.c +0 -8
- package/libc/musl/src/math/i386/lrintf.c +0 -8
- package/libc/musl/src/math/i386/rintf.c +0 -7
- package/libc/musl/src/math/lrint.c +0 -72
- package/libc/musl/src/math/lrintf.c +0 -8
- package/libc/musl/src/math/powerpc64/lrint.c +0 -16
- package/libc/musl/src/math/powerpc64/lrintf.c +0 -16
- package/libc/musl/src/math/rintf.c +0 -30
- package/libc/musl/src/math/s390x/rintf.c +0 -15
- package/libc/musl/src/math/sincosl.c +0 -60
- package/libc/musl/src/math/sinl.c +0 -41
- package/libc/musl/src/math/tanl.c +0 -29
- package/libc/musl/src/math/x32/lrint.s +0 -5
- package/libc/musl/src/math/x32/lrintf.s +0 -5
- package/libc/musl/src/math/x86_64/lrint.c +0 -8
- package/libc/musl/src/math/x86_64/lrintf.c +0 -8
- 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/libc-bottom-half/sources/reallocarray.c +0 -14
- 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);
|
|
1269
1289
|
}
|
|
1270
1290
|
|
|
1271
|
-
pub fn
|
|
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);
|
|
1327
|
+
}
|
|
1328
|
+
|
|
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
|
+
}
|
|
1394
|
+
}
|
|
1395
|
+
|
|
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);
|
|
1306
1398
|
}
|
|
1307
1399
|
|
|
1308
|
-
pub fn pwritev(fd:
|
|
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
|
|
|
@@ -1584,8 +1593,13 @@ pub fn clone2(flags: u32, child_stack_ptr: usize) usize {
|
|
|
1584
1593
|
return syscall2(.clone, flags, child_stack_ptr);
|
|
1585
1594
|
}
|
|
1586
1595
|
|
|
1596
|
+
/// This call cannot fail, and the return value is the caller's thread id
|
|
1597
|
+
pub fn set_tid_address(tidptr: ?*pid_t) pid_t {
|
|
1598
|
+
return @intCast(@as(u32, @truncate(syscall1(.set_tid_address, @intFromPtr(tidptr)))));
|
|
1599
|
+
}
|
|
1600
|
+
|
|
1587
1601
|
pub fn close(fd: fd_t) usize {
|
|
1588
|
-
return syscall1(.close, @as(
|
|
1602
|
+
return syscall1(.close, @as(u32, @bitCast(fd)));
|
|
1589
1603
|
}
|
|
1590
1604
|
|
|
1591
1605
|
pub const CLOSE_RANGE = packed struct(u32) {
|
|
@@ -1597,11 +1611,11 @@ pub const CLOSE_RANGE = packed struct(u32) {
|
|
|
1597
1611
|
};
|
|
1598
1612
|
|
|
1599
1613
|
pub fn close_range(first: fd_t, last: fd_t, flags: CLOSE_RANGE) usize {
|
|
1600
|
-
return syscall3(.close_range,
|
|
1614
|
+
return syscall3(.close_range, @as(u32, @bitCast(first)), @as(u32, @bitCast(last)), @as(u32, @bitCast(flags)));
|
|
1601
1615
|
}
|
|
1602
1616
|
|
|
1603
|
-
pub fn fchmod(fd:
|
|
1604
|
-
return syscall2(.fchmod, @as(
|
|
1617
|
+
pub fn fchmod(fd: fd_t, mode: mode_t) usize {
|
|
1618
|
+
return syscall2(.fchmod, @as(u32, @bitCast(fd)), mode);
|
|
1605
1619
|
}
|
|
1606
1620
|
|
|
1607
1621
|
pub fn chmod(path: [*:0]const u8, mode: mode_t) usize {
|
|
@@ -1612,16 +1626,16 @@ pub fn chmod(path: [*:0]const u8, mode: mode_t) usize {
|
|
|
1612
1626
|
}
|
|
1613
1627
|
}
|
|
1614
1628
|
|
|
1615
|
-
pub fn fchown(fd:
|
|
1629
|
+
pub fn fchown(fd: fd_t, owner: uid_t, group: gid_t) usize {
|
|
1616
1630
|
if (@hasField(SYS, "fchown32")) {
|
|
1617
|
-
return syscall3(.fchown32, @as(
|
|
1631
|
+
return syscall3(.fchown32, @as(u32, @bitCast(fd)), owner, group);
|
|
1618
1632
|
} else {
|
|
1619
|
-
return syscall3(.fchown, @as(
|
|
1633
|
+
return syscall3(.fchown, @as(u32, @bitCast(fd)), owner, group);
|
|
1620
1634
|
}
|
|
1621
1635
|
}
|
|
1622
1636
|
|
|
1623
|
-
pub fn fchownat(fd:
|
|
1624
|
-
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);
|
|
1625
1639
|
}
|
|
1626
1640
|
|
|
1627
1641
|
pub fn chown(path: [*:0]const u8, owner: uid_t, group: gid_t) usize {
|
|
@@ -1644,40 +1658,40 @@ pub fn lchown(path: [*:0]const u8, owner: uid_t, group: gid_t) usize {
|
|
|
1644
1658
|
}
|
|
1645
1659
|
}
|
|
1646
1660
|
|
|
1647
|
-
pub fn fchmodat(fd:
|
|
1648
|
-
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);
|
|
1649
1663
|
}
|
|
1650
1664
|
|
|
1651
|
-
pub fn fchmodat2(fd:
|
|
1652
|
-
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);
|
|
1653
1667
|
}
|
|
1654
1668
|
|
|
1655
1669
|
/// Can only be called on 32 bit systems. For 64 bit see `lseek`.
|
|
1656
|
-
pub fn llseek(fd:
|
|
1670
|
+
pub fn llseek(fd: fd_t, offset: off_t, result: ?*off_t, whence: u32) usize {
|
|
1657
1671
|
// NOTE: The offset parameter splitting is independent from the target
|
|
1658
1672
|
// endianness.
|
|
1659
1673
|
return syscall5(
|
|
1660
1674
|
.llseek,
|
|
1661
|
-
@as(
|
|
1662
|
-
@as(
|
|
1663
|
-
@as(
|
|
1675
|
+
@as(u32, @bitCast(fd)),
|
|
1676
|
+
@truncate(@as(u64, @bitCast(offset >> 32))),
|
|
1677
|
+
@truncate(@as(u64, @bitCast(offset))),
|
|
1664
1678
|
@intFromPtr(result),
|
|
1665
1679
|
whence,
|
|
1666
1680
|
);
|
|
1667
1681
|
}
|
|
1668
1682
|
|
|
1669
1683
|
/// Can only be called on 64 bit systems. For 32 bit see `llseek`.
|
|
1670
|
-
pub fn lseek(fd:
|
|
1671
|
-
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);
|
|
1672
1686
|
}
|
|
1673
1687
|
|
|
1674
1688
|
pub fn exit(status: i32) noreturn {
|
|
1675
|
-
_ = syscall1(.exit, @as(
|
|
1689
|
+
_ = syscall1(.exit, @as(u32, @bitCast(status)));
|
|
1676
1690
|
unreachable;
|
|
1677
1691
|
}
|
|
1678
1692
|
|
|
1679
1693
|
pub fn exit_group(status: i32) noreturn {
|
|
1680
|
-
_ = syscall1(.exit_group, @as(
|
|
1694
|
+
_ = syscall1(.exit_group, @as(u32, @bitCast(status)));
|
|
1681
1695
|
unreachable;
|
|
1682
1696
|
}
|
|
1683
1697
|
|
|
@@ -1743,15 +1757,15 @@ pub fn getrandom(buf: [*]u8, count: usize, flags: u32) usize {
|
|
|
1743
1757
|
}
|
|
1744
1758
|
|
|
1745
1759
|
pub fn kill(pid: pid_t, sig: SIG) usize {
|
|
1746
|
-
return syscall2(.kill, @as(
|
|
1760
|
+
return syscall2(.kill, @as(u32, @bitCast(pid)), @intFromEnum(sig));
|
|
1747
1761
|
}
|
|
1748
1762
|
|
|
1749
1763
|
pub fn tkill(tid: pid_t, sig: SIG) usize {
|
|
1750
|
-
return syscall2(.tkill, @as(
|
|
1764
|
+
return syscall2(.tkill, @as(u32, @bitCast(tid)), @intFromEnum(sig));
|
|
1751
1765
|
}
|
|
1752
1766
|
|
|
1753
1767
|
pub fn tgkill(tgid: pid_t, tid: pid_t, sig: SIG) usize {
|
|
1754
|
-
return syscall3(.tgkill, @as(
|
|
1768
|
+
return syscall3(.tgkill, @as(u32, @bitCast(tgid)), @as(u32, @bitCast(tid)), @intFromEnum(sig));
|
|
1755
1769
|
}
|
|
1756
1770
|
|
|
1757
1771
|
pub fn link(oldpath: [*:0]const u8, newpath: [*:0]const u8) usize {
|
|
@@ -1764,9 +1778,9 @@ pub fn link(oldpath: [*:0]const u8, newpath: [*:0]const u8) usize {
|
|
|
1764
1778
|
} else {
|
|
1765
1779
|
return syscall5(
|
|
1766
1780
|
.linkat,
|
|
1767
|
-
@as(
|
|
1781
|
+
@as(u32, @bitCast(@as(i32, AT.FDCWD))),
|
|
1768
1782
|
@intFromPtr(oldpath),
|
|
1769
|
-
@as(
|
|
1783
|
+
@as(u32, @bitCast(@as(i32, AT.FDCWD))),
|
|
1770
1784
|
@intFromPtr(newpath),
|
|
1771
1785
|
0,
|
|
1772
1786
|
);
|
|
@@ -1776,9 +1790,9 @@ pub fn link(oldpath: [*:0]const u8, newpath: [*:0]const u8) usize {
|
|
|
1776
1790
|
pub fn linkat(oldfd: fd_t, oldpath: [*:0]const u8, newfd: fd_t, newpath: [*:0]const u8, flags: u32) usize {
|
|
1777
1791
|
return syscall5(
|
|
1778
1792
|
.linkat,
|
|
1779
|
-
@as(
|
|
1793
|
+
@as(u32, @bitCast(oldfd)),
|
|
1780
1794
|
@intFromPtr(oldpath),
|
|
1781
|
-
@as(
|
|
1795
|
+
@as(u32, @bitCast(newfd)),
|
|
1782
1796
|
@intFromPtr(newpath),
|
|
1783
1797
|
flags,
|
|
1784
1798
|
);
|
|
@@ -1788,33 +1802,33 @@ pub fn unlink(path: [*:0]const u8) usize {
|
|
|
1788
1802
|
if (@hasField(SYS, "unlink")) {
|
|
1789
1803
|
return syscall1(.unlink, @intFromPtr(path));
|
|
1790
1804
|
} else {
|
|
1791
|
-
return syscall3(.unlinkat, @as(
|
|
1805
|
+
return syscall3(.unlinkat, @as(u32, @bitCast(@as(i32, AT.FDCWD))), @intFromPtr(path), 0);
|
|
1792
1806
|
}
|
|
1793
1807
|
}
|
|
1794
1808
|
|
|
1795
|
-
pub fn unlinkat(dirfd:
|
|
1796
|
-
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);
|
|
1797
1811
|
}
|
|
1798
1812
|
|
|
1799
|
-
pub fn waitpid(pid: pid_t, status: *
|
|
1800
|
-
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);
|
|
1801
1815
|
}
|
|
1802
1816
|
|
|
1803
|
-
pub fn wait4(pid: pid_t, status: *
|
|
1817
|
+
pub fn wait4(pid: pid_t, status: *i32, flags: u32, usage: ?*rusage) usize {
|
|
1804
1818
|
return syscall4(
|
|
1805
1819
|
.wait4,
|
|
1806
|
-
@as(
|
|
1820
|
+
@as(u32, @bitCast(pid)),
|
|
1807
1821
|
@intFromPtr(status),
|
|
1808
1822
|
flags,
|
|
1809
1823
|
@intFromPtr(usage),
|
|
1810
1824
|
);
|
|
1811
1825
|
}
|
|
1812
1826
|
|
|
1813
|
-
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 {
|
|
1814
1828
|
return syscall5(
|
|
1815
1829
|
.waitid,
|
|
1816
1830
|
@intFromEnum(id_type),
|
|
1817
|
-
@as(
|
|
1831
|
+
@as(u32, @bitCast(id)),
|
|
1818
1832
|
@intFromPtr(infop),
|
|
1819
1833
|
flags,
|
|
1820
1834
|
@intFromPtr(usage),
|
|
@@ -1913,14 +1927,14 @@ pub const Flock = extern struct {
|
|
|
1913
1927
|
|
|
1914
1928
|
pub fn fcntl(fd: fd_t, cmd: i32, arg: usize) usize {
|
|
1915
1929
|
if (@hasField(SYS, "fcntl64")) {
|
|
1916
|
-
return syscall3(.fcntl64, @as(
|
|
1930
|
+
return syscall3(.fcntl64, @as(u32, @bitCast(fd)), @as(u32, @bitCast(cmd)), arg);
|
|
1917
1931
|
} else {
|
|
1918
|
-
return syscall3(.fcntl, @as(
|
|
1932
|
+
return syscall3(.fcntl, @as(u32, @bitCast(fd)), @as(u32, @bitCast(cmd)), arg);
|
|
1919
1933
|
}
|
|
1920
1934
|
}
|
|
1921
1935
|
|
|
1922
1936
|
pub fn flock(fd: fd_t, operation: i32) usize {
|
|
1923
|
-
return syscall2(.flock, @as(
|
|
1937
|
+
return syscall2(.flock, @as(u32, @bitCast(fd)), @as(u32, @bitCast(operation)));
|
|
1924
1938
|
}
|
|
1925
1939
|
|
|
1926
1940
|
pub const Elf_Symndx = if (native_arch == .s390x) u64 else u32;
|
|
@@ -1960,7 +1974,7 @@ fn init_vdso_clock_gettime(clk: clockid_t, ts: *timespec) callconv(.c) usize {
|
|
|
1960
1974
|
pub fn clock_getres(clk_id: clockid_t, tp: *timespec) usize {
|
|
1961
1975
|
return syscall2(
|
|
1962
1976
|
if (@hasField(SYS, "clock_getres") and native_arch != .hexagon) .clock_getres else .clock_getres_time64,
|
|
1963
|
-
@
|
|
1977
|
+
@intFromEnum(clk_id),
|
|
1964
1978
|
@intFromPtr(tp),
|
|
1965
1979
|
);
|
|
1966
1980
|
}
|
|
@@ -1968,7 +1982,7 @@ pub fn clock_getres(clk_id: clockid_t, tp: *timespec) usize {
|
|
|
1968
1982
|
pub fn clock_settime(clk_id: clockid_t, tp: *const timespec) usize {
|
|
1969
1983
|
return syscall2(
|
|
1970
1984
|
if (@hasField(SYS, "clock_settime") and native_arch != .hexagon) .clock_settime else .clock_settime64,
|
|
1971
|
-
@
|
|
1985
|
+
@intFromEnum(clk_id),
|
|
1972
1986
|
@intFromPtr(tp),
|
|
1973
1987
|
);
|
|
1974
1988
|
}
|
|
@@ -2122,11 +2136,11 @@ pub fn setresgid(rgid: gid_t, egid: gid_t, sgid: gid_t) usize {
|
|
|
2122
2136
|
}
|
|
2123
2137
|
|
|
2124
2138
|
pub fn setpgid(pid: pid_t, pgid: pid_t) usize {
|
|
2125
|
-
return syscall2(.setpgid, @
|
|
2139
|
+
return syscall2(.setpgid, @as(u32, @bitCast(pid)), @as(u32, @bitCast(pgid)));
|
|
2126
2140
|
}
|
|
2127
2141
|
|
|
2128
2142
|
pub fn getpgid(pid: pid_t) usize {
|
|
2129
|
-
return syscall1(.getpgid, @
|
|
2143
|
+
return syscall1(.getpgid, @as(u32, @bitCast(pid)));
|
|
2130
2144
|
}
|
|
2131
2145
|
|
|
2132
2146
|
pub fn getgroups(size: usize, list: ?[*]gid_t) usize {
|
|
@@ -2150,7 +2164,7 @@ pub fn setsid() usize {
|
|
|
2150
2164
|
}
|
|
2151
2165
|
|
|
2152
2166
|
pub fn getsid(pid: pid_t) usize {
|
|
2153
|
-
return syscall1(.getsid, @
|
|
2167
|
+
return syscall1(.getsid, @as(u32, @bitCast(pid)));
|
|
2154
2168
|
}
|
|
2155
2169
|
|
|
2156
2170
|
pub fn getpid() pid_t {
|
|
@@ -2221,8 +2235,6 @@ pub fn sigaction(sig: SIG, noalias act: ?*const Sigaction, noalias oact: ?*Sigac
|
|
|
2221
2235
|
return 0;
|
|
2222
2236
|
}
|
|
2223
2237
|
|
|
2224
|
-
const usize_bits = @typeInfo(usize).int.bits;
|
|
2225
|
-
|
|
2226
2238
|
/// Defined as one greater than the largest defined signal number.
|
|
2227
2239
|
pub const NSIG = if (is_mips) 128 else 65;
|
|
2228
2240
|
|
|
@@ -2283,18 +2295,18 @@ pub fn sigismember(set: *const sigset_t, sig: SIG) bool {
|
|
|
2283
2295
|
return ((set.*)[index.word] & index.mask) != 0;
|
|
2284
2296
|
}
|
|
2285
2297
|
|
|
2286
|
-
pub fn getsockname(fd:
|
|
2298
|
+
pub fn getsockname(fd: fd_t, noalias addr: *sockaddr, noalias len: *socklen_t) usize {
|
|
2287
2299
|
if (native_arch == .x86) {
|
|
2288
|
-
return socketcall(SC.getsockname, &[3]usize{ @as(
|
|
2300
|
+
return socketcall(SC.getsockname, &[3]usize{ @as(u32, @bitCast(fd)), @intFromPtr(addr), @intFromPtr(len) });
|
|
2289
2301
|
}
|
|
2290
|
-
return syscall3(.getsockname, @as(
|
|
2302
|
+
return syscall3(.getsockname, @as(u32, @bitCast(fd)), @intFromPtr(addr), @intFromPtr(len));
|
|
2291
2303
|
}
|
|
2292
2304
|
|
|
2293
|
-
pub fn getpeername(fd:
|
|
2305
|
+
pub fn getpeername(fd: fd_t, noalias addr: *sockaddr, noalias len: *socklen_t) usize {
|
|
2294
2306
|
if (native_arch == .x86) {
|
|
2295
|
-
return socketcall(SC.getpeername, &[3]usize{ @as(
|
|
2307
|
+
return socketcall(SC.getpeername, &[3]usize{ @as(u32, @bitCast(fd)), @intFromPtr(addr), @intFromPtr(len) });
|
|
2296
2308
|
}
|
|
2297
|
-
return syscall3(.getpeername, @as(
|
|
2309
|
+
return syscall3(.getpeername, @as(u32, @bitCast(fd)), @intFromPtr(addr), @intFromPtr(len));
|
|
2298
2310
|
}
|
|
2299
2311
|
|
|
2300
2312
|
pub fn socket(domain: u32, socket_type: u32, protocol: u32) usize {
|
|
@@ -2304,58 +2316,52 @@ pub fn socket(domain: u32, socket_type: u32, protocol: u32) usize {
|
|
|
2304
2316
|
return syscall3(.socket, domain, socket_type, protocol);
|
|
2305
2317
|
}
|
|
2306
2318
|
|
|
2307
|
-
pub fn setsockopt(fd:
|
|
2319
|
+
pub fn setsockopt(fd: fd_t, level: i32, optname: u32, optval: [*]const u8, optlen: socklen_t) usize {
|
|
2308
2320
|
if (native_arch == .x86) {
|
|
2309
|
-
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)) });
|
|
2310
2322
|
}
|
|
2311
|
-
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)));
|
|
2312
2324
|
}
|
|
2313
2325
|
|
|
2314
|
-
pub fn getsockopt(fd:
|
|
2326
|
+
pub fn getsockopt(fd: fd_t, level: i32, optname: u32, noalias optval: [*]u8, noalias optlen: *socklen_t) usize {
|
|
2315
2327
|
if (native_arch == .x86) {
|
|
2316
|
-
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) });
|
|
2317
2329
|
}
|
|
2318
|
-
return syscall5(.getsockopt, @as(
|
|
2330
|
+
return syscall5(.getsockopt, @as(u32, @bitCast(fd)), @as(usize, @bitCast(@as(isize, level))), optname, @intFromPtr(optval), @intFromPtr(optlen));
|
|
2319
2331
|
}
|
|
2320
2332
|
|
|
2321
|
-
pub fn sendmsg(fd:
|
|
2322
|
-
const fd_usize = @as(usize, @bitCast(@as(isize, fd)));
|
|
2323
|
-
const msg_usize = @intFromPtr(msg);
|
|
2333
|
+
pub fn sendmsg(fd: fd_t, msg: *const msghdr_const, flags: u32) usize {
|
|
2324
2334
|
if (native_arch == .x86) {
|
|
2325
|
-
return socketcall(SC.sendmsg, &[3]usize{
|
|
2335
|
+
return socketcall(SC.sendmsg, &[3]usize{ @as(u32, @bitCast(fd)), @intFromPtr(msg), flags });
|
|
2326
2336
|
} else {
|
|
2327
|
-
return syscall3(.sendmsg,
|
|
2337
|
+
return syscall3(.sendmsg, @as(u32, @bitCast(fd)), @intFromPtr(msg), flags);
|
|
2328
2338
|
}
|
|
2329
2339
|
}
|
|
2330
2340
|
|
|
2331
|
-
pub fn sendmmsg(fd:
|
|
2332
|
-
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);
|
|
2333
2343
|
}
|
|
2334
2344
|
|
|
2335
|
-
pub fn connect(fd:
|
|
2336
|
-
const fd_usize = @as(usize, @bitCast(@as(isize, fd)));
|
|
2337
|
-
const addr_usize = @intFromPtr(addr);
|
|
2345
|
+
pub fn connect(fd: fd_t, addr: *const anyopaque, len: socklen_t) usize {
|
|
2338
2346
|
if (native_arch == .x86) {
|
|
2339
|
-
return socketcall(SC.connect, &[3]usize{
|
|
2347
|
+
return socketcall(SC.connect, &[3]usize{ @as(u32, @bitCast(fd)), @intFromPtr(addr), len });
|
|
2340
2348
|
} else {
|
|
2341
|
-
return syscall3(.connect,
|
|
2349
|
+
return syscall3(.connect, @as(u32, @bitCast(fd)), @intFromPtr(addr), len);
|
|
2342
2350
|
}
|
|
2343
2351
|
}
|
|
2344
2352
|
|
|
2345
|
-
pub fn recvmsg(fd:
|
|
2346
|
-
const fd_usize = @as(usize, @bitCast(@as(isize, fd)));
|
|
2347
|
-
const msg_usize = @intFromPtr(msg);
|
|
2353
|
+
pub fn recvmsg(fd: fd_t, msg: *msghdr, flags: u32) usize {
|
|
2348
2354
|
if (native_arch == .x86) {
|
|
2349
|
-
return socketcall(SC.recvmsg, &[3]usize{
|
|
2355
|
+
return socketcall(SC.recvmsg, &[3]usize{ @as(u32, @bitCast(fd)), @intFromPtr(msg), flags });
|
|
2350
2356
|
} else {
|
|
2351
|
-
return syscall3(.recvmsg,
|
|
2357
|
+
return syscall3(.recvmsg, @as(u32, @bitCast(fd)), @intFromPtr(msg), flags);
|
|
2352
2358
|
}
|
|
2353
2359
|
}
|
|
2354
2360
|
|
|
2355
|
-
pub fn recvmmsg(fd:
|
|
2361
|
+
pub fn recvmmsg(fd: fd_t, msgvec: ?[*]mmsghdr, vlen: u32, flags: u32, timeout: ?*timespec) usize {
|
|
2356
2362
|
return syscall5(
|
|
2357
2363
|
if (@hasField(SYS, "recvmmsg") and native_arch != .hexagon) .recvmmsg else .recvmmsg_time64,
|
|
2358
|
-
@as(
|
|
2364
|
+
@as(u32, @bitCast(fd)),
|
|
2359
2365
|
@intFromPtr(msgvec),
|
|
2360
2366
|
vlen,
|
|
2361
2367
|
flags,
|
|
@@ -2364,43 +2370,39 @@ pub fn recvmmsg(fd: i32, msgvec: ?[*]mmsghdr, vlen: u32, flags: u32, timeout: ?*
|
|
|
2364
2370
|
}
|
|
2365
2371
|
|
|
2366
2372
|
pub fn recvfrom(
|
|
2367
|
-
fd:
|
|
2373
|
+
fd: fd_t,
|
|
2368
2374
|
noalias buf: [*]u8,
|
|
2369
2375
|
len: usize,
|
|
2370
2376
|
flags: u32,
|
|
2371
2377
|
noalias addr: ?*sockaddr,
|
|
2372
2378
|
noalias alen: ?*socklen_t,
|
|
2373
2379
|
) usize {
|
|
2374
|
-
const fd_usize = @as(usize, @bitCast(@as(isize, fd)));
|
|
2375
|
-
const buf_usize = @intFromPtr(buf);
|
|
2376
|
-
const addr_usize = @intFromPtr(addr);
|
|
2377
|
-
const alen_usize = @intFromPtr(alen);
|
|
2378
2380
|
if (native_arch == .x86) {
|
|
2379
|
-
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) });
|
|
2380
2382
|
} else {
|
|
2381
|
-
return syscall6(.recvfrom,
|
|
2383
|
+
return syscall6(.recvfrom, @as(u32, @bitCast(fd)), @intFromPtr(buf), len, flags, @intFromPtr(addr), @intFromPtr(alen));
|
|
2382
2384
|
}
|
|
2383
2385
|
}
|
|
2384
2386
|
|
|
2385
|
-
pub fn shutdown(fd:
|
|
2387
|
+
pub fn shutdown(fd: fd_t, how: i32) usize {
|
|
2386
2388
|
if (native_arch == .x86) {
|
|
2387
|
-
return socketcall(SC.shutdown, &[2]usize{ @as(
|
|
2389
|
+
return socketcall(SC.shutdown, &[2]usize{ @as(u32, @bitCast(fd)), @as(u32, @bitCast(how)) });
|
|
2388
2390
|
}
|
|
2389
|
-
return syscall2(.shutdown, @as(
|
|
2391
|
+
return syscall2(.shutdown, @as(u32, @bitCast(fd)), @as(u32, @bitCast(how)));
|
|
2390
2392
|
}
|
|
2391
2393
|
|
|
2392
|
-
pub fn bind(fd:
|
|
2394
|
+
pub fn bind(fd: fd_t, addr: *const sockaddr, len: socklen_t) usize {
|
|
2393
2395
|
if (native_arch == .x86) {
|
|
2394
|
-
return socketcall(SC.bind, &[3]usize{ @as(
|
|
2396
|
+
return socketcall(SC.bind, &[3]usize{ @as(u32, @bitCast(fd)), @intFromPtr(addr), len });
|
|
2395
2397
|
}
|
|
2396
|
-
return syscall3(.bind, @as(
|
|
2398
|
+
return syscall3(.bind, @as(u32, @bitCast(fd)), @intFromPtr(addr), len);
|
|
2397
2399
|
}
|
|
2398
2400
|
|
|
2399
|
-
pub fn listen(fd:
|
|
2401
|
+
pub fn listen(fd: fd_t, backlog: u32) usize {
|
|
2400
2402
|
if (native_arch == .x86) {
|
|
2401
|
-
return socketcall(SC.listen, &[2]usize{ @as(
|
|
2403
|
+
return socketcall(SC.listen, &[2]usize{ @as(u32, @bitCast(fd)), backlog });
|
|
2402
2404
|
}
|
|
2403
|
-
return syscall2(.listen, @as(
|
|
2405
|
+
return syscall2(.listen, @as(u32, @bitCast(fd)), backlog);
|
|
2404
2406
|
}
|
|
2405
2407
|
|
|
2406
2408
|
pub fn sendto(fd: i32, buf: [*]const u8, len: usize, flags: u32, addr: ?*const sockaddr, alen: socklen_t) usize {
|
|
@@ -2410,51 +2412,41 @@ pub fn sendto(fd: i32, buf: [*]const u8, len: usize, flags: u32, addr: ?*const s
|
|
|
2410
2412
|
return syscall6(.sendto, @as(usize, @bitCast(@as(isize, fd))), @intFromPtr(buf), len, flags, @intFromPtr(addr), @as(usize, @intCast(alen)));
|
|
2411
2413
|
}
|
|
2412
2414
|
|
|
2413
|
-
pub fn sendfile(outfd:
|
|
2414
|
-
|
|
2415
|
-
|
|
2416
|
-
|
|
2417
|
-
|
|
2418
|
-
|
|
2419
|
-
|
|
2420
|
-
|
|
2421
|
-
);
|
|
2422
|
-
} else {
|
|
2423
|
-
return syscall4(
|
|
2424
|
-
.sendfile,
|
|
2425
|
-
@as(usize, @bitCast(@as(isize, outfd))),
|
|
2426
|
-
@as(usize, @bitCast(@as(isize, infd))),
|
|
2427
|
-
@intFromPtr(offset),
|
|
2428
|
-
count,
|
|
2429
|
-
);
|
|
2430
|
-
}
|
|
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
|
+
);
|
|
2431
2423
|
}
|
|
2432
2424
|
|
|
2433
|
-
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 {
|
|
2434
2426
|
if (native_arch == .x86) {
|
|
2435
2427
|
return socketcall(SC.socketpair, &[4]usize{ domain, socket_type, protocol, @intFromPtr(fd) });
|
|
2436
2428
|
}
|
|
2437
2429
|
return syscall4(.socketpair, domain, socket_type, protocol, @intFromPtr(fd));
|
|
2438
2430
|
}
|
|
2439
2431
|
|
|
2440
|
-
pub fn accept(fd:
|
|
2432
|
+
pub fn accept(fd: fd_t, noalias addr: ?*sockaddr, noalias len: ?*socklen_t) usize {
|
|
2441
2433
|
if (native_arch == .x86) {
|
|
2442
|
-
return socketcall(SC.accept, &[4]usize{ @as(
|
|
2434
|
+
return socketcall(SC.accept, &[4]usize{ @as(u32, @bitCast(fd)), @intFromPtr(addr), @intFromPtr(len), 0 });
|
|
2443
2435
|
}
|
|
2444
2436
|
return accept4(fd, addr, len, 0);
|
|
2445
2437
|
}
|
|
2446
2438
|
|
|
2447
|
-
pub fn accept4(fd:
|
|
2439
|
+
pub fn accept4(fd: fd_t, noalias addr: ?*sockaddr, noalias len: ?*socklen_t, flags: u32) usize {
|
|
2448
2440
|
if (native_arch == .x86) {
|
|
2449
|
-
return socketcall(SC.accept4, &[4]usize{ @as(
|
|
2441
|
+
return socketcall(SC.accept4, &[4]usize{ @as(u32, @bitCast(fd)), @intFromPtr(addr), @intFromPtr(len), flags });
|
|
2450
2442
|
}
|
|
2451
|
-
return syscall4(.accept4, @as(
|
|
2443
|
+
return syscall4(.accept4, @as(u32, @bitCast(fd)), @intFromPtr(addr), @intFromPtr(len), flags);
|
|
2452
2444
|
}
|
|
2453
2445
|
|
|
2454
|
-
pub fn statx(dirfd:
|
|
2446
|
+
pub fn statx(dirfd: fd_t, path: [*:0]const u8, flags: u32, mask: STATX, statx_buf: *Statx) usize {
|
|
2455
2447
|
return syscall5(
|
|
2456
2448
|
.statx,
|
|
2457
|
-
@as(
|
|
2449
|
+
@as(u32, @bitCast(dirfd)),
|
|
2458
2450
|
@intFromPtr(path),
|
|
2459
2451
|
flags,
|
|
2460
2452
|
@as(u32, @bitCast(mask)),
|
|
@@ -2471,7 +2463,7 @@ pub fn llistxattr(path: [*:0]const u8, list: [*]u8, size: usize) usize {
|
|
|
2471
2463
|
}
|
|
2472
2464
|
|
|
2473
2465
|
pub fn flistxattr(fd: fd_t, list: [*]u8, size: usize) usize {
|
|
2474
|
-
return syscall3(.flistxattr, @as(
|
|
2466
|
+
return syscall3(.flistxattr, @as(u32, @bitCast(fd)), @intFromPtr(list), size);
|
|
2475
2467
|
}
|
|
2476
2468
|
|
|
2477
2469
|
pub fn getxattr(path: [*:0]const u8, name: [*:0]const u8, value: [*]u8, size: usize) usize {
|
|
@@ -2483,7 +2475,7 @@ pub fn lgetxattr(path: [*:0]const u8, name: [*:0]const u8, value: [*]u8, size: u
|
|
|
2483
2475
|
}
|
|
2484
2476
|
|
|
2485
2477
|
pub fn fgetxattr(fd: fd_t, name: [*:0]const u8, value: [*]u8, size: usize) usize {
|
|
2486
|
-
return syscall4(.fgetxattr, @as(
|
|
2478
|
+
return syscall4(.fgetxattr, @as(u32, @bitCast(fd)), @intFromPtr(name), @intFromPtr(value), size);
|
|
2487
2479
|
}
|
|
2488
2480
|
|
|
2489
2481
|
pub fn setxattr(path: [*:0]const u8, name: [*:0]const u8, value: [*]const u8, size: usize, flags: usize) usize {
|
|
@@ -2495,7 +2487,7 @@ pub fn lsetxattr(path: [*:0]const u8, name: [*:0]const u8, value: [*]const u8, s
|
|
|
2495
2487
|
}
|
|
2496
2488
|
|
|
2497
2489
|
pub fn fsetxattr(fd: fd_t, name: [*:0]const u8, value: [*]const u8, size: usize, flags: usize) usize {
|
|
2498
|
-
return syscall5(.fsetxattr, @as(
|
|
2490
|
+
return syscall5(.fsetxattr, @as(u32, @bitCast(fd)), @intFromPtr(name), @intFromPtr(value), size, flags);
|
|
2499
2491
|
}
|
|
2500
2492
|
|
|
2501
2493
|
pub fn removexattr(path: [*:0]const u8, name: [*:0]const u8) usize {
|
|
@@ -2506,8 +2498,8 @@ pub fn lremovexattr(path: [*:0]const u8, name: [*:0]const u8) usize {
|
|
|
2506
2498
|
return syscall2(.lremovexattr, @intFromPtr(path), @intFromPtr(name));
|
|
2507
2499
|
}
|
|
2508
2500
|
|
|
2509
|
-
pub fn fremovexattr(fd:
|
|
2510
|
-
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));
|
|
2511
2503
|
}
|
|
2512
2504
|
|
|
2513
2505
|
pub const sched_param = extern struct {
|
|
@@ -2537,27 +2529,27 @@ pub const SCHED = packed struct(i32) {
|
|
|
2537
2529
|
};
|
|
2538
2530
|
|
|
2539
2531
|
pub fn sched_setparam(pid: pid_t, param: *const sched_param) usize {
|
|
2540
|
-
return syscall2(.sched_setparam, @as(
|
|
2532
|
+
return syscall2(.sched_setparam, @as(u32, @bitCast(pid)), @intFromPtr(param));
|
|
2541
2533
|
}
|
|
2542
2534
|
|
|
2543
2535
|
pub fn sched_getparam(pid: pid_t, param: *sched_param) usize {
|
|
2544
|
-
return syscall2(.sched_getparam, @as(
|
|
2536
|
+
return syscall2(.sched_getparam, @as(u32, @bitCast(pid)), @intFromPtr(param));
|
|
2545
2537
|
}
|
|
2546
2538
|
|
|
2547
2539
|
pub fn sched_setscheduler(pid: pid_t, policy: SCHED, param: *const sched_param) usize {
|
|
2548
|
-
return syscall3(.sched_setscheduler, @as(
|
|
2540
|
+
return syscall3(.sched_setscheduler, @as(u32, @bitCast(pid)), @as(u32, @bitCast(policy)), @intFromPtr(param));
|
|
2549
2541
|
}
|
|
2550
2542
|
|
|
2551
2543
|
pub fn sched_getscheduler(pid: pid_t) usize {
|
|
2552
|
-
return syscall1(.sched_getscheduler, @as(
|
|
2544
|
+
return syscall1(.sched_getscheduler, @as(u32, @bitCast(pid)));
|
|
2553
2545
|
}
|
|
2554
2546
|
|
|
2555
2547
|
pub fn sched_get_priority_max(policy: SCHED) usize {
|
|
2556
|
-
return syscall1(.sched_get_priority_max, @
|
|
2548
|
+
return syscall1(.sched_get_priority_max, @as(u32, @bitCast(policy)));
|
|
2557
2549
|
}
|
|
2558
2550
|
|
|
2559
2551
|
pub fn sched_get_priority_min(policy: SCHED) usize {
|
|
2560
|
-
return syscall1(.sched_get_priority_min, @
|
|
2552
|
+
return syscall1(.sched_get_priority_min, @as(u32, @bitCast(policy)));
|
|
2561
2553
|
}
|
|
2562
2554
|
|
|
2563
2555
|
pub fn getcpu(cpu: ?*usize, node: ?*usize) usize {
|
|
@@ -2576,24 +2568,24 @@ pub const sched_attr = extern struct {
|
|
|
2576
2568
|
period: u64 = 0,
|
|
2577
2569
|
};
|
|
2578
2570
|
|
|
2579
|
-
pub fn sched_setattr(pid: pid_t, attr: *const sched_attr, flags:
|
|
2580
|
-
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);
|
|
2581
2573
|
}
|
|
2582
2574
|
|
|
2583
|
-
pub fn sched_getattr(pid: pid_t, attr: *sched_attr, size:
|
|
2584
|
-
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);
|
|
2585
2577
|
}
|
|
2586
2578
|
|
|
2587
2579
|
pub fn sched_rr_get_interval(pid: pid_t, tp: *timespec) usize {
|
|
2588
|
-
return syscall2(.sched_rr_get_interval, @as(
|
|
2580
|
+
return syscall2(.sched_rr_get_interval, @as(u32, @bitCast(pid)), @intFromPtr(tp));
|
|
2589
2581
|
}
|
|
2590
2582
|
|
|
2591
2583
|
pub fn sched_yield() usize {
|
|
2592
2584
|
return syscall0(.sched_yield);
|
|
2593
2585
|
}
|
|
2594
2586
|
|
|
2595
|
-
pub fn sched_getaffinity(pid: pid_t, size:
|
|
2596
|
-
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));
|
|
2597
2589
|
if (@as(isize, @bitCast(rc)) < 0) return rc;
|
|
2598
2590
|
if (rc < size) @memset(@as([*]u8, @ptrCast(set))[rc..size], 0);
|
|
2599
2591
|
return 0;
|
|
@@ -2601,7 +2593,7 @@ pub fn sched_getaffinity(pid: pid_t, size: usize, set: *cpu_set_t) usize {
|
|
|
2601
2593
|
|
|
2602
2594
|
pub fn sched_setaffinity(pid: pid_t, set: *const cpu_set_t) !void {
|
|
2603
2595
|
const size = @sizeOf(cpu_set_t);
|
|
2604
|
-
const rc = syscall3(.sched_setaffinity, @as(
|
|
2596
|
+
const rc = syscall3(.sched_setaffinity, @as(u32, @bitCast(pid)), size, @intFromPtr(set));
|
|
2605
2597
|
|
|
2606
2598
|
switch (errno(rc)) {
|
|
2607
2599
|
.SUCCESS => return,
|
|
@@ -2613,25 +2605,25 @@ pub fn epoll_create() usize {
|
|
|
2613
2605
|
return epoll_create1(0);
|
|
2614
2606
|
}
|
|
2615
2607
|
|
|
2616
|
-
pub fn epoll_create1(flags:
|
|
2608
|
+
pub fn epoll_create1(flags: u32) usize {
|
|
2617
2609
|
return syscall1(.epoll_create1, flags);
|
|
2618
2610
|
}
|
|
2619
2611
|
|
|
2620
|
-
pub fn epoll_ctl(epoll_fd:
|
|
2621
|
-
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));
|
|
2622
2614
|
}
|
|
2623
2615
|
|
|
2624
|
-
pub fn epoll_wait(epoll_fd:
|
|
2616
|
+
pub fn epoll_wait(epoll_fd: fd_t, events: [*]epoll_event, maxevents: u32, timeout: i32) usize {
|
|
2625
2617
|
return epoll_pwait(epoll_fd, events, maxevents, timeout, null);
|
|
2626
2618
|
}
|
|
2627
2619
|
|
|
2628
|
-
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 {
|
|
2629
2621
|
return syscall6(
|
|
2630
2622
|
.epoll_pwait,
|
|
2631
|
-
@as(
|
|
2623
|
+
@as(u32, @bitCast(epoll_fd)),
|
|
2632
2624
|
@intFromPtr(events),
|
|
2633
|
-
|
|
2634
|
-
@as(
|
|
2625
|
+
maxevents,
|
|
2626
|
+
@as(u32, @bitCast(timeout)),
|
|
2635
2627
|
@intFromPtr(sigmask),
|
|
2636
2628
|
NSIG / 8,
|
|
2637
2629
|
);
|
|
@@ -2654,18 +2646,18 @@ pub const itimerspec = extern struct {
|
|
|
2654
2646
|
it_value: timespec,
|
|
2655
2647
|
};
|
|
2656
2648
|
|
|
2657
|
-
pub fn timerfd_gettime(fd:
|
|
2649
|
+
pub fn timerfd_gettime(fd: fd_t, curr_value: *itimerspec) usize {
|
|
2658
2650
|
return syscall2(
|
|
2659
2651
|
if (@hasField(SYS, "timerfd_gettime") and native_arch != .hexagon) .timerfd_gettime else .timerfd_gettime64,
|
|
2660
|
-
@
|
|
2652
|
+
@as(u32, @bitCast(fd)),
|
|
2661
2653
|
@intFromPtr(curr_value),
|
|
2662
2654
|
);
|
|
2663
2655
|
}
|
|
2664
2656
|
|
|
2665
|
-
pub fn timerfd_settime(fd:
|
|
2657
|
+
pub fn timerfd_settime(fd: fd_t, flags: TFD.TIMER, new_value: *const itimerspec, old_value: ?*itimerspec) usize {
|
|
2666
2658
|
return syscall4(
|
|
2667
2659
|
if (@hasField(SYS, "timerfd_settime") and native_arch != .hexagon) .timerfd_settime else .timerfd_settime64,
|
|
2668
|
-
@
|
|
2660
|
+
@as(u32, @bitCast(fd)),
|
|
2669
2661
|
@as(u32, @bitCast(flags)),
|
|
2670
2662
|
@intFromPtr(new_value),
|
|
2671
2663
|
@intFromPtr(old_value),
|
|
@@ -2680,11 +2672,11 @@ pub const ITIMER = enum(i32) {
|
|
|
2680
2672
|
};
|
|
2681
2673
|
|
|
2682
2674
|
pub fn getitimer(which: i32, curr_value: *itimerspec) usize {
|
|
2683
|
-
return syscall2(.getitimer, @as(
|
|
2675
|
+
return syscall2(.getitimer, @as(u32, @bitCast(which)), @intFromPtr(curr_value));
|
|
2684
2676
|
}
|
|
2685
2677
|
|
|
2686
2678
|
pub fn setitimer(which: i32, new_value: *const itimerspec, old_value: ?*itimerspec) usize {
|
|
2687
|
-
return syscall3(.setitimer, @as(
|
|
2679
|
+
return syscall3(.setitimer, @as(u32, @bitCast(which)), @intFromPtr(new_value), @intFromPtr(old_value));
|
|
2688
2680
|
}
|
|
2689
2681
|
|
|
2690
2682
|
pub fn unshare(flags: usize) usize {
|
|
@@ -2692,7 +2684,7 @@ pub fn unshare(flags: usize) usize {
|
|
|
2692
2684
|
}
|
|
2693
2685
|
|
|
2694
2686
|
pub fn setns(fd: fd_t, flags: u32) usize {
|
|
2695
|
-
return syscall2(.setns, @as(
|
|
2687
|
+
return syscall2(.setns, @as(u32, @bitCast(fd)), flags);
|
|
2696
2688
|
}
|
|
2697
2689
|
|
|
2698
2690
|
pub fn capget(hdrp: *cap_user_header_t, datap: *cap_user_data_t) usize {
|
|
@@ -2715,12 +2707,12 @@ pub fn io_uring_setup(entries: u32, p: *io_uring_params) usize {
|
|
|
2715
2707
|
return syscall2(.io_uring_setup, entries, @intFromPtr(p));
|
|
2716
2708
|
}
|
|
2717
2709
|
|
|
2718
|
-
pub fn io_uring_enter(fd:
|
|
2719
|
-
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);
|
|
2720
2712
|
}
|
|
2721
2713
|
|
|
2722
|
-
pub fn io_uring_register(fd:
|
|
2723
|
-
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);
|
|
2724
2716
|
}
|
|
2725
2717
|
|
|
2726
2718
|
pub fn memfd_create(name: [*:0]const u8, flags: u32) usize {
|
|
@@ -2728,43 +2720,43 @@ pub fn memfd_create(name: [*:0]const u8, flags: u32) usize {
|
|
|
2728
2720
|
}
|
|
2729
2721
|
|
|
2730
2722
|
pub fn getrusage(who: i32, usage: *rusage) usize {
|
|
2731
|
-
return syscall2(.getrusage, @as(
|
|
2723
|
+
return syscall2(.getrusage, @as(u32, @bitCast(who)), @intFromPtr(usage));
|
|
2732
2724
|
}
|
|
2733
2725
|
|
|
2734
2726
|
pub fn tcgetattr(fd: fd_t, termios_p: *termios) usize {
|
|
2735
|
-
return syscall3(.ioctl, @as(
|
|
2727
|
+
return syscall3(.ioctl, @as(u32, @bitCast(fd)), T.CGETS, @intFromPtr(termios_p));
|
|
2736
2728
|
}
|
|
2737
2729
|
|
|
2738
2730
|
pub fn tcsetattr(fd: fd_t, optional_action: TCSA, termios_p: *const termios) usize {
|
|
2739
|
-
return syscall3(.ioctl, @as(
|
|
2731
|
+
return syscall3(.ioctl, @as(u32, @bitCast(fd)), T.CSETS + @intFromEnum(optional_action), @intFromPtr(termios_p));
|
|
2740
2732
|
}
|
|
2741
2733
|
|
|
2742
2734
|
pub fn tcgetpgrp(fd: fd_t, pgrp: *pid_t) usize {
|
|
2743
|
-
return syscall3(.ioctl, @as(
|
|
2735
|
+
return syscall3(.ioctl, @as(u32, @bitCast(fd)), T.IOCGPGRP, @intFromPtr(pgrp));
|
|
2744
2736
|
}
|
|
2745
2737
|
|
|
2746
2738
|
pub fn tcsetpgrp(fd: fd_t, pgrp: *const pid_t) usize {
|
|
2747
|
-
return syscall3(.ioctl, @as(
|
|
2739
|
+
return syscall3(.ioctl, @as(u32, @bitCast(fd)), T.IOCSPGRP, @intFromPtr(pgrp));
|
|
2748
2740
|
}
|
|
2749
2741
|
|
|
2750
2742
|
pub fn tcdrain(fd: fd_t) usize {
|
|
2751
|
-
return syscall3(.ioctl, @as(
|
|
2743
|
+
return syscall3(.ioctl, @as(u32, @bitCast(fd)), T.CSBRK, 1);
|
|
2752
2744
|
}
|
|
2753
2745
|
|
|
2754
2746
|
pub fn ioctl(fd: fd_t, request: u32, arg: usize) usize {
|
|
2755
|
-
return syscall3(.ioctl, @as(
|
|
2747
|
+
return syscall3(.ioctl, @as(u32, @bitCast(fd)), request, arg);
|
|
2756
2748
|
}
|
|
2757
2749
|
|
|
2758
2750
|
pub fn signalfd(fd: fd_t, mask: *const sigset_t, flags: u32) usize {
|
|
2759
|
-
return syscall4(.signalfd4, @as(
|
|
2751
|
+
return syscall4(.signalfd4, @as(u32, @bitCast(fd)), @intFromPtr(mask), NSIG / 8, flags);
|
|
2760
2752
|
}
|
|
2761
2753
|
|
|
2762
|
-
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 {
|
|
2763
2755
|
return syscall6(
|
|
2764
2756
|
.copy_file_range,
|
|
2765
|
-
@as(
|
|
2757
|
+
@as(u32, @bitCast(fd_in)),
|
|
2766
2758
|
@intFromPtr(off_in),
|
|
2767
|
-
@as(
|
|
2759
|
+
@as(u32, @bitCast(fd_out)),
|
|
2768
2760
|
@intFromPtr(off_out),
|
|
2769
2761
|
len,
|
|
2770
2762
|
flags,
|
|
@@ -2780,19 +2772,19 @@ pub fn sync() void {
|
|
|
2780
2772
|
}
|
|
2781
2773
|
|
|
2782
2774
|
pub fn syncfs(fd: fd_t) usize {
|
|
2783
|
-
return syscall1(.syncfs, @as(
|
|
2775
|
+
return syscall1(.syncfs, @as(u32, @bitCast(fd)));
|
|
2784
2776
|
}
|
|
2785
2777
|
|
|
2786
2778
|
pub fn fsync(fd: fd_t) usize {
|
|
2787
|
-
return syscall1(.fsync, @as(
|
|
2779
|
+
return syscall1(.fsync, @as(u32, @bitCast(fd)));
|
|
2788
2780
|
}
|
|
2789
2781
|
|
|
2790
2782
|
pub fn fdatasync(fd: fd_t) usize {
|
|
2791
|
-
return syscall1(.fdatasync, @as(
|
|
2783
|
+
return syscall1(.fdatasync, @as(u32, @bitCast(fd)));
|
|
2792
2784
|
}
|
|
2793
2785
|
|
|
2794
2786
|
pub fn prctl(option: i32, arg2: usize, arg3: usize, arg4: usize, arg5: usize) usize {
|
|
2795
|
-
return syscall5(.prctl, @as(
|
|
2787
|
+
return syscall5(.prctl, @as(u32, @bitCast(option)), arg2, arg3, arg4, arg5);
|
|
2796
2788
|
}
|
|
2797
2789
|
|
|
2798
2790
|
pub fn getrlimit(resource: rlimit_resource, rlim: *rlimit) usize {
|
|
@@ -2808,8 +2800,8 @@ pub fn setrlimit(resource: rlimit_resource, rlim: *const rlimit) usize {
|
|
|
2808
2800
|
pub fn prlimit(pid: pid_t, resource: rlimit_resource, new_limit: ?*const rlimit, old_limit: ?*rlimit) usize {
|
|
2809
2801
|
return syscall4(
|
|
2810
2802
|
.prlimit64,
|
|
2811
|
-
@as(
|
|
2812
|
-
@as(
|
|
2803
|
+
@as(u32, @bitCast(pid)),
|
|
2804
|
+
@as(u32, @bitCast(@as(i32, @intFromEnum(resource)))),
|
|
2813
2805
|
@intFromPtr(new_limit),
|
|
2814
2806
|
@intFromPtr(old_limit),
|
|
2815
2807
|
);
|
|
@@ -2824,14 +2816,14 @@ pub fn madvise(address: [*]u8, len: usize, advice: u32) usize {
|
|
|
2824
2816
|
}
|
|
2825
2817
|
|
|
2826
2818
|
pub fn pidfd_open(pid: pid_t, flags: u32) usize {
|
|
2827
|
-
return syscall2(.pidfd_open, @as(
|
|
2819
|
+
return syscall2(.pidfd_open, @as(u32, @bitCast(pid)), flags);
|
|
2828
2820
|
}
|
|
2829
2821
|
|
|
2830
2822
|
pub fn pidfd_getfd(pidfd: fd_t, targetfd: fd_t, flags: u32) usize {
|
|
2831
2823
|
return syscall3(
|
|
2832
2824
|
.pidfd_getfd,
|
|
2833
|
-
@as(
|
|
2834
|
-
@as(
|
|
2825
|
+
@as(u32, @bitCast(pidfd)),
|
|
2826
|
+
@as(u32, @bitCast(targetfd)),
|
|
2835
2827
|
flags,
|
|
2836
2828
|
);
|
|
2837
2829
|
}
|
|
@@ -2839,7 +2831,7 @@ pub fn pidfd_getfd(pidfd: fd_t, targetfd: fd_t, flags: u32) usize {
|
|
|
2839
2831
|
pub fn pidfd_send_signal(pidfd: fd_t, sig: SIG, info: ?*siginfo_t, flags: u32) usize {
|
|
2840
2832
|
return syscall4(
|
|
2841
2833
|
.pidfd_send_signal,
|
|
2842
|
-
@as(
|
|
2834
|
+
@as(u32, @bitCast(pidfd)),
|
|
2843
2835
|
@intFromEnum(sig),
|
|
2844
2836
|
@intFromPtr(info),
|
|
2845
2837
|
flags,
|
|
@@ -2849,7 +2841,7 @@ pub fn pidfd_send_signal(pidfd: fd_t, sig: SIG, info: ?*siginfo_t, flags: u32) u
|
|
|
2849
2841
|
pub fn process_vm_readv(pid: pid_t, local: []const iovec, remote: []const iovec_const, flags: usize) usize {
|
|
2850
2842
|
return syscall6(
|
|
2851
2843
|
.process_vm_readv,
|
|
2852
|
-
@as(
|
|
2844
|
+
@as(u32, @bitCast(pid)),
|
|
2853
2845
|
@intFromPtr(local.ptr),
|
|
2854
2846
|
local.len,
|
|
2855
2847
|
@intFromPtr(remote.ptr),
|
|
@@ -2861,7 +2853,7 @@ pub fn process_vm_readv(pid: pid_t, local: []const iovec, remote: []const iovec_
|
|
|
2861
2853
|
pub fn process_vm_writev(pid: pid_t, local: []const iovec_const, remote: []const iovec_const, flags: usize) usize {
|
|
2862
2854
|
return syscall6(
|
|
2863
2855
|
.process_vm_writev,
|
|
2864
|
-
@as(
|
|
2856
|
+
@as(u32, @bitCast(pid)),
|
|
2865
2857
|
@intFromPtr(local.ptr),
|
|
2866
2858
|
local.len,
|
|
2867
2859
|
@intFromPtr(remote.ptr),
|
|
@@ -2871,50 +2863,43 @@ pub fn process_vm_writev(pid: pid_t, local: []const iovec_const, remote: []const
|
|
|
2871
2863
|
}
|
|
2872
2864
|
|
|
2873
2865
|
pub fn fadvise(fd: fd_t, offset: i64, len: i64, advice: usize) usize {
|
|
2874
|
-
if (
|
|
2875
|
-
//
|
|
2876
|
-
// 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.
|
|
2877
2869
|
|
|
2878
2870
|
const offset_halves = splitValue64(offset);
|
|
2879
2871
|
const length_halves = splitValue64(len);
|
|
2880
2872
|
|
|
2881
|
-
return
|
|
2882
|
-
.
|
|
2883
|
-
@as(
|
|
2884
|
-
|
|
2873
|
+
return syscall7(
|
|
2874
|
+
.fadvise64,
|
|
2875
|
+
@as(u32, @bitCast(fd)),
|
|
2876
|
+
0,
|
|
2885
2877
|
offset_halves[0],
|
|
2886
2878
|
offset_halves[1],
|
|
2887
2879
|
length_halves[0],
|
|
2888
2880
|
length_halves[1],
|
|
2881
|
+
advice,
|
|
2889
2882
|
);
|
|
2890
|
-
} else if (
|
|
2891
|
-
// MIPS O32 does not deal with the register alignment issue, so pass a dummy value.
|
|
2892
|
-
|
|
2883
|
+
} else if (require_aligned_register_pair) {
|
|
2893
2884
|
const offset_halves = splitValue64(offset);
|
|
2894
2885
|
const length_halves = splitValue64(len);
|
|
2895
2886
|
|
|
2896
|
-
return
|
|
2897
|
-
.
|
|
2898
|
-
@as(
|
|
2899
|
-
|
|
2887
|
+
return syscall6(
|
|
2888
|
+
.fadvise64_64,
|
|
2889
|
+
@as(u32, @bitCast(fd)),
|
|
2890
|
+
advice,
|
|
2900
2891
|
offset_halves[0],
|
|
2901
2892
|
offset_halves[1],
|
|
2902
2893
|
length_halves[0],
|
|
2903
2894
|
length_halves[1],
|
|
2904
|
-
advice,
|
|
2905
2895
|
);
|
|
2906
|
-
} else if (
|
|
2907
|
-
// Other 32-bit architectures do not require register alignment.
|
|
2908
|
-
|
|
2896
|
+
} else if (@sizeOf(syscall_arg_t) < @sizeOf(u64)) {
|
|
2909
2897
|
const offset_halves = splitValue64(offset);
|
|
2910
2898
|
const length_halves = splitValue64(len);
|
|
2911
2899
|
|
|
2912
2900
|
return syscall6(
|
|
2913
|
-
|
|
2914
|
-
|
|
2915
|
-
else => .fadvise64_64,
|
|
2916
|
-
},
|
|
2917
|
-
@as(usize, @bitCast(@as(isize, fd))),
|
|
2901
|
+
.fadvise64_64,
|
|
2902
|
+
@as(u32, @bitCast(fd)),
|
|
2918
2903
|
offset_halves[0],
|
|
2919
2904
|
offset_halves[1],
|
|
2920
2905
|
length_halves[0],
|
|
@@ -2922,14 +2907,11 @@ pub fn fadvise(fd: fd_t, offset: i64, len: i64, advice: usize) usize {
|
|
|
2922
2907
|
advice,
|
|
2923
2908
|
);
|
|
2924
2909
|
} else {
|
|
2925
|
-
// On 64-bit architectures, fadvise64_64 and fadvise64 are the same. Generally, older ports
|
|
2926
|
-
// call it fadvise64 (x86, PowerPC, etc), while newer ports call it fadvise64_64 (RISC-V,
|
|
2927
|
-
// LoongArch, etc). SPARC is the odd one out because it has both.
|
|
2928
2910
|
return syscall4(
|
|
2929
|
-
|
|
2930
|
-
@as(
|
|
2931
|
-
@as(
|
|
2932
|
-
@as(
|
|
2911
|
+
.fadvise64,
|
|
2912
|
+
@as(u32, @bitCast(fd)),
|
|
2913
|
+
@as(u64, @bitCast(offset)),
|
|
2914
|
+
@as(u64, @bitCast(len)),
|
|
2933
2915
|
advice,
|
|
2934
2916
|
);
|
|
2935
2917
|
}
|
|
@@ -2945,9 +2927,9 @@ pub fn perf_event_open(
|
|
|
2945
2927
|
return syscall5(
|
|
2946
2928
|
.perf_event_open,
|
|
2947
2929
|
@intFromPtr(attr),
|
|
2948
|
-
@as(
|
|
2949
|
-
@as(
|
|
2950
|
-
@as(
|
|
2930
|
+
@as(u32, @bitCast(pid)),
|
|
2931
|
+
@as(u32, @bitCast(cpu)),
|
|
2932
|
+
@as(u32, @bitCast(group_fd)),
|
|
2951
2933
|
flags,
|
|
2952
2934
|
);
|
|
2953
2935
|
}
|
|
@@ -2966,7 +2948,7 @@ pub fn ptrace(
|
|
|
2966
2948
|
return syscall5(
|
|
2967
2949
|
.ptrace,
|
|
2968
2950
|
req,
|
|
2969
|
-
@as(
|
|
2951
|
+
@as(u32, @bitCast(pid)),
|
|
2970
2952
|
addr,
|
|
2971
2953
|
data,
|
|
2972
2954
|
addr2,
|
|
@@ -2988,17 +2970,27 @@ pub fn cachestat(
|
|
|
2988
2970
|
) usize {
|
|
2989
2971
|
return syscall4(
|
|
2990
2972
|
.cachestat,
|
|
2991
|
-
@as(
|
|
2973
|
+
@as(u32, @bitCast(fd)),
|
|
2992
2974
|
@intFromPtr(cstat_range),
|
|
2993
2975
|
@intFromPtr(cstat),
|
|
2994
2976
|
flags,
|
|
2995
2977
|
);
|
|
2996
2978
|
}
|
|
2997
2979
|
|
|
2998
|
-
pub fn map_shadow_stack(addr:
|
|
2980
|
+
pub fn map_shadow_stack(addr: usize, size: usize, flags: u32) usize {
|
|
2999
2981
|
return syscall3(.map_shadow_stack, addr, size, flags);
|
|
3000
2982
|
}
|
|
3001
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
|
+
|
|
3002
2994
|
pub const Sysinfo = switch (native_abi) {
|
|
3003
2995
|
.gnux32, .muslx32 => extern struct {
|
|
3004
2996
|
/// Seconds since boot
|
|
@@ -3659,13 +3651,6 @@ pub const E = switch (native_arch) {
|
|
|
3659
3651
|
},
|
|
3660
3652
|
};
|
|
3661
3653
|
|
|
3662
|
-
pub const pid_t = i32;
|
|
3663
|
-
pub const fd_t = i32;
|
|
3664
|
-
pub const socket_t = i32;
|
|
3665
|
-
pub const uid_t = u32;
|
|
3666
|
-
pub const gid_t = u32;
|
|
3667
|
-
pub const clock_t = isize;
|
|
3668
|
-
|
|
3669
3654
|
pub const NAME_MAX = 255;
|
|
3670
3655
|
pub const PATH_MAX = 4096;
|
|
3671
3656
|
pub const IOV_MAX = 1024;
|
|
@@ -3878,8 +3863,8 @@ pub const W = struct {
|
|
|
3878
3863
|
pub fn TERMSIG(s: u32) SIG {
|
|
3879
3864
|
return @enumFromInt(s & 0x7f);
|
|
3880
3865
|
}
|
|
3881
|
-
pub fn STOPSIG(s: u32)
|
|
3882
|
-
return EXITSTATUS(s);
|
|
3866
|
+
pub fn STOPSIG(s: u32) SIG {
|
|
3867
|
+
return @enumFromInt(EXITSTATUS(s));
|
|
3883
3868
|
}
|
|
3884
3869
|
pub fn IFEXITED(s: u32) bool {
|
|
3885
3870
|
return (s & 0x7f) == 0;
|
|
@@ -10157,7 +10142,3 @@ pub const cmsghdr = extern struct {
|
|
|
10157
10142
|
level: i32,
|
|
10158
10143
|
type: i32,
|
|
10159
10144
|
};
|
|
10160
|
-
|
|
10161
|
-
inline fn fd_to_usize(fd: fd_t) usize {
|
|
10162
|
-
return @as(usize, @bitCast(@as(isize, fd)));
|
|
10163
|
-
}
|