From 8a4664ac4c0e3c68a6a32bf451d35452c9409f2b Mon Sep 17 00:00:00 2001 From: Polesznyák Márk Date: Tue, 14 Apr 2026 10:45:32 +0200 Subject: feat: mmap + multithreading, down to 7s on i5 9400f --- pthread.ha | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 pthread.ha (limited to 'pthread.ha') diff --git a/pthread.ha b/pthread.ha new file mode 100644 index 0000000..82c4900 --- /dev/null +++ b/pthread.ha @@ -0,0 +1,28 @@ +use sys::{errno}; + +def __SIZEOF_PTHREAD_CONDATTR_T: size = 56; + +type pthread_attr_t = union { + __size: [__SIZEOF_PTHREAD_CONDATTR_T]i8, + __align: i64 +}; + +type pthread_t = u64; + +@symbol("pthread_create") fn _pthread_create(thread: *pthread_t, attr: const nullable *pthread_attr_t, start_routine: *fn(arg: *opaque) nullable *opaque, arg: *opaque) int; + +fn pthread_create(thread: *pthread_t, attr: const nullable *pthread_attr_t, start_routine: *fn(arg: *opaque) nullable *opaque, arg: *opaque) (void | errno) = { + const ret = _pthread_create(thread, attr, start_routine, arg); + + if (ret != 0) + return ret: errno; +}; + +@symbol("pthread_join") fn _pthread_join(thread: pthread_t, value_ptr: nullable **opaque) int; + +fn pthread_join(thread: pthread_t, value_ptr: nullable **opaque) (void | errno) = { + const ret = _pthread_join(thread, value_ptr); + + if (ret != 0) + return ret: errno; +}; -- cgit v1.2.3