pthread_haiku.odin 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. package unix
  2. import "core:c"
  3. pthread_t :: distinct rawptr
  4. pthread_attr_t :: distinct rawptr
  5. pthread_mutex_t :: distinct rawptr
  6. pthread_mutexattr_t :: distinct rawptr
  7. pthread_cond_t :: distinct rawptr
  8. pthread_condattr_t :: distinct rawptr
  9. pthread_rwlock_t :: distinct rawptr
  10. pthread_rwlockattr_t :: distinct rawptr
  11. pthread_barrier_t :: distinct rawptr
  12. pthread_barrierattr_t :: distinct rawptr
  13. pthread_spinlock_t :: distinct rawptr
  14. pthread_key_t :: distinct c.int
  15. pthread_once_t :: struct {
  16. state: c.int,
  17. mutex: pthread_mutex_t,
  18. }
  19. PTHREAD_MUTEX_DEFAULT :: 0
  20. PTHREAD_MUTEX_NORMAL :: 1
  21. PTHREAD_MUTEX_ERRORCHECK :: 2
  22. PTHREAD_MUTEX_RECURSIVE :: 3
  23. PTHREAD_DETACHED :: 0x1
  24. PTHREAD_SCOPE_SYSTEM :: 0x2
  25. PTHREAD_INHERIT_SCHED :: 0x4
  26. PTHREAD_NOFLOAT :: 0x8
  27. PTHREAD_CREATE_DETACHED :: PTHREAD_DETACHED
  28. PTHREAD_CREATE_JOINABLE :: 0
  29. PTHREAD_SCOPE_PROCESS :: 0
  30. PTHREAD_EXPLICIT_SCHED :: 0
  31. SCHED_FIFO :: 1
  32. SCHED_RR :: 2
  33. SCHED_SPORADIC :: 3
  34. SCHED_OTHER :: 4
  35. sched_param :: struct {
  36. sched_priority: c.int,
  37. }
  38. sem_t :: distinct rawptr
  39. PTHREAD_CANCEL_ENABLE :: 0
  40. PTHREAD_CANCEL_DISABLE :: 1
  41. PTHREAD_CANCEL_DEFERRED :: 0
  42. PTHREAD_CANCEL_ASYNCHRONOUS :: 2
  43. foreign import libc "system:c"
  44. @(default_calling_convention="c")
  45. foreign libc {
  46. sem_open :: proc(name: cstring, flags: c.int) -> ^sem_t ---
  47. sem_init :: proc(sem: ^sem_t, pshared: c.int, initial_value: c.uint) -> c.int ---
  48. sem_destroy :: proc(sem: ^sem_t) -> c.int ---
  49. sem_post :: proc(sem: ^sem_t) -> c.int ---
  50. sem_wait :: proc(sem: ^sem_t) -> c.int ---
  51. sem_trywait :: proc(sem: ^sem_t) -> c.int ---
  52. pthread_yield :: proc() ---
  53. pthread_setcancelstate :: proc (state: c.int, old_state: ^c.int) -> c.int ---
  54. pthread_setcanceltype :: proc (type: c.int, old_type: ^c.int) -> c.int ---
  55. pthread_cancel :: proc (thread: pthread_t) -> c.int ---
  56. }