mirror of
https://github.com/Ed94/Odin.git
synced 2026-06-15 02:12:22 -07:00
30 lines
1020 B
Odin
30 lines
1020 B
Odin
package darwin
|
|
|
|
foreign import pthread "System.framework"
|
|
|
|
import "core:c"
|
|
|
|
// NOTE(tetra): Unclear whether these should be aligned 16 or not.
|
|
// However all other sync primitives are aligned for robustness.
|
|
// I cannot currently align these though.
|
|
// See core/sys/unix/pthread_linux.odin/pthread_t.
|
|
task_t :: distinct u64
|
|
semaphore_t :: distinct u64
|
|
|
|
kern_return_t :: distinct u64
|
|
thread_act_t :: distinct u64
|
|
|
|
@(default_calling_convention="c")
|
|
foreign pthread {
|
|
mach_task_self :: proc() -> task_t ---
|
|
|
|
semaphore_create :: proc(task: task_t, semaphore: ^semaphore_t, policy, value: c.int) -> kern_return_t ---
|
|
semaphore_destroy :: proc(task: task_t, semaphore: semaphore_t) -> kern_return_t ---
|
|
|
|
semaphore_signal :: proc(semaphore: semaphore_t) -> kern_return_t ---
|
|
semaphore_signal_all :: proc(semaphore: semaphore_t) -> kern_return_t ---
|
|
semaphore_signal_thread :: proc(semaphore: semaphore_t, thread: thread_act_t) -> kern_return_t ---
|
|
|
|
semaphore_wait :: proc(semaphore: semaphore_t) -> kern_return_t ---
|
|
}
|