sdl_mutex.odin 1.3 KB

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