Update usage of syscall to use the intrinsics

This commit is contained in:
gingerBill
2021-08-29 14:56:47 +01:00
parent 54b37573c9
commit 7c108dbf48
3 changed files with 10 additions and 19 deletions
+2 -2
View File
@@ -7,6 +7,7 @@ import "core:runtime"
import "core:strings" import "core:strings"
import "core:c" import "core:c"
import "core:strconv" import "core:strconv"
import "core:intrinsics"
Handle :: distinct i32; Handle :: distinct i32;
File_Time :: distinct u64; File_Time :: distinct u64;
@@ -269,7 +270,6 @@ SYS_GETTID: Syscall : 186;
foreign libc { foreign libc {
@(link_name="__errno_location") __errno_location :: proc() -> ^int ---; @(link_name="__errno_location") __errno_location :: proc() -> ^int ---;
@(link_name="syscall") syscall :: proc(number: Syscall, #c_vararg args: ..any) -> i32 ---;
@(link_name="open") _unix_open :: proc(path: cstring, flags: c.int, mode: c.int) -> Handle ---; @(link_name="open") _unix_open :: proc(path: cstring, flags: c.int, mode: c.int) -> Handle ---;
@(link_name="close") _unix_close :: proc(fd: Handle) -> c.int ---; @(link_name="close") _unix_close :: proc(fd: Handle) -> c.int ---;
@@ -595,7 +595,7 @@ exit :: proc "contextless" (code: int) -> ! {
} }
current_thread_id :: proc "contextless" () -> int { current_thread_id :: proc "contextless" () -> int {
return cast(int)syscall(SYS_GETTID); return cast(int)intrinsics.syscall(SYS_GETTID);
} }
dlopen :: proc(filename: string, flags: int) -> rawptr { dlopen :: proc(filename: string, flags: int) -> rawptr {
+6 -10
View File
@@ -1,16 +1,12 @@
package sync package sync
import "core:sys/unix" import "core:sys/unix"
import "core:intrinsics"
foreign import libc "system:c"
current_thread_id :: proc "contextless" () -> int { current_thread_id :: proc "contextless" () -> int {
foreign libc {
syscall :: proc(number: i32, #c_vararg args: ..any) -> i32 ---
}
SYS_GETTID :: 186; SYS_GETTID :: 186;
return int(syscall(SYS_GETTID)); return int(intrinsics.syscall(SYS_GETTID));
} }
@@ -32,10 +28,10 @@ semaphore_destroy :: proc(s: ^Semaphore) {
} }
semaphore_post :: proc(s: ^Semaphore, count := 1) { semaphore_post :: proc(s: ^Semaphore, count := 1) {
// NOTE: SPEED: If there's one syscall to do this, we should use it instead of the loop. // NOTE: SPEED: If there's one syscall to do this, we should use it instead of the loop.
for in 0..<count { for in 0..<count {
assert(unix.sem_post(&s.handle) == 0); assert(unix.sem_post(&s.handle) == 0);
} }
} }
semaphore_wait_for :: proc(s: ^Semaphore) { semaphore_wait_for :: proc(s: ^Semaphore) {
+2 -7
View File
@@ -1,16 +1,11 @@
package sync package sync
import "core:sys/unix" import "core:sys/unix"
import "core:intrinsics"
foreign import libc "system:c"
current_thread_id :: proc "contextless" () -> int { current_thread_id :: proc "contextless" () -> int {
foreign libc {
syscall :: proc(number: i32, #c_vararg args: ..any) -> i32 ---
}
SYS_GETTID :: 186; SYS_GETTID :: 186;
return int(syscall(SYS_GETTID)); return int(intrinsics.syscall(SYS_GETTID));
} }