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; };