Something went wrong. Try again.
(I'm so sorry!) Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
Something went wrong. Try again.
C
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164// SPDX-License-Identifier: GPL-2.0-only#ifndef __LINUX_RWLOCK_RT_H#define __LINUX_RWLOCK_RT_H
#ifndef __LINUX_SPINLOCK_RT_H#error Do not #include directly. Use <linux/spinlock.h>.#endif
#ifdef CONFIG_DEBUG_LOCK_ALLOCextern void __rt_rwlock_init(rwlock_t *rwlock, const char *name, struct lock_class_key *key);#elsestatic inline void __rt_rwlock_init(rwlock_t *rwlock, char *name, struct lock_class_key *key){}#endif
#define rwlock_init(rwl) \do { \ static struct lock_class_key __key; \ \ init_rwbase_rt(&(rwl)->rwbase); \ __rt_rwlock_init(rwl, #rwl, &__key); \} while (0)
extern void rt_read_lock(rwlock_t *rwlock) __acquires_shared(rwlock);extern int rt_read_trylock(rwlock_t *rwlock) __cond_acquires_shared(true, rwlock);extern void rt_read_unlock(rwlock_t *rwlock) __releases_shared(rwlock);extern void rt_write_lock(rwlock_t *rwlock) __acquires(rwlock);extern void rt_write_lock_nested(rwlock_t *rwlock, int subclass) __acquires(rwlock);extern int rt_write_trylock(rwlock_t *rwlock) __cond_acquires(true, rwlock);extern void rt_write_unlock(rwlock_t *rwlock) __releases(rwlock);
static __always_inline void read_lock(rwlock_t *rwlock) __acquires_shared(rwlock){ rt_read_lock(rwlock);}
static __always_inline void read_lock_bh(rwlock_t *rwlock) __acquires_shared(rwlock){ local_bh_disable(); rt_read_lock(rwlock);}
static __always_inline void read_lock_irq(rwlock_t *rwlock) __acquires_shared(rwlock){ rt_read_lock(rwlock);}
#define read_lock_irqsave(lock, flags) \ do { \ typecheck(unsigned long, flags); \ rt_read_lock(lock); \ flags = 0; \ } while (0)
#define read_trylock(lock) rt_read_trylock(lock)
static __always_inline void read_unlock(rwlock_t *rwlock) __releases_shared(rwlock){ rt_read_unlock(rwlock);}
static __always_inline void read_unlock_bh(rwlock_t *rwlock) __releases_shared(rwlock){ rt_read_unlock(rwlock); local_bh_enable();}
static __always_inline void read_unlock_irq(rwlock_t *rwlock) __releases_shared(rwlock){ rt_read_unlock(rwlock);}
static __always_inline void read_unlock_irqrestore(rwlock_t *rwlock, unsigned long flags) __releases_shared(rwlock){ rt_read_unlock(rwlock);}
static __always_inline void write_lock(rwlock_t *rwlock) __acquires(rwlock){ rt_write_lock(rwlock);}
#ifdef CONFIG_DEBUG_LOCK_ALLOCstatic __always_inline void write_lock_nested(rwlock_t *rwlock, int subclass) __acquires(rwlock){ rt_write_lock_nested(rwlock, subclass);}#else#define write_lock_nested(lock, subclass) rt_write_lock(((void)(subclass), (lock)))#endif
static __always_inline void write_lock_bh(rwlock_t *rwlock) __acquires(rwlock){ local_bh_disable(); rt_write_lock(rwlock);}
static __always_inline void write_lock_irq(rwlock_t *rwlock) __acquires(rwlock){ rt_write_lock(rwlock);}
#define write_lock_irqsave(lock, flags) \ do { \ typecheck(unsigned long, flags); \ rt_write_lock(lock); \ flags = 0; \ } while (0)
#define write_trylock(lock) rt_write_trylock(lock)
static __always_inline bool _write_trylock_irqsave(rwlock_t *rwlock, unsigned long *flags) __cond_acquires(true, rwlock){ *flags = 0; return rt_write_trylock(rwlock);}#define write_trylock_irqsave(lock, flags) _write_trylock_irqsave(lock, &(flags))
static __always_inline void write_unlock(rwlock_t *rwlock) __releases(rwlock){ rt_write_unlock(rwlock);}
static __always_inline void write_unlock_bh(rwlock_t *rwlock) __releases(rwlock){ rt_write_unlock(rwlock); local_bh_enable();}
static __always_inline void write_unlock_irq(rwlock_t *rwlock) __releases(rwlock){ rt_write_unlock(rwlock);}
static __always_inline void write_unlock_irqrestore(rwlock_t *rwlock, unsigned long flags) __releases(rwlock){ rt_write_unlock(rwlock);}
#define rwlock_is_contended(lock) (((void)(lock), 0))
#endif /* __LINUX_RWLOCK_RT_H */