16 #include <semaphore.h> 19 #include <haka/compiler.h> 48 #define THREAD_CANCELED PTHREAD_CANCELED 53 bool thread_create(thread_t *thread, void *(*main)(void*), void *param); 118 void thread_protect(
void (*run)(
void *),
void *runarg,
void (*finish)(
void *),
void *finisharg);
150 #define MUTEX_INIT PTHREAD_MUTEX_INITIALIZER 152 bool mutex_init(mutex_t *mutex, bool recursive); 153 bool mutex_destroy(mutex_t *mutex);
154 bool mutex_lock(mutex_t *mutex);
155 bool mutex_trylock(mutex_t *mutex);
156 bool mutex_unlock(mutex_t *mutex);
167 bool spinlock_init(spinlock_t *lock);
168 bool spinlock_destroy(spinlock_t *lock);
169 bool spinlock_lock(spinlock_t *lock);
170 bool spinlock_trylock(spinlock_t *lock);
171 bool spinlock_unlock(spinlock_t *lock);
182 #define RWLOCK_INIT PTHREAD_RWLOCK_INITIALIZER 184 bool rwlock_init(rwlock_t *rwlock); 185 bool rwlock_destroy(rwlock_t *rwlock);
186 bool rwlock_readlock(rwlock_t *rwlock);
187 bool rwlock_tryreadlock(rwlock_t *rwlock);
188 bool rwlock_writelock(rwlock_t *rwlock);
189 bool rwlock_trywritelock(rwlock_t *rwlock);
190 bool rwlock_unlock(rwlock_t *rwlock);
201 bool semaphore_init(semaphore_t *semaphore,
uint32 initial);
202 bool semaphore_destroy(semaphore_t *semaphore);
203 bool semaphore_wait(semaphore_t *semaphore);
204 bool semaphore_post(semaphore_t *semaphore);
215 bool barrier_init(barrier_t *barrier,
uint32 count);
216 bool barrier_destroy(barrier_t *barrier);
217 bool barrier_wait(barrier_t *barrier);
296 #if defined(__x86_64__) || defined(__doxygen__)
bool thread_setcanceltype(enum thread_cancel_t type)
Definition: thread.c:114
INLINE void atomic64_destroy(atomic64_t *v)
Definition: thread.h:316
INLINE uint32 atomic_dec(atomic_t *v)
Definition: thread.h:281
bool thread_setcancelstate(bool enable)
Definition: thread.c:132
unsigned HAKA_64BIT_TYPE uint64
Definition: types.h:30
INLINE uint32 atomic_inc(atomic_t *v)
Definition: thread.h:274
sem_t semaphore_t
Definition: thread.h:199
unsigned HAKA_32BIT_TYPE uint32
Definition: types.h:29
bool thread_sigmask(int how, sigset_t *set, sigset_t *oldset)
Definition: thread.c:104
void thread_set_packet_capture_cpu_count(int count)
Definition: thread.c:27
pthread_spinlock_t spinlock_t
Definition: thread.h:165
bool thread_equal(thread_t a, thread_t b)
Definition: thread.c:164
void thread_testcancel()
Definition: thread.c:142
void * local_storage_get(local_storage_t *key)
Definition: thread.c:537
INLINE void atomic64_init(atomic64_t *v, uint64 x)
Definition: thread.h:311
pthread_barrier_t barrier_t
Definition: thread.h:213
pthread_mutex_t mutex_t
Definition: thread.h:148
void thread_setid(int id)
Definition: thread.c:54
bool local_storage_init(local_storage_t *key, void(*destructor)(void *))
Definition: thread.c:517
bool local_storage_set(local_storage_t *key, const void *value)
Definition: thread.c:542
thread_t thread_self()
Definition: thread.c:159
int thread_get_cpu_count()
Definition: thread.c:32
void thread_protect(void(*run)(void *), void *runarg, void(*finish)(void *), void *finisharg)
Definition: thread.c:147
thread_cancel_t
Definition: thread.h:94
INLINE uint32 atomic_get(atomic_t *v)
Definition: thread.h:286
pthread_rwlock_t rwlock_t
Definition: thread.h:180
INLINE uint64 atomic64_get(atomic64_t *v)
Definition: thread.h:335
bool thread_kill(thread_t thread, int sig)
Definition: thread.c:169
INLINE void atomic64_set(atomic64_t *v, uint64 x)
Definition: thread.h:306
thread_t thread_current()
Definition: thread.c:89
INLINE uint64 atomic64_inc(atomic64_t *v)
Definition: thread.h:323
volatile uint32 atomic_t
Definition: thread.h:267
volatile uint64 atomic64_t
Definition: thread.h:301
INLINE void atomic_set(atomic_t *v, uint32 x)
Definition: thread.h:291
pthread_key_t local_storage_t
Definition: thread.h:226
thread_t thread_main()
Definition: thread.c:154
pthread_t thread_t
Definition: thread.h:46
bool thread_join(thread_t thread, void **ret)
Definition: thread.c:69
int thread_get_packet_capture_cpu_count()
Definition: thread.c:19
bool thread_signal(thread_t thread, int sig)
Definition: thread.c:94
int thread_getid()
Definition: thread.c:49
bool local_storage_destroy(local_storage_t *key)
Definition: thread.c:527
INLINE uint64 atomic64_dec(atomic64_t *v)
Definition: thread.h:330
bool thread_cancel(thread_t thread)
Definition: thread.c:79