sdl_mutex.odin 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. package sdl2
  2. import "core:c"
  3. when ODIN_OS == .Windows {
  4. foreign import lib "SDL2.lib"
  5. } else {
  6. foreign import lib "system:SDL2"
  7. }
  8. MUTEX_TIMEDOUT :: 1
  9. MUTEX_MAXWAIT :: ~u32(0)
  10. mutex :: struct {}
  11. semaphore :: struct {}
  12. sem :: semaphore
  13. cond :: struct {}
  14. mutexP :: LockMutex
  15. mutexV :: UnlockMutex
  16. @(default_calling_convention="c", link_prefix="SDL_")
  17. foreign lib {
  18. CreateMutex :: proc() -> ^mutex ---
  19. LockMutex :: proc(m: ^mutex) -> c.int ---
  20. TryLockMutex :: proc(m: ^mutex) -> c.int ---
  21. UnlockMutex :: proc(m: ^mutex) -> c.int ---
  22. DestroyMutex :: proc(m: ^mutex) ---
  23. CreateSemaphore :: proc(initial_value: u32) -> ^sem ---
  24. DestroySemaphore :: proc(s: ^sem) ---
  25. SemWait :: proc(s: ^sem) -> c.int ---
  26. SemTryWait :: proc(s: ^sem) -> c.int ---
  27. SemWaitTimeout :: proc(s: ^sem, ms: u32) -> c.int ---
  28. SemPost :: proc(s: ^sem) -> c.int ---
  29. SemValue :: proc(s: ^sem) -> u32 ---
  30. CreateCond :: proc() -> ^cond ---
  31. DestroyCond :: proc(cv: ^cond) ---
  32. CondSignal :: proc(cv: ^cond) -> c.int ---
  33. CondBroadcast :: proc(cv: ^cond) -> c.int ---
  34. CondWait :: proc(cv: ^cond, m: ^mutex) -> c.int ---
  35. CondWaitTimeout :: proc(cv: ^cond, m: ^mutex, ms: u32) -> c.int ---
  36. }