aboutsummaryrefslogtreecommitdiff
path: root/pthread.ha
blob: 82c4900a7316d537d5bbde6cc1fb6a8a733c371e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
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;
};