mirror of
https://github.com/Qortal/Brooklyn.git
synced 2025-01-30 23:02:18 +00:00
2a709f28fa
* 0day explit mitigation * Memory corruption prevention * Privilege escalation prevention * Buffer over flow prevention * File System corruption defense * Thread escape prevention This may very well be the most intensive inclusion to BrooklynR. This will not be part of an x86 suite nor it will be released as tool kit. The security core toolkit will remain part of kernel base.
46 lines
1.5 KiB
C
46 lines
1.5 KiB
C
/* rwsem-spinlock.h: fallback C implementation
|
|
*
|
|
* Copyright (c) 2001 David Howells (dhowells@redhat.com).
|
|
* - Derived partially from ideas by Andrea Arcangeli <andrea@suse.de>
|
|
* - Derived also from comments by Linus
|
|
*/
|
|
|
|
#ifndef _LINUX_RWSEM_SPINLOCK_H
|
|
#define _LINUX_RWSEM_SPINLOCK_H
|
|
|
|
#ifndef _LINUX_RWSEM_H
|
|
#error "please don't include linux/rwsem-spinlock.h directly, use linux/rwsem.h instead"
|
|
#endif
|
|
|
|
#ifdef __KERNEL__
|
|
/*
|
|
* the rw-semaphore definition
|
|
* - if count is 0 then there are no active readers or writers
|
|
* - if count is +ve then that is the number of active readers
|
|
* - if count is -1 then there is one active writer
|
|
* - if wait_list is not empty, then there are processes waiting for the semaphore
|
|
*/
|
|
struct rw_semaphore {
|
|
__s32 count;
|
|
raw_spinlock_t wait_lock;
|
|
struct list_head wait_list;
|
|
#ifdef CONFIG_DEBUG_LOCK_ALLOC
|
|
struct lockdep_map dep_map;
|
|
#endif
|
|
};
|
|
|
|
#define RWSEM_UNLOCKED_VALUE 0x00000000
|
|
|
|
extern void __down_read(struct rw_semaphore *sem);
|
|
extern int __down_read_trylock(struct rw_semaphore *sem);
|
|
extern void __down_write(struct rw_semaphore *sem);
|
|
extern int __must_check __down_write_killable(struct rw_semaphore *sem);
|
|
extern int __down_write_trylock(struct rw_semaphore *sem);
|
|
extern void __up_read(struct rw_semaphore *sem);
|
|
extern void __up_write(struct rw_semaphore *sem);
|
|
extern void __downgrade_write(struct rw_semaphore *sem);
|
|
extern int rwsem_is_locked(struct rw_semaphore *sem);
|
|
|
|
#endif /* __KERNEL__ */
|
|
#endif /* _LINUX_RWSEM_SPINLOCK_H */
|