zenilib: zenilib/jni/external/sdl/SDL/SDL_mutex.h File Reference

zenilib 0.5.3.0

- Main Page
- Modules
- Namespaces
- Classes
- Files

- File List
- File Members

All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
Macros
SDL_mutex.h File Reference
`#include "SDL_stdinc.h"`
`#include "SDL_error.h"`
`#include "begin_code.h"`
`#include "close_code.h"`

Go to the source code of this file.

## Macros

#define | SDL_MUTEX_MAXWAIT (~(Uint32)0)
#define | SDL_MUTEX_TIMEDOUT 1

## Mutex functions

#define | SDL_mutexP(m) SDL_LockMutex(m)
#define | SDL_mutexV(m) SDL_UnlockMutex(m)
typedef struct SDL_mutex | SDL_mutex
DECLSPEC SDL_mutex *SDLCALL | SDL_CreateMutex (void)
DECLSPEC int SDLCALL | SDL_LockMutex (SDL_mutex *mutex)
DECLSPEC int SDLCALL | SDL_TryLockMutex (SDL_mutex *mutex)
DECLSPEC int SDLCALL | SDL_UnlockMutex (SDL_mutex *mutex)
DECLSPEC void SDLCALL | SDL_DestroyMutex (SDL_mutex *mutex)

## Semaphore functions

typedef struct SDL_semaphore | SDL_sem
DECLSPEC SDL_sem *SDLCALL | SDL_CreateSemaphore (Uint32 initial_value)
DECLSPEC void SDLCALL | SDL_DestroySemaphore (SDL_sem *sem)
DECLSPEC int SDLCALL | SDL_SemWait (SDL_sem *sem)
DECLSPEC int SDLCALL | SDL_SemTryWait (SDL_sem *sem)
DECLSPEC int SDLCALL | SDL_SemWaitTimeout (SDL_sem *sem, Uint32 ms)
DECLSPEC int SDLCALL | SDL_SemPost (SDL_sem *sem)
DECLSPEC Uint32 SDLCALL | SDL_SemValue (SDL_sem *sem)

## Condition variable functions

typedef struct SDL_cond | SDL_cond
DECLSPEC SDL_cond *SDLCALL | SDL_CreateCond (void)
DECLSPEC void SDLCALL | SDL_DestroyCond (SDL_cond *cond)
DECLSPEC int SDLCALL | SDL_CondSignal (SDL_cond *cond)
DECLSPEC int SDLCALL | SDL_CondBroadcast (SDL_cond *cond)
DECLSPEC int SDLCALL | SDL_CondWait (SDL_cond *cond, SDL_mutex *mutex)
DECLSPEC int SDLCALL | SDL_CondWaitTimeout (SDL_cond *cond, SDL_mutex *mutex, Uint32 ms)

## Macro Definition Documentation

#define SDL_MUTEX_MAXWAIT (~(Uint32)0)

This is the timeout value which corresponds to never time out.

Definition at line 49 of file SDL_mutex.h.

Referenced by SDL_CondWait(), SDL_CondWaitTimeout(), SDL_SemWait(), SDL_SemWaitTimeout(), and SDL_TimerThread().

#define SDL_MUTEX_TIMEDOUT 1

Synchronization functions which can time out return this value if they time out.

Definition at line 44 of file SDL_mutex.h.

Referenced by SDL_CondWaitTimeout(), SDL_SemTryWait(), SDL_SemWaitTimeout(), and SDL_TryLockMutex().

#define SDL_mutexP | ( |  | m | ) | SDL_LockMutex(m)

Lock the mutex.

Returns
  0, or -1 on error.

Definition at line 71 of file SDL_mutex.h.

#define SDL_mutexV | ( |  | m | ) | SDL_UnlockMutex(m)

Unlock the mutex.

Returns
  0, or -1 on error.

Warning
  It is an error to unlock a mutex that has not been locked by the current thread, and doing so results in undefined behavior.

Definition at line 89 of file SDL_mutex.h.

## Typedef Documentation

typedef struct SDL_cond SDL_cond

Definition at line 167 of file SDL_mutex.h.

typedef struct SDL_mutex SDL_mutex

Definition at line 59 of file SDL_mutex.h.

typedef struct SDL_semaphore SDL_sem

Definition at line 107 of file SDL_mutex.h.

## Function Documentation

DECLSPEC int SDLCALL SDL_CondBroadcast | ( | SDL_cond * | cond | ) |

Restart all threads that are waiting on the condition variable.

Returns
  0 or -1 on error.

Definition at line 106 of file SDL_syscond.c.

References i, SDL_LockMutex(), SDL_SemPost(), SDL_SemWait(), SDL_SetError(), and SDL_UnlockMutex().

DECLSPEC int SDLCALL SDL_CondSignal | ( | SDL_cond * | cond | ) |

Restart one of the threads that are waiting on the condition variable.

Returns
  0 or -1 on error.

Definition at line 82 of file SDL_syscond.c.

References SDL_LockMutex(), SDL_SemPost(), SDL_SemWait(), SDL_SetError(), and SDL_UnlockMutex().

Referenced by SDL_DestroySemaphore(), and SDL_SemPost().

DECLSPEC int SDLCALL SDL_CondWait | ( | SDL_cond * | cond,
|  | SDL_mutex * | mutex
| ) |  |

Wait on the condition variable, unlocking the provided mutex.

Warning
  The mutex must be locked before entering this function!

The mutex is re-locked once the condition variable is signaled.

Returns
  0 when it is signaled, or -1 on error.

Definition at line 215 of file SDL_syscond.c.

References SDL_CondWaitTimeout(), SDL_MUTEX_MAXWAIT, and SDL_SetError().

DECLSPEC int SDLCALL SDL_CondWaitTimeout | ( | SDL_cond * | cond,
|  | SDL_mutex * | mutex,
|  | Uint32 | ms
| ) |  |

Waits for at most `ms` milliseconds, and returns 0 if the condition variable is signaled, SDL_MUTEX_TIMEDOUT if the condition is not signaled in the allotted time, and -1 on error.

Warning
  On some platforms this function is implemented by looping with a delay of 1 ms, and so should be avoided if possible.

Definition at line 160 of file SDL_syscond.c.

References NULL, SDL_LockMutex(), SDL_MUTEX_MAXWAIT, SDL_MUTEX_TIMEDOUT, SDL_SemPost(), SDL_SemWait(), SDL_SemWaitTimeout(), SDL_SetError(), and SDL_UnlockMutex().

Referenced by SDL_CondWait(), and SDL_SemWaitTimeout().

DECLSPEC SDL_cond* SDLCALL SDL_CreateCond | ( | void |  | ) |

Create a condition variable.

Typical use of condition variables:

Thread A: SDL_LockMutex(lock); while ( ! condition ) { SDL_CondWait(cond, lock); } SDL_UnlockMutex(lock);

Thread B: SDL_LockMutex(lock); ... condition = true; ... SDL_CondSignal(cond); SDL_UnlockMutex(lock);

There is some discussion whether to signal the condition variable with the mutex locked or not. There is some potential performance benefit to unlocking first on some platforms, but there are some potential race conditions depending on how your code is structured.

In general it's safer to signal the condition variable while the mutex is locked.

Definition at line 42 of file SDL_syscond.c.

References NULL, SDL_CreateMutex(), SDL_CreateSemaphore(), SDL_DestroyCond(), SDL_free(), SDL_malloc(), SDL_OutOfMemory, and SDL_SetError().

Referenced by SDL_CreateSemaphore().

DECLSPEC SDL_mutex* SDLCALL SDL_CreateMutex | ( | void |  | ) |

Create a mutex, initialized unlocked.

Definition at line 38 of file SDL_sysmutex.c.

References NULL, SDL_calloc(), SDL_CreateSemaphore(), SDL_free(), SDL_malloc(), SDL_OutOfMemory, and SDL_SetError().

Referenced by open_audio_device(), SDL_AtomicTryLock(), SDL_CreateCond(), SDL_CreateSemaphore(), SDL_Generic_GetTLSData(), SDL_ReportAssertion(), SDL_StartEventLoop(), and SDL_TimerInit().

DECLSPEC SDL_sem* SDLCALL SDL_CreateSemaphore | ( | Uint32 | initial_value | ) |

Create a semaphore, initialized with value, returns NULL on failure.

Definition at line 85 of file SDL_syssem.c.

References free, malloc, NULL, SDL_CreateCond(), SDL_CreateMutex(), SDL_DestroySemaphore(), SDL_free(), SDL_malloc(), SDL_OutOfMemory, and SDL_SetError().

Referenced by PSP_EventInit(), SDL_CreateCond(), SDL_CreateMutex(), SDL_CreateThread(), SDL_SYS_JoystickInit(), and SDL_TimerInit().

DECLSPEC void SDLCALL SDL_DestroyCond | ( | SDL_cond * | cond | ) |

Destroy a condition variable.

Definition at line 64 of file SDL_syscond.c.

References SDL_DestroyMutex(), SDL_DestroySemaphore(), and SDL_free().

Referenced by SDL_CreateCond(), and SDL_DestroySemaphore().

DECLSPEC void SDLCALL SDL_DestroyMutex | ( | SDL_mutex * | mutex | ) |

Destroy a mutex.

Definition at line 61 of file SDL_sysmutex.c.

References SDL_DestroySemaphore(), and SDL_free().

Referenced by close_audio_device(), SDL_AssertionsQuit(), SDL_DestroyCond(), SDL_DestroySemaphore(), SDL_StopEventLoop(), SDL_TimerInit(), and SDL_TimerQuit().

DECLSPEC void SDLCALL SDL_DestroySemaphore | ( | SDL_sem * | sem | ) |

Destroy a semaphore.

Definition at line 111 of file SDL_syssem.c.

References free, NULL, SDL_CondSignal(), SDL_Delay(), SDL_DestroyCond(), SDL_DestroyMutex(), SDL_free(), SDL_LockMutex(), and SDL_UnlockMutex().

Referenced by PSP_EventQuit(), SDL_CreateSemaphore(), SDL_CreateThread(), SDL_DestroyCond(), SDL_DestroyMutex(), SDL_SYS_JoystickQuit(), and SDL_TimerQuit().

DECLSPEC int SDLCALL SDL_LockMutex | ( | SDL_mutex * | mutex | ) |

Definition at line 73 of file SDL_sysmutex.c.

References NULL, SDL_SemWait(), SDL_SetError(), and SDL_ThreadID().

Referenced by outputCallback(), SDL_AddTimer(), SDL_AtomicTryLock(), SDL_AudioLockDevice_Default(), SDL_CondBroadcast(), SDL_CondSignal(), SDL_CondWaitTimeout(), SDL_DestroySemaphore(), SDL_FilterEvents(), SDL_FlushEvents(), SDL_Generic_GetTLSData(), SDL_Generic_SetTLSData(), SDL_PeepEvents(), SDL_RemoveTimer(), SDL_ReportAssertion(), SDL_RunAudio(), SDL_SemPost(), SDL_SemTryWait(), SDL_SemValue(), SDL_SemWaitTimeout(), and SDL_StopEventLoop().

DECLSPEC int SDLCALL SDL_SemPost | ( | SDL_sem * | sem | ) |

Atomically increases the semaphore's count (not blocking).

Returns
  0, or -1 on error.

Definition at line 200 of file SDL_syssem.c.

References NULL, SDL_CondSignal(), SDL_LockMutex(), SDL_SetError(), and SDL_UnlockMutex().

Referenced by EventUpdate(), JoystickUpdate(), PSP_PumpEvents(), SDL_AddTimer(), SDL_CondBroadcast(), SDL_CondSignal(), SDL_CondWaitTimeout(), SDL_mutexV(), SDL_RunThread(), SDL_SYS_JoystickUpdate(), and SDL_TimerQuit().

DECLSPEC int SDLCALL SDL_SemTryWait | ( | SDL_sem * | sem | ) |

Non-blocking variant of SDL_SemWait().

Returns
  0 if the wait succeeds, SDL_MUTEX_TIMEDOUT if the wait would block, and -1 on error.

Definition at line 130 of file SDL_syssem.c.

References SDL_LockMutex(), SDL_MUTEX_TIMEDOUT, SDL_SemWaitTimeout(), SDL_SetError(), and SDL_UnlockMutex().

Referenced by SDL_SemWaitTimeout().

DECLSPEC Uint32 SDLCALL SDL_SemValue | ( | SDL_sem * | sem | ) |

Returns the current count of the semaphore.

Definition at line 186 of file SDL_syssem.c.

References NULL, ret, SDL_LockMutex(), SDL_SetError(), and SDL_UnlockMutex().

DECLSPEC int SDLCALL SDL_SemWait | ( | SDL_sem * | sem | ) |

This function suspends the calling thread until the semaphore pointed to by `sem` has a positive count. It then atomically decreases the semaphore count.

Definition at line 180 of file SDL_syssem.c.

References SDL_MUTEX_MAXWAIT, SDL_SemWaitTimeout(), and SDL_SetError().

Referenced by EventUpdate(), JoystickUpdate(), PSP_PumpEvents(), SDL_CondBroadcast(), SDL_CondSignal(), SDL_CondWaitTimeout(), SDL_CreateThread(), SDL_LockMutex(), SDL_mutexP(), SDL_SemWaitTimeout(), SDL_SYS_JoystickUpdate(), and SDL_TryLockMutex().

DECLSPEC int SDLCALL SDL_SemWaitTimeout | ( | SDL_sem * | sem,
|  | Uint32 | ms
| ) |  |

Variant of SDL_SemWait() with a timeout in milliseconds.

Returns
  0 if the wait succeeds, SDL_MUTEX_TIMEDOUT if the wait does not succeed in the allotted time, and -1 on error.

Warning
  On some platforms this function is implemented by looping with a delay of 1 ms, and so should be avoided if possible.

Definition at line 150 of file SDL_syssem.c.

References NULL, SDL_CondWaitTimeout(), SDL_Delay(), SDL_GetTicks(), SDL_LockMutex(), SDL_MUTEX_MAXWAIT, SDL_MUTEX_TIMEDOUT, SDL_SemTryWait(), SDL_SemWait(), SDL_SetError(), and SDL_UnlockMutex().

Referenced by SDL_CondWaitTimeout(), SDL_SemTryWait(), SDL_SemWait(), and SDL_TimerThread().

DECLSPEC int SDLCALL SDL_TryLockMutex | ( | SDL_mutex * | mutex | ) |

Try to lock the mutex

Returns
  0, SDL_MUTEX_TIMEDOUT, or -1 on error

Definition at line 103 of file SDL_sysmutex.c.

References NULL, SDL_MUTEX_TIMEDOUT, SDL_SemWait(), SDL_SetError(), and SDL_ThreadID().

DECLSPEC int SDLCALL SDL_UnlockMutex | ( | SDL_mutex * | mutex | ) |

Definition at line 160 of file SDL_sysmutex.c.

References NULL, and SDL_SetError().

Referenced by outputCallback(), SDL_AddTimer(), SDL_AtomicTryLock(), SDL_AudioUnlockDevice_Default(), SDL_CondBroadcast(), SDL_CondSignal(), SDL_CondWaitTimeout(), SDL_DestroySemaphore(), SDL_FilterEvents(), SDL_FlushEvents(), SDL_Generic_GetTLSData(), SDL_Generic_SetTLSData(), SDL_PeepEvents(), SDL_RemoveTimer(), SDL_ReportAssertion(), SDL_RunAudio(), SDL_SemPost(), SDL_SemTryWait(), SDL_SemValue(), SDL_SemWaitTimeout(), and SDL_StopEventLoop().