| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| |
|
| | |
| |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| |
|
| |
|
| | #ifndef _SPINLOCK_H |
| | #define _SPINLOCK_H |
| |
|
| | #if defined _WIN32 && !defined __CYGWIN__ |
| | # include "windows-spin.h" |
| | typedef glwthread_spinlock_t gl_spinlock_t; |
| | # define gl_spinlock_initializer GLWTHREAD_SPIN_INIT |
| | #else |
| | typedef unsigned int gl_spinlock_t; |
| | # define gl_spinlock_initializer 0 |
| | #endif |
| |
|
| | #ifdef __cplusplus |
| | extern "C" { |
| | #endif |
| |
|
| | #include <stdlib.h> |
| |
|
| | #define gl_spinlock_define(STORAGECLASS, NAME) \ |
| | STORAGECLASS gl_spinlock_t NAME; |
| | #define gl_spinlock_define_initialized(STORAGECLASS, NAME) \ |
| | STORAGECLASS gl_spinlock_t NAME = gl_spinlock_initializer; |
| | #define gl_spinlock_init(NAME) \ |
| | glthread_spinlock_init (&NAME) |
| | #define gl_spinlock_lock(NAME) \ |
| | glthread_spinlock_lock (&NAME) |
| | #define gl_spinlock_unlock(NAME) \ |
| | do \ |
| | { \ |
| | if (glthread_spinlock_unlock (&NAME)) \ |
| | abort (); \ |
| | } \ |
| | while (0) |
| | #define gl_spinlock_destroy(NAME) \ |
| | glthread_spinlock_destroy (&NAME) |
| |
|
| | #if defined _WIN32 && !defined __CYGWIN__ |
| | # define glthread_spinlock_init(lock) \ |
| | glwthread_spin_init (lock) |
| | # define glthread_spinlock_lock(lock) \ |
| | ((void) glwthread_spin_lock (lock)) |
| | # define glthread_spinlock_unlock(lock) \ |
| | glwthread_spin_unlock (lock) |
| | # define glthread_spinlock_destroy(lock) \ |
| | ((void) glwthread_spin_destroy (lock)) |
| | #else |
| | extern void glthread_spinlock_init (gl_spinlock_t *lock); |
| | extern void glthread_spinlock_lock (gl_spinlock_t *lock); |
| | extern int glthread_spinlock_unlock (gl_spinlock_t *lock); |
| | extern void glthread_spinlock_destroy (gl_spinlock_t *lock); |
| | #endif |
| |
|
| | #ifdef __cplusplus |
| | } |
| | #endif |
| |
|
| | #endif |
| |
|