^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1) /* SPDX-License-Identifier: GPL-2.0 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2) #ifndef __LINUX_SPINLOCK_H_
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3) #define __LINUX_SPINLOCK_H_
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5) #include <pthread.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 6) #include <stdbool.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 7)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 8) #define spinlock_t pthread_mutex_t
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 9) #define DEFINE_SPINLOCK(x) pthread_mutex_t x = PTHREAD_MUTEX_INITIALIZER
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 10) #define __SPIN_LOCK_UNLOCKED(x) (pthread_mutex_t)PTHREAD_MUTEX_INITIALIZER
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 11) #define spin_lock_init(x) pthread_mutex_init(x, NULL)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 12)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 13) #define spin_lock(x) pthread_mutex_lock(x)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 14) #define spin_unlock(x) pthread_mutex_unlock(x)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 15) #define spin_lock_bh(x) pthread_mutex_lock(x)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 16) #define spin_unlock_bh(x) pthread_mutex_unlock(x)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 17) #define spin_lock_irq(x) pthread_mutex_lock(x)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 18) #define spin_unlock_irq(x) pthread_mutex_unlock(x)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 19) #define spin_lock_irqsave(x, f) (void)f, pthread_mutex_lock(x)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 20) #define spin_unlock_irqrestore(x, f) (void)f, pthread_mutex_unlock(x)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 21)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 22) #define arch_spinlock_t pthread_mutex_t
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 23) #define __ARCH_SPIN_LOCK_UNLOCKED PTHREAD_MUTEX_INITIALIZER
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 24)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 25) static inline void arch_spin_lock(arch_spinlock_t *mutex)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 26) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 27) pthread_mutex_lock(mutex);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 28) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 29)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 30) static inline void arch_spin_unlock(arch_spinlock_t *mutex)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 31) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 32) pthread_mutex_unlock(mutex);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 33) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 34)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 35) static inline bool arch_spin_is_locked(arch_spinlock_t *mutex)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 36) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 37) return true;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 38) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 39)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 40) #include <linux/lockdep.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 41)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 42) #endif