added config
[nao-ulib.git] / src / locking_x86.h
blobd12a448da97e97634dcb7beb24c0e9f4de5e39c9
1 /*
2 * nao-ulib
3 * Copyright 2011 Daniel Borkmann <dborkma@tik.ee.ethz.ch>
4 * Subject to the GPL.
5 * Nao-Team HTWK,
6 * Faculty of Computer Science, Mathematics and Natural Sciences,
7 * Leipzig University of Applied Sciences (HTWK Leipzig)
8 */
10 #ifndef LOCKING_X86_H
11 #define LOCKING_X86_H
13 #include <pthread.h>
15 struct nao_spin_lock {
16 pthread_spinlock_t lock;
19 struct nao_mutex_lock {
20 pthread_mutex_t lock;
23 static inline int nao_spin_lock_init(struct nao_spin_lock *l)
25 return -pthread_spin_init(&l->lock, 0);
28 static inline void nao_spin_lock_destroy(struct nao_spin_lock *l)
30 pthread_spin_destroy(&l->lock);
33 static inline void nao_spin_lock_lock(struct nao_spin_lock *l)
35 pthread_spin_lock(&l->lock);
38 static inline void nao_spin_lock_unlock(struct nao_spin_lock *l)
40 pthread_spin_unlock(&l->lock);
43 static inline int nao_mutex_lock_init(struct nao_mutex_lock *l)
45 return -pthread_mutex_init(&l->lock, 0);
48 static inline void nao_mutex_lock_destroy(struct nao_mutex_lock *l)
50 pthread_mutex_destroy(&l->lock);
53 static inline void nao_mutex_lock_lock(struct nao_mutex_lock *l)
55 pthread_mutex_lock(&l->lock);
58 static inline void nao_mutex_lock_unlock(struct nao_mutex_lock *l)
60 pthread_mutex_unlock(&l->lock);
63 #endif /* LOCKING_X86_H */