VSF Documented
spinlock.h
Go to the documentation of this file.
1#ifndef __SPINLOCK_H__
2#define __SPINLOCK_H__
3
5
6typedef int spinlock_t;
8
9#define SPIN_LOCK_INIT() (0)
10#define spin_lock_init(lock) do { *lock = 0; } while(0)
11#define __spin_lock(lock) do { *lock = 1; } while (0)
12#define __spin_unlock(lock) do { *lock = 0; } while (0)
13#define spin_trylock(lock) (spin_lock(lock), 1)
14#define spin_lock(lock) do { vsf_protect_t orig = vsf_protect_int(); __spin_lock(lock); vsf_unprotect_int(orig); } while (0)
15#define spin_unlock(lock) do { vsf_protect_t orig = vsf_protect_int(); __spin_unlock(lock); vsf_unprotect_int(orig); } while (0)
16#define spin_lock_irq(lock) do { vsf_disable_interrupt(); __spin_lock(lock); } while(0)
17#define spin_unlock_irq(lock) do { __spin_unlock(lock); vsf_enable_interrupt(); } while(0)
18#define spin_lock_irqsave(lock, flags) do { flags = vsf_protect_int(); __spin_lock(lock); } while(0)
19#define spin_unlock_irqrestore(lock, flags) do { __spin_unlock(lock); vsf_unprotect_int(flags); } while(0)
20
21#endif // __SPINLOCK_H__
int spinlock_t
Definition spinlock.h:26
uintalu_t vsf_protect_t
Definition vsf_arch_abstraction.h:53
vsf_protect_t irq_flags_t
Definition spinlock.h:7