@zigc/lib 0.17.0-dev.27 → 0.17.0-dev.292
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/c/fcntl.zig +6 -1
- package/c/inttypes.zig +0 -10
- package/c/math.zig +52 -112
- package/c/pthread.zig +57 -0
- package/c/search.zig +1 -27
- package/c/stdlib/drand48.zig +0 -57
- package/c/stdlib.zig +31 -121
- package/c/string.zig +20 -7
- package/c/strings.zig +0 -38
- package/c/unistd.zig +27 -26
- package/c/wchar.zig +10 -0
- package/c.zig +2 -2
- package/compiler/aro/aro/CodeGen.zig +7 -8
- package/compiler/aro/aro/Compilation.zig +17 -17
- package/compiler/aro/aro/Driver.zig +14 -13
- package/compiler/aro/aro/Parser.zig +20 -15
- package/compiler/aro/aro/Pragma.zig +3 -2
- package/compiler/aro/aro/Preprocessor.zig +9 -6
- package/compiler/aro/aro/pragmas/message.zig +3 -2
- package/compiler/aro/aro/text_literal.zig +3 -2
- package/compiler/aro/assembly_backend/x86_64.zig +4 -4
- package/compiler/build_runner.zig +2 -4
- package/compiler/reduce/Walk.zig +8 -13
- package/compiler/resinator/compile.zig +1 -1
- package/compiler/resinator/cvtres.zig +4 -4
- package/compiler/resinator/errors.zig +7 -7
- package/compiler/resinator/ico.zig +4 -4
- package/compiler/resinator/parse.zig +2 -2
- package/compiler/resinator/res.zig +1 -1
- package/compiler/std-docs.zig +1 -1
- package/compiler/test_runner.zig +1 -1
- package/compiler/translate-c/MacroTranslator.zig +1 -1
- package/compiler/translate-c/Translator.zig +6 -2
- package/compiler/translate-c/ast.zig +16 -23
- package/compiler/translate-c/main.zig +1 -1
- package/compiler_rt/addf3.zig +1 -1
- package/compiler_rt/arm.zig +3 -3
- package/compiler_rt/atomics.zig +1 -1
- package/compiler_rt/comparef.zig +3 -3
- package/compiler_rt/cos.zig +1 -3
- package/compiler_rt/count0bits.zig +1 -1
- package/compiler_rt/divdf3.zig +2 -2
- package/compiler_rt/divsf3.zig +1 -1
- package/compiler_rt/divtf3.zig +1 -1
- package/compiler_rt/divxf3.zig +1 -1
- package/compiler_rt/exp.zig +0 -2
- package/compiler_rt/exp2.zig +0 -2
- package/compiler_rt/extendf.zig +5 -5
- package/compiler_rt/fabs.zig +1 -3
- package/compiler_rt/float_from_int.zig +3 -4
- package/compiler_rt/fma.zig +0 -2
- package/compiler_rt/fmax.zig +1 -3
- package/compiler_rt/fmin.zig +1 -3
- package/compiler_rt/fmod.zig +2 -4
- package/compiler_rt/limb64.zig +3 -2
- package/compiler_rt/log.zig +0 -2
- package/compiler_rt/log10.zig +0 -2
- package/compiler_rt/log2.zig +0 -2
- package/compiler_rt/mulf3.zig +2 -2
- package/compiler_rt/rem_pio2l.zig +1 -1
- package/compiler_rt/round.zig +0 -2
- package/compiler_rt/sin.zig +1 -3
- package/compiler_rt/sincos.zig +1 -3
- package/compiler_rt/sqrt.zig +0 -2
- package/compiler_rt/ssp.zig +2 -2
- package/compiler_rt/tan.zig +1 -3
- package/compiler_rt/trunc.zig +0 -2
- package/compiler_rt/truncf.zig +3 -3
- package/compiler_rt/trunctfhf2.zig +3 -0
- package/compiler_rt.zig +5 -26
- package/docs/wasm/Walk.zig +1 -3
- package/docs/wasm/html_render.zig +1 -2
- package/docs/wasm/markdown/Parser.zig +16 -20
- package/fuzzer.zig +2 -0
- package/include/__clang_spirv_builtins.h +12 -12
- package/include/__float_float.h +176 -0
- package/include/__float_header_macro.h +12 -0
- package/include/__float_infinity_nan.h +20 -0
- package/include/amo.h +131 -0
- package/include/amxavx512intrin.h +215 -1
- package/include/amxintrin.h +0 -2
- package/include/arm_acle.h +37 -27
- package/include/arm_neon.h +218 -82
- package/include/arm_sme.h +8 -8
- package/include/arm_sve.h +4162 -3782
- package/include/avx10_2_512bf16intrin.h +19 -12
- package/include/avx10_2_512convertintrin.h +1 -1
- package/include/avx10_2_512niintrin.h +31 -31
- package/include/avx10_2_512satcvtdsintrin.h +1 -1
- package/include/avx10_2bf16intrin.h +54 -45
- package/include/avx10_2convertintrin.h +2 -2
- package/include/avx10_2copyintrin.h +1 -1
- package/include/avx10_2niintrin.h +14 -14
- package/include/avx10_2satcvtdsintrin.h +2 -2
- package/include/avx2intrin.h +275 -377
- package/include/avx512bf16intrin.h +25 -16
- package/include/avx512bitalgintrin.h +19 -30
- package/include/avx512bwintrin.h +386 -505
- package/include/avx512cdintrin.h +42 -55
- package/include/avx512dqintrin.h +132 -161
- package/include/avx512fintrin.h +1015 -1424
- package/include/avx512fp16intrin.h +112 -110
- package/include/avx512ifmaintrin.h +32 -34
- package/include/avx512ifmavlintrin.h +73 -46
- package/include/avx512vbmi2intrin.h +43 -32
- package/include/avx512vbmiintrin.h +19 -27
- package/include/avx512vbmivlintrin.h +35 -49
- package/include/avx512vlbf16intrin.h +32 -22
- package/include/avx512vlbitalgintrin.h +37 -53
- package/include/avx512vlbwintrin.h +470 -573
- package/include/avx512vlcdintrin.h +74 -102
- package/include/avx512vldqintrin.h +110 -127
- package/include/avx512vlfp16intrin.h +130 -111
- package/include/avx512vlintrin.h +945 -1299
- package/include/avx512vlvbmi2intrin.h +78 -63
- package/include/avx512vlvnniintrin.h +21 -18
- package/include/avx512vlvp2intersectintrin.h +2 -2
- package/include/avx512vnniintrin.h +10 -10
- package/include/avx512vp2intersectintrin.h +1 -2
- package/include/avx512vpopcntdqintrin.h +8 -10
- package/include/avx512vpopcntdqvlintrin.h +17 -15
- package/include/avxifmaintrin.h +16 -0
- package/include/avxintrin.h +165 -241
- package/include/avxvnniint16intrin.h +118 -99
- package/include/avxvnniint8intrin.h +56 -32
- package/include/avxvnniintrin.h +16 -8
- package/include/cpuid.h +101 -4
- package/include/emmintrin.h +168 -168
- package/include/f16cintrin.h +23 -9
- package/include/float.h +16 -155
- package/include/fma4intrin.h +98 -96
- package/include/fmaintrin.h +96 -66
- package/include/gfniintrin.h +21 -16
- package/include/hexagon_types.h +23 -20
- package/include/hvx_hexagon_protos.h +649 -860
- package/include/immintrin.h +0 -12
- package/include/intrin.h +4 -0
- package/include/lasxintrin.h +113 -0
- package/include/llvm_libc_wrappers/assert.h +3 -5
- package/include/llvm_libc_wrappers/ctype.h +3 -115
- package/include/llvm_libc_wrappers/inttypes.h +3 -5
- package/include/llvm_libc_wrappers/stdio.h +10 -38
- package/include/llvm_libc_wrappers/stdlib.h +3 -24
- package/include/llvm_libc_wrappers/string.h +2 -70
- package/include/llvm_libc_wrappers/time.h +4 -10
- package/include/mmintrin.h +188 -257
- package/include/module.modulemap +23 -4
- package/include/movrs_avx10_2_512intrin.h +2 -2
- package/include/movrs_avx10_2intrin.h +4 -4
- package/include/pmmintrin.h +12 -24
- package/include/ptrauth.h +16 -2
- package/include/riscv_mips.h +34 -0
- package/include/riscv_nds.h +89 -0
- package/include/sifive_vector.h +58 -2
- package/include/sm4evexintrin.h +2 -2
- package/include/smmintrin.h +77 -59
- package/include/spirvintrin.h +194 -0
- package/include/stddefer.h +19 -0
- package/include/tmmintrin.h +116 -147
- package/include/vaesintrin.h +1 -2
- package/include/xmmintrin.h +44 -70
- package/include/xopintrin.h +20 -10
- package/libc/include/aarch64-linux-any/asm/hwcap.h +1 -0
- package/libc/include/aarch64-linux-any/asm/unistd_64.h +1 -0
- package/libc/include/any-linux-any/asm-generic/errno.h +2 -0
- package/libc/include/any-linux-any/asm-generic/unistd.h +4 -1
- package/libc/include/any-linux-any/drm/amdgpu_drm.h +20 -6
- package/libc/include/any-linux-any/drm/amdxdna_accel.h +8 -0
- package/libc/include/any-linux-any/drm/drm_fourcc.h +6 -6
- package/libc/include/any-linux-any/drm/panfrost_drm.h +75 -1
- package/libc/include/any-linux-any/drm/panthor_drm.h +154 -3
- package/libc/include/any-linux-any/drm/rocket_accel.h +74 -24
- package/libc/include/any-linux-any/drm/xe_drm.h +89 -6
- package/libc/include/any-linux-any/linux/android/binder.h +1 -1
- package/libc/include/any-linux-any/linux/bpf.h +28 -0
- package/libc/include/any-linux-any/linux/btrfs.h +1 -0
- package/libc/include/any-linux-any/linux/btrfs_tree.h +32 -2
- package/libc/include/any-linux-any/linux/dma-buf.h +1 -0
- package/libc/include/any-linux-any/linux/dpll.h +1 -0
- package/libc/include/any-linux-any/linux/elf.h +2 -0
- package/libc/include/any-linux-any/linux/ethtool.h +21 -5
- package/libc/include/any-linux-any/linux/fs.h +1 -0
- package/libc/include/any-linux-any/linux/hyperv.h +1 -1
- package/libc/include/any-linux-any/linux/idxd.h +134 -134
- package/libc/include/any-linux-any/linux/if_alg.h +1 -1
- package/libc/include/any-linux-any/linux/if_link.h +1 -0
- package/libc/include/any-linux-any/linux/input-event-codes.h +4 -0
- package/libc/include/any-linux-any/linux/io_uring/bpf_filter.h +68 -0
- package/libc/include/any-linux-any/linux/io_uring/query.h +5 -1
- package/libc/include/any-linux-any/linux/io_uring.h +33 -2
- package/libc/include/any-linux-any/linux/iommufd.h +39 -0
- package/libc/include/any-linux-any/linux/kfd_ioctl.h +13 -3
- package/libc/include/any-linux-any/linux/kfd_sysfs.h +2 -1
- package/libc/include/any-linux-any/linux/kvm.h +30 -6
- package/libc/include/any-linux-any/linux/landlock.h +22 -8
- package/libc/include/any-linux-any/linux/magic.h +1 -0
- package/libc/include/any-linux-any/linux/mempolicy.h +3 -0
- package/libc/include/any-linux-any/linux/mount.h +11 -2
- package/libc/include/any-linux-any/linux/mptcp_pm.h +1 -1
- package/libc/include/any-linux-any/linux/mshv.h +2 -0
- package/libc/include/any-linux-any/linux/netfilter_bridge.h +5 -4
- package/libc/include/any-linux-any/linux/netfilter_ipv4.h +4 -5
- package/libc/include/any-linux-any/linux/netfilter_ipv6.h +3 -4
- package/libc/include/any-linux-any/linux/nfs.h +1 -1
- package/libc/include/any-linux-any/linux/nfsd_netlink.h +1 -0
- package/libc/include/any-linux-any/linux/nilfs2_api.h +2 -2
- package/libc/include/any-linux-any/linux/nilfs2_ondisk.h +97 -66
- package/libc/include/any-linux-any/linux/nl80211.h +104 -3
- package/libc/include/any-linux-any/linux/pci.h +7 -0
- package/libc/include/any-linux-any/linux/pci_regs.h +65 -6
- package/libc/include/any-linux-any/linux/pcitest.h +1 -0
- package/libc/include/any-linux-any/linux/perf_event.h +24 -3
- package/libc/include/any-linux-any/linux/pkt_sched.h +1 -0
- package/libc/include/any-linux-any/linux/prctl.h +30 -0
- package/libc/include/any-linux-any/linux/rseq.h +62 -5
- package/libc/include/any-linux-any/linux/shm.h +0 -1
- package/libc/include/any-linux-any/linux/stddef.h +4 -0
- package/libc/include/any-linux-any/linux/sysctl.h +1 -2
- package/libc/include/any-linux-any/linux/taskstats.h +12 -1
- package/libc/include/any-linux-any/linux/tcp.h +23 -3
- package/libc/include/any-linux-any/linux/typelimits.h +8 -0
- package/libc/include/any-linux-any/linux/ublk_cmd.h +120 -1
- package/libc/include/any-linux-any/linux/v4l2-controls.h +63 -0
- package/libc/include/any-linux-any/linux/vbox_vmmdev_types.h +2 -2
- package/libc/include/any-linux-any/linux/vduse.h +80 -5
- package/libc/include/any-linux-any/linux/version.h +3 -3
- package/libc/include/any-linux-any/linux/vfio.h +4 -0
- package/libc/include/any-linux-any/linux/videodev2.h +3 -0
- package/libc/include/any-linux-any/linux/virtio_ring.h +1 -2
- package/libc/include/any-linux-any/linux/vmclock-abi.h +20 -0
- package/libc/include/any-linux-any/rdma/bnxt_re-abi.h +16 -0
- package/libc/include/any-linux-any/rdma/ib_user_ioctl_cmds.h +16 -0
- package/libc/include/any-linux-any/rdma/mana-abi.h +3 -0
- package/libc/include/any-linux-any/scsi/scsi_bsg_ufs.h +8 -9
- package/libc/include/any-linux-any/sound/sof/tokens.h +6 -0
- package/libc/include/arc-linux-any/asm/swab.h +0 -63
- package/libc/include/arc-linux-any/asm/unistd_32.h +1 -0
- package/libc/include/arm-linux-any/asm/ptrace.h +0 -9
- package/libc/include/arm-linux-any/asm/unistd-eabi.h +1 -0
- package/libc/include/arm-linux-any/asm/unistd-oabi.h +1 -0
- package/libc/include/csky-linux-any/asm/unistd_32.h +1 -0
- package/libc/include/hexagon-linux-any/asm/unistd_32.h +1 -0
- package/libc/include/loongarch-linux-any/asm/hwcap.h +1 -0
- package/libc/include/loongarch-linux-any/asm/kvm.h +1 -0
- package/libc/include/loongarch-linux-any/asm/kvm_para.h +1 -0
- package/libc/include/loongarch-linux-any/asm/unistd_32.h +2 -0
- package/libc/include/loongarch-linux-any/asm/unistd_64.h +2 -0
- package/libc/include/m68k-linux-any/asm/unistd_32.h +1 -0
- package/libc/include/mips-linux-any/asm/errno.h +2 -0
- package/libc/include/mips-linux-any/asm/unistd_n32.h +1 -0
- package/libc/include/mips-linux-any/asm/unistd_n64.h +1 -0
- package/libc/include/mips-linux-any/asm/unistd_o32.h +1 -0
- package/libc/include/powerpc-linux-any/asm/unistd_32.h +1 -0
- package/libc/include/powerpc-linux-any/asm/unistd_64.h +1 -0
- package/libc/include/riscv-linux-any/asm/hwprobe.h +4 -0
- package/libc/include/riscv-linux-any/asm/kvm.h +3 -0
- package/libc/include/riscv-linux-any/asm/ptrace.h +37 -0
- package/libc/include/riscv-linux-any/asm/sigcontext.h +1 -0
- package/libc/include/riscv-linux-any/asm/unistd_32.h +1 -0
- package/libc/include/riscv-linux-any/asm/unistd_64.h +1 -0
- package/libc/include/s390x-linux-any/asm/unistd_64.h +1 -0
- package/libc/include/sparc-linux-any/asm/errno.h +2 -0
- package/libc/include/sparc-linux-any/asm/ioctls.h +4 -4
- package/libc/include/sparc-linux-any/asm/unistd_32.h +2 -0
- package/libc/include/sparc-linux-any/asm/unistd_64.h +2 -0
- package/libc/include/x86-linux-any/asm/auxvec.h +0 -4
- package/libc/include/x86-linux-any/asm/kvm.h +13 -8
- package/libc/include/x86-linux-any/asm/svm.h +16 -16
- package/libc/include/x86-linux-any/asm/unistd_32.h +1 -0
- package/libc/include/x86-linux-any/asm/unistd_64.h +1 -0
- package/libc/include/x86-linux-any/asm/unistd_x32.h +1 -0
- package/libc/include/xtensa-linux-any/asm/unistd_32.h +1 -0
- package/libc/musl/arch/mipsn32/syscall_arch.h +35 -32
- package/libcxx/include/__algorithm/all_of.h +11 -5
- package/libcxx/include/__algorithm/comp.h +4 -0
- package/libcxx/include/__algorithm/copy.h +28 -147
- package/libcxx/include/__algorithm/copy_backward.h +9 -24
- package/libcxx/include/__algorithm/copy_n.h +50 -16
- package/libcxx/include/__algorithm/count.h +2 -2
- package/libcxx/include/__algorithm/equal.h +43 -55
- package/libcxx/include/__algorithm/fill.h +26 -8
- package/libcxx/include/__algorithm/fill_n.h +32 -46
- package/libcxx/include/__algorithm/find.h +96 -39
- package/libcxx/include/__algorithm/find_end.h +105 -0
- package/libcxx/include/__algorithm/for_each.h +18 -24
- package/libcxx/include/__algorithm/for_each_n.h +20 -47
- package/libcxx/include/__algorithm/for_each_n_segment.h +1 -1
- package/libcxx/include/__algorithm/for_each_segment.h +26 -0
- package/libcxx/include/__algorithm/generate.h +4 -2
- package/libcxx/include/__algorithm/generate_n.h +19 -6
- package/libcxx/include/__algorithm/is_permutation.h +4 -4
- package/libcxx/include/__algorithm/iterator_operations.h +3 -0
- package/libcxx/include/__algorithm/lexicographical_compare.h +2 -2
- package/libcxx/include/__algorithm/lexicographical_compare_three_way.h +6 -6
- package/libcxx/include/__algorithm/make_heap.h +16 -4
- package/libcxx/include/__algorithm/mismatch.h +2 -2
- package/libcxx/include/__algorithm/move.h +8 -19
- package/libcxx/include/__algorithm/move_backward.h +9 -24
- package/libcxx/include/__algorithm/none_of.h +4 -4
- package/libcxx/include/__algorithm/partial_sort.h +1 -1
- package/libcxx/include/__algorithm/partial_sort_copy.h +1 -1
- package/libcxx/include/__algorithm/pstl.h +9 -9
- package/libcxx/include/__algorithm/radix_sort.h +27 -25
- package/libcxx/include/__algorithm/ranges_copy_n.h +3 -26
- package/libcxx/include/__algorithm/ranges_equal.h +17 -26
- package/libcxx/include/__algorithm/ranges_fill.h +7 -6
- package/libcxx/include/__algorithm/ranges_for_each.h +9 -1
- package/libcxx/include/__algorithm/ranges_generate_n.h +2 -6
- package/libcxx/include/__algorithm/ranges_search_n.h +2 -2
- package/libcxx/include/__algorithm/rotate.h +27 -44
- package/libcxx/include/__algorithm/search_n.h +49 -37
- package/libcxx/include/__algorithm/sift_down.h +19 -18
- package/libcxx/include/__algorithm/simd_utils.h +33 -4
- package/libcxx/include/__algorithm/specialized_algorithms.h +54 -0
- package/libcxx/include/__algorithm/stable_sort.h +1 -1
- package/libcxx/include/__assertion_handler +31 -4
- package/libcxx/include/__atomic/atomic.h +36 -60
- package/libcxx/include/__atomic/atomic_flag.h +19 -37
- package/libcxx/include/__atomic/atomic_ref.h +29 -12
- package/libcxx/include/__atomic/atomic_sync.h +127 -55
- package/libcxx/include/__atomic/atomic_sync_timed.h +144 -0
- package/libcxx/include/__atomic/atomic_waitable_traits.h +103 -0
- package/libcxx/include/__atomic/contention_t.h +27 -3
- package/libcxx/include/__atomic/floating_point_helper.h +55 -0
- package/libcxx/include/__bit/countl.h +1 -2
- package/libcxx/include/__bit/countr.h +1 -2
- package/libcxx/include/__bit/has_single_bit.h +1 -1
- package/libcxx/include/__bit/popcount.h +0 -1
- package/libcxx/include/__bit/rotate.h +15 -26
- package/libcxx/include/__bit_reference +207 -18
- package/libcxx/include/__charconv/from_chars_integral.h +1 -1
- package/libcxx/include/__charconv/from_chars_result.h +1 -1
- package/libcxx/include/__charconv/to_chars_integral.h +1 -0
- package/libcxx/include/__charconv/to_chars_result.h +1 -1
- package/libcxx/include/__charconv/traits.h +3 -24
- package/libcxx/include/__chrono/day.h +11 -0
- package/libcxx/include/__chrono/duration.h +58 -33
- package/libcxx/include/__chrono/file_clock.h +4 -2
- package/libcxx/include/__chrono/is_clock.h +72 -0
- package/libcxx/include/__chrono/leap_second.h +13 -0
- package/libcxx/include/__chrono/month.h +13 -0
- package/libcxx/include/__chrono/month_weekday.h +22 -0
- package/libcxx/include/__chrono/monthday.h +20 -0
- package/libcxx/include/__chrono/steady_clock.h +1 -1
- package/libcxx/include/__chrono/system_clock.h +3 -3
- package/libcxx/include/__chrono/time_point.h +37 -13
- package/libcxx/include/__chrono/weekday.h +25 -0
- package/libcxx/include/__chrono/year.h +11 -0
- package/libcxx/include/__chrono/year_month.h +13 -0
- package/libcxx/include/__chrono/year_month_day.h +23 -0
- package/libcxx/include/__chrono/year_month_weekday.h +26 -0
- package/libcxx/include/__chrono/zoned_time.h +16 -0
- package/libcxx/include/__compare/is_eq.h +6 -6
- package/libcxx/include/__compare/strong_order.h +12 -30
- package/libcxx/include/__compare/three_way_comparable.h +2 -2
- package/libcxx/include/__concepts/comparison_common_type.h +40 -0
- package/libcxx/include/__concepts/equality_comparable.h +2 -1
- package/libcxx/include/__condition_variable/condition_variable.h +1 -1
- package/libcxx/include/__config +63 -280
- package/libcxx/include/__configuration/abi.h +14 -24
- package/libcxx/include/__configuration/availability.h +65 -118
- package/libcxx/include/__configuration/compiler.h +6 -6
- package/libcxx/include/__configuration/experimental.h +38 -0
- package/libcxx/include/__configuration/hardening.h +215 -0
- package/libcxx/include/__configuration/language.h +3 -0
- package/libcxx/include/__configuration/platform.h +9 -16
- package/libcxx/include/__coroutine/coroutine_handle.h +9 -9
- package/libcxx/include/__coroutine/noop_coroutine_handle.h +11 -13
- package/libcxx/include/__debug_utils/strict_weak_ordering_check.h +1 -1
- package/libcxx/include/__exception/exception.h +6 -4
- package/libcxx/include/__exception/exception_ptr.h +27 -5
- package/libcxx/include/__exception/nested_exception.h +2 -2
- package/libcxx/include/__exception/operations.h +5 -5
- package/libcxx/include/__expected/bad_expected_access.h +8 -6
- package/libcxx/include/__expected/expected.h +62 -64
- package/libcxx/include/__expected/unexpected.h +4 -4
- package/libcxx/include/__filesystem/copy_options.h +4 -4
- package/libcxx/include/__filesystem/directory_entry.h +37 -33
- package/libcxx/include/__filesystem/directory_iterator.h +9 -11
- package/libcxx/include/__filesystem/directory_options.h +7 -4
- package/libcxx/include/__filesystem/file_status.h +3 -3
- package/libcxx/include/__filesystem/filesystem_error.h +9 -10
- package/libcxx/include/__filesystem/operations.h +97 -66
- package/libcxx/include/__filesystem/path.h +68 -64
- package/libcxx/include/__filesystem/path_iterator.h +1 -3
- package/libcxx/include/__filesystem/perm_options.h +4 -4
- package/libcxx/include/__filesystem/perms.h +4 -4
- package/libcxx/include/__filesystem/recursive_directory_iterator.h +9 -14
- package/libcxx/include/__filesystem/space_info.h +1 -1
- package/libcxx/include/__filesystem/u8path.h +12 -14
- package/libcxx/include/__flat_map/flat_map.h +88 -71
- package/libcxx/include/__flat_map/flat_multimap.h +251 -172
- package/libcxx/include/__flat_map/key_value_iterator.h +0 -1
- package/libcxx/include/__flat_map/utils.h +1 -0
- package/libcxx/include/__flat_set/flat_multiset.h +211 -143
- package/libcxx/include/__flat_set/flat_set.h +86 -68
- package/libcxx/include/__format/concepts.h +0 -14
- package/libcxx/include/__format/extended_grapheme_cluster_table.h +3 -2
- package/libcxx/include/__format/fmt_pair_like.h +42 -0
- package/libcxx/include/__format/format_arg.h +7 -10
- package/libcxx/include/__format/format_args.h +1 -1
- package/libcxx/include/__format/format_context.h +5 -5
- package/libcxx/include/__format/format_parse_context.h +2 -2
- package/libcxx/include/__format/formatter_output.h +30 -34
- package/libcxx/include/__format/indic_conjunct_break_table.h +3 -2
- package/libcxx/include/__format/range_default_formatter.h +2 -41
- package/libcxx/include/__format/range_format.h +71 -0
- package/libcxx/include/__format/range_formatter.h +1 -0
- package/libcxx/include/__format/width_estimation_table.h +4 -2
- package/libcxx/include/__functional/bind.h +10 -15
- package/libcxx/include/__functional/bind_back.h +1 -1
- package/libcxx/include/__functional/bind_front.h +1 -1
- package/libcxx/include/__functional/function.h +57 -75
- package/libcxx/include/__functional/hash.h +1 -10
- package/libcxx/include/__functional/identity.h +1 -1
- package/libcxx/include/__functional/is_transparent.h +8 -0
- package/libcxx/include/__functional/mem_fn.h +2 -1
- package/libcxx/include/__functional/operations.h +18 -0
- package/libcxx/include/__functional/ranges_operations.h +7 -0
- package/libcxx/include/__functional/reference_wrapper.h +7 -5
- package/libcxx/include/__functional/weak_result_type.h +14 -28
- package/libcxx/include/__fwd/ios.h +1 -1
- package/libcxx/include/__fwd/tuple.h +14 -0
- package/libcxx/include/__hash_table +371 -357
- package/libcxx/include/__ios/fpos.h +4 -4
- package/libcxx/include/__iterator/back_insert_iterator.h +1 -7
- package/libcxx/include/__iterator/bounded_iter.h +7 -8
- package/libcxx/include/__iterator/concepts.h +6 -9
- package/libcxx/include/__iterator/cpp17_iterator_concepts.h +13 -12
- package/libcxx/include/__iterator/distance.h +40 -18
- package/libcxx/include/__iterator/front_insert_iterator.h +1 -7
- package/libcxx/include/__iterator/insert_iterator.h +1 -7
- package/libcxx/include/__iterator/istream_iterator.h +6 -7
- package/libcxx/include/__iterator/istreambuf_iterator.h +6 -7
- package/libcxx/include/__iterator/iter_move.h +1 -1
- package/libcxx/include/__iterator/iterator.h +13 -0
- package/libcxx/include/__iterator/iterator_traits.h +13 -14
- package/libcxx/include/__iterator/ostream_iterator.h +1 -7
- package/libcxx/include/__iterator/ostreambuf_iterator.h +1 -7
- package/libcxx/include/__iterator/reverse_iterator.h +8 -13
- package/libcxx/include/__iterator/segmented_iterator.h +3 -8
- package/libcxx/include/__iterator/static_bounded_iter.h +3 -3
- package/libcxx/include/__iterator/wrap_iter.h +8 -6
- package/libcxx/include/__locale +3 -10
- package/libcxx/include/__locale_dir/locale_base_api/bsd_locale_fallbacks.h +0 -10
- package/libcxx/include/__locale_dir/locale_base_api.h +5 -28
- package/libcxx/include/__locale_dir/messages.h +1 -1
- package/libcxx/include/__locale_dir/money.h +2 -2
- package/libcxx/include/__locale_dir/num.h +190 -243
- package/libcxx/include/__locale_dir/pad_and_output.h +5 -6
- package/libcxx/include/__locale_dir/support/bsd_like.h +0 -20
- package/libcxx/include/__locale_dir/support/fuchsia.h +0 -7
- package/libcxx/include/__locale_dir/support/linux.h +0 -37
- package/libcxx/include/__locale_dir/support/netbsd.h +0 -2
- package/libcxx/include/__locale_dir/support/newlib.h +243 -0
- package/libcxx/include/__locale_dir/support/no_locale/characters.h +0 -4
- package/libcxx/include/__locale_dir/support/no_locale/strtonum.h +0 -9
- package/libcxx/include/__locale_dir/support/windows.h +0 -29
- package/libcxx/include/__locale_dir/time.h +3 -7
- package/libcxx/include/__math/hypot.h +1 -1
- package/libcxx/include/__math/logarithms.h +1 -1
- package/libcxx/include/__math/traits.h +80 -11
- package/libcxx/include/__mdspan/extents.h +7 -4
- package/libcxx/include/__mdspan/layout_stride.h +4 -5
- package/libcxx/include/__mdspan/mdspan.h +29 -23
- package/libcxx/include/__memory/addressof.h +7 -5
- package/libcxx/include/__memory/align.h +18 -1
- package/libcxx/include/__memory/allocate_at_least.h +15 -10
- package/libcxx/include/__memory/allocator.h +14 -26
- package/libcxx/include/__memory/allocator_traits.h +6 -4
- package/libcxx/include/__memory/compressed_pair.h +15 -9
- package/libcxx/include/__memory/construct_at.h +12 -23
- package/libcxx/include/__memory/inout_ptr.h +1 -1
- package/libcxx/include/__memory/is_sufficiently_aligned.h +1 -1
- package/libcxx/include/__memory/out_ptr.h +1 -1
- package/libcxx/include/__memory/pointer_traits.h +1 -1
- package/libcxx/include/__memory/raw_storage_iterator.h +3 -9
- package/libcxx/include/__memory/shared_count.h +9 -30
- package/libcxx/include/__memory/shared_ptr.h +100 -145
- package/libcxx/include/__memory/temp_value.h +1 -2
- package/libcxx/include/__memory/uninitialized_algorithms.h +44 -115
- package/libcxx/include/__memory/unique_ptr.h +14 -16
- package/libcxx/include/__memory/uses_allocator_construction.h +1 -0
- package/libcxx/include/__memory_resource/memory_resource.h +4 -2
- package/libcxx/include/__memory_resource/monotonic_buffer_resource.h +1 -1
- package/libcxx/include/__memory_resource/polymorphic_allocator.h +13 -8
- package/libcxx/include/__memory_resource/pool_options.h +1 -1
- package/libcxx/include/__memory_resource/synchronized_pool_resource.h +4 -2
- package/libcxx/include/__memory_resource/unsynchronized_pool_resource.h +1 -1
- package/libcxx/include/__mutex/mutex.h +2 -2
- package/libcxx/include/__mutex/once_flag.h +14 -11
- package/libcxx/include/__mutex/tag_types.h +3 -3
- package/libcxx/include/__mutex/unique_lock.h +8 -7
- package/libcxx/include/__new/align_val_t.h +6 -0
- package/libcxx/include/__new/allocate.h +1 -2
- package/libcxx/include/__new/exceptions.h +8 -2
- package/libcxx/include/__new/global_new_delete.h +4 -11
- package/libcxx/include/__new/interference_size.h +0 -4
- package/libcxx/include/__new/launder.h +3 -5
- package/libcxx/include/__new/nothrow_t.h +1 -1
- package/libcxx/include/__numeric/gcd_lcm.h +24 -34
- package/libcxx/include/__numeric/midpoint.h +9 -14
- package/libcxx/include/__numeric/pstl.h +2 -2
- package/libcxx/include/__numeric/saturation_arithmetic.h +13 -5
- package/libcxx/include/__ostream/basic_ostream.h +8 -8
- package/libcxx/include/__pstl/backends/default.h +14 -14
- package/libcxx/include/__pstl/backends/libdispatch.h +2 -2
- package/libcxx/include/__pstl/cpu_algos/find_if.h +1 -1
- package/libcxx/include/__pstl/cpu_algos/transform.h +5 -6
- package/libcxx/include/__pstl/cpu_algos/transform_reduce.h +5 -4
- package/libcxx/include/__random/binomial_distribution.h +10 -4
- package/libcxx/include/__random/mersenne_twister_engine.h +50 -154
- package/libcxx/include/__random/piecewise_constant_distribution.h +3 -2
- package/libcxx/include/__random/piecewise_linear_distribution.h +3 -2
- package/libcxx/include/__ranges/adjacent_transform_view.h +406 -0
- package/libcxx/include/__ranges/adjacent_view.h +419 -0
- package/libcxx/include/__ranges/as_rvalue_view.h +9 -9
- package/libcxx/include/__ranges/chunk_by_view.h +6 -6
- package/libcxx/include/__ranges/common_view.h +7 -7
- package/libcxx/include/__ranges/drop_view.h +8 -8
- package/libcxx/include/__ranges/drop_while_view.h +5 -5
- package/libcxx/include/__ranges/elements_of.h +49 -0
- package/libcxx/include/__ranges/empty_view.h +5 -5
- package/libcxx/include/__ranges/filter_view.h +10 -10
- package/libcxx/include/__ranges/iota_view.h +41 -22
- package/libcxx/include/__ranges/owning_view.h +15 -15
- package/libcxx/include/__ranges/ref_view.h +6 -6
- package/libcxx/include/__ranges/repeat_view.h +17 -10
- package/libcxx/include/__ranges/single_view.h +8 -8
- package/libcxx/include/__ranges/take_view.h +9 -9
- package/libcxx/include/__ranges/transform_view.h +1 -2
- package/libcxx/include/__ranges/view_interface.h +10 -10
- package/libcxx/include/__ranges/zip_transform_view.h +357 -0
- package/libcxx/include/__ranges/zip_view.h +20 -20
- package/libcxx/include/__split_buffer +612 -240
- package/libcxx/include/__stop_token/atomic_unique_lock.h +1 -1
- package/libcxx/include/__stop_token/stop_callback.h +2 -2
- package/libcxx/include/__stop_token/stop_source.h +1 -1
- package/libcxx/include/__stop_token/stop_state.h +4 -4
- package/libcxx/include/__stop_token/stop_token.h +1 -1
- package/libcxx/include/__string/char_traits.h +51 -31
- package/libcxx/include/__string/constexpr_c_functions.h +5 -5
- package/libcxx/include/__support/xlocale/__strtonum_fallback.h +0 -8
- package/libcxx/include/__system_error/error_category.h +8 -8
- package/libcxx/include/__system_error/error_code.h +5 -5
- package/libcxx/include/__system_error/error_condition.h +4 -4
- package/libcxx/include/__system_error/system_error.h +1 -1
- package/libcxx/include/__thread/id.h +1 -1
- package/libcxx/include/__thread/jthread.h +1 -1
- package/libcxx/include/__thread/poll_with_backoff.h +27 -8
- package/libcxx/include/__thread/support/c11.h +8 -8
- package/libcxx/include/__thread/support/pthread.h +8 -8
- package/libcxx/include/__thread/support/windows.h +8 -8
- package/libcxx/include/__thread/thread.h +13 -8
- package/libcxx/include/__thread/timed_backoff_policy.h +3 -2
- package/libcxx/include/__tree +849 -701
- package/libcxx/include/__tuple/sfinae_helpers.h +1 -44
- package/libcxx/include/__tuple/tuple_element.h +0 -12
- package/libcxx/include/__tuple/tuple_size.h +0 -4
- package/libcxx/include/__tuple/tuple_transform.h +45 -0
- package/libcxx/include/__type_traits/aligned_storage.h +13 -40
- package/libcxx/include/__type_traits/desugars_to.h +4 -0
- package/libcxx/include/__type_traits/invoke.h +8 -0
- package/libcxx/include/__type_traits/is_allocator.h +6 -7
- package/libcxx/include/__type_traits/is_array.h +26 -0
- package/libcxx/include/__type_traits/is_equality_comparable.h +16 -21
- package/libcxx/include/__type_traits/is_final.h +1 -1
- package/libcxx/include/__type_traits/is_floating_point.h +7 -6
- package/libcxx/include/__type_traits/is_generic_transparent_comparator.h +30 -0
- package/libcxx/include/__type_traits/is_specialization.h +2 -6
- package/libcxx/include/__type_traits/is_within_lifetime.h +29 -0
- package/libcxx/include/__type_traits/make_transparent.h +52 -0
- package/libcxx/include/__type_traits/reference_constructs_from_temporary.h +1 -7
- package/libcxx/include/__type_traits/reference_converts_from_temporary.h +1 -1
- package/libcxx/include/__utility/cmp.h +19 -7
- package/libcxx/include/__utility/default_three_way_comparator.h +70 -0
- package/libcxx/include/__utility/in_place.h +1 -1
- package/libcxx/include/__utility/integer_sequence.h +56 -41
- package/libcxx/include/__utility/lazy_synth_three_way_comparator.h +120 -0
- package/libcxx/include/__utility/pair.h +22 -25
- package/libcxx/include/__utility/scope_guard.h +2 -0
- package/libcxx/include/__utility/try_key_extraction.h +114 -0
- package/libcxx/include/__vector/vector.h +187 -160
- package/libcxx/include/__vector/vector_bool.h +76 -83
- package/libcxx/include/any +118 -155
- package/libcxx/include/array +88 -56
- package/libcxx/include/atomic +2 -0
- package/libcxx/include/barrier +20 -24
- package/libcxx/include/bitset +49 -30
- package/libcxx/include/ccomplex +3 -11
- package/libcxx/include/chrono +47 -0
- package/libcxx/include/ciso646 +3 -6
- package/libcxx/include/complex +77 -65
- package/libcxx/include/complex.h +10 -10
- package/libcxx/include/condition_variable +3 -3
- package/libcxx/include/cstdalign +3 -10
- package/libcxx/include/cstdbool +3 -10
- package/libcxx/include/ctgmath +2 -11
- package/libcxx/include/ctype.h +24 -24
- package/libcxx/include/cwchar +2 -2
- package/libcxx/include/deque +109 -225
- package/libcxx/include/errno.h +269 -269
- package/libcxx/include/exception +4 -1
- package/libcxx/include/ext/hash_map +7 -48
- package/libcxx/include/ext/hash_set +2 -8
- package/libcxx/include/fenv.h +43 -43
- package/libcxx/include/flat_map +663 -11
- package/libcxx/include/flat_set +543 -8
- package/libcxx/include/float.h +16 -16
- package/libcxx/include/forward_list +33 -53
- package/libcxx/include/fstream +57 -42
- package/libcxx/include/future +41 -51
- package/libcxx/include/initializer_list +9 -3
- package/libcxx/include/inttypes.h +16 -16
- package/libcxx/include/ios +28 -28
- package/libcxx/include/istream +19 -13
- package/libcxx/include/iterator +10 -0
- package/libcxx/include/latch +7 -5
- package/libcxx/include/limits +4 -4
- package/libcxx/include/list +61 -79
- package/libcxx/include/map +386 -274
- package/libcxx/include/math.h +19 -0
- package/libcxx/include/mdspan +1 -5
- package/libcxx/include/mutex +29 -19
- package/libcxx/include/optional +644 -149
- package/libcxx/include/print +9 -5
- package/libcxx/include/queue +39 -37
- package/libcxx/include/ranges +48 -0
- package/libcxx/include/regex +33 -31
- package/libcxx/include/scoped_allocator +16 -11
- package/libcxx/include/semaphore +15 -18
- package/libcxx/include/set +220 -192
- package/libcxx/include/shared_mutex +3 -8
- package/libcxx/include/span +53 -37
- package/libcxx/include/sstream +34 -28
- package/libcxx/include/stack +13 -15
- package/libcxx/include/stddef.h +10 -10
- package/libcxx/include/stdexcept +2 -2
- package/libcxx/include/stdio.h +20 -21
- package/libcxx/include/streambuf +59 -19
- package/libcxx/include/string +574 -573
- package/libcxx/include/string_view +113 -89
- package/libcxx/include/strstream +10 -10
- package/libcxx/include/syncstream +4 -4
- package/libcxx/include/tgmath.h +12 -12
- package/libcxx/include/tuple +242 -212
- package/libcxx/include/type_traits +8 -2
- package/libcxx/include/typeindex +5 -3
- package/libcxx/include/typeinfo +92 -89
- package/libcxx/include/unordered_map +179 -304
- package/libcxx/include/unordered_set +168 -195
- package/libcxx/include/utility +12 -0
- package/libcxx/include/valarray +106 -161
- package/libcxx/include/variant +25 -33
- package/libcxx/include/version +41 -24
- package/libcxx/include/wctype.h +29 -29
- package/libcxx/libc/hdr/errno_macros.h +3 -1
- package/libcxx/libc/hdr/stdint_proxy.h +18 -0
- package/libcxx/libc/hdr/types/wchar_t.h +23 -0
- package/libcxx/libc/hdr/wchar_overlay.h +69 -0
- package/libcxx/libc/include/llvm-libc-macros/cfloat128-macros.h +41 -0
- package/libcxx/libc/include/llvm-libc-macros/cfloat16-macros.h +20 -0
- package/libcxx/libc/include/llvm-libc-macros/wchar-macros.h +18 -0
- package/libcxx/libc/include/llvm-libc-types/cfloat128.h +11 -28
- package/libcxx/libc/include/llvm-libc-types/cfloat16.h +4 -7
- package/libcxx/libc/include/llvm-libc-types/wint_t.h +14 -0
- package/libcxx/libc/shared/libc_common.h +5 -0
- package/libcxx/libc/src/__support/CPP/bit.h +50 -12
- package/libcxx/libc/src/__support/CPP/type_traits/is_complex.h +7 -0
- package/libcxx/libc/src/__support/CPP/type_traits/is_destructible.h +2 -1
- package/libcxx/libc/src/__support/CPP/type_traits/is_unsigned.h +6 -0
- package/libcxx/libc/src/__support/CPP/utility/integer_sequence.h +10 -0
- package/libcxx/libc/src/__support/FPUtil/FPBits.h +6 -7
- package/libcxx/libc/src/__support/FPUtil/rounding_mode.h +50 -4
- package/libcxx/libc/src/__support/big_int.h +14 -14
- package/libcxx/libc/src/__support/common.h +3 -2
- package/libcxx/libc/src/__support/ctype_utils.h +19 -12
- package/libcxx/libc/src/__support/detailed_powers_of_ten.h +1 -2
- package/libcxx/libc/src/__support/high_precision_decimal.h +33 -14
- package/libcxx/libc/src/__support/libc_assert.h +2 -0
- package/libcxx/libc/src/__support/macros/attributes.h +44 -1
- package/libcxx/libc/src/__support/macros/config.h +23 -0
- package/libcxx/libc/src/__support/macros/null_check.h +1 -2
- package/libcxx/libc/src/__support/macros/optimization.h +3 -0
- package/libcxx/libc/src/__support/macros/properties/architectures.h +5 -1
- package/libcxx/libc/src/__support/macros/properties/compiler.h +8 -3
- package/libcxx/libc/src/__support/macros/properties/cpu_features.h +17 -1
- package/libcxx/libc/src/__support/macros/properties/types.h +2 -3
- package/libcxx/libc/src/__support/macros/sanitizer.h +0 -10
- package/libcxx/libc/src/__support/math_extras.h +20 -4
- package/libcxx/libc/src/__support/str_to_float.h +98 -125
- package/libcxx/libc/src/__support/str_to_integer.h +39 -27
- package/libcxx/libc/src/__support/wctype_utils.h +588 -0
- package/libcxx/src/any.cpp +4 -0
- package/libcxx/src/atomic.cpp +365 -80
- package/libcxx/src/barrier.cpp +4 -3
- package/libcxx/src/charconv.cpp +6 -3
- package/libcxx/src/condition_variable_destructor.cpp +1 -1
- package/libcxx/src/error_category.cpp +3 -1
- package/libcxx/src/exception.cpp +2 -10
- package/libcxx/src/experimental/time_zone.cpp +1 -1
- package/libcxx/src/experimental/tzdb.cpp +4 -1
- package/libcxx/src/filesystem/error.h +4 -22
- package/libcxx/src/filesystem/format_string.h +9 -18
- package/libcxx/src/filesystem/int128_builtins.cpp +2 -0
- package/libcxx/src/filesystem/operations.cpp +2 -9
- package/libcxx/src/filesystem/path.cpp +3 -1
- package/libcxx/src/include/aligned_alloc.h +65 -0
- package/libcxx/src/include/config_elast.h +1 -1
- package/libcxx/src/include/from_chars_floating_point.h +11 -7
- package/libcxx/src/include/overridable_function.h +8 -10
- package/libcxx/src/iostream.cpp +56 -37
- package/libcxx/src/locale.cpp +213 -196
- package/libcxx/src/memory.cpp +12 -14
- package/libcxx/src/mutex_destructor.cpp +1 -1
- package/libcxx/src/new.cpp +5 -5
- package/libcxx/src/optional.cpp +4 -0
- package/libcxx/src/print.cpp +9 -1
- package/libcxx/src/random.cpp +0 -26
- package/libcxx/src/string.cpp +10 -25
- package/libcxx/src/support/runtime/exception_fallback.ipp +2 -0
- package/libcxx/src/support/runtime/exception_glibcxx.ipp +3 -0
- package/libcxx/src/support/runtime/exception_libcxxabi.ipp +6 -2
- package/libcxx/src/support/runtime/exception_libcxxrt.ipp +2 -0
- package/libcxx/src/support/runtime/exception_msvc.ipp +2 -0
- package/libcxx/src/support/runtime/exception_pointer_cxxabi.ipp +9 -10
- package/libcxx/src/support/runtime/exception_pointer_glibcxx.ipp +2 -0
- package/libcxx/src/support/runtime/exception_pointer_msvc.ipp +1 -0
- package/libcxx/src/support/runtime/exception_pointer_unimplemented.ipp +1 -0
- package/libcxx/src/support/win32/locale_win32.cpp +1 -1
- package/libcxx/src/system_error.cpp +2 -0
- package/libcxx/src/thread.cpp +1 -3
- package/libcxx/src/valarray.cpp +1 -2
- package/libcxx/src/vector.cpp +2 -2
- package/libcxxabi/include/__cxxabi_config.h +42 -23
- package/libcxxabi/src/cxa_exception.cpp +4 -2
- package/libcxxabi/src/cxa_exception.h +16 -14
- package/libcxxabi/src/cxa_personality.cpp +126 -9
- package/libcxxabi/src/cxa_thread_atexit.cpp +2 -1
- package/libcxxabi/src/demangle/DemangleConfig.h +4 -0
- package/libcxxabi/src/demangle/ItaniumDemangle.h +9 -6
- package/libcxxabi/src/demangle/Utility.h +21 -7
- package/libcxxabi/src/fallback_malloc.cpp +1 -1
- package/libcxxabi/src/private_typeinfo.cpp +6 -0
- package/libcxxabi/src/stdlib_new_delete.cpp +5 -5
- package/libtsan/LICENSE.TXT +311 -0
- package/libtsan/builtins/assembly.h +41 -8
- package/libtsan/interception/interception_win.cpp +4 -0
- package/libtsan/sanitizer_common/sanitizer_allocator_primary32.h +1 -0
- package/libtsan/sanitizer_common/sanitizer_allocator_primary64.h +18 -0
- package/libtsan/sanitizer_common/sanitizer_common.h +15 -2
- package/libtsan/sanitizer_common/sanitizer_common_interceptors.inc +30 -4
- package/libtsan/sanitizer_common/sanitizer_common_interceptors_ioctl.inc +4 -0
- package/libtsan/sanitizer_common/sanitizer_common_interceptors_vfork_aarch64.inc.S +2 -1
- package/libtsan/sanitizer_common/sanitizer_common_interceptors_vfork_i386.inc.S +2 -0
- package/libtsan/sanitizer_common/sanitizer_common_interceptors_vfork_x86_64.inc.S +2 -0
- package/libtsan/sanitizer_common/sanitizer_common_syscalls.inc +18 -0
- package/libtsan/sanitizer_common/sanitizer_file.cpp +40 -12
- package/libtsan/sanitizer_common/sanitizer_file.h +3 -0
- package/libtsan/sanitizer_common/sanitizer_flags.inc +7 -0
- package/libtsan/sanitizer_common/sanitizer_fuchsia.cpp +30 -3
- package/libtsan/sanitizer_common/sanitizer_haiku.cpp +2 -2
- package/libtsan/sanitizer_common/sanitizer_internal_defs.h +1 -1
- package/libtsan/sanitizer_common/sanitizer_libc.cpp +8 -0
- package/libtsan/sanitizer_common/sanitizer_libc.h +1 -0
- package/libtsan/sanitizer_common/sanitizer_linux.cpp +15 -7
- package/libtsan/sanitizer_common/sanitizer_linux.h +3 -3
- package/libtsan/sanitizer_common/sanitizer_linux_libcdep.cpp +1 -0
- package/libtsan/sanitizer_common/sanitizer_mac.cpp +255 -104
- package/libtsan/sanitizer_common/sanitizer_mac.h +5 -0
- package/libtsan/sanitizer_common/sanitizer_netbsd.cpp +2 -2
- package/libtsan/sanitizer_common/sanitizer_platform.h +27 -1
- package/libtsan/sanitizer_common/sanitizer_platform_interceptors.h +5 -4
- package/libtsan/sanitizer_common/sanitizer_platform_limits_posix.cpp +15 -17
- package/libtsan/sanitizer_common/sanitizer_platform_limits_posix.h +32 -6
- package/libtsan/sanitizer_common/sanitizer_posix.cpp +3 -12
- package/libtsan/sanitizer_common/sanitizer_posix.h +2 -1
- package/libtsan/sanitizer_common/sanitizer_posix_libcdep.cpp +19 -0
- package/libtsan/sanitizer_common/sanitizer_procmaps_mac.cpp +102 -37
- package/libtsan/sanitizer_common/sanitizer_redefine_builtins.h +1 -1
- package/libtsan/sanitizer_common/sanitizer_signal_interceptors.inc +40 -2
- package/libtsan/sanitizer_common/sanitizer_stoptheworld.h +1 -1
- package/libtsan/sanitizer_common/sanitizer_stoptheworld_linux_libcdep.cpp +83 -12
- package/libtsan/sanitizer_common/sanitizer_stoptheworld_mac.cpp +3 -3
- package/libtsan/sanitizer_common/sanitizer_stoptheworld_netbsd_libcdep.cpp +7 -7
- package/libtsan/sanitizer_common/sanitizer_stoptheworld_win.cpp +2 -2
- package/libtsan/sanitizer_common/sanitizer_symbolizer_internal.h +5 -1
- package/libtsan/sanitizer_common/sanitizer_symbolizer_libcdep.cpp +11 -1
- package/libtsan/sanitizer_common/sanitizer_symbolizer_mac.cpp +86 -29
- package/libtsan/sanitizer_common/sanitizer_symbolizer_posix_libcdep.cpp +27 -16
- package/libtsan/sanitizer_common/sanitizer_thread_registry.cpp +5 -4
- package/libtsan/sanitizer_common/sanitizer_thread_registry.h +4 -4
- package/libtsan/sanitizer_common/sanitizer_win.cpp +1 -3
- package/libtsan/tsan_debugging.cpp +2 -2
- package/libtsan/tsan_flags.cpp +37 -0
- package/libtsan/tsan_flags.h +8 -0
- package/libtsan/tsan_flags.inc +12 -0
- package/libtsan/tsan_interceptors.h +9 -1
- package/libtsan/tsan_interceptors_mac.cpp +19 -0
- package/libtsan/tsan_interceptors_posix.cpp +78 -32
- package/libtsan/tsan_interface.h +3 -3
- package/libtsan/tsan_interface_ann.cpp +23 -9
- package/libtsan/tsan_mman.cpp +18 -4
- package/libtsan/tsan_platform.h +44 -7
- package/libtsan/tsan_platform_linux.cpp +42 -14
- package/libtsan/tsan_platform_mac.cpp +16 -3
- package/libtsan/tsan_report.h +14 -1
- package/libtsan/tsan_rtl.cpp +14 -0
- package/libtsan/tsan_rtl.h +7 -2
- package/libtsan/tsan_rtl_aarch64.S +3 -5
- package/libtsan/tsan_rtl_access.cpp +8 -3
- package/libtsan/tsan_rtl_amd64.S +2 -0
- package/libtsan/tsan_rtl_mutex.cpp +94 -49
- package/libtsan/tsan_rtl_report.cpp +132 -65
- package/libtsan/tsan_rtl_thread.cpp +31 -9
- package/libtsan/tsan_symbolize.cpp +1 -1
- package/libtsan/tsan_symbolize.h +1 -1
- package/libtsan/tsan_trace.h +1 -1
- package/libunwind/include/__libunwind_config.h +11 -2
- package/libunwind/include/libunwind.h +117 -11
- package/libunwind/include/unwind_arm_ehabi.h +4 -1
- package/libunwind/src/AddressSpace.hpp +42 -20
- package/libunwind/src/CompactUnwinder.hpp +16 -5
- package/libunwind/src/DwarfInstructions.hpp +24 -13
- package/libunwind/src/DwarfParser.hpp +62 -23
- package/libunwind/src/EHHeaderParser.hpp +7 -4
- package/libunwind/src/Registers.hpp +226 -22
- package/libunwind/src/Unwind-seh.cpp +6 -7
- package/libunwind/src/Unwind-wasm.c +7 -7
- package/libunwind/src/UnwindCursor.hpp +167 -49
- package/libunwind/src/UnwindLevel1.c +46 -17
- package/libunwind/src/UnwindRegistersRestore.S +46 -5
- package/libunwind/src/UnwindRegistersSave.S +86 -2
- package/libunwind/src/assembly.h +5 -1
- package/libunwind/src/config.h +9 -0
- package/libunwind/src/gcc_personality_v0.c +79 -6
- package/libunwind/src/libunwind.cpp +104 -4
- package/libunwind/src/libunwind_ext.h +7 -1
- package/libunwind/src/shadow_stack_unwind.h +2 -2
- package/lldb/pretty_printers.py +948 -0
- package/package.json +1 -1
- package/std/Build/Cache/Path.zig +1 -1
- package/std/Build/Cache.zig +6 -6
- package/std/Build/Step/Compile.zig +18 -20
- package/std/Build/Step/ConfigHeader.zig +1 -1
- package/std/Build/Step/Run.zig +15 -8
- package/std/Build/Step.zig +2 -7
- package/std/Build/Watch/FsEvents.zig +1 -1
- package/std/Build/WebServer.zig +2 -2
- package/std/Build/abi.zig +1 -1
- package/std/Build.zig +0 -3
- package/std/Io/Dir.zig +9 -4
- package/std/Io/Dispatch.zig +8 -18
- package/std/Io/File/Writer.zig +8 -6
- package/std/Io/File.zig +0 -9
- package/std/Io/Kqueue.zig +3 -3
- package/std/Io/Reader.zig +8 -14
- package/std/Io/Semaphore.zig +112 -17
- package/std/Io/Terminal.zig +1 -1
- package/std/Io/Threaded.zig +183 -46
- package/std/Io/Uring.zig +18 -20
- package/std/Io/Writer.zig +10 -7
- package/std/Io/net/HostName.zig +11 -6
- package/std/Io/net.zig +11 -11
- package/std/Io.zig +104 -38
- package/std/Random/ChaCha.zig +2 -2
- package/std/Random/benchmark.zig +2 -2
- package/std/Random.zig +6 -6
- package/std/SemanticVersion.zig +1 -1
- package/std/Target/Query.zig +2 -2
- package/std/Target/aarch64.zig +620 -77
- package/std/Target/amdgcn.zig +421 -21
- package/std/Target/arm.zig +40 -6
- package/std/Target/bpf.zig +6 -0
- package/std/Target/hexagon.zig +41 -6
- package/std/Target/loongarch.zig +18 -0
- package/std/Target/mips.zig +6 -0
- package/std/Target/nvptx.zig +58 -35
- package/std/Target/powerpc.zig +27 -19
- package/std/Target/riscv.zig +415 -177
- package/std/Target/sparc.zig +17 -0
- package/std/Target/wasm.zig +7 -0
- package/std/Target/x86.zig +200 -31
- package/std/Target/xtensa.zig +65 -0
- package/std/Target.zig +67 -14
- package/std/Thread.zig +5 -2
- package/std/array_hash_map.zig +103 -57
- package/std/array_list.zig +10 -31
- package/std/base64.zig +5 -5
- package/std/bit_set.zig +86 -69
- package/std/c/haiku.zig +3 -0
- package/std/c/serenity.zig +1 -6
- package/std/c.zig +123 -32
- package/std/compress/flate/Decompress.zig +3 -4
- package/std/compress/zstd/Decompress.zig +7 -9
- package/std/crypto/25519/curve25519.zig +2 -2
- package/std/crypto/25519/edwards25519.zig +3 -3
- package/std/crypto/25519/ristretto255.zig +2 -2
- package/std/crypto/25519/scalar.zig +6 -6
- package/std/crypto/25519/x25519.zig +1 -1
- package/std/crypto/Certificate.zig +14 -2
- package/std/crypto/Sha1.zig +1 -1
- package/std/crypto/aegis.zig +45 -39
- package/std/crypto/aes_ccm.zig +22 -22
- package/std/crypto/aes_gcm.zig +10 -12
- package/std/crypto/aes_ocb.zig +9 -9
- package/std/crypto/argon2.zig +15 -15
- package/std/crypto/ascon.zig +75 -33
- package/std/crypto/bcrypt.zig +20 -10
- package/std/crypto/benchmark.zig +7 -7
- package/std/crypto/blake2.zig +100 -64
- package/std/crypto/cbc_mac.zig +1 -1
- package/std/crypto/chacha20.zig +10 -10
- package/std/crypto/cmac.zig +3 -3
- package/std/crypto/codecs/asn1/Oid.zig +12 -1
- package/std/crypto/codecs/asn1/der/Encoder.zig +1 -1
- package/std/crypto/codecs/asn1.zig +1 -1
- package/std/crypto/codecs/base64_hex_ct.zig +3 -5
- package/std/crypto/ecdsa.zig +9 -9
- package/std/crypto/ff.zig +4 -5
- package/std/crypto/ghash_polyval.zig +4 -4
- package/std/crypto/hkdf.zig +1 -1
- package/std/crypto/isap.zig +3 -3
- package/std/crypto/kangarootwelve.zig +1 -1
- package/std/crypto/keccak_p.zig +8 -8
- package/std/crypto/md5.zig +1 -1
- package/std/crypto/ml_dsa.zig +39 -39
- package/std/crypto/ml_kem.zig +12 -34
- package/std/crypto/modes.zig +2 -2
- package/std/crypto/pbkdf2.zig +1 -1
- package/std/crypto/pcurves/common.zig +4 -5
- package/std/crypto/pcurves/p256/scalar.zig +3 -3
- package/std/crypto/pcurves/p384/scalar.zig +2 -2
- package/std/crypto/pcurves/secp256k1/scalar.zig +3 -3
- package/std/crypto/pcurves/tests/p256.zig +5 -5
- package/std/crypto/pcurves/tests/p384.zig +5 -5
- package/std/crypto/pcurves/tests/secp256k1.zig +3 -3
- package/std/crypto/salsa20.zig +8 -8
- package/std/crypto/sha2.zig +2 -2
- package/std/crypto/sha3.zig +2 -2
- package/std/crypto/siphash.zig +1 -1
- package/std/crypto/timing_safe.zig +10 -9
- package/std/crypto/tls/Client.zig +89 -13
- package/std/crypto/tls.zig +1 -1
- package/std/crypto.zig +4 -3
- package/std/debug/Dwarf.zig +15 -12
- package/std/debug/Pdb.zig +25 -17
- package/std/debug.zig +14 -8
- package/std/deque.zig +1 -1
- package/std/elf.zig +1 -1
- package/std/enums.zig +8 -8
- package/std/fmt/parse_float/decimal.zig +1 -1
- package/std/fmt/parse_float.zig +1 -1
- package/std/fmt.zig +14 -10
- package/std/fs/path.zig +7 -5
- package/std/hash/Adler32.zig +3 -3
- package/std/hash/benchmark.zig +2 -2
- package/std/hash/wyhash.zig +2 -2
- package/std/hash/xxhash.zig +0 -6
- package/std/hash_map.zig +20 -1
- package/std/heap/BufferFirstAllocator.zig +165 -0
- package/std/heap/debug_allocator.zig +2 -2
- package/std/heap/memory_pool.zig +34 -197
- package/std/heap.zig +2 -133
- package/std/http/Client.zig +21 -24
- package/std/http.zig +4 -5
- package/std/json/Scanner.zig +2 -2
- package/std/json/static.zig +2 -2
- package/std/{builtin.zig → lang.zig} +5 -1
- package/std/leb128.zig +2 -2
- package/std/math/big/int.zig +5 -5
- package/std/math/big.zig +4 -4
- package/std/math/copysign.zig +1 -1
- package/std/math/float.zig +62 -0
- package/std/math/frexp.zig +4 -4
- package/std/math/ilogb.zig +1 -1
- package/std/math/isfinite.zig +1 -1
- package/std/math/isinf.zig +1 -1
- package/std/math/isnan.zig +1 -2
- package/std/math/isnormal.zig +2 -2
- package/std/math/iszero.zig +2 -2
- package/std/math/ldexp.zig +2 -2
- package/std/math/log10.zig +0 -2
- package/std/math/modf.zig +1 -2
- package/std/math/nextafter.zig +3 -4
- package/std/math/pow.zig +1 -1
- package/std/math/powi.zig +2 -3
- package/std/math/signbit.zig +0 -1
- package/std/math.zig +21 -26
- package/std/mem/Allocator.zig +0 -6
- package/std/mem.zig +31 -31
- package/std/meta/trailer_flags.zig +1 -1
- package/std/meta.zig +4 -36
- package/std/multi_array_list.zig +24 -0
- package/std/os/emscripten.zig +7 -6
- package/std/os/linux/IoUring.zig +2 -0
- package/std/os/linux/aarch64.zig +41 -12
- package/std/os/linux/arc.zig +41 -12
- package/std/os/linux/arm.zig +41 -12
- package/std/os/linux/bpf.zig +6 -0
- package/std/os/linux/hexagon.zig +33 -11
- package/std/os/linux/ioctl.zig +2 -2
- 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/syscalls.zig +26 -1
- package/std/os/linux/thumb.zig +52 -36
- package/std/os/linux/x32.zig +41 -12
- package/std/os/linux/x86.zig +44 -15
- package/std/os/linux/x86_64.zig +41 -12
- package/std/os/linux.zig +416 -450
- package/std/os/plan9.zig +1 -1
- package/std/os/uefi/hii.zig +1 -1
- package/std/os/uefi/tables/boot_services.zig +9 -8
- package/std/os/uefi/tables/runtime_services.zig +1 -1
- package/std/os/windows.zig +130 -1
- package/std/os.zig +41 -0
- package/std/posix.zig +1 -1
- package/std/process/Environ.zig +1 -1
- package/std/process.zig +5 -4
- package/std/simd.zig +4 -21
- package/std/sort.zig +3 -3
- package/std/start.zig +17 -4
- package/std/std.zig +8 -1
- package/std/tar/Writer.zig +39 -33
- package/std/tar.zig +8 -4
- package/std/testing.zig +2 -2
- package/std/unicode.zig +13 -8
- package/std/zig/Ast/Render.zig +6 -30
- package/std/zig/Ast.zig +12 -37
- package/std/zig/AstGen.zig +175 -332
- package/std/zig/AstRlAnnotate.zig +1 -22
- package/std/zig/AstSmith.zig +5 -11
- package/std/zig/BuiltinFn.zig +0 -32
- package/std/zig/ErrorBundle.zig +6 -2
- package/std/zig/LibCInstallation.zig +34 -12
- package/std/zig/Parse.zig +11 -76
- package/std/zig/TokenSmith.zig +0 -6
- package/std/zig/WindowsSdk.zig +18 -18
- package/std/zig/Zir.zig +65 -132
- package/std/zig/ZonGen.zig +19 -27
- package/std/zig/llvm/Builder.zig +39 -33
- package/std/zig/llvm/bitcode_writer.zig +3 -3
- package/std/zig/llvm/ir.zig +8 -8
- package/std/zig/system/arm.zig +56 -2
- package/std/zig/system/windows.zig +34 -1
- package/std/zig/system/x86.zig +60 -16
- package/std/zig/system.zig +0 -10
- package/std/zig/target.zig +1 -4
- package/std/zig/tokenizer.zig +4 -43
- package/std/zig.zig +3 -14
- package/std/zip.zig +5 -5
- package/std/zon/parse.zig +1 -1
- package/zig.h +340 -1
- package/compiler_rt/long_double.zig +0 -37
- package/include/amxbf16transposeintrin.h +0 -94
- package/include/amxcomplextransposeintrin.h +0 -303
- package/include/amxfp16transposeintrin.h +0 -94
- package/include/amxmovrstransposeintrin.h +0 -200
- package/include/amxtf32transposeintrin.h +0 -105
- package/include/amxtransposeintrin.h +0 -248
- package/libc/include/hexagon-linux-any/asm/signal.h +0 -29
- package/libc/include/s390x-linux-any/asm/tape390.h +0 -103
- package/libc/mingw/math/lrintl.c +0 -18
- package/libc/mingw/math/rintl.c +0 -16
- package/libc/mingw/winpthreads/spinlock.c +0 -82
- package/libc/musl/src/linux/tee.c +0 -8
- package/libc/musl/src/math/i386/lrintl.c +0 -8
- package/libc/musl/src/math/i386/rintl.c +0 -7
- package/libc/musl/src/math/lrintl.c +0 -36
- package/libc/musl/src/math/rintl.c +0 -29
- package/libc/musl/src/math/s390x/rintl.c +0 -15
- package/libc/musl/src/math/x32/lrintl.s +0 -7
- package/libc/musl/src/math/x32/rintl.s +0 -6
- package/libc/musl/src/math/x86_64/lrintl.c +0 -8
- package/libc/musl/src/math/x86_64/rintl.c +0 -7
- package/libc/musl/src/string/strdup.c +0 -10
- package/libc/musl/src/string/strndup.c +0 -12
- package/libc/musl/src/string/wcsdup.c +0 -10
- package/libc/musl/src/thread/pthread_spin_destroy.c +0 -6
- package/libc/musl/src/thread/pthread_spin_init.c +0 -6
- package/libc/musl/src/thread/pthread_spin_lock.c +0 -8
- package/libc/musl/src/thread/pthread_spin_trylock.c +0 -7
- package/libc/musl/src/thread/pthread_spin_unlock.c +0 -7
- package/libc/musl/src/unistd/dup2.c +0 -20
- package/libc/musl/src/unistd/dup3.c +0 -26
- package/libc/wasi/thread-stub/pthread_spin_lock.c +0 -8
- package/libc/wasi/thread-stub/pthread_spin_trylock.c +0 -8
- package/libc/wasi/thread-stub/pthread_spin_unlock.c +0 -7
- package/libtsan/sanitizer_common/sanitizer_coverage_interface.inc +0 -43
- package/std/Build/Step/CheckObject.zig +0 -2764
- /package/std/{builtin → lang}/assembly.zig +0 -0
package/std/os/linux.zig
CHANGED
|
@@ -59,6 +59,7 @@ const arch_bits = switch (native_arch) {
|
|
|
59
59
|
|
|
60
60
|
const syscall_bits = if (native_arch.isThumb()) @import("linux/thumb.zig") else arch_bits;
|
|
61
61
|
|
|
62
|
+
pub const syscall_arg_t = syscall_bits.syscall_arg_t;
|
|
62
63
|
pub const syscall0 = syscall_bits.syscall0;
|
|
63
64
|
pub const syscall1 = syscall_bits.syscall1;
|
|
64
65
|
pub const syscall2 = syscall_bits.syscall2;
|
|
@@ -78,9 +79,9 @@ pub fn clone(
|
|
|
78
79
|
stack: usize,
|
|
79
80
|
flags: u32,
|
|
80
81
|
arg: usize,
|
|
81
|
-
ptid: ?*
|
|
82
|
+
ptid: ?*pid_t,
|
|
82
83
|
tp: usize, // aka tls
|
|
83
|
-
ctid: ?*
|
|
84
|
+
ctid: ?*pid_t,
|
|
84
85
|
) usize {
|
|
85
86
|
// Can't directly call a naked function; cast to C calling convention first.
|
|
86
87
|
return @as(*const fn (
|
|
@@ -88,9 +89,9 @@ pub fn clone(
|
|
|
88
89
|
usize,
|
|
89
90
|
u32,
|
|
90
91
|
usize,
|
|
91
|
-
?*
|
|
92
|
+
?*pid_t,
|
|
92
93
|
usize,
|
|
93
|
-
?*
|
|
94
|
+
?*pid_t,
|
|
94
95
|
) callconv(.c) usize, @ptrCast(&syscall_bits.clone))(func, stack, flags, arg, ptid, tp, ctid);
|
|
95
96
|
}
|
|
96
97
|
|
|
@@ -98,6 +99,8 @@ pub const ARCH = arch_bits.ARCH;
|
|
|
98
99
|
pub const HWCAP = arch_bits.HWCAP;
|
|
99
100
|
pub const SC = arch_bits.SC;
|
|
100
101
|
pub const VDSO = arch_bits.VDSO;
|
|
102
|
+
pub const user_desc = arch_bits.user_desc;
|
|
103
|
+
|
|
101
104
|
pub const blkcnt_t = u64;
|
|
102
105
|
pub const blksize_t = u32;
|
|
103
106
|
pub const dev_t = u64;
|
|
@@ -105,8 +108,13 @@ pub const ino_t = u64;
|
|
|
105
108
|
pub const mode_t = u32;
|
|
106
109
|
pub const nlink_t = u32;
|
|
107
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;
|
|
108
117
|
pub const time_t = arch_bits.time_t;
|
|
109
|
-
pub const user_desc = arch_bits.user_desc;
|
|
110
118
|
|
|
111
119
|
pub const tls = @import("linux/tls.zig");
|
|
112
120
|
pub const BPF = @import("linux/bpf.zig");
|
|
@@ -566,9 +574,11 @@ fn getauxvalImpl(index: usize) callconv(.c) usize {
|
|
|
566
574
|
// in a even-aligned register pair.
|
|
567
575
|
const require_aligned_register_pair =
|
|
568
576
|
builtin.cpu.arch.isArm() or
|
|
577
|
+
builtin.cpu.arch == .csky or
|
|
569
578
|
builtin.cpu.arch == .hexagon or
|
|
570
579
|
builtin.cpu.arch.isMIPS32() or
|
|
571
|
-
builtin.cpu.arch.isPowerPC32()
|
|
580
|
+
builtin.cpu.arch.isPowerPC32() or
|
|
581
|
+
builtin.cpu.arch.isXtensa();
|
|
572
582
|
|
|
573
583
|
// Split a 64bit value into a {LSB,MSB} pair.
|
|
574
584
|
// The LE/BE variants specify the endianness to assume.
|
|
@@ -611,13 +621,13 @@ pub fn brk(addr: usize) usize {
|
|
|
611
621
|
return syscall1(.brk, addr);
|
|
612
622
|
}
|
|
613
623
|
|
|
614
|
-
pub fn dup(old:
|
|
615
|
-
return syscall1(.dup, @as(
|
|
624
|
+
pub fn dup(old: fd_t) usize {
|
|
625
|
+
return syscall1(.dup, @as(u32, @bitCast(old)));
|
|
616
626
|
}
|
|
617
627
|
|
|
618
|
-
pub fn dup2(old:
|
|
628
|
+
pub fn dup2(old: fd_t, new: fd_t) usize {
|
|
619
629
|
if (@hasField(SYS, "dup2")) {
|
|
620
|
-
return syscall2(.dup2, @as(
|
|
630
|
+
return syscall2(.dup2, @as(u32, @bitCast(old)), @as(u32, @bitCast(new)));
|
|
621
631
|
} else {
|
|
622
632
|
if (old == new) {
|
|
623
633
|
if (std.debug.runtime_safety) {
|
|
@@ -626,13 +636,13 @@ pub fn dup2(old: i32, new: i32) usize {
|
|
|
626
636
|
}
|
|
627
637
|
return @as(usize, @intCast(old));
|
|
628
638
|
} else {
|
|
629
|
-
return syscall3(.dup3, @as(
|
|
639
|
+
return syscall3(.dup3, @as(u32, @bitCast(old)), @as(u32, @bitCast(new)), 0);
|
|
630
640
|
}
|
|
631
641
|
}
|
|
632
642
|
}
|
|
633
643
|
|
|
634
|
-
pub fn dup3(old:
|
|
635
|
-
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);
|
|
636
646
|
}
|
|
637
647
|
|
|
638
648
|
pub fn chdir(path: [*:0]const u8) usize {
|
|
@@ -640,7 +650,7 @@ pub fn chdir(path: [*:0]const u8) usize {
|
|
|
640
650
|
}
|
|
641
651
|
|
|
642
652
|
pub fn fchdir(fd: fd_t) usize {
|
|
643
|
-
return syscall1(.fchdir, @as(
|
|
653
|
+
return syscall1(.fchdir, @as(u32, @bitCast(fd)));
|
|
644
654
|
}
|
|
645
655
|
|
|
646
656
|
pub fn chroot(path: [*:0]const u8) usize {
|
|
@@ -662,7 +672,7 @@ pub const EXECVEAT = packed struct(u32) {
|
|
|
662
672
|
};
|
|
663
673
|
|
|
664
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 {
|
|
665
|
-
return syscall5(.execveat,
|
|
675
|
+
return syscall5(.execveat, @as(u32, @bitCast(dirfd)), @intFromPtr(path), @intFromPtr(argv), @intFromPtr(envp), @as(u32, @bitCast(flags)));
|
|
666
676
|
}
|
|
667
677
|
|
|
668
678
|
pub fn fork() usize {
|
|
@@ -675,37 +685,28 @@ pub fn fork() usize {
|
|
|
675
685
|
}
|
|
676
686
|
}
|
|
677
687
|
|
|
678
|
-
|
|
679
|
-
/// child does a return it will clobber the parent's stack.
|
|
680
|
-
/// It is advised to avoid this function and use clone instead, because
|
|
681
|
-
/// the compiler is not aware of how vfork affects control flow and you may
|
|
682
|
-
/// see different results in optimized builds.
|
|
683
|
-
pub inline fn vfork() usize {
|
|
684
|
-
return @call(.always_inline, syscall0, .{.vfork});
|
|
685
|
-
}
|
|
686
|
-
|
|
687
|
-
pub fn futimens(fd: i32, times: ?*const [2]timespec) usize {
|
|
688
|
+
pub fn futimens(fd: fd_t, times: ?*const [2]timespec) usize {
|
|
688
689
|
return utimensat(fd, null, times, 0);
|
|
689
690
|
}
|
|
690
691
|
|
|
691
|
-
pub fn utimensat(dirfd:
|
|
692
|
+
pub fn utimensat(dirfd: fd_t, path: ?[*:0]const u8, times: ?*const [2]timespec, flags: u32) usize {
|
|
692
693
|
return syscall4(
|
|
693
694
|
if (@hasField(SYS, "utimensat") and native_arch != .hexagon) .utimensat else .utimensat_time64,
|
|
694
|
-
@as(
|
|
695
|
+
@as(u32, @bitCast(dirfd)),
|
|
695
696
|
@intFromPtr(path),
|
|
696
697
|
@intFromPtr(times),
|
|
697
698
|
flags,
|
|
698
699
|
);
|
|
699
700
|
}
|
|
700
701
|
|
|
701
|
-
pub fn fallocate(fd:
|
|
702
|
-
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)) {
|
|
703
704
|
const offset_halves = splitValue64(offset);
|
|
704
705
|
const length_halves = splitValue64(length);
|
|
705
706
|
return syscall6(
|
|
706
707
|
.fallocate,
|
|
707
|
-
@as(
|
|
708
|
-
|
|
708
|
+
@as(u32, @bitCast(fd)),
|
|
709
|
+
mode,
|
|
709
710
|
offset_halves[0],
|
|
710
711
|
offset_halves[1],
|
|
711
712
|
length_halves[0],
|
|
@@ -714,8 +715,8 @@ pub fn fallocate(fd: i32, mode: i32, offset: i64, length: i64) usize {
|
|
|
714
715
|
} else {
|
|
715
716
|
return syscall4(
|
|
716
717
|
.fallocate,
|
|
717
|
-
@as(
|
|
718
|
-
|
|
718
|
+
@as(u32, @bitCast(fd)),
|
|
719
|
+
mode,
|
|
719
720
|
@as(u64, @bitCast(offset)),
|
|
720
721
|
@as(u64, @bitCast(length)),
|
|
721
722
|
);
|
|
@@ -886,21 +887,21 @@ pub fn getcwd(buf: [*]u8, size: usize) usize {
|
|
|
886
887
|
return syscall2(.getcwd, @intFromPtr(buf), size);
|
|
887
888
|
}
|
|
888
889
|
|
|
889
|
-
pub fn getdents(fd:
|
|
890
|
+
pub fn getdents(fd: fd_t, dirp: [*]u8, len: c_uint) usize {
|
|
890
891
|
return syscall3(
|
|
891
892
|
.getdents,
|
|
892
|
-
@as(
|
|
893
|
+
@as(u32, @bitCast(fd)),
|
|
893
894
|
@intFromPtr(dirp),
|
|
894
|
-
|
|
895
|
+
len,
|
|
895
896
|
);
|
|
896
897
|
}
|
|
897
898
|
|
|
898
|
-
pub fn getdents64(fd:
|
|
899
|
+
pub fn getdents64(fd: fd_t, dirp: [*]u8, len: c_uint) usize {
|
|
899
900
|
return syscall3(
|
|
900
901
|
.getdents64,
|
|
901
|
-
@as(
|
|
902
|
+
@as(u32, @bitCast(fd)),
|
|
902
903
|
@intFromPtr(dirp),
|
|
903
|
-
|
|
904
|
+
len,
|
|
904
905
|
);
|
|
905
906
|
}
|
|
906
907
|
|
|
@@ -908,12 +909,12 @@ pub fn inotify_init1(flags: u32) usize {
|
|
|
908
909
|
return syscall1(.inotify_init1, flags);
|
|
909
910
|
}
|
|
910
911
|
|
|
911
|
-
pub fn inotify_add_watch(fd:
|
|
912
|
-
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);
|
|
913
914
|
}
|
|
914
915
|
|
|
915
|
-
pub fn inotify_rm_watch(fd:
|
|
916
|
-
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)));
|
|
917
918
|
}
|
|
918
919
|
|
|
919
920
|
pub fn fanotify_init(flags: fanotify.InitFlags, event_f_flags: u32) usize {
|
|
@@ -927,24 +928,24 @@ pub fn fanotify_mark(
|
|
|
927
928
|
dirfd: fd_t,
|
|
928
929
|
pathname: ?[*:0]const u8,
|
|
929
930
|
) usize {
|
|
930
|
-
if (
|
|
931
|
+
if (@sizeOf(syscall_arg_t) < @sizeOf(u64)) {
|
|
931
932
|
const mask_halves = splitValue64(@bitCast(mask));
|
|
932
933
|
return syscall6(
|
|
933
934
|
.fanotify_mark,
|
|
934
|
-
@
|
|
935
|
+
@as(u32, @bitCast(fd)),
|
|
935
936
|
@as(u32, @bitCast(flags)),
|
|
936
937
|
mask_halves[0],
|
|
937
938
|
mask_halves[1],
|
|
938
|
-
@
|
|
939
|
+
@as(u32, @bitCast(dirfd)),
|
|
939
940
|
@intFromPtr(pathname),
|
|
940
941
|
);
|
|
941
942
|
} else {
|
|
942
943
|
return syscall5(
|
|
943
944
|
.fanotify_mark,
|
|
944
|
-
@
|
|
945
|
+
@as(u32, @bitCast(fd)),
|
|
945
946
|
@as(u32, @bitCast(flags)),
|
|
946
|
-
@bitCast(mask),
|
|
947
|
-
@
|
|
947
|
+
@as(u64, @bitCast(mask)),
|
|
948
|
+
@as(u32, @bitCast(dirfd)),
|
|
948
949
|
@intFromPtr(pathname),
|
|
949
950
|
);
|
|
950
951
|
}
|
|
@@ -953,7 +954,7 @@ pub fn fanotify_mark(
|
|
|
953
954
|
pub fn name_to_handle_at(
|
|
954
955
|
dirfd: fd_t,
|
|
955
956
|
pathname: [*:0]const u8,
|
|
956
|
-
handle: *
|
|
957
|
+
handle: *file_handle,
|
|
957
958
|
mount_id: *i32,
|
|
958
959
|
flags: u32,
|
|
959
960
|
) usize {
|
|
@@ -971,27 +972,27 @@ pub fn readlink(noalias path: [*:0]const u8, noalias buf_ptr: [*]u8, buf_len: us
|
|
|
971
972
|
if (@hasField(SYS, "readlink")) {
|
|
972
973
|
return syscall3(.readlink, @intFromPtr(path), @intFromPtr(buf_ptr), buf_len);
|
|
973
974
|
} else {
|
|
974
|
-
return syscall4(.readlinkat, @as(
|
|
975
|
+
return syscall4(.readlinkat, @as(u32, @bitCast(@as(i32, AT.FDCWD))), @intFromPtr(path), @intFromPtr(buf_ptr), buf_len);
|
|
975
976
|
}
|
|
976
977
|
}
|
|
977
978
|
|
|
978
|
-
pub fn readlinkat(dirfd:
|
|
979
|
-
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);
|
|
980
981
|
}
|
|
981
982
|
|
|
982
983
|
pub fn mkdir(path: [*:0]const u8, mode: mode_t) usize {
|
|
983
984
|
if (@hasField(SYS, "mkdir")) {
|
|
984
985
|
return syscall2(.mkdir, @intFromPtr(path), mode);
|
|
985
986
|
} else {
|
|
986
|
-
return syscall3(.mkdirat, @as(
|
|
987
|
+
return syscall3(.mkdirat, @as(u32, @bitCast(@as(i32, AT.FDCWD))), @intFromPtr(path), mode);
|
|
987
988
|
}
|
|
988
989
|
}
|
|
989
990
|
|
|
990
|
-
pub fn mkdirat(dirfd:
|
|
991
|
-
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);
|
|
992
993
|
}
|
|
993
994
|
|
|
994
|
-
pub fn mknod(path: [*:0]const u8, mode:
|
|
995
|
+
pub fn mknod(path: [*:0]const u8, mode: mode_t, dev: dev_t) usize {
|
|
995
996
|
if (@hasField(SYS, "mknod")) {
|
|
996
997
|
return syscall3(.mknod, @intFromPtr(path), mode, dev);
|
|
997
998
|
} else {
|
|
@@ -999,8 +1000,8 @@ pub fn mknod(path: [*:0]const u8, mode: u32, dev: u32) usize {
|
|
|
999
1000
|
}
|
|
1000
1001
|
}
|
|
1001
1002
|
|
|
1002
|
-
pub fn mknodat(dirfd:
|
|
1003
|
-
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);
|
|
1004
1005
|
}
|
|
1005
1006
|
|
|
1006
1007
|
pub fn mount(special: ?[*:0]const u8, dir: [*:0]const u8, fstype: ?[*:0]const u8, flags: u32, data: usize) usize {
|
|
@@ -1036,7 +1037,14 @@ pub const MOVE_MOUNT = packed struct(u32) {
|
|
|
1036
1037
|
};
|
|
1037
1038
|
|
|
1038
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 {
|
|
1039
|
-
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
|
+
);
|
|
1040
1048
|
}
|
|
1041
1049
|
|
|
1042
1050
|
pub const MOUNT_ATTR = packed struct(u32) {
|
|
@@ -1068,7 +1076,7 @@ pub const MOUNT_ATTR = packed struct(u32) {
|
|
|
1068
1076
|
};
|
|
1069
1077
|
|
|
1070
1078
|
pub fn mount_setattr(dirfd: fd_t, path: [*:0]const u8, flags: MOUNT_ATTR) usize {
|
|
1071
|
-
return syscall3(.mount_setattr,
|
|
1079
|
+
return syscall3(.mount_setattr, @as(u32, @bitCast(dirfd)), @intFromPtr(path), @as(u32, @bitCast(flags)));
|
|
1072
1080
|
}
|
|
1073
1081
|
|
|
1074
1082
|
pub const FSOPEN = packed struct(u32) {
|
|
@@ -1101,7 +1109,7 @@ pub const FSCONFIG_CMD = enum(u32) {
|
|
|
1101
1109
|
};
|
|
1102
1110
|
|
|
1103
1111
|
pub fn fsconfig(fd: fd_t, cmd: FSCONFIG_CMD, key: ?[*:0]const u8, value: ?[*:0]const u8, aux: u32) usize {
|
|
1104
|
-
return syscall5(.fsconfig,
|
|
1112
|
+
return syscall5(.fsconfig, @as(u32, @bitCast(fd)), @intFromEnum(cmd), @intFromPtr(key), @intFromPtr(value), aux);
|
|
1105
1113
|
}
|
|
1106
1114
|
|
|
1107
1115
|
pub const FSMOUNT = packed struct(u32) {
|
|
@@ -1111,7 +1119,7 @@ pub const FSMOUNT = packed struct(u32) {
|
|
|
1111
1119
|
};
|
|
1112
1120
|
|
|
1113
1121
|
pub fn fsmount(fsfd: fd_t, flags: FSMOUNT, attr_flags: MOUNT_ATTR) usize {
|
|
1114
|
-
return syscall3(.fsmount,
|
|
1122
|
+
return syscall3(.fsmount, @as(u32, @bitCast(fsfd)), @as(u32, @bitCast(flags)), @as(u32, @bitCast(attr_flags)));
|
|
1115
1123
|
}
|
|
1116
1124
|
|
|
1117
1125
|
pub const FSPICK = packed struct(u32) {
|
|
@@ -1124,7 +1132,7 @@ pub const FSPICK = packed struct(u32) {
|
|
|
1124
1132
|
};
|
|
1125
1133
|
|
|
1126
1134
|
pub fn fspick(dirfd: fd_t, path: [*:0]const u8, flags: FSPICK) usize {
|
|
1127
|
-
return syscall3(.fspick,
|
|
1135
|
+
return syscall3(.fspick, @as(u32, @bitCast(dirfd)), @intFromPtr(path), @as(u32, @bitCast(flags)));
|
|
1128
1136
|
}
|
|
1129
1137
|
|
|
1130
1138
|
pub fn pivot_root(new_root: [*:0]const u8, put_old: [*:0]const u8) usize {
|
|
@@ -1139,7 +1147,7 @@ fn mmap2Unit() u64 {
|
|
|
1139
1147
|
};
|
|
1140
1148
|
}
|
|
1141
1149
|
|
|
1142
|
-
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 {
|
|
1143
1151
|
if (@hasField(SYS, "mmap2")) {
|
|
1144
1152
|
return syscall6(
|
|
1145
1153
|
.mmap2,
|
|
@@ -1147,7 +1155,7 @@ pub fn mmap(address: ?[*]u8, length: usize, prot: PROT, flags: MAP, fd: i32, off
|
|
|
1147
1155
|
length,
|
|
1148
1156
|
@as(u32, @bitCast(prot)),
|
|
1149
1157
|
@as(u32, @bitCast(flags)),
|
|
1150
|
-
@
|
|
1158
|
+
@as(u32, @bitCast(fd)),
|
|
1151
1159
|
@truncate(@as(u64, @bitCast(offset)) / mmap2Unit()),
|
|
1152
1160
|
);
|
|
1153
1161
|
} else {
|
|
@@ -1160,7 +1168,7 @@ pub fn mmap(address: ?[*]u8, length: usize, prot: PROT, flags: MAP, fd: i32, off
|
|
|
1160
1168
|
length,
|
|
1161
1169
|
@as(u32, @bitCast(prot)),
|
|
1162
1170
|
@as(u32, @bitCast(flags)),
|
|
1163
|
-
@
|
|
1171
|
+
@as(u32, @bitCast(fd)),
|
|
1164
1172
|
@as(u64, @bitCast(offset)),
|
|
1165
1173
|
}),
|
|
1166
1174
|
) else syscall6(
|
|
@@ -1169,7 +1177,7 @@ pub fn mmap(address: ?[*]u8, length: usize, prot: PROT, flags: MAP, fd: i32, off
|
|
|
1169
1177
|
length,
|
|
1170
1178
|
@as(u32, @bitCast(prot)),
|
|
1171
1179
|
@as(u32, @bitCast(flags)),
|
|
1172
|
-
@
|
|
1180
|
+
@as(u32, @bitCast(fd)),
|
|
1173
1181
|
@as(u64, @bitCast(offset)),
|
|
1174
1182
|
);
|
|
1175
1183
|
}
|
|
@@ -1248,21 +1256,23 @@ pub fn munlockall() usize {
|
|
|
1248
1256
|
}
|
|
1249
1257
|
|
|
1250
1258
|
pub fn poll(fds: [*]pollfd, n: nfds_t, timeout: i32) usize {
|
|
1251
|
-
|
|
1252
|
-
return syscall3(.poll, @intFromPtr(fds), n, @as(u32, @bitCast(timeout)))
|
|
1253
|
-
else
|
|
1254
|
-
|
|
1259
|
+
if (@hasField(SYS, "poll")) {
|
|
1260
|
+
return syscall3(.poll, @intFromPtr(fds), n, @as(u32, @bitCast(timeout)));
|
|
1261
|
+
} else {
|
|
1262
|
+
var ts: timespec = if (timeout >= 0)
|
|
1263
|
+
.{
|
|
1264
|
+
.sec = @divTrunc(timeout, 1000),
|
|
1265
|
+
.nsec = @rem(timeout, 1000) * 1000000,
|
|
1266
|
+
}
|
|
1267
|
+
else
|
|
1268
|
+
undefined;
|
|
1269
|
+
return ppoll(
|
|
1255
1270
|
fds,
|
|
1256
1271
|
n,
|
|
1257
|
-
if (timeout >= 0)
|
|
1258
|
-
@constCast(×pec{
|
|
1259
|
-
.sec = @divTrunc(timeout, 1000),
|
|
1260
|
-
.nsec = @rem(timeout, 1000) * 1000000,
|
|
1261
|
-
})
|
|
1262
|
-
else
|
|
1263
|
-
null,
|
|
1272
|
+
if (timeout >= 0) &ts else null,
|
|
1264
1273
|
null,
|
|
1265
1274
|
);
|
|
1275
|
+
}
|
|
1266
1276
|
}
|
|
1267
1277
|
|
|
1268
1278
|
pub fn ppoll(fds: [*]pollfd, n: nfds_t, timeout: ?*timespec, sigmask: ?*const sigset_t) usize {
|
|
@@ -1276,70 +1286,142 @@ pub fn ppoll(fds: [*]pollfd, n: nfds_t, timeout: ?*timespec, sigmask: ?*const si
|
|
|
1276
1286
|
);
|
|
1277
1287
|
}
|
|
1278
1288
|
|
|
1279
|
-
pub fn read(fd:
|
|
1280
|
-
return syscall3(.read, @as(
|
|
1289
|
+
pub fn read(fd: fd_t, buf: [*]u8, count: usize) usize {
|
|
1290
|
+
return syscall3(.read, @as(u32, @bitCast(fd)), @intFromPtr(buf), count);
|
|
1291
|
+
}
|
|
1292
|
+
|
|
1293
|
+
pub fn pread(fd: fd_t, buf: [*]u8, count: usize, offset: off_t) usize {
|
|
1294
|
+
if (@sizeOf(syscall_arg_t) < @sizeOf(u64)) {
|
|
1295
|
+
const offset_halves = splitValue64(offset);
|
|
1296
|
+
if (require_aligned_register_pair) {
|
|
1297
|
+
return syscall6(
|
|
1298
|
+
.pread64,
|
|
1299
|
+
@as(u32, @bitCast(fd)),
|
|
1300
|
+
@intFromPtr(buf),
|
|
1301
|
+
count,
|
|
1302
|
+
0,
|
|
1303
|
+
offset_halves[0],
|
|
1304
|
+
offset_halves[1],
|
|
1305
|
+
);
|
|
1306
|
+
} else {
|
|
1307
|
+
return syscall5(
|
|
1308
|
+
.pread64,
|
|
1309
|
+
@as(u32, @bitCast(fd)),
|
|
1310
|
+
@intFromPtr(buf),
|
|
1311
|
+
count,
|
|
1312
|
+
offset_halves[0],
|
|
1313
|
+
offset_halves[1],
|
|
1314
|
+
);
|
|
1315
|
+
}
|
|
1316
|
+
} else {
|
|
1317
|
+
return syscall4(
|
|
1318
|
+
.pread64,
|
|
1319
|
+
@as(u32, @bitCast(fd)),
|
|
1320
|
+
@intFromPtr(buf),
|
|
1321
|
+
count,
|
|
1322
|
+
@as(u64, @bitCast(offset)),
|
|
1323
|
+
);
|
|
1324
|
+
}
|
|
1325
|
+
}
|
|
1326
|
+
|
|
1327
|
+
pub fn readv(fd: fd_t, iov: [*]const iovec, count: usize) usize {
|
|
1328
|
+
return syscall3(.readv, @as(u32, @bitCast(fd)), @intFromPtr(iov), count);
|
|
1281
1329
|
}
|
|
1282
1330
|
|
|
1283
|
-
pub fn preadv(fd:
|
|
1331
|
+
pub fn preadv(fd: fd_t, iov: [*]const iovec, count: usize, offset: off_t) usize {
|
|
1284
1332
|
const offset_u: u64 = @bitCast(offset);
|
|
1285
1333
|
return syscall5(
|
|
1286
1334
|
.preadv,
|
|
1287
|
-
@as(
|
|
1335
|
+
@as(u32, @bitCast(fd)),
|
|
1288
1336
|
@intFromPtr(iov),
|
|
1289
1337
|
count,
|
|
1290
1338
|
// Kernel expects the offset is split into largest natural word-size.
|
|
1291
1339
|
// See following link for detail:
|
|
1292
1340
|
// https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=601cc11d054ae4b5e9b5babec3d8e4667a2cb9b5
|
|
1293
|
-
@
|
|
1294
|
-
if (
|
|
1341
|
+
@truncate(offset_u),
|
|
1342
|
+
if (@sizeOf(syscall_arg_t) < @sizeOf(u64)) @truncate(offset_u >> 32) else 0,
|
|
1295
1343
|
);
|
|
1296
1344
|
}
|
|
1297
1345
|
|
|
1298
|
-
pub fn preadv2(fd:
|
|
1346
|
+
pub fn preadv2(fd: fd_t, iov: [*]const iovec, count: usize, offset: off_t, flags: kernel_rwf) usize {
|
|
1299
1347
|
const offset_u: u64 = @bitCast(offset);
|
|
1300
1348
|
return syscall6(
|
|
1301
1349
|
.preadv2,
|
|
1302
|
-
@as(
|
|
1350
|
+
@as(u32, @bitCast(fd)),
|
|
1303
1351
|
@intFromPtr(iov),
|
|
1304
1352
|
count,
|
|
1305
1353
|
// See comments in preadv
|
|
1306
|
-
@
|
|
1307
|
-
if (
|
|
1354
|
+
@truncate(offset_u),
|
|
1355
|
+
if (@sizeOf(syscall_arg_t) < @sizeOf(u64)) @truncate(offset_u >> 32) else 0,
|
|
1308
1356
|
flags,
|
|
1309
1357
|
);
|
|
1310
1358
|
}
|
|
1311
1359
|
|
|
1312
|
-
pub fn
|
|
1313
|
-
return syscall3(.
|
|
1360
|
+
pub fn write(fd: fd_t, buf: [*]const u8, count: usize) usize {
|
|
1361
|
+
return syscall3(.write, @as(u32, @bitCast(fd)), @intFromPtr(buf), count);
|
|
1362
|
+
}
|
|
1363
|
+
|
|
1364
|
+
pub fn pwrite(fd: fd_t, buf: [*]const u8, count: usize, offset: off_t) usize {
|
|
1365
|
+
if (@sizeOf(syscall_arg_t) < @sizeOf(u64)) {
|
|
1366
|
+
const offset_halves = splitValue64(offset);
|
|
1367
|
+
if (require_aligned_register_pair) {
|
|
1368
|
+
return syscall6(
|
|
1369
|
+
.pwrite64,
|
|
1370
|
+
@as(u32, @bitCast(fd)),
|
|
1371
|
+
@intFromPtr(buf),
|
|
1372
|
+
count,
|
|
1373
|
+
0,
|
|
1374
|
+
offset_halves[0],
|
|
1375
|
+
offset_halves[1],
|
|
1376
|
+
);
|
|
1377
|
+
} else {
|
|
1378
|
+
return syscall5(
|
|
1379
|
+
.pwrite64,
|
|
1380
|
+
@as(u32, @bitCast(fd)),
|
|
1381
|
+
@intFromPtr(buf),
|
|
1382
|
+
count,
|
|
1383
|
+
offset_halves[0],
|
|
1384
|
+
offset_halves[1],
|
|
1385
|
+
);
|
|
1386
|
+
}
|
|
1387
|
+
} else {
|
|
1388
|
+
return syscall4(
|
|
1389
|
+
.pwrite64,
|
|
1390
|
+
@as(u32, @bitCast(fd)),
|
|
1391
|
+
@intFromPtr(buf),
|
|
1392
|
+
count,
|
|
1393
|
+
@as(u64, @bitCast(offset)),
|
|
1394
|
+
);
|
|
1395
|
+
}
|
|
1314
1396
|
}
|
|
1315
1397
|
|
|
1316
|
-
pub fn writev(fd:
|
|
1317
|
-
return syscall3(.writev, @as(
|
|
1398
|
+
pub fn writev(fd: fd_t, iov: [*]const iovec_const, count: usize) usize {
|
|
1399
|
+
return syscall3(.writev, @as(u32, @bitCast(fd)), @intFromPtr(iov), count);
|
|
1318
1400
|
}
|
|
1319
1401
|
|
|
1320
|
-
pub fn pwritev(fd:
|
|
1402
|
+
pub fn pwritev(fd: fd_t, iov: [*]const iovec_const, count: usize, offset: off_t) usize {
|
|
1321
1403
|
const offset_u: u64 = @bitCast(offset);
|
|
1322
1404
|
return syscall5(
|
|
1323
1405
|
.pwritev,
|
|
1324
|
-
@as(
|
|
1406
|
+
@as(u32, @bitCast(fd)),
|
|
1325
1407
|
@intFromPtr(iov),
|
|
1326
1408
|
count,
|
|
1327
1409
|
// See comments in preadv
|
|
1328
|
-
@
|
|
1329
|
-
if (
|
|
1410
|
+
@truncate(offset_u),
|
|
1411
|
+
if (@sizeOf(syscall_arg_t) < @sizeOf(u64)) @truncate(offset_u >> 32) else 0,
|
|
1330
1412
|
);
|
|
1331
1413
|
}
|
|
1332
1414
|
|
|
1333
|
-
pub fn pwritev2(fd:
|
|
1415
|
+
pub fn pwritev2(fd: fd_t, iov: [*]const iovec_const, count: usize, offset: off_t, flags: kernel_rwf) usize {
|
|
1334
1416
|
const offset_u: u64 = @bitCast(offset);
|
|
1335
1417
|
return syscall6(
|
|
1336
1418
|
.pwritev2,
|
|
1337
|
-
@as(
|
|
1419
|
+
@as(u32, @bitCast(fd)),
|
|
1338
1420
|
@intFromPtr(iov),
|
|
1339
1421
|
count,
|
|
1340
1422
|
// See comments in preadv
|
|
1341
|
-
@
|
|
1342
|
-
if (
|
|
1423
|
+
@truncate(offset_u),
|
|
1424
|
+
if (@sizeOf(syscall_arg_t) < @sizeOf(u64)) @truncate(offset_u >> 32) else 0,
|
|
1343
1425
|
flags,
|
|
1344
1426
|
);
|
|
1345
1427
|
}
|
|
@@ -1348,7 +1430,7 @@ pub fn rmdir(path: [*:0]const u8) usize {
|
|
|
1348
1430
|
if (@hasField(SYS, "rmdir")) {
|
|
1349
1431
|
return syscall1(.rmdir, @intFromPtr(path));
|
|
1350
1432
|
} else {
|
|
1351
|
-
return syscall3(.unlinkat, @as(
|
|
1433
|
+
return syscall3(.unlinkat, @as(u32, @bitCast(@as(i32, AT.FDCWD))), @intFromPtr(path), AT.REMOVEDIR);
|
|
1352
1434
|
}
|
|
1353
1435
|
}
|
|
1354
1436
|
|
|
@@ -1356,54 +1438,15 @@ pub fn symlink(existing: [*:0]const u8, new: [*:0]const u8) usize {
|
|
|
1356
1438
|
if (@hasField(SYS, "symlink")) {
|
|
1357
1439
|
return syscall2(.symlink, @intFromPtr(existing), @intFromPtr(new));
|
|
1358
1440
|
} else {
|
|
1359
|
-
return syscall3(.symlinkat, @intFromPtr(existing), @as(
|
|
1441
|
+
return syscall3(.symlinkat, @intFromPtr(existing), @as(u32, @bitCast(@as(i32, AT.FDCWD))), @intFromPtr(new));
|
|
1360
1442
|
}
|
|
1361
1443
|
}
|
|
1362
1444
|
|
|
1363
|
-
pub fn symlinkat(existing: [*:0]const u8, newfd:
|
|
1364
|
-
return syscall3(.symlinkat, @intFromPtr(existing), @as(
|
|
1445
|
+
pub fn symlinkat(existing: [*:0]const u8, newfd: fd_t, newpath: [*:0]const u8) usize {
|
|
1446
|
+
return syscall3(.symlinkat, @intFromPtr(existing), @as(u32, @bitCast(newfd)), @intFromPtr(newpath));
|
|
1365
1447
|
}
|
|
1366
1448
|
|
|
1367
|
-
pub fn
|
|
1368
|
-
if (@hasField(SYS, "pread64") and usize_bits < 64) {
|
|
1369
|
-
const offset_halves = splitValue64(offset);
|
|
1370
|
-
if (require_aligned_register_pair) {
|
|
1371
|
-
return syscall6(
|
|
1372
|
-
.pread64,
|
|
1373
|
-
@as(usize, @bitCast(@as(isize, fd))),
|
|
1374
|
-
@intFromPtr(buf),
|
|
1375
|
-
count,
|
|
1376
|
-
0,
|
|
1377
|
-
offset_halves[0],
|
|
1378
|
-
offset_halves[1],
|
|
1379
|
-
);
|
|
1380
|
-
} else {
|
|
1381
|
-
return syscall5(
|
|
1382
|
-
.pread64,
|
|
1383
|
-
@as(usize, @bitCast(@as(isize, fd))),
|
|
1384
|
-
@intFromPtr(buf),
|
|
1385
|
-
count,
|
|
1386
|
-
offset_halves[0],
|
|
1387
|
-
offset_halves[1],
|
|
1388
|
-
);
|
|
1389
|
-
}
|
|
1390
|
-
} else {
|
|
1391
|
-
// Some architectures (eg. 64bit SPARC) pread is called pread64.
|
|
1392
|
-
const syscall_number = if (!@hasField(SYS, "pread") and @hasField(SYS, "pread64"))
|
|
1393
|
-
.pread64
|
|
1394
|
-
else
|
|
1395
|
-
.pread;
|
|
1396
|
-
return syscall4(
|
|
1397
|
-
syscall_number,
|
|
1398
|
-
@as(usize, @bitCast(@as(isize, fd))),
|
|
1399
|
-
@intFromPtr(buf),
|
|
1400
|
-
count,
|
|
1401
|
-
@as(u64, @bitCast(offset)),
|
|
1402
|
-
);
|
|
1403
|
-
}
|
|
1404
|
-
}
|
|
1405
|
-
|
|
1406
|
-
pub fn access(path: [*:0]const u8, mode: u32) usize {
|
|
1449
|
+
pub fn access(path: [*:0]const u8, mode: mode_t) usize {
|
|
1407
1450
|
if (@hasField(SYS, "access")) {
|
|
1408
1451
|
return syscall2(.access, @intFromPtr(path), mode);
|
|
1409
1452
|
} else {
|
|
@@ -1411,19 +1454,19 @@ pub fn access(path: [*:0]const u8, mode: u32) usize {
|
|
|
1411
1454
|
}
|
|
1412
1455
|
}
|
|
1413
1456
|
|
|
1414
|
-
pub fn faccessat(dirfd:
|
|
1457
|
+
pub fn faccessat(dirfd: fd_t, path: [*:0]const u8, mode: mode_t, flags: u32) usize {
|
|
1415
1458
|
if (flags == 0) {
|
|
1416
|
-
return syscall3(.faccessat, @as(
|
|
1459
|
+
return syscall3(.faccessat, @as(u32, @bitCast(dirfd)), @intFromPtr(path), mode);
|
|
1417
1460
|
}
|
|
1418
|
-
return syscall4(.faccessat2, @as(
|
|
1461
|
+
return syscall4(.faccessat2, @as(u32, @bitCast(dirfd)), @intFromPtr(path), mode, flags);
|
|
1419
1462
|
}
|
|
1420
1463
|
|
|
1421
1464
|
pub fn acct(path: [*:0]const u8) usize {
|
|
1422
1465
|
return syscall1(.acct, @intFromPtr(path));
|
|
1423
1466
|
}
|
|
1424
1467
|
|
|
1425
|
-
pub fn pipe(fd: *[2]
|
|
1426
|
-
if (
|
|
1468
|
+
pub fn pipe(fd: *[2]fd_t) usize {
|
|
1469
|
+
if (native_arch.isMIPS() or native_arch.isSPARC()) {
|
|
1427
1470
|
return syscall_pipe(fd);
|
|
1428
1471
|
} else if (@hasField(SYS, "pipe")) {
|
|
1429
1472
|
return syscall1(.pipe, @intFromPtr(fd));
|
|
@@ -1432,21 +1475,17 @@ pub fn pipe(fd: *[2]i32) usize {
|
|
|
1432
1475
|
}
|
|
1433
1476
|
}
|
|
1434
1477
|
|
|
1435
|
-
pub fn pipe2(fd: *[2]
|
|
1478
|
+
pub fn pipe2(fd: *[2]fd_t, flags: O) usize {
|
|
1436
1479
|
return syscall2(.pipe2, @intFromPtr(fd), @as(u32, @bitCast(flags)));
|
|
1437
1480
|
}
|
|
1438
1481
|
|
|
1439
|
-
pub fn
|
|
1440
|
-
|
|
1441
|
-
}
|
|
1442
|
-
|
|
1443
|
-
pub fn ftruncate(fd: i32, length: i64) usize {
|
|
1444
|
-
if (@hasField(SYS, "ftruncate64") and usize_bits < 64) {
|
|
1482
|
+
pub fn ftruncate(fd: fd_t, length: off_t) usize {
|
|
1483
|
+
if (@sizeOf(syscall_arg_t) < @sizeOf(u64)) {
|
|
1445
1484
|
const length_halves = splitValue64(length);
|
|
1446
1485
|
if (require_aligned_register_pair) {
|
|
1447
1486
|
return syscall4(
|
|
1448
1487
|
.ftruncate64,
|
|
1449
|
-
@as(
|
|
1488
|
+
@as(u32, @bitCast(fd)),
|
|
1450
1489
|
0,
|
|
1451
1490
|
length_halves[0],
|
|
1452
1491
|
length_halves[1],
|
|
@@ -1454,7 +1493,7 @@ pub fn ftruncate(fd: i32, length: i64) usize {
|
|
|
1454
1493
|
} else {
|
|
1455
1494
|
return syscall3(
|
|
1456
1495
|
.ftruncate64,
|
|
1457
|
-
@as(
|
|
1496
|
+
@as(u32, @bitCast(fd)),
|
|
1458
1497
|
length_halves[0],
|
|
1459
1498
|
length_halves[1],
|
|
1460
1499
|
);
|
|
@@ -1462,48 +1501,8 @@ pub fn ftruncate(fd: i32, length: i64) usize {
|
|
|
1462
1501
|
} else {
|
|
1463
1502
|
return syscall2(
|
|
1464
1503
|
.ftruncate,
|
|
1465
|
-
@as(
|
|
1466
|
-
@as(
|
|
1467
|
-
);
|
|
1468
|
-
}
|
|
1469
|
-
}
|
|
1470
|
-
|
|
1471
|
-
pub fn pwrite(fd: i32, buf: [*]const u8, count: usize, offset: i64) usize {
|
|
1472
|
-
if (@hasField(SYS, "pwrite64") and usize_bits < 64) {
|
|
1473
|
-
const offset_halves = splitValue64(offset);
|
|
1474
|
-
|
|
1475
|
-
if (require_aligned_register_pair) {
|
|
1476
|
-
return syscall6(
|
|
1477
|
-
.pwrite64,
|
|
1478
|
-
@as(usize, @bitCast(@as(isize, fd))),
|
|
1479
|
-
@intFromPtr(buf),
|
|
1480
|
-
count,
|
|
1481
|
-
0,
|
|
1482
|
-
offset_halves[0],
|
|
1483
|
-
offset_halves[1],
|
|
1484
|
-
);
|
|
1485
|
-
} else {
|
|
1486
|
-
return syscall5(
|
|
1487
|
-
.pwrite64,
|
|
1488
|
-
@as(usize, @bitCast(@as(isize, fd))),
|
|
1489
|
-
@intFromPtr(buf),
|
|
1490
|
-
count,
|
|
1491
|
-
offset_halves[0],
|
|
1492
|
-
offset_halves[1],
|
|
1493
|
-
);
|
|
1494
|
-
}
|
|
1495
|
-
} else {
|
|
1496
|
-
// Some architectures (eg. 64bit SPARC) pwrite is called pwrite64.
|
|
1497
|
-
const syscall_number = if (!@hasField(SYS, "pwrite") and @hasField(SYS, "pwrite64"))
|
|
1498
|
-
.pwrite64
|
|
1499
|
-
else
|
|
1500
|
-
.pwrite;
|
|
1501
|
-
return syscall4(
|
|
1502
|
-
syscall_number,
|
|
1503
|
-
@as(usize, @bitCast(@as(isize, fd))),
|
|
1504
|
-
@intFromPtr(buf),
|
|
1505
|
-
count,
|
|
1506
|
-
@as(u64, @bitCast(offset)),
|
|
1504
|
+
@as(u32, @bitCast(fd)),
|
|
1505
|
+
@as(u64, @bitCast(length)),
|
|
1507
1506
|
);
|
|
1508
1507
|
}
|
|
1509
1508
|
}
|
|
@@ -1514,50 +1513,50 @@ pub fn rename(old: [*:0]const u8, new: [*:0]const u8) usize {
|
|
|
1514
1513
|
} else if (@hasField(SYS, "renameat")) {
|
|
1515
1514
|
return syscall4(
|
|
1516
1515
|
.renameat,
|
|
1517
|
-
@as(
|
|
1516
|
+
@as(u32, @bitCast(@as(i32, AT.FDCWD))),
|
|
1518
1517
|
@intFromPtr(old),
|
|
1519
|
-
@as(
|
|
1518
|
+
@as(u32, @bitCast(@as(i32, AT.FDCWD))),
|
|
1520
1519
|
@intFromPtr(new),
|
|
1521
1520
|
);
|
|
1522
1521
|
} else {
|
|
1523
1522
|
return syscall5(
|
|
1524
1523
|
.renameat2,
|
|
1525
|
-
@as(
|
|
1524
|
+
@as(u32, @bitCast(@as(i32, AT.FDCWD))),
|
|
1526
1525
|
@intFromPtr(old),
|
|
1527
|
-
@as(
|
|
1526
|
+
@as(u32, @bitCast(@as(i32, AT.FDCWD))),
|
|
1528
1527
|
@intFromPtr(new),
|
|
1529
1528
|
0,
|
|
1530
1529
|
);
|
|
1531
1530
|
}
|
|
1532
1531
|
}
|
|
1533
1532
|
|
|
1534
|
-
pub fn renameat(oldfd:
|
|
1533
|
+
pub fn renameat(oldfd: fd_t, oldpath: [*:0]const u8, newfd: fd_t, newpath: [*:0]const u8) usize {
|
|
1535
1534
|
if (@hasField(SYS, "renameat")) {
|
|
1536
1535
|
return syscall4(
|
|
1537
1536
|
.renameat,
|
|
1538
|
-
@as(
|
|
1537
|
+
@as(u32, @bitCast(oldfd)),
|
|
1539
1538
|
@intFromPtr(oldpath),
|
|
1540
|
-
@as(
|
|
1539
|
+
@as(u32, @bitCast(newfd)),
|
|
1541
1540
|
@intFromPtr(newpath),
|
|
1542
1541
|
);
|
|
1543
1542
|
} else {
|
|
1544
1543
|
return syscall5(
|
|
1545
1544
|
.renameat2,
|
|
1546
|
-
@as(
|
|
1545
|
+
@as(u32, @bitCast(oldfd)),
|
|
1547
1546
|
@intFromPtr(oldpath),
|
|
1548
|
-
@as(
|
|
1547
|
+
@as(u32, @bitCast(newfd)),
|
|
1549
1548
|
@intFromPtr(newpath),
|
|
1550
1549
|
0,
|
|
1551
1550
|
);
|
|
1552
1551
|
}
|
|
1553
1552
|
}
|
|
1554
1553
|
|
|
1555
|
-
pub fn renameat2(oldfd:
|
|
1554
|
+
pub fn renameat2(oldfd: fd_t, oldpath: [*:0]const u8, newfd: fd_t, newpath: [*:0]const u8, flags: RENAME) usize {
|
|
1556
1555
|
return syscall5(
|
|
1557
1556
|
.renameat2,
|
|
1558
|
-
@as(
|
|
1557
|
+
@as(u32, @bitCast(oldfd)),
|
|
1559
1558
|
@intFromPtr(oldpath),
|
|
1560
|
-
@as(
|
|
1559
|
+
@as(u32, @bitCast(newfd)),
|
|
1561
1560
|
@intFromPtr(newpath),
|
|
1562
1561
|
@as(u32, @bitCast(flags)),
|
|
1563
1562
|
);
|
|
@@ -1569,7 +1568,7 @@ pub fn open(path: [*:0]const u8, flags: O, perm: mode_t) usize {
|
|
|
1569
1568
|
} else {
|
|
1570
1569
|
return syscall4(
|
|
1571
1570
|
.openat,
|
|
1572
|
-
@bitCast(@as(
|
|
1571
|
+
@as(u32, @bitCast(@as(i32, AT.FDCWD))),
|
|
1573
1572
|
@intFromPtr(path),
|
|
1574
1573
|
@as(u32, @bitCast(flags)),
|
|
1575
1574
|
perm,
|
|
@@ -1581,13 +1580,13 @@ pub fn create(path: [*:0]const u8, perm: mode_t) usize {
|
|
|
1581
1580
|
return syscall2(.creat, @intFromPtr(path), perm);
|
|
1582
1581
|
}
|
|
1583
1582
|
|
|
1584
|
-
pub fn openat(dirfd:
|
|
1583
|
+
pub fn openat(dirfd: fd_t, path: [*:0]const u8, flags: O, mode: mode_t) usize {
|
|
1585
1584
|
// dirfd could be negative, for example AT.FDCWD is -100
|
|
1586
|
-
return syscall4(.openat, @
|
|
1585
|
+
return syscall4(.openat, @as(u32, @bitCast(dirfd)), @intFromPtr(path), @as(u32, @bitCast(flags)), mode);
|
|
1587
1586
|
}
|
|
1588
1587
|
|
|
1589
1588
|
/// See also `clone` (from the arch-specific include)
|
|
1590
|
-
pub fn clone5(flags: usize, child_stack_ptr: usize, parent_tid: *
|
|
1589
|
+
pub fn clone5(flags: usize, child_stack_ptr: usize, parent_tid: *pid_t, child_tid: *pid_t, newtls: usize) usize {
|
|
1591
1590
|
return syscall5(.clone, flags, child_stack_ptr, @intFromPtr(parent_tid), @intFromPtr(child_tid), newtls);
|
|
1592
1591
|
}
|
|
1593
1592
|
|
|
@@ -1602,7 +1601,7 @@ pub fn set_tid_address(tidptr: ?*pid_t) pid_t {
|
|
|
1602
1601
|
}
|
|
1603
1602
|
|
|
1604
1603
|
pub fn close(fd: fd_t) usize {
|
|
1605
|
-
return syscall1(.close, @as(
|
|
1604
|
+
return syscall1(.close, @as(u32, @bitCast(fd)));
|
|
1606
1605
|
}
|
|
1607
1606
|
|
|
1608
1607
|
pub const CLOSE_RANGE = packed struct(u32) {
|
|
@@ -1614,11 +1613,11 @@ pub const CLOSE_RANGE = packed struct(u32) {
|
|
|
1614
1613
|
};
|
|
1615
1614
|
|
|
1616
1615
|
pub fn close_range(first: fd_t, last: fd_t, flags: CLOSE_RANGE) usize {
|
|
1617
|
-
return syscall3(.close_range,
|
|
1616
|
+
return syscall3(.close_range, @as(u32, @bitCast(first)), @as(u32, @bitCast(last)), @as(u32, @bitCast(flags)));
|
|
1618
1617
|
}
|
|
1619
1618
|
|
|
1620
|
-
pub fn fchmod(fd:
|
|
1621
|
-
return syscall2(.fchmod, @as(
|
|
1619
|
+
pub fn fchmod(fd: fd_t, mode: mode_t) usize {
|
|
1620
|
+
return syscall2(.fchmod, @as(u32, @bitCast(fd)), mode);
|
|
1622
1621
|
}
|
|
1623
1622
|
|
|
1624
1623
|
pub fn chmod(path: [*:0]const u8, mode: mode_t) usize {
|
|
@@ -1629,16 +1628,16 @@ pub fn chmod(path: [*:0]const u8, mode: mode_t) usize {
|
|
|
1629
1628
|
}
|
|
1630
1629
|
}
|
|
1631
1630
|
|
|
1632
|
-
pub fn fchown(fd:
|
|
1631
|
+
pub fn fchown(fd: fd_t, owner: uid_t, group: gid_t) usize {
|
|
1633
1632
|
if (@hasField(SYS, "fchown32")) {
|
|
1634
|
-
return syscall3(.fchown32, @as(
|
|
1633
|
+
return syscall3(.fchown32, @as(u32, @bitCast(fd)), owner, group);
|
|
1635
1634
|
} else {
|
|
1636
|
-
return syscall3(.fchown, @as(
|
|
1635
|
+
return syscall3(.fchown, @as(u32, @bitCast(fd)), owner, group);
|
|
1637
1636
|
}
|
|
1638
1637
|
}
|
|
1639
1638
|
|
|
1640
|
-
pub fn fchownat(fd:
|
|
1641
|
-
return syscall5(.fchownat, @as(
|
|
1639
|
+
pub fn fchownat(fd: fd_t, path: [*:0]const u8, owner: uid_t, group: gid_t, flags: u32) usize {
|
|
1640
|
+
return syscall5(.fchownat, @as(u32, @bitCast(fd)), @intFromPtr(path), owner, group, flags);
|
|
1642
1641
|
}
|
|
1643
1642
|
|
|
1644
1643
|
pub fn chown(path: [*:0]const u8, owner: uid_t, group: gid_t) usize {
|
|
@@ -1661,40 +1660,40 @@ pub fn lchown(path: [*:0]const u8, owner: uid_t, group: gid_t) usize {
|
|
|
1661
1660
|
}
|
|
1662
1661
|
}
|
|
1663
1662
|
|
|
1664
|
-
pub fn fchmodat(fd:
|
|
1665
|
-
return syscall3(.fchmodat, @
|
|
1663
|
+
pub fn fchmodat(fd: fd_t, path: [*:0]const u8, mode: mode_t) usize {
|
|
1664
|
+
return syscall3(.fchmodat, @as(u32, @bitCast(fd)), @intFromPtr(path), mode);
|
|
1666
1665
|
}
|
|
1667
1666
|
|
|
1668
|
-
pub fn fchmodat2(fd:
|
|
1669
|
-
return syscall4(.fchmodat2, @
|
|
1667
|
+
pub fn fchmodat2(fd: fd_t, path: [*:0]const u8, mode: mode_t, flags: u32) usize {
|
|
1668
|
+
return syscall4(.fchmodat2, @as(u32, @bitCast(fd)), @intFromPtr(path), mode, flags);
|
|
1670
1669
|
}
|
|
1671
1670
|
|
|
1672
1671
|
/// Can only be called on 32 bit systems. For 64 bit see `lseek`.
|
|
1673
|
-
pub fn llseek(fd:
|
|
1672
|
+
pub fn llseek(fd: fd_t, offset: off_t, result: ?*off_t, whence: u32) usize {
|
|
1674
1673
|
// NOTE: The offset parameter splitting is independent from the target
|
|
1675
1674
|
// endianness.
|
|
1676
1675
|
return syscall5(
|
|
1677
1676
|
.llseek,
|
|
1678
|
-
@as(
|
|
1679
|
-
@as(
|
|
1680
|
-
@as(
|
|
1677
|
+
@as(u32, @bitCast(fd)),
|
|
1678
|
+
@truncate(@as(u64, @bitCast(offset >> 32))),
|
|
1679
|
+
@truncate(@as(u64, @bitCast(offset))),
|
|
1681
1680
|
@intFromPtr(result),
|
|
1682
1681
|
whence,
|
|
1683
1682
|
);
|
|
1684
1683
|
}
|
|
1685
1684
|
|
|
1686
1685
|
/// Can only be called on 64 bit systems. For 32 bit see `llseek`.
|
|
1687
|
-
pub fn lseek(fd:
|
|
1688
|
-
return syscall3(.lseek, @as(
|
|
1686
|
+
pub fn lseek(fd: fd_t, offset: off_t, whence: u32) usize {
|
|
1687
|
+
return syscall3(.lseek, @as(u32, @bitCast(fd)), @as(u64, @bitCast(offset)), whence);
|
|
1689
1688
|
}
|
|
1690
1689
|
|
|
1691
1690
|
pub fn exit(status: i32) noreturn {
|
|
1692
|
-
_ = syscall1(.exit, @as(
|
|
1691
|
+
_ = syscall1(.exit, @as(u32, @bitCast(status)));
|
|
1693
1692
|
unreachable;
|
|
1694
1693
|
}
|
|
1695
1694
|
|
|
1696
1695
|
pub fn exit_group(status: i32) noreturn {
|
|
1697
|
-
_ = syscall1(.exit_group, @as(
|
|
1696
|
+
_ = syscall1(.exit_group, @as(u32, @bitCast(status)));
|
|
1698
1697
|
unreachable;
|
|
1699
1698
|
}
|
|
1700
1699
|
|
|
@@ -1760,15 +1759,15 @@ pub fn getrandom(buf: [*]u8, count: usize, flags: u32) usize {
|
|
|
1760
1759
|
}
|
|
1761
1760
|
|
|
1762
1761
|
pub fn kill(pid: pid_t, sig: SIG) usize {
|
|
1763
|
-
return syscall2(.kill, @as(
|
|
1762
|
+
return syscall2(.kill, @as(u32, @bitCast(pid)), @intFromEnum(sig));
|
|
1764
1763
|
}
|
|
1765
1764
|
|
|
1766
1765
|
pub fn tkill(tid: pid_t, sig: SIG) usize {
|
|
1767
|
-
return syscall2(.tkill, @as(
|
|
1766
|
+
return syscall2(.tkill, @as(u32, @bitCast(tid)), @intFromEnum(sig));
|
|
1768
1767
|
}
|
|
1769
1768
|
|
|
1770
1769
|
pub fn tgkill(tgid: pid_t, tid: pid_t, sig: SIG) usize {
|
|
1771
|
-
return syscall3(.tgkill, @as(
|
|
1770
|
+
return syscall3(.tgkill, @as(u32, @bitCast(tgid)), @as(u32, @bitCast(tid)), @intFromEnum(sig));
|
|
1772
1771
|
}
|
|
1773
1772
|
|
|
1774
1773
|
pub fn link(oldpath: [*:0]const u8, newpath: [*:0]const u8) usize {
|
|
@@ -1781,9 +1780,9 @@ pub fn link(oldpath: [*:0]const u8, newpath: [*:0]const u8) usize {
|
|
|
1781
1780
|
} else {
|
|
1782
1781
|
return syscall5(
|
|
1783
1782
|
.linkat,
|
|
1784
|
-
@as(
|
|
1783
|
+
@as(u32, @bitCast(@as(i32, AT.FDCWD))),
|
|
1785
1784
|
@intFromPtr(oldpath),
|
|
1786
|
-
@as(
|
|
1785
|
+
@as(u32, @bitCast(@as(i32, AT.FDCWD))),
|
|
1787
1786
|
@intFromPtr(newpath),
|
|
1788
1787
|
0,
|
|
1789
1788
|
);
|
|
@@ -1793,9 +1792,9 @@ pub fn link(oldpath: [*:0]const u8, newpath: [*:0]const u8) usize {
|
|
|
1793
1792
|
pub fn linkat(oldfd: fd_t, oldpath: [*:0]const u8, newfd: fd_t, newpath: [*:0]const u8, flags: u32) usize {
|
|
1794
1793
|
return syscall5(
|
|
1795
1794
|
.linkat,
|
|
1796
|
-
@as(
|
|
1795
|
+
@as(u32, @bitCast(oldfd)),
|
|
1797
1796
|
@intFromPtr(oldpath),
|
|
1798
|
-
@as(
|
|
1797
|
+
@as(u32, @bitCast(newfd)),
|
|
1799
1798
|
@intFromPtr(newpath),
|
|
1800
1799
|
flags,
|
|
1801
1800
|
);
|
|
@@ -1805,33 +1804,33 @@ pub fn unlink(path: [*:0]const u8) usize {
|
|
|
1805
1804
|
if (@hasField(SYS, "unlink")) {
|
|
1806
1805
|
return syscall1(.unlink, @intFromPtr(path));
|
|
1807
1806
|
} else {
|
|
1808
|
-
return syscall3(.unlinkat, @as(
|
|
1807
|
+
return syscall3(.unlinkat, @as(u32, @bitCast(@as(i32, AT.FDCWD))), @intFromPtr(path), 0);
|
|
1809
1808
|
}
|
|
1810
1809
|
}
|
|
1811
1810
|
|
|
1812
|
-
pub fn unlinkat(dirfd:
|
|
1813
|
-
return syscall3(.unlinkat, @as(
|
|
1811
|
+
pub fn unlinkat(dirfd: fd_t, path: [*:0]const u8, flags: u32) usize {
|
|
1812
|
+
return syscall3(.unlinkat, @as(u32, @bitCast(dirfd)), @intFromPtr(path), flags);
|
|
1814
1813
|
}
|
|
1815
1814
|
|
|
1816
|
-
pub fn waitpid(pid: pid_t, status: *
|
|
1817
|
-
return syscall4(.wait4, @as(
|
|
1815
|
+
pub fn waitpid(pid: pid_t, status: *i32, flags: u32) usize {
|
|
1816
|
+
return syscall4(.wait4, @as(u32, @bitCast(pid)), @intFromPtr(status), flags, 0);
|
|
1818
1817
|
}
|
|
1819
1818
|
|
|
1820
|
-
pub fn wait4(pid: pid_t, status: *
|
|
1819
|
+
pub fn wait4(pid: pid_t, status: *i32, flags: u32, usage: ?*rusage) usize {
|
|
1821
1820
|
return syscall4(
|
|
1822
1821
|
.wait4,
|
|
1823
|
-
@as(
|
|
1822
|
+
@as(u32, @bitCast(pid)),
|
|
1824
1823
|
@intFromPtr(status),
|
|
1825
1824
|
flags,
|
|
1826
1825
|
@intFromPtr(usage),
|
|
1827
1826
|
);
|
|
1828
1827
|
}
|
|
1829
1828
|
|
|
1830
|
-
pub fn waitid(id_type: P, id:
|
|
1829
|
+
pub fn waitid(id_type: P, id: pid_t, infop: *siginfo_t, flags: u32, usage: ?*rusage) usize {
|
|
1831
1830
|
return syscall5(
|
|
1832
1831
|
.waitid,
|
|
1833
1832
|
@intFromEnum(id_type),
|
|
1834
|
-
@as(
|
|
1833
|
+
@as(u32, @bitCast(id)),
|
|
1835
1834
|
@intFromPtr(infop),
|
|
1836
1835
|
flags,
|
|
1837
1836
|
@intFromPtr(usage),
|
|
@@ -1930,14 +1929,14 @@ pub const Flock = extern struct {
|
|
|
1930
1929
|
|
|
1931
1930
|
pub fn fcntl(fd: fd_t, cmd: i32, arg: usize) usize {
|
|
1932
1931
|
if (@hasField(SYS, "fcntl64")) {
|
|
1933
|
-
return syscall3(.fcntl64, @as(
|
|
1932
|
+
return syscall3(.fcntl64, @as(u32, @bitCast(fd)), @as(u32, @bitCast(cmd)), arg);
|
|
1934
1933
|
} else {
|
|
1935
|
-
return syscall3(.fcntl, @as(
|
|
1934
|
+
return syscall3(.fcntl, @as(u32, @bitCast(fd)), @as(u32, @bitCast(cmd)), arg);
|
|
1936
1935
|
}
|
|
1937
1936
|
}
|
|
1938
1937
|
|
|
1939
1938
|
pub fn flock(fd: fd_t, operation: i32) usize {
|
|
1940
|
-
return syscall2(.flock, @as(
|
|
1939
|
+
return syscall2(.flock, @as(u32, @bitCast(fd)), @as(u32, @bitCast(operation)));
|
|
1941
1940
|
}
|
|
1942
1941
|
|
|
1943
1942
|
pub const Elf_Symndx = if (native_arch == .s390x) u64 else u32;
|
|
@@ -1977,7 +1976,7 @@ fn init_vdso_clock_gettime(clk: clockid_t, ts: *timespec) callconv(.c) usize {
|
|
|
1977
1976
|
pub fn clock_getres(clk_id: clockid_t, tp: *timespec) usize {
|
|
1978
1977
|
return syscall2(
|
|
1979
1978
|
if (@hasField(SYS, "clock_getres") and native_arch != .hexagon) .clock_getres else .clock_getres_time64,
|
|
1980
|
-
@
|
|
1979
|
+
@intFromEnum(clk_id),
|
|
1981
1980
|
@intFromPtr(tp),
|
|
1982
1981
|
);
|
|
1983
1982
|
}
|
|
@@ -1985,7 +1984,7 @@ pub fn clock_getres(clk_id: clockid_t, tp: *timespec) usize {
|
|
|
1985
1984
|
pub fn clock_settime(clk_id: clockid_t, tp: *const timespec) usize {
|
|
1986
1985
|
return syscall2(
|
|
1987
1986
|
if (@hasField(SYS, "clock_settime") and native_arch != .hexagon) .clock_settime else .clock_settime64,
|
|
1988
|
-
@
|
|
1987
|
+
@intFromEnum(clk_id),
|
|
1989
1988
|
@intFromPtr(tp),
|
|
1990
1989
|
);
|
|
1991
1990
|
}
|
|
@@ -2139,11 +2138,11 @@ pub fn setresgid(rgid: gid_t, egid: gid_t, sgid: gid_t) usize {
|
|
|
2139
2138
|
}
|
|
2140
2139
|
|
|
2141
2140
|
pub fn setpgid(pid: pid_t, pgid: pid_t) usize {
|
|
2142
|
-
return syscall2(.setpgid, @
|
|
2141
|
+
return syscall2(.setpgid, @as(u32, @bitCast(pid)), @as(u32, @bitCast(pgid)));
|
|
2143
2142
|
}
|
|
2144
2143
|
|
|
2145
2144
|
pub fn getpgid(pid: pid_t) usize {
|
|
2146
|
-
return syscall1(.getpgid, @
|
|
2145
|
+
return syscall1(.getpgid, @as(u32, @bitCast(pid)));
|
|
2147
2146
|
}
|
|
2148
2147
|
|
|
2149
2148
|
pub fn getgroups(size: usize, list: ?[*]gid_t) usize {
|
|
@@ -2167,7 +2166,7 @@ pub fn setsid() usize {
|
|
|
2167
2166
|
}
|
|
2168
2167
|
|
|
2169
2168
|
pub fn getsid(pid: pid_t) usize {
|
|
2170
|
-
return syscall1(.getsid, @
|
|
2169
|
+
return syscall1(.getsid, @as(u32, @bitCast(pid)));
|
|
2171
2170
|
}
|
|
2172
2171
|
|
|
2173
2172
|
pub fn getpid() pid_t {
|
|
@@ -2238,8 +2237,6 @@ pub fn sigaction(sig: SIG, noalias act: ?*const Sigaction, noalias oact: ?*Sigac
|
|
|
2238
2237
|
return 0;
|
|
2239
2238
|
}
|
|
2240
2239
|
|
|
2241
|
-
const usize_bits = @typeInfo(usize).int.bits;
|
|
2242
|
-
|
|
2243
2240
|
/// Defined as one greater than the largest defined signal number.
|
|
2244
2241
|
pub const NSIG = if (is_mips) 128 else 65;
|
|
2245
2242
|
|
|
@@ -2267,12 +2264,12 @@ pub fn sigrtmax() u8 {
|
|
|
2267
2264
|
|
|
2268
2265
|
/// Zig's version of sigemptyset. Returns initialized sigset_t.
|
|
2269
2266
|
pub fn sigemptyset() sigset_t {
|
|
2270
|
-
return
|
|
2267
|
+
return @splat(0);
|
|
2271
2268
|
}
|
|
2272
2269
|
|
|
2273
2270
|
/// Zig's version of sigfillset. Returns initalized sigset_t.
|
|
2274
2271
|
pub fn sigfillset() sigset_t {
|
|
2275
|
-
return
|
|
2272
|
+
return @splat(~@as(SigsetElement, 0));
|
|
2276
2273
|
}
|
|
2277
2274
|
|
|
2278
2275
|
fn sigset_bit_index(sig: SIG) struct { word: usize, mask: SigsetElement } {
|
|
@@ -2300,18 +2297,18 @@ pub fn sigismember(set: *const sigset_t, sig: SIG) bool {
|
|
|
2300
2297
|
return ((set.*)[index.word] & index.mask) != 0;
|
|
2301
2298
|
}
|
|
2302
2299
|
|
|
2303
|
-
pub fn getsockname(fd:
|
|
2300
|
+
pub fn getsockname(fd: fd_t, noalias addr: *sockaddr, noalias len: *socklen_t) usize {
|
|
2304
2301
|
if (native_arch == .x86) {
|
|
2305
|
-
return socketcall(SC.getsockname, &[3]usize{ @as(
|
|
2302
|
+
return socketcall(SC.getsockname, &[3]usize{ @as(u32, @bitCast(fd)), @intFromPtr(addr), @intFromPtr(len) });
|
|
2306
2303
|
}
|
|
2307
|
-
return syscall3(.getsockname, @as(
|
|
2304
|
+
return syscall3(.getsockname, @as(u32, @bitCast(fd)), @intFromPtr(addr), @intFromPtr(len));
|
|
2308
2305
|
}
|
|
2309
2306
|
|
|
2310
|
-
pub fn getpeername(fd:
|
|
2307
|
+
pub fn getpeername(fd: fd_t, noalias addr: *sockaddr, noalias len: *socklen_t) usize {
|
|
2311
2308
|
if (native_arch == .x86) {
|
|
2312
|
-
return socketcall(SC.getpeername, &[3]usize{ @as(
|
|
2309
|
+
return socketcall(SC.getpeername, &[3]usize{ @as(u32, @bitCast(fd)), @intFromPtr(addr), @intFromPtr(len) });
|
|
2313
2310
|
}
|
|
2314
|
-
return syscall3(.getpeername, @as(
|
|
2311
|
+
return syscall3(.getpeername, @as(u32, @bitCast(fd)), @intFromPtr(addr), @intFromPtr(len));
|
|
2315
2312
|
}
|
|
2316
2313
|
|
|
2317
2314
|
pub fn socket(domain: u32, socket_type: u32, protocol: u32) usize {
|
|
@@ -2321,58 +2318,52 @@ pub fn socket(domain: u32, socket_type: u32, protocol: u32) usize {
|
|
|
2321
2318
|
return syscall3(.socket, domain, socket_type, protocol);
|
|
2322
2319
|
}
|
|
2323
2320
|
|
|
2324
|
-
pub fn setsockopt(fd:
|
|
2321
|
+
pub fn setsockopt(fd: fd_t, level: i32, optname: u32, optval: [*]const u8, optlen: socklen_t) usize {
|
|
2325
2322
|
if (native_arch == .x86) {
|
|
2326
|
-
return socketcall(SC.setsockopt, &[5]usize{ @as(
|
|
2323
|
+
return socketcall(SC.setsockopt, &[5]usize{ @as(u32, @bitCast(fd)), @as(usize, @bitCast(@as(isize, level))), optname, @intFromPtr(optval), @as(usize, @intCast(optlen)) });
|
|
2327
2324
|
}
|
|
2328
|
-
return syscall5(.setsockopt, @as(
|
|
2325
|
+
return syscall5(.setsockopt, @as(u32, @bitCast(fd)), @as(usize, @bitCast(@as(isize, level))), optname, @intFromPtr(optval), @as(usize, @intCast(optlen)));
|
|
2329
2326
|
}
|
|
2330
2327
|
|
|
2331
|
-
pub fn getsockopt(fd:
|
|
2328
|
+
pub fn getsockopt(fd: fd_t, level: i32, optname: u32, noalias optval: [*]u8, noalias optlen: *socklen_t) usize {
|
|
2332
2329
|
if (native_arch == .x86) {
|
|
2333
|
-
return socketcall(SC.getsockopt, &[5]usize{ @as(
|
|
2330
|
+
return socketcall(SC.getsockopt, &[5]usize{ @as(u32, @bitCast(fd)), @as(usize, @bitCast(@as(isize, level))), optname, @intFromPtr(optval), @intFromPtr(optlen) });
|
|
2334
2331
|
}
|
|
2335
|
-
return syscall5(.getsockopt, @as(
|
|
2332
|
+
return syscall5(.getsockopt, @as(u32, @bitCast(fd)), @as(usize, @bitCast(@as(isize, level))), optname, @intFromPtr(optval), @intFromPtr(optlen));
|
|
2336
2333
|
}
|
|
2337
2334
|
|
|
2338
|
-
pub fn sendmsg(fd:
|
|
2339
|
-
const fd_usize = @as(usize, @bitCast(@as(isize, fd)));
|
|
2340
|
-
const msg_usize = @intFromPtr(msg);
|
|
2335
|
+
pub fn sendmsg(fd: fd_t, msg: *const msghdr_const, flags: u32) usize {
|
|
2341
2336
|
if (native_arch == .x86) {
|
|
2342
|
-
return socketcall(SC.sendmsg, &[3]usize{
|
|
2337
|
+
return socketcall(SC.sendmsg, &[3]usize{ @as(u32, @bitCast(fd)), @intFromPtr(msg), flags });
|
|
2343
2338
|
} else {
|
|
2344
|
-
return syscall3(.sendmsg,
|
|
2339
|
+
return syscall3(.sendmsg, @as(u32, @bitCast(fd)), @intFromPtr(msg), flags);
|
|
2345
2340
|
}
|
|
2346
2341
|
}
|
|
2347
2342
|
|
|
2348
|
-
pub fn sendmmsg(fd:
|
|
2349
|
-
return syscall4(.sendmmsg, @as(
|
|
2343
|
+
pub fn sendmmsg(fd: fd_t, msgvec: [*]mmsghdr, vlen: u32, flags: u32) usize {
|
|
2344
|
+
return syscall4(.sendmmsg, @as(u32, @bitCast(fd)), @intFromPtr(msgvec), vlen, flags);
|
|
2350
2345
|
}
|
|
2351
2346
|
|
|
2352
|
-
pub fn connect(fd:
|
|
2353
|
-
const fd_usize = @as(usize, @bitCast(@as(isize, fd)));
|
|
2354
|
-
const addr_usize = @intFromPtr(addr);
|
|
2347
|
+
pub fn connect(fd: fd_t, addr: *const anyopaque, len: socklen_t) usize {
|
|
2355
2348
|
if (native_arch == .x86) {
|
|
2356
|
-
return socketcall(SC.connect, &[3]usize{
|
|
2349
|
+
return socketcall(SC.connect, &[3]usize{ @as(u32, @bitCast(fd)), @intFromPtr(addr), len });
|
|
2357
2350
|
} else {
|
|
2358
|
-
return syscall3(.connect,
|
|
2351
|
+
return syscall3(.connect, @as(u32, @bitCast(fd)), @intFromPtr(addr), len);
|
|
2359
2352
|
}
|
|
2360
2353
|
}
|
|
2361
2354
|
|
|
2362
|
-
pub fn recvmsg(fd:
|
|
2363
|
-
const fd_usize = @as(usize, @bitCast(@as(isize, fd)));
|
|
2364
|
-
const msg_usize = @intFromPtr(msg);
|
|
2355
|
+
pub fn recvmsg(fd: fd_t, msg: *msghdr, flags: u32) usize {
|
|
2365
2356
|
if (native_arch == .x86) {
|
|
2366
|
-
return socketcall(SC.recvmsg, &[3]usize{
|
|
2357
|
+
return socketcall(SC.recvmsg, &[3]usize{ @as(u32, @bitCast(fd)), @intFromPtr(msg), flags });
|
|
2367
2358
|
} else {
|
|
2368
|
-
return syscall3(.recvmsg,
|
|
2359
|
+
return syscall3(.recvmsg, @as(u32, @bitCast(fd)), @intFromPtr(msg), flags);
|
|
2369
2360
|
}
|
|
2370
2361
|
}
|
|
2371
2362
|
|
|
2372
|
-
pub fn recvmmsg(fd:
|
|
2363
|
+
pub fn recvmmsg(fd: fd_t, msgvec: ?[*]mmsghdr, vlen: u32, flags: u32, timeout: ?*timespec) usize {
|
|
2373
2364
|
return syscall5(
|
|
2374
2365
|
if (@hasField(SYS, "recvmmsg") and native_arch != .hexagon) .recvmmsg else .recvmmsg_time64,
|
|
2375
|
-
@as(
|
|
2366
|
+
@as(u32, @bitCast(fd)),
|
|
2376
2367
|
@intFromPtr(msgvec),
|
|
2377
2368
|
vlen,
|
|
2378
2369
|
flags,
|
|
@@ -2381,43 +2372,39 @@ pub fn recvmmsg(fd: i32, msgvec: ?[*]mmsghdr, vlen: u32, flags: u32, timeout: ?*
|
|
|
2381
2372
|
}
|
|
2382
2373
|
|
|
2383
2374
|
pub fn recvfrom(
|
|
2384
|
-
fd:
|
|
2375
|
+
fd: fd_t,
|
|
2385
2376
|
noalias buf: [*]u8,
|
|
2386
2377
|
len: usize,
|
|
2387
2378
|
flags: u32,
|
|
2388
2379
|
noalias addr: ?*sockaddr,
|
|
2389
2380
|
noalias alen: ?*socklen_t,
|
|
2390
2381
|
) usize {
|
|
2391
|
-
const fd_usize = @as(usize, @bitCast(@as(isize, fd)));
|
|
2392
|
-
const buf_usize = @intFromPtr(buf);
|
|
2393
|
-
const addr_usize = @intFromPtr(addr);
|
|
2394
|
-
const alen_usize = @intFromPtr(alen);
|
|
2395
2382
|
if (native_arch == .x86) {
|
|
2396
|
-
return socketcall(SC.recvfrom, &[6]usize{
|
|
2383
|
+
return socketcall(SC.recvfrom, &[6]usize{ @as(u32, @bitCast(fd)), @intFromPtr(buf), len, flags, @intFromPtr(addr), @intFromPtr(alen) });
|
|
2397
2384
|
} else {
|
|
2398
|
-
return syscall6(.recvfrom,
|
|
2385
|
+
return syscall6(.recvfrom, @as(u32, @bitCast(fd)), @intFromPtr(buf), len, flags, @intFromPtr(addr), @intFromPtr(alen));
|
|
2399
2386
|
}
|
|
2400
2387
|
}
|
|
2401
2388
|
|
|
2402
|
-
pub fn shutdown(fd:
|
|
2389
|
+
pub fn shutdown(fd: fd_t, how: i32) usize {
|
|
2403
2390
|
if (native_arch == .x86) {
|
|
2404
|
-
return socketcall(SC.shutdown, &[2]usize{ @as(
|
|
2391
|
+
return socketcall(SC.shutdown, &[2]usize{ @as(u32, @bitCast(fd)), @as(u32, @bitCast(how)) });
|
|
2405
2392
|
}
|
|
2406
|
-
return syscall2(.shutdown, @as(
|
|
2393
|
+
return syscall2(.shutdown, @as(u32, @bitCast(fd)), @as(u32, @bitCast(how)));
|
|
2407
2394
|
}
|
|
2408
2395
|
|
|
2409
|
-
pub fn bind(fd:
|
|
2396
|
+
pub fn bind(fd: fd_t, addr: *const sockaddr, len: socklen_t) usize {
|
|
2410
2397
|
if (native_arch == .x86) {
|
|
2411
|
-
return socketcall(SC.bind, &[3]usize{ @as(
|
|
2398
|
+
return socketcall(SC.bind, &[3]usize{ @as(u32, @bitCast(fd)), @intFromPtr(addr), len });
|
|
2412
2399
|
}
|
|
2413
|
-
return syscall3(.bind, @as(
|
|
2400
|
+
return syscall3(.bind, @as(u32, @bitCast(fd)), @intFromPtr(addr), len);
|
|
2414
2401
|
}
|
|
2415
2402
|
|
|
2416
|
-
pub fn listen(fd:
|
|
2403
|
+
pub fn listen(fd: fd_t, backlog: u32) usize {
|
|
2417
2404
|
if (native_arch == .x86) {
|
|
2418
|
-
return socketcall(SC.listen, &[2]usize{ @as(
|
|
2405
|
+
return socketcall(SC.listen, &[2]usize{ @as(u32, @bitCast(fd)), backlog });
|
|
2419
2406
|
}
|
|
2420
|
-
return syscall2(.listen, @as(
|
|
2407
|
+
return syscall2(.listen, @as(u32, @bitCast(fd)), backlog);
|
|
2421
2408
|
}
|
|
2422
2409
|
|
|
2423
2410
|
pub fn sendto(fd: i32, buf: [*]const u8, len: usize, flags: u32, addr: ?*const sockaddr, alen: socklen_t) usize {
|
|
@@ -2427,51 +2414,41 @@ pub fn sendto(fd: i32, buf: [*]const u8, len: usize, flags: u32, addr: ?*const s
|
|
|
2427
2414
|
return syscall6(.sendto, @as(usize, @bitCast(@as(isize, fd))), @intFromPtr(buf), len, flags, @intFromPtr(addr), @as(usize, @intCast(alen)));
|
|
2428
2415
|
}
|
|
2429
2416
|
|
|
2430
|
-
pub fn sendfile(outfd:
|
|
2431
|
-
|
|
2432
|
-
|
|
2433
|
-
|
|
2434
|
-
|
|
2435
|
-
|
|
2436
|
-
|
|
2437
|
-
|
|
2438
|
-
);
|
|
2439
|
-
} else {
|
|
2440
|
-
return syscall4(
|
|
2441
|
-
.sendfile,
|
|
2442
|
-
@as(usize, @bitCast(@as(isize, outfd))),
|
|
2443
|
-
@as(usize, @bitCast(@as(isize, infd))),
|
|
2444
|
-
@intFromPtr(offset),
|
|
2445
|
-
count,
|
|
2446
|
-
);
|
|
2447
|
-
}
|
|
2417
|
+
pub fn sendfile(outfd: fd_t, infd: fd_t, offset: ?*off_t, count: usize) usize {
|
|
2418
|
+
return syscall4(
|
|
2419
|
+
if (@hasField(SYS, "sendfile64")) .sendfile64 else .sendfile,
|
|
2420
|
+
@as(u32, @bitCast(outfd)),
|
|
2421
|
+
@as(u32, @bitCast(infd)),
|
|
2422
|
+
@intFromPtr(offset),
|
|
2423
|
+
count,
|
|
2424
|
+
);
|
|
2448
2425
|
}
|
|
2449
2426
|
|
|
2450
|
-
pub fn socketpair(domain: u32, socket_type: u32, protocol: u32, fd: *[2]
|
|
2427
|
+
pub fn socketpair(domain: u32, socket_type: u32, protocol: u32, fd: *[2]fd_t) usize {
|
|
2451
2428
|
if (native_arch == .x86) {
|
|
2452
2429
|
return socketcall(SC.socketpair, &[4]usize{ domain, socket_type, protocol, @intFromPtr(fd) });
|
|
2453
2430
|
}
|
|
2454
2431
|
return syscall4(.socketpair, domain, socket_type, protocol, @intFromPtr(fd));
|
|
2455
2432
|
}
|
|
2456
2433
|
|
|
2457
|
-
pub fn accept(fd:
|
|
2434
|
+
pub fn accept(fd: fd_t, noalias addr: ?*sockaddr, noalias len: ?*socklen_t) usize {
|
|
2458
2435
|
if (native_arch == .x86) {
|
|
2459
|
-
return socketcall(SC.accept, &[4]usize{ @as(
|
|
2436
|
+
return socketcall(SC.accept, &[4]usize{ @as(u32, @bitCast(fd)), @intFromPtr(addr), @intFromPtr(len), 0 });
|
|
2460
2437
|
}
|
|
2461
2438
|
return accept4(fd, addr, len, 0);
|
|
2462
2439
|
}
|
|
2463
2440
|
|
|
2464
|
-
pub fn accept4(fd:
|
|
2441
|
+
pub fn accept4(fd: fd_t, noalias addr: ?*sockaddr, noalias len: ?*socklen_t, flags: u32) usize {
|
|
2465
2442
|
if (native_arch == .x86) {
|
|
2466
|
-
return socketcall(SC.accept4, &[4]usize{ @as(
|
|
2443
|
+
return socketcall(SC.accept4, &[4]usize{ @as(u32, @bitCast(fd)), @intFromPtr(addr), @intFromPtr(len), flags });
|
|
2467
2444
|
}
|
|
2468
|
-
return syscall4(.accept4, @as(
|
|
2445
|
+
return syscall4(.accept4, @as(u32, @bitCast(fd)), @intFromPtr(addr), @intFromPtr(len), flags);
|
|
2469
2446
|
}
|
|
2470
2447
|
|
|
2471
|
-
pub fn statx(dirfd:
|
|
2448
|
+
pub fn statx(dirfd: fd_t, path: [*:0]const u8, flags: u32, mask: STATX, statx_buf: *Statx) usize {
|
|
2472
2449
|
return syscall5(
|
|
2473
2450
|
.statx,
|
|
2474
|
-
@as(
|
|
2451
|
+
@as(u32, @bitCast(dirfd)),
|
|
2475
2452
|
@intFromPtr(path),
|
|
2476
2453
|
flags,
|
|
2477
2454
|
@as(u32, @bitCast(mask)),
|
|
@@ -2488,7 +2465,7 @@ pub fn llistxattr(path: [*:0]const u8, list: [*]u8, size: usize) usize {
|
|
|
2488
2465
|
}
|
|
2489
2466
|
|
|
2490
2467
|
pub fn flistxattr(fd: fd_t, list: [*]u8, size: usize) usize {
|
|
2491
|
-
return syscall3(.flistxattr, @as(
|
|
2468
|
+
return syscall3(.flistxattr, @as(u32, @bitCast(fd)), @intFromPtr(list), size);
|
|
2492
2469
|
}
|
|
2493
2470
|
|
|
2494
2471
|
pub fn getxattr(path: [*:0]const u8, name: [*:0]const u8, value: [*]u8, size: usize) usize {
|
|
@@ -2500,7 +2477,7 @@ pub fn lgetxattr(path: [*:0]const u8, name: [*:0]const u8, value: [*]u8, size: u
|
|
|
2500
2477
|
}
|
|
2501
2478
|
|
|
2502
2479
|
pub fn fgetxattr(fd: fd_t, name: [*:0]const u8, value: [*]u8, size: usize) usize {
|
|
2503
|
-
return syscall4(.fgetxattr, @as(
|
|
2480
|
+
return syscall4(.fgetxattr, @as(u32, @bitCast(fd)), @intFromPtr(name), @intFromPtr(value), size);
|
|
2504
2481
|
}
|
|
2505
2482
|
|
|
2506
2483
|
pub fn setxattr(path: [*:0]const u8, name: [*:0]const u8, value: [*]const u8, size: usize, flags: usize) usize {
|
|
@@ -2512,7 +2489,7 @@ pub fn lsetxattr(path: [*:0]const u8, name: [*:0]const u8, value: [*]const u8, s
|
|
|
2512
2489
|
}
|
|
2513
2490
|
|
|
2514
2491
|
pub fn fsetxattr(fd: fd_t, name: [*:0]const u8, value: [*]const u8, size: usize, flags: usize) usize {
|
|
2515
|
-
return syscall5(.fsetxattr, @as(
|
|
2492
|
+
return syscall5(.fsetxattr, @as(u32, @bitCast(fd)), @intFromPtr(name), @intFromPtr(value), size, flags);
|
|
2516
2493
|
}
|
|
2517
2494
|
|
|
2518
2495
|
pub fn removexattr(path: [*:0]const u8, name: [*:0]const u8) usize {
|
|
@@ -2523,8 +2500,8 @@ pub fn lremovexattr(path: [*:0]const u8, name: [*:0]const u8) usize {
|
|
|
2523
2500
|
return syscall2(.lremovexattr, @intFromPtr(path), @intFromPtr(name));
|
|
2524
2501
|
}
|
|
2525
2502
|
|
|
2526
|
-
pub fn fremovexattr(fd:
|
|
2527
|
-
return syscall2(.fremovexattr, fd, @intFromPtr(name));
|
|
2503
|
+
pub fn fremovexattr(fd: fd_t, name: [*:0]const u8) usize {
|
|
2504
|
+
return syscall2(.fremovexattr, @as(u32, @bitCast(fd)), @intFromPtr(name));
|
|
2528
2505
|
}
|
|
2529
2506
|
|
|
2530
2507
|
pub const sched_param = extern struct {
|
|
@@ -2554,27 +2531,27 @@ pub const SCHED = packed struct(i32) {
|
|
|
2554
2531
|
};
|
|
2555
2532
|
|
|
2556
2533
|
pub fn sched_setparam(pid: pid_t, param: *const sched_param) usize {
|
|
2557
|
-
return syscall2(.sched_setparam, @as(
|
|
2534
|
+
return syscall2(.sched_setparam, @as(u32, @bitCast(pid)), @intFromPtr(param));
|
|
2558
2535
|
}
|
|
2559
2536
|
|
|
2560
2537
|
pub fn sched_getparam(pid: pid_t, param: *sched_param) usize {
|
|
2561
|
-
return syscall2(.sched_getparam, @as(
|
|
2538
|
+
return syscall2(.sched_getparam, @as(u32, @bitCast(pid)), @intFromPtr(param));
|
|
2562
2539
|
}
|
|
2563
2540
|
|
|
2564
2541
|
pub fn sched_setscheduler(pid: pid_t, policy: SCHED, param: *const sched_param) usize {
|
|
2565
|
-
return syscall3(.sched_setscheduler, @as(
|
|
2542
|
+
return syscall3(.sched_setscheduler, @as(u32, @bitCast(pid)), @as(u32, @bitCast(policy)), @intFromPtr(param));
|
|
2566
2543
|
}
|
|
2567
2544
|
|
|
2568
2545
|
pub fn sched_getscheduler(pid: pid_t) usize {
|
|
2569
|
-
return syscall1(.sched_getscheduler, @as(
|
|
2546
|
+
return syscall1(.sched_getscheduler, @as(u32, @bitCast(pid)));
|
|
2570
2547
|
}
|
|
2571
2548
|
|
|
2572
2549
|
pub fn sched_get_priority_max(policy: SCHED) usize {
|
|
2573
|
-
return syscall1(.sched_get_priority_max, @
|
|
2550
|
+
return syscall1(.sched_get_priority_max, @as(u32, @bitCast(policy)));
|
|
2574
2551
|
}
|
|
2575
2552
|
|
|
2576
2553
|
pub fn sched_get_priority_min(policy: SCHED) usize {
|
|
2577
|
-
return syscall1(.sched_get_priority_min, @
|
|
2554
|
+
return syscall1(.sched_get_priority_min, @as(u32, @bitCast(policy)));
|
|
2578
2555
|
}
|
|
2579
2556
|
|
|
2580
2557
|
pub fn getcpu(cpu: ?*usize, node: ?*usize) usize {
|
|
@@ -2593,24 +2570,24 @@ pub const sched_attr = extern struct {
|
|
|
2593
2570
|
period: u64 = 0,
|
|
2594
2571
|
};
|
|
2595
2572
|
|
|
2596
|
-
pub fn sched_setattr(pid: pid_t, attr: *const sched_attr, flags:
|
|
2597
|
-
return syscall3(.sched_setattr, @as(
|
|
2573
|
+
pub fn sched_setattr(pid: pid_t, attr: *const sched_attr, flags: u32) usize {
|
|
2574
|
+
return syscall3(.sched_setattr, @as(u32, @bitCast(pid)), @intFromPtr(attr), flags);
|
|
2598
2575
|
}
|
|
2599
2576
|
|
|
2600
|
-
pub fn sched_getattr(pid: pid_t, attr: *sched_attr, size:
|
|
2601
|
-
return syscall4(.sched_getattr, @as(
|
|
2577
|
+
pub fn sched_getattr(pid: pid_t, attr: *sched_attr, size: u32, flags: u32) usize {
|
|
2578
|
+
return syscall4(.sched_getattr, @as(u32, @bitCast(pid)), @intFromPtr(attr), size, flags);
|
|
2602
2579
|
}
|
|
2603
2580
|
|
|
2604
2581
|
pub fn sched_rr_get_interval(pid: pid_t, tp: *timespec) usize {
|
|
2605
|
-
return syscall2(.sched_rr_get_interval, @as(
|
|
2582
|
+
return syscall2(.sched_rr_get_interval, @as(u32, @bitCast(pid)), @intFromPtr(tp));
|
|
2606
2583
|
}
|
|
2607
2584
|
|
|
2608
2585
|
pub fn sched_yield() usize {
|
|
2609
2586
|
return syscall0(.sched_yield);
|
|
2610
2587
|
}
|
|
2611
2588
|
|
|
2612
|
-
pub fn sched_getaffinity(pid: pid_t, size:
|
|
2613
|
-
const rc = syscall3(.sched_getaffinity, @as(
|
|
2589
|
+
pub fn sched_getaffinity(pid: pid_t, size: u32, set: *cpu_set_t) usize {
|
|
2590
|
+
const rc = syscall3(.sched_getaffinity, @as(u32, @bitCast(pid)), size, @intFromPtr(set));
|
|
2614
2591
|
if (@as(isize, @bitCast(rc)) < 0) return rc;
|
|
2615
2592
|
if (rc < size) @memset(@as([*]u8, @ptrCast(set))[rc..size], 0);
|
|
2616
2593
|
return 0;
|
|
@@ -2618,7 +2595,7 @@ pub fn sched_getaffinity(pid: pid_t, size: usize, set: *cpu_set_t) usize {
|
|
|
2618
2595
|
|
|
2619
2596
|
pub fn sched_setaffinity(pid: pid_t, set: *const cpu_set_t) !void {
|
|
2620
2597
|
const size = @sizeOf(cpu_set_t);
|
|
2621
|
-
const rc = syscall3(.sched_setaffinity, @as(
|
|
2598
|
+
const rc = syscall3(.sched_setaffinity, @as(u32, @bitCast(pid)), size, @intFromPtr(set));
|
|
2622
2599
|
|
|
2623
2600
|
switch (errno(rc)) {
|
|
2624
2601
|
.SUCCESS => return,
|
|
@@ -2630,25 +2607,25 @@ pub fn epoll_create() usize {
|
|
|
2630
2607
|
return epoll_create1(0);
|
|
2631
2608
|
}
|
|
2632
2609
|
|
|
2633
|
-
pub fn epoll_create1(flags:
|
|
2610
|
+
pub fn epoll_create1(flags: u32) usize {
|
|
2634
2611
|
return syscall1(.epoll_create1, flags);
|
|
2635
2612
|
}
|
|
2636
2613
|
|
|
2637
|
-
pub fn epoll_ctl(epoll_fd:
|
|
2638
|
-
return syscall4(.epoll_ctl, @as(
|
|
2614
|
+
pub fn epoll_ctl(epoll_fd: fd_t, op: u32, fd: fd_t, ev: ?*epoll_event) usize {
|
|
2615
|
+
return syscall4(.epoll_ctl, @as(u32, @bitCast(epoll_fd)), op, @as(u32, @bitCast(fd)), @intFromPtr(ev));
|
|
2639
2616
|
}
|
|
2640
2617
|
|
|
2641
|
-
pub fn epoll_wait(epoll_fd:
|
|
2618
|
+
pub fn epoll_wait(epoll_fd: fd_t, events: [*]epoll_event, maxevents: u32, timeout: i32) usize {
|
|
2642
2619
|
return epoll_pwait(epoll_fd, events, maxevents, timeout, null);
|
|
2643
2620
|
}
|
|
2644
2621
|
|
|
2645
|
-
pub fn epoll_pwait(epoll_fd:
|
|
2622
|
+
pub fn epoll_pwait(epoll_fd: fd_t, events: [*]epoll_event, maxevents: u32, timeout: i32, sigmask: ?*const sigset_t) usize {
|
|
2646
2623
|
return syscall6(
|
|
2647
2624
|
.epoll_pwait,
|
|
2648
|
-
@as(
|
|
2625
|
+
@as(u32, @bitCast(epoll_fd)),
|
|
2649
2626
|
@intFromPtr(events),
|
|
2650
|
-
|
|
2651
|
-
@as(
|
|
2627
|
+
maxevents,
|
|
2628
|
+
@as(u32, @bitCast(timeout)),
|
|
2652
2629
|
@intFromPtr(sigmask),
|
|
2653
2630
|
NSIG / 8,
|
|
2654
2631
|
);
|
|
@@ -2671,18 +2648,18 @@ pub const itimerspec = extern struct {
|
|
|
2671
2648
|
it_value: timespec,
|
|
2672
2649
|
};
|
|
2673
2650
|
|
|
2674
|
-
pub fn timerfd_gettime(fd:
|
|
2651
|
+
pub fn timerfd_gettime(fd: fd_t, curr_value: *itimerspec) usize {
|
|
2675
2652
|
return syscall2(
|
|
2676
2653
|
if (@hasField(SYS, "timerfd_gettime") and native_arch != .hexagon) .timerfd_gettime else .timerfd_gettime64,
|
|
2677
|
-
@
|
|
2654
|
+
@as(u32, @bitCast(fd)),
|
|
2678
2655
|
@intFromPtr(curr_value),
|
|
2679
2656
|
);
|
|
2680
2657
|
}
|
|
2681
2658
|
|
|
2682
|
-
pub fn timerfd_settime(fd:
|
|
2659
|
+
pub fn timerfd_settime(fd: fd_t, flags: TFD.TIMER, new_value: *const itimerspec, old_value: ?*itimerspec) usize {
|
|
2683
2660
|
return syscall4(
|
|
2684
2661
|
if (@hasField(SYS, "timerfd_settime") and native_arch != .hexagon) .timerfd_settime else .timerfd_settime64,
|
|
2685
|
-
@
|
|
2662
|
+
@as(u32, @bitCast(fd)),
|
|
2686
2663
|
@as(u32, @bitCast(flags)),
|
|
2687
2664
|
@intFromPtr(new_value),
|
|
2688
2665
|
@intFromPtr(old_value),
|
|
@@ -2697,11 +2674,11 @@ pub const ITIMER = enum(i32) {
|
|
|
2697
2674
|
};
|
|
2698
2675
|
|
|
2699
2676
|
pub fn getitimer(which: i32, curr_value: *itimerspec) usize {
|
|
2700
|
-
return syscall2(.getitimer, @as(
|
|
2677
|
+
return syscall2(.getitimer, @as(u32, @bitCast(which)), @intFromPtr(curr_value));
|
|
2701
2678
|
}
|
|
2702
2679
|
|
|
2703
2680
|
pub fn setitimer(which: i32, new_value: *const itimerspec, old_value: ?*itimerspec) usize {
|
|
2704
|
-
return syscall3(.setitimer, @as(
|
|
2681
|
+
return syscall3(.setitimer, @as(u32, @bitCast(which)), @intFromPtr(new_value), @intFromPtr(old_value));
|
|
2705
2682
|
}
|
|
2706
2683
|
|
|
2707
2684
|
pub fn unshare(flags: usize) usize {
|
|
@@ -2709,7 +2686,7 @@ pub fn unshare(flags: usize) usize {
|
|
|
2709
2686
|
}
|
|
2710
2687
|
|
|
2711
2688
|
pub fn setns(fd: fd_t, flags: u32) usize {
|
|
2712
|
-
return syscall2(.setns, @as(
|
|
2689
|
+
return syscall2(.setns, @as(u32, @bitCast(fd)), flags);
|
|
2713
2690
|
}
|
|
2714
2691
|
|
|
2715
2692
|
pub fn capget(hdrp: *cap_user_header_t, datap: *cap_user_data_t) usize {
|
|
@@ -2732,12 +2709,12 @@ pub fn io_uring_setup(entries: u32, p: *io_uring_params) usize {
|
|
|
2732
2709
|
return syscall2(.io_uring_setup, entries, @intFromPtr(p));
|
|
2733
2710
|
}
|
|
2734
2711
|
|
|
2735
|
-
pub fn io_uring_enter(fd:
|
|
2736
|
-
return syscall6(.io_uring_enter, @as(
|
|
2712
|
+
pub fn io_uring_enter(fd: fd_t, to_submit: u32, min_complete: u32, flags: u32, sig: ?*sigset_t) usize {
|
|
2713
|
+
return syscall6(.io_uring_enter, @as(u32, @bitCast(fd)), to_submit, min_complete, flags, @intFromPtr(sig), NSIG / 8);
|
|
2737
2714
|
}
|
|
2738
2715
|
|
|
2739
|
-
pub fn io_uring_register(fd:
|
|
2740
|
-
return syscall4(.io_uring_register, @as(
|
|
2716
|
+
pub fn io_uring_register(fd: fd_t, opcode: IORING_REGISTER, arg: ?*const anyopaque, nr_args: u32) usize {
|
|
2717
|
+
return syscall4(.io_uring_register, @as(u32, @bitCast(fd)), @intFromEnum(opcode), @intFromPtr(arg), nr_args);
|
|
2741
2718
|
}
|
|
2742
2719
|
|
|
2743
2720
|
pub fn memfd_create(name: [*:0]const u8, flags: u32) usize {
|
|
@@ -2745,43 +2722,43 @@ pub fn memfd_create(name: [*:0]const u8, flags: u32) usize {
|
|
|
2745
2722
|
}
|
|
2746
2723
|
|
|
2747
2724
|
pub fn getrusage(who: i32, usage: *rusage) usize {
|
|
2748
|
-
return syscall2(.getrusage, @as(
|
|
2725
|
+
return syscall2(.getrusage, @as(u32, @bitCast(who)), @intFromPtr(usage));
|
|
2749
2726
|
}
|
|
2750
2727
|
|
|
2751
2728
|
pub fn tcgetattr(fd: fd_t, termios_p: *termios) usize {
|
|
2752
|
-
return syscall3(.ioctl, @as(
|
|
2729
|
+
return syscall3(.ioctl, @as(u32, @bitCast(fd)), T.CGETS, @intFromPtr(termios_p));
|
|
2753
2730
|
}
|
|
2754
2731
|
|
|
2755
2732
|
pub fn tcsetattr(fd: fd_t, optional_action: TCSA, termios_p: *const termios) usize {
|
|
2756
|
-
return syscall3(.ioctl, @as(
|
|
2733
|
+
return syscall3(.ioctl, @as(u32, @bitCast(fd)), T.CSETS + @intFromEnum(optional_action), @intFromPtr(termios_p));
|
|
2757
2734
|
}
|
|
2758
2735
|
|
|
2759
2736
|
pub fn tcgetpgrp(fd: fd_t, pgrp: *pid_t) usize {
|
|
2760
|
-
return syscall3(.ioctl, @as(
|
|
2737
|
+
return syscall3(.ioctl, @as(u32, @bitCast(fd)), T.IOCGPGRP, @intFromPtr(pgrp));
|
|
2761
2738
|
}
|
|
2762
2739
|
|
|
2763
2740
|
pub fn tcsetpgrp(fd: fd_t, pgrp: *const pid_t) usize {
|
|
2764
|
-
return syscall3(.ioctl, @as(
|
|
2741
|
+
return syscall3(.ioctl, @as(u32, @bitCast(fd)), T.IOCSPGRP, @intFromPtr(pgrp));
|
|
2765
2742
|
}
|
|
2766
2743
|
|
|
2767
2744
|
pub fn tcdrain(fd: fd_t) usize {
|
|
2768
|
-
return syscall3(.ioctl, @as(
|
|
2745
|
+
return syscall3(.ioctl, @as(u32, @bitCast(fd)), T.CSBRK, 1);
|
|
2769
2746
|
}
|
|
2770
2747
|
|
|
2771
2748
|
pub fn ioctl(fd: fd_t, request: u32, arg: usize) usize {
|
|
2772
|
-
return syscall3(.ioctl, @as(
|
|
2749
|
+
return syscall3(.ioctl, @as(u32, @bitCast(fd)), request, arg);
|
|
2773
2750
|
}
|
|
2774
2751
|
|
|
2775
2752
|
pub fn signalfd(fd: fd_t, mask: *const sigset_t, flags: u32) usize {
|
|
2776
|
-
return syscall4(.signalfd4, @as(
|
|
2753
|
+
return syscall4(.signalfd4, @as(u32, @bitCast(fd)), @intFromPtr(mask), NSIG / 8, flags);
|
|
2777
2754
|
}
|
|
2778
2755
|
|
|
2779
|
-
pub fn copy_file_range(fd_in: fd_t, off_in: ?*
|
|
2756
|
+
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 {
|
|
2780
2757
|
return syscall6(
|
|
2781
2758
|
.copy_file_range,
|
|
2782
|
-
@as(
|
|
2759
|
+
@as(u32, @bitCast(fd_in)),
|
|
2783
2760
|
@intFromPtr(off_in),
|
|
2784
|
-
@as(
|
|
2761
|
+
@as(u32, @bitCast(fd_out)),
|
|
2785
2762
|
@intFromPtr(off_out),
|
|
2786
2763
|
len,
|
|
2787
2764
|
flags,
|
|
@@ -2797,19 +2774,19 @@ pub fn sync() void {
|
|
|
2797
2774
|
}
|
|
2798
2775
|
|
|
2799
2776
|
pub fn syncfs(fd: fd_t) usize {
|
|
2800
|
-
return syscall1(.syncfs, @as(
|
|
2777
|
+
return syscall1(.syncfs, @as(u32, @bitCast(fd)));
|
|
2801
2778
|
}
|
|
2802
2779
|
|
|
2803
2780
|
pub fn fsync(fd: fd_t) usize {
|
|
2804
|
-
return syscall1(.fsync, @as(
|
|
2781
|
+
return syscall1(.fsync, @as(u32, @bitCast(fd)));
|
|
2805
2782
|
}
|
|
2806
2783
|
|
|
2807
2784
|
pub fn fdatasync(fd: fd_t) usize {
|
|
2808
|
-
return syscall1(.fdatasync, @as(
|
|
2785
|
+
return syscall1(.fdatasync, @as(u32, @bitCast(fd)));
|
|
2809
2786
|
}
|
|
2810
2787
|
|
|
2811
2788
|
pub fn prctl(option: i32, arg2: usize, arg3: usize, arg4: usize, arg5: usize) usize {
|
|
2812
|
-
return syscall5(.prctl, @as(
|
|
2789
|
+
return syscall5(.prctl, @as(u32, @bitCast(option)), arg2, arg3, arg4, arg5);
|
|
2813
2790
|
}
|
|
2814
2791
|
|
|
2815
2792
|
pub fn getrlimit(resource: rlimit_resource, rlim: *rlimit) usize {
|
|
@@ -2825,8 +2802,8 @@ pub fn setrlimit(resource: rlimit_resource, rlim: *const rlimit) usize {
|
|
|
2825
2802
|
pub fn prlimit(pid: pid_t, resource: rlimit_resource, new_limit: ?*const rlimit, old_limit: ?*rlimit) usize {
|
|
2826
2803
|
return syscall4(
|
|
2827
2804
|
.prlimit64,
|
|
2828
|
-
@as(
|
|
2829
|
-
@as(
|
|
2805
|
+
@as(u32, @bitCast(pid)),
|
|
2806
|
+
@as(u32, @bitCast(@as(i32, @intFromEnum(resource)))),
|
|
2830
2807
|
@intFromPtr(new_limit),
|
|
2831
2808
|
@intFromPtr(old_limit),
|
|
2832
2809
|
);
|
|
@@ -2841,14 +2818,14 @@ pub fn madvise(address: [*]u8, len: usize, advice: u32) usize {
|
|
|
2841
2818
|
}
|
|
2842
2819
|
|
|
2843
2820
|
pub fn pidfd_open(pid: pid_t, flags: u32) usize {
|
|
2844
|
-
return syscall2(.pidfd_open, @as(
|
|
2821
|
+
return syscall2(.pidfd_open, @as(u32, @bitCast(pid)), flags);
|
|
2845
2822
|
}
|
|
2846
2823
|
|
|
2847
2824
|
pub fn pidfd_getfd(pidfd: fd_t, targetfd: fd_t, flags: u32) usize {
|
|
2848
2825
|
return syscall3(
|
|
2849
2826
|
.pidfd_getfd,
|
|
2850
|
-
@as(
|
|
2851
|
-
@as(
|
|
2827
|
+
@as(u32, @bitCast(pidfd)),
|
|
2828
|
+
@as(u32, @bitCast(targetfd)),
|
|
2852
2829
|
flags,
|
|
2853
2830
|
);
|
|
2854
2831
|
}
|
|
@@ -2856,7 +2833,7 @@ pub fn pidfd_getfd(pidfd: fd_t, targetfd: fd_t, flags: u32) usize {
|
|
|
2856
2833
|
pub fn pidfd_send_signal(pidfd: fd_t, sig: SIG, info: ?*siginfo_t, flags: u32) usize {
|
|
2857
2834
|
return syscall4(
|
|
2858
2835
|
.pidfd_send_signal,
|
|
2859
|
-
@as(
|
|
2836
|
+
@as(u32, @bitCast(pidfd)),
|
|
2860
2837
|
@intFromEnum(sig),
|
|
2861
2838
|
@intFromPtr(info),
|
|
2862
2839
|
flags,
|
|
@@ -2866,7 +2843,7 @@ pub fn pidfd_send_signal(pidfd: fd_t, sig: SIG, info: ?*siginfo_t, flags: u32) u
|
|
|
2866
2843
|
pub fn process_vm_readv(pid: pid_t, local: []const iovec, remote: []const iovec_const, flags: usize) usize {
|
|
2867
2844
|
return syscall6(
|
|
2868
2845
|
.process_vm_readv,
|
|
2869
|
-
@as(
|
|
2846
|
+
@as(u32, @bitCast(pid)),
|
|
2870
2847
|
@intFromPtr(local.ptr),
|
|
2871
2848
|
local.len,
|
|
2872
2849
|
@intFromPtr(remote.ptr),
|
|
@@ -2878,7 +2855,7 @@ pub fn process_vm_readv(pid: pid_t, local: []const iovec, remote: []const iovec_
|
|
|
2878
2855
|
pub fn process_vm_writev(pid: pid_t, local: []const iovec_const, remote: []const iovec_const, flags: usize) usize {
|
|
2879
2856
|
return syscall6(
|
|
2880
2857
|
.process_vm_writev,
|
|
2881
|
-
@as(
|
|
2858
|
+
@as(u32, @bitCast(pid)),
|
|
2882
2859
|
@intFromPtr(local.ptr),
|
|
2883
2860
|
local.len,
|
|
2884
2861
|
@intFromPtr(remote.ptr),
|
|
@@ -2888,50 +2865,43 @@ pub fn process_vm_writev(pid: pid_t, local: []const iovec_const, remote: []const
|
|
|
2888
2865
|
}
|
|
2889
2866
|
|
|
2890
2867
|
pub fn fadvise(fd: fd_t, offset: i64, len: i64, advice: usize) usize {
|
|
2891
|
-
if (
|
|
2892
|
-
//
|
|
2893
|
-
// register
|
|
2868
|
+
if (native_arch.isMIPS32()) {
|
|
2869
|
+
// MIPS O32 weirdly differs from the other architectures that require
|
|
2870
|
+
// aligned register pairs for this specific syscall.
|
|
2894
2871
|
|
|
2895
2872
|
const offset_halves = splitValue64(offset);
|
|
2896
2873
|
const length_halves = splitValue64(len);
|
|
2897
2874
|
|
|
2898
|
-
return
|
|
2899
|
-
.
|
|
2900
|
-
@as(
|
|
2901
|
-
|
|
2875
|
+
return syscall7(
|
|
2876
|
+
.fadvise64,
|
|
2877
|
+
@as(u32, @bitCast(fd)),
|
|
2878
|
+
0,
|
|
2902
2879
|
offset_halves[0],
|
|
2903
2880
|
offset_halves[1],
|
|
2904
2881
|
length_halves[0],
|
|
2905
2882
|
length_halves[1],
|
|
2883
|
+
advice,
|
|
2906
2884
|
);
|
|
2907
|
-
} else if (
|
|
2908
|
-
// MIPS O32 does not deal with the register alignment issue, so pass a dummy value.
|
|
2909
|
-
|
|
2885
|
+
} else if (require_aligned_register_pair) {
|
|
2910
2886
|
const offset_halves = splitValue64(offset);
|
|
2911
2887
|
const length_halves = splitValue64(len);
|
|
2912
2888
|
|
|
2913
|
-
return
|
|
2914
|
-
.
|
|
2915
|
-
@as(
|
|
2916
|
-
|
|
2889
|
+
return syscall6(
|
|
2890
|
+
.fadvise64_64,
|
|
2891
|
+
@as(u32, @bitCast(fd)),
|
|
2892
|
+
advice,
|
|
2917
2893
|
offset_halves[0],
|
|
2918
2894
|
offset_halves[1],
|
|
2919
2895
|
length_halves[0],
|
|
2920
2896
|
length_halves[1],
|
|
2921
|
-
advice,
|
|
2922
2897
|
);
|
|
2923
|
-
} else if (
|
|
2924
|
-
// Other 32-bit architectures do not require register alignment.
|
|
2925
|
-
|
|
2898
|
+
} else if (@sizeOf(syscall_arg_t) < @sizeOf(u64)) {
|
|
2926
2899
|
const offset_halves = splitValue64(offset);
|
|
2927
2900
|
const length_halves = splitValue64(len);
|
|
2928
2901
|
|
|
2929
2902
|
return syscall6(
|
|
2930
|
-
|
|
2931
|
-
|
|
2932
|
-
else => .fadvise64_64,
|
|
2933
|
-
},
|
|
2934
|
-
@as(usize, @bitCast(@as(isize, fd))),
|
|
2903
|
+
.fadvise64_64,
|
|
2904
|
+
@as(u32, @bitCast(fd)),
|
|
2935
2905
|
offset_halves[0],
|
|
2936
2906
|
offset_halves[1],
|
|
2937
2907
|
length_halves[0],
|
|
@@ -2939,14 +2909,11 @@ pub fn fadvise(fd: fd_t, offset: i64, len: i64, advice: usize) usize {
|
|
|
2939
2909
|
advice,
|
|
2940
2910
|
);
|
|
2941
2911
|
} else {
|
|
2942
|
-
// On 64-bit architectures, fadvise64_64 and fadvise64 are the same. Generally, older ports
|
|
2943
|
-
// call it fadvise64 (x86, PowerPC, etc), while newer ports call it fadvise64_64 (RISC-V,
|
|
2944
|
-
// LoongArch, etc). SPARC is the odd one out because it has both.
|
|
2945
2912
|
return syscall4(
|
|
2946
|
-
|
|
2947
|
-
@as(
|
|
2948
|
-
@as(
|
|
2949
|
-
@as(
|
|
2913
|
+
.fadvise64,
|
|
2914
|
+
@as(u32, @bitCast(fd)),
|
|
2915
|
+
@as(u64, @bitCast(offset)),
|
|
2916
|
+
@as(u64, @bitCast(len)),
|
|
2950
2917
|
advice,
|
|
2951
2918
|
);
|
|
2952
2919
|
}
|
|
@@ -2962,9 +2929,9 @@ pub fn perf_event_open(
|
|
|
2962
2929
|
return syscall5(
|
|
2963
2930
|
.perf_event_open,
|
|
2964
2931
|
@intFromPtr(attr),
|
|
2965
|
-
@as(
|
|
2966
|
-
@as(
|
|
2967
|
-
@as(
|
|
2932
|
+
@as(u32, @bitCast(pid)),
|
|
2933
|
+
@as(u32, @bitCast(cpu)),
|
|
2934
|
+
@as(u32, @bitCast(group_fd)),
|
|
2968
2935
|
flags,
|
|
2969
2936
|
);
|
|
2970
2937
|
}
|
|
@@ -2983,7 +2950,7 @@ pub fn ptrace(
|
|
|
2983
2950
|
return syscall5(
|
|
2984
2951
|
.ptrace,
|
|
2985
2952
|
req,
|
|
2986
|
-
@as(
|
|
2953
|
+
@as(u32, @bitCast(pid)),
|
|
2987
2954
|
addr,
|
|
2988
2955
|
data,
|
|
2989
2956
|
addr2,
|
|
@@ -3005,17 +2972,27 @@ pub fn cachestat(
|
|
|
3005
2972
|
) usize {
|
|
3006
2973
|
return syscall4(
|
|
3007
2974
|
.cachestat,
|
|
3008
|
-
@as(
|
|
2975
|
+
@as(u32, @bitCast(fd)),
|
|
3009
2976
|
@intFromPtr(cstat_range),
|
|
3010
2977
|
@intFromPtr(cstat),
|
|
3011
2978
|
flags,
|
|
3012
2979
|
);
|
|
3013
2980
|
}
|
|
3014
2981
|
|
|
3015
|
-
pub fn map_shadow_stack(addr:
|
|
2982
|
+
pub fn map_shadow_stack(addr: usize, size: usize, flags: u32) usize {
|
|
3016
2983
|
return syscall3(.map_shadow_stack, addr, size, flags);
|
|
3017
2984
|
}
|
|
3018
2985
|
|
|
2986
|
+
pub fn tee(src: fd_t, dest: fd_t, len: usize, flags: u32) usize {
|
|
2987
|
+
return syscall4(
|
|
2988
|
+
.tee,
|
|
2989
|
+
@as(u32, @bitCast(src)),
|
|
2990
|
+
@as(u32, @bitCast(dest)),
|
|
2991
|
+
len,
|
|
2992
|
+
flags,
|
|
2993
|
+
);
|
|
2994
|
+
}
|
|
2995
|
+
|
|
3019
2996
|
pub const Sysinfo = switch (native_abi) {
|
|
3020
2997
|
.gnux32, .muslx32 => extern struct {
|
|
3021
2998
|
/// Seconds since boot
|
|
@@ -3676,13 +3653,6 @@ pub const E = switch (native_arch) {
|
|
|
3676
3653
|
},
|
|
3677
3654
|
};
|
|
3678
3655
|
|
|
3679
|
-
pub const pid_t = i32;
|
|
3680
|
-
pub const fd_t = i32;
|
|
3681
|
-
pub const socket_t = i32;
|
|
3682
|
-
pub const uid_t = u32;
|
|
3683
|
-
pub const gid_t = u32;
|
|
3684
|
-
pub const clock_t = isize;
|
|
3685
|
-
|
|
3686
3656
|
pub const NAME_MAX = 255;
|
|
3687
3657
|
pub const PATH_MAX = 4096;
|
|
3688
3658
|
pub const IOV_MAX = 1024;
|
|
@@ -6161,7 +6131,7 @@ pub const sockaddr = extern struct {
|
|
|
6161
6131
|
flags: u8,
|
|
6162
6132
|
|
|
6163
6133
|
/// The total size of this structure should be exactly the same as that of struct sockaddr.
|
|
6164
|
-
zero: [3]u8 =
|
|
6134
|
+
zero: [3]u8 = @splat(0),
|
|
6165
6135
|
comptime {
|
|
6166
6136
|
std.debug.assert(@sizeOf(vm) == @sizeOf(sockaddr));
|
|
6167
6137
|
}
|
|
@@ -6323,7 +6293,7 @@ pub const dl_phdr_info = extern struct {
|
|
|
6323
6293
|
|
|
6324
6294
|
pub const CPU_SETSIZE = 128;
|
|
6325
6295
|
pub const cpu_set_t = [CPU_SETSIZE / @sizeOf(usize)]usize;
|
|
6326
|
-
pub const cpu_count_t =
|
|
6296
|
+
pub const cpu_count_t = @Int(.unsigned, std.math.log2(CPU_SETSIZE * 8));
|
|
6327
6297
|
|
|
6328
6298
|
pub fn CPU_COUNT(set: cpu_set_t) cpu_count_t {
|
|
6329
6299
|
var sum: cpu_count_t = 0;
|
|
@@ -7507,7 +7477,7 @@ pub const rusage = extern struct {
|
|
|
7507
7477
|
nsignals: isize,
|
|
7508
7478
|
nvcsw: isize,
|
|
7509
7479
|
nivcsw: isize,
|
|
7510
|
-
__reserved: [16]isize =
|
|
7480
|
+
__reserved: [16]isize = @splat(0),
|
|
7511
7481
|
|
|
7512
7482
|
pub const SELF = 0;
|
|
7513
7483
|
pub const CHILDREN = -1;
|
|
@@ -10174,7 +10144,3 @@ pub const cmsghdr = extern struct {
|
|
|
10174
10144
|
level: i32,
|
|
10175
10145
|
type: i32,
|
|
10176
10146
|
};
|
|
10177
|
-
|
|
10178
|
-
inline fn fd_to_usize(fd: fd_t) usize {
|
|
10179
|
-
return @as(usize, @bitCast(@as(isize, fd)));
|
|
10180
|
-
}
|