X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=include%2Flinux%2Fspinlock.h;fp=include%2Flinux%2Fspinlock.h;h=28ce667b56789ae35f90ffc226a64ab6f9d6def4;hb=5fe6f426350503aa6c0823e7e6bf81fd7f138d71;hp=6c4a623c267182d6362ce6a9a1843c230a67fdad;hpb=dfd3fabdb57c524b66e6c86e91a1124d6e80fcbb;p=bcachefs-tools-debian diff --git a/include/linux/spinlock.h b/include/linux/spinlock.h index 6c4a623..28ce667 100644 --- a/include/linux/spinlock.h +++ b/include/linux/spinlock.h @@ -1,65 +1 @@ -#ifndef __TOOLS_LINUX_SPINLOCK_H -#define __TOOLS_LINUX_SPINLOCK_H - -#include -#include - -typedef struct { - pthread_mutex_t lock; -} raw_spinlock_t; - -#define __RAW_SPIN_LOCK_UNLOCKED(name) (raw_spinlock_t) { .lock = PTHREAD_MUTEX_INITIALIZER } - -static inline void raw_spin_lock_init(raw_spinlock_t *lock) -{ - pthread_mutex_init(&lock->lock, NULL); -} - -static inline bool raw_spin_trylock(raw_spinlock_t *lock) -{ - return !pthread_mutex_trylock(&lock->lock); -} - -static inline void raw_spin_lock(raw_spinlock_t *lock) -{ - pthread_mutex_lock(&lock->lock); -} - -static inline void raw_spin_unlock(raw_spinlock_t *lock) -{ - pthread_mutex_unlock(&lock->lock); -} - -#define raw_spin_lock_irq(lock) raw_spin_lock(lock) -#define raw_spin_unlock_irq(lock) raw_spin_unlock(lock) - -#define raw_spin_lock_irqsave(lock, flags) \ -do { \ - flags = 0; \ - raw_spin_lock(lock); \ -} while (0) - -#define raw_spin_unlock_irqrestore(lock, flags) raw_spin_unlock(lock) - -typedef raw_spinlock_t spinlock_t; - -#define __SPIN_LOCK_UNLOCKED(name) __RAW_SPIN_LOCK_UNLOCKED(name) - -#define DEFINE_SPINLOCK(x) spinlock_t x = __SPIN_LOCK_UNLOCKED(x) - -#define spin_lock_init(lock) raw_spin_lock_init(lock) -#define spin_lock(lock) raw_spin_lock(lock) -#define spin_unlock(lock) raw_spin_unlock(lock) - -#define spin_lock_nested(lock, n) spin_lock(lock) - -#define spin_lock_bh(lock) raw_spin_lock(lock) -#define spin_unlock_bh(lock) raw_spin_unlock(lock) - -#define spin_lock_irq(lock) raw_spin_lock(lock) -#define spin_unlock_irq(lock) raw_spin_unlock(lock) - -#define spin_lock_irqsave(lock, flags) raw_spin_lock_irqsave(lock, flags) -#define spin_unlock_irqrestore(lock, flags) raw_spin_unlock_irqrestore(lock, flags) - -#endif /* __TOOLS_LINUX_SPINLOCK_H */ +#include "linux/spinlock_types.h"