123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960 |
- package unix
- import "core:intrinsics"
- // Linux has inconsistent system call numbering across architectures,
- // for largely historical reasons. This attempts to provide a unified
- // Odin-side interface for system calls that are required for the core
- // library to work.
- // For authorative system call numbers, the following files in the kernel
- // source can be used:
- //
- // amd64: arch/x86/entry/syscalls/syscall_64.tbl
- // arm64: include/uapi/asm-generic/unistd.h
- // 386: arch/x86/entry/syscalls/sycall_32.tbl
- // arm: arch/arm/tools/syscall.tbl
- when ODIN_ARCH == "amd64" {
- SYS_mmap : uintptr : 9
- SYS_mprotect : uintptr : 10
- SYS_munmap : uintptr : 11
- SYS_madvise : uintptr : 28
- SYS_futex : uintptr : 202
- SYS_gettid : uintptr : 186
- SYS_getrandom : uintptr : 318
- } else when ODIN_ARCH == "arm64" {
- SYS_mmap : uintptr : 222
- SYS_mprotect : uintptr : 226
- SYS_munmap : uintptr : 215
- SYS_madvise : uintptr : 233
- SYS_futex : uintptr : 98
- SYS_gettid : uintptr : 178
- SYS_getrandom : uintptr : 278
- } else when ODIN_ARCH == "386" {
- SYS_mmap : uintptr : 192 // 90 is "sys_old_mmap", we want mmap2
- SYS_mprotect : uintptr : 125
- SYS_munmap : uintptr : 91
- SYS_madvise : uintptr : 219
- SYS_futex : uintptr : 240
- SYS_gettid : uintptr : 224
- SYS_getrandom : uintptr : 355
- } else when ODIN_ARCH == "arm" {
- SYS_mmap : uintptr : 192 // 90 is "sys_old_mmap", we want mmap2
- SYS_mprotect : uintptr : 125
- SYS_munmap: uintptr : 91
- SYS_madvise: uintptr : 220
- SYS_futex : uintptr : 240
- SYS_gettid : uintptr: 224
- SYS_getrandom : uintptr : 384
- } else {
- #panic("Unsupported architecture")
- }
- sys_gettid :: proc "contextless" () -> int {
- return cast(int)intrinsics.syscall(SYS_gettid)
- }
- sys_getrandom :: proc "contextless" (buf: ^byte, buflen: int, flags: uint) -> int {
- return cast(int)intrinsics.syscall(SYS_getrandom, buf, cast(uintptr)(buflen), cast(uintptr)(flags))
- }
|