pthread_openbsd.odin 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. //+build openbsd
  2. package unix
  3. import "core:c"
  4. pthread_t :: distinct rawptr
  5. pthread_attr_t :: distinct rawptr
  6. pthread_mutex_t :: distinct rawptr
  7. pthread_mutexattr_t :: distinct rawptr
  8. pthread_cond_t :: distinct rawptr
  9. pthread_condattr_t :: distinct rawptr
  10. pthread_rwlock_t :: distinct rawptr
  11. pthread_rwlockattr_t :: distinct rawptr
  12. pthread_barrier_t :: distinct rawptr
  13. pthread_barrierattr_t :: distinct rawptr
  14. pthread_spinlock_t :: distinct rawptr
  15. pthread_key_t :: distinct c.int
  16. pthread_once_t :: struct {
  17. state: c.int,
  18. mutex: pthread_mutex_t,
  19. }
  20. PTHREAD_MUTEX_ERRORCHECK :: 1
  21. PTHREAD_MUTEX_RECURSIVE :: 2
  22. PTHREAD_MUTEX_NORMAL :: 3
  23. PTHREAD_MUTEX_STRICT_NP :: 4
  24. PTHREAD_DETACHED :: 0x1
  25. PTHREAD_SCOPE_SYSTEM :: 0x2
  26. PTHREAD_INHERIT_SCHED :: 0x4
  27. PTHREAD_NOFLOAT :: 0x8
  28. PTHREAD_CREATE_DETACHED :: PTHREAD_DETACHED
  29. PTHREAD_CREATE_JOINABLE :: 0
  30. PTHREAD_SCOPE_PROCESS :: 0
  31. PTHREAD_EXPLICIT_SCHED :: 0
  32. SCHED_FIFO :: 1
  33. SCHED_OTHER :: 2
  34. SCHED_RR :: 3
  35. sched_param :: struct {
  36. sched_priority: c.int,
  37. }
  38. sem_t :: distinct rawptr
  39. foreign import libc "system:c"
  40. @(default_calling_convention="c")
  41. foreign libc {
  42. sem_open :: proc(name: cstring, flags: c.int) -> ^sem_t ---
  43. sem_init :: proc(sem: ^sem_t, pshared: c.int, initial_value: c.uint) -> c.int ---
  44. sem_destroy :: proc(sem: ^sem_t) -> c.int ---
  45. sem_post :: proc(sem: ^sem_t) -> c.int ---
  46. sem_wait :: proc(sem: ^sem_t) -> c.int ---
  47. sem_trywait :: proc(sem: ^sem_t) -> c.int ---
  48. //sem_timedwait :: proc(sem: ^sem_t, timeout: time.TimeSpec) -> c.int ---
  49. // NOTE: unclear whether pthread_yield is well-supported on Linux systems,
  50. // see https://linux.die.net/man/3/pthread_yield
  51. pthread_yield :: proc() ---
  52. }