pthread_netbsd.odin 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  1. package unix
  2. import "core:c"
  3. pthread_t :: distinct rawptr
  4. SEM_T_SIZE :: 8
  5. PTHREAD_CONDATTR_T_SIZE :: 16
  6. PTHREAD_MUTEXATTR_T_SIZE :: 16
  7. PTHREAD_RWLOCKATTR_T_SIZE :: 16
  8. PTHREAD_BARRIERATTR_T_SIZE :: 16
  9. PTHREAD_COND_T_SIZE :: 40
  10. PTHREAD_MUTEX_T_SIZE :: 48
  11. PTHREAD_RWLOCK_T_SIZE :: 64
  12. PTHREAD_BARRIER_T_SIZE :: 48
  13. PTHREAD_ATTR_T_SIZE :: 16
  14. pthread_cond_t :: struct #align(8) {
  15. _: [PTHREAD_COND_T_SIZE] c.char,
  16. }
  17. pthread_mutex_t :: struct #align(8) {
  18. _: [PTHREAD_MUTEX_T_SIZE] c.char,
  19. }
  20. pthread_rwlock_t :: struct #align(8) {
  21. _: [PTHREAD_RWLOCK_T_SIZE] c.char,
  22. }
  23. pthread_barrier_t :: struct #align(8) {
  24. _: [PTHREAD_BARRIER_T_SIZE] c.char,
  25. }
  26. pthread_attr_t :: struct #align(8) {
  27. _: [PTHREAD_ATTR_T_SIZE] c.char,
  28. }
  29. pthread_condattr_t :: struct #align(8) {
  30. _: [PTHREAD_CONDATTR_T_SIZE] c.char,
  31. }
  32. pthread_mutexattr_t :: struct #align(8) {
  33. _: [PTHREAD_MUTEXATTR_T_SIZE] c.char,
  34. }
  35. pthread_rwlockattr_t :: struct #align(8) {
  36. _: [PTHREAD_RWLOCKATTR_T_SIZE] c.char,
  37. }
  38. pthread_barrierattr_t :: struct #align(8) {
  39. _: [PTHREAD_BARRIERATTR_T_SIZE] c.char,
  40. }
  41. PTHREAD_MUTEX_NORMAL :: 0
  42. PTHREAD_MUTEX_ERRORCHECK :: 1
  43. PTHREAD_MUTEX_RECURSIVE :: 2
  44. PTHREAD_CREATE_JOINABLE :: 0
  45. PTHREAD_CREATE_DETACHED :: 1
  46. PTHREAD_INHERIT_SCHED :: 0
  47. PTHREAD_EXPLICIT_SCHED :: 1
  48. PTHREAD_PROCESS_PRIVATE :: 0
  49. PTHREAD_PROCESS_SHARED :: 1
  50. SCHED_NONE :: -1
  51. SCHED_OTHER :: 0
  52. SCHED_FIFO :: 1
  53. SCHED_RR :: 3
  54. sched_param :: struct {
  55. sched_priority: c.int,
  56. }
  57. sem_t :: struct #align(16) {
  58. _: [SEM_T_SIZE] c.char,
  59. }
  60. PTHREAD_CANCEL_ENABLE :: 0
  61. PTHREAD_CANCEL_DISABLE :: 1
  62. PTHREAD_CANCEL_DEFERRED :: 0
  63. PTHREAD_CANCEL_ASYNCHRONOUS :: 1
  64. foreign import "system:pthread"
  65. @(default_calling_convention="c")
  66. foreign pthread {
  67. sem_open :: proc(name: cstring, flags: c.int) -> ^sem_t ---
  68. sem_init :: proc(sem: ^sem_t, pshared: c.int, initial_value: c.uint) -> c.int ---
  69. sem_destroy :: proc(sem: ^sem_t) -> c.int ---
  70. sem_post :: proc(sem: ^sem_t) -> c.int ---
  71. sem_wait :: proc(sem: ^sem_t) -> c.int ---
  72. sem_trywait :: proc(sem: ^sem_t) -> c.int ---
  73. pthread_yield :: proc() ---
  74. pthread_setcancelstate :: proc (state: c.int, old_state: ^c.int) -> c.int ---
  75. pthread_setcanceltype :: proc (type: c.int, old_type: ^c.int) -> c.int ---
  76. pthread_cancel :: proc (thread: pthread_t) -> c.int ---
  77. }