Browse Source

Update `sys/unix`; Rename `thread.create_and_start`

gingerBill 5 years ago
parent
commit
f92b4c7849

+ 6 - 0
core/sys/unix/pthread_darwin.odin

@@ -78,3 +78,9 @@ PTHREAD_INHERIT_SCHED :: 1;
 PTHREAD_EXPLICIT_SCHED :: 2;
 PTHREAD_EXPLICIT_SCHED :: 2;
 PTHREAD_PROCESS_SHARED :: 1;
 PTHREAD_PROCESS_SHARED :: 1;
 PTHREAD_PROCESS_PRIVATE :: 2;
 PTHREAD_PROCESS_PRIVATE :: 2;
+
+
+PTHREAD_MUTEX_NORMAL :: 0;
+PTHREAD_MUTEX_RECURSIVE :: 1;
+PTHREAD_MUTEX_ERRORCHECK :: 2;
+

+ 4 - 0
core/sys/unix/pthread_linux.odin

@@ -62,6 +62,10 @@ pthread_barrierattr_t :: opaque struct #align 16 {
 	_: [PTHREAD_BARRIERATTR_T_SIZE] c.char,
 	_: [PTHREAD_BARRIERATTR_T_SIZE] c.char,
 };
 };
 
 
+PTHREAD_MUTEX_NORMAL :: 0;
+PTHREAD_MUTEX_RECURSIVE :: 1;
+PTHREAD_MUTEX_ERRORCHECK :: 2;
+
 
 
 // TODO(tetra, 2019-11-01): Maybe make `enum c.int`s for these?
 // TODO(tetra, 2019-11-01): Maybe make `enum c.int`s for these?
 PTHREAD_CREATE_JOINABLE :: 0;
 PTHREAD_CREATE_JOINABLE :: 0;

+ 2 - 1
core/sys/unix/pthread_unix.odin

@@ -53,7 +53,7 @@ foreign pthread {
 	pthread_attr_getstack :: proc(attrs: ^pthread_attr_t, stack_ptr: ^rawptr, stack_size: ^u64) -> c.int ---;
 	pthread_attr_getstack :: proc(attrs: ^pthread_attr_t, stack_ptr: ^rawptr, stack_size: ^u64) -> c.int ---;
 
 
 	sched_yield :: proc() -> c.int ---;
 	sched_yield :: proc() -> c.int ---;
-	
+
 }
 }
 
 
 @(default_calling_convention="c")
 @(default_calling_convention="c")
@@ -101,6 +101,7 @@ foreign pthread {
 
 
 	pthread_mutexattr_init :: proc(attrs: ^pthread_mutexattr_t) -> c.int ---;
 	pthread_mutexattr_init :: proc(attrs: ^pthread_mutexattr_t) -> c.int ---;
 	pthread_mutexattr_destroy :: proc(attrs: ^pthread_mutexattr_t) -> c.int ---;
 	pthread_mutexattr_destroy :: proc(attrs: ^pthread_mutexattr_t) -> c.int ---;
+	pthread_mutexattr_settype :: proc(attrs: ^pthread_mutexattr_t, type: c.int) -> c.int ---;
 
 
 	// p-shared = "process-shared" - i.e: is this mutex shared among multiple processes?
 	// p-shared = "process-shared" - i.e: is this mutex shared among multiple processes?
 	// values: PTHREAD_PROCESS_PRIVATE, PTHREAD_PROCESS_SHARED
 	// values: PTHREAD_PROCESS_PRIVATE, PTHREAD_PROCESS_SHARED

+ 2 - 1
core/thread/thread.odin

@@ -44,8 +44,9 @@ run_with_data :: proc(fn: proc(data: rawptr), data: rawptr, init_context: Maybe(
 }
 }
 
 
 
 
-run_with_thread_proc :: proc(fn: Thread_Proc, init_context: Maybe(runtime.Context) = nil, priority := Thread_Priority.Normal) {
+create_and_start :: proc(fn: Thread_Proc, init_context: Maybe(runtime.Context) = nil, priority := Thread_Priority.Normal) -> ^Thread {
 	t := create(fn, priority);
 	t := create(fn, priority);
 	t.init_context = init_context;
 	t.init_context = init_context;
 	start(t);
 	start(t);
+	return t;
 }
 }