-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
locking/spinlock: Split the lock types header, and move the raw types…
… into <linux/spinlock_types_raw.h> Move raw_spinlock into its own file. Prepare for RT 'sleeping spinlocks', to avoid header recursion, as RT locks require rtmutex.h, which in turn requires the raw spinlock types. No functional change. Signed-off-by: Thomas Gleixner <tglx@linutronix.de> Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org> Signed-off-by: Ingo Molnar <mingo@kernel.org> Link: https://lore.kernel.org/r/20210815211303.371269088@linutronix.de
- Loading branch information
Thomas Gleixner
authored and
Ingo Molnar
committed
Aug 17, 2021
1 parent
e17ba59
commit 4f084ca
Showing
4 changed files
with
74 additions
and
58 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,65 @@ | ||
#ifndef __LINUX_SPINLOCK_TYPES_RAW_H | ||
#define __LINUX_SPINLOCK_TYPES_RAW_H | ||
|
||
#include <linux/types.h> | ||
|
||
#if defined(CONFIG_SMP) | ||
# include <asm/spinlock_types.h> | ||
#else | ||
# include <linux/spinlock_types_up.h> | ||
#endif | ||
|
||
#include <linux/lockdep_types.h> | ||
|
||
typedef struct raw_spinlock { | ||
arch_spinlock_t raw_lock; | ||
#ifdef CONFIG_DEBUG_SPINLOCK | ||
unsigned int magic, owner_cpu; | ||
void *owner; | ||
#endif | ||
#ifdef CONFIG_DEBUG_LOCK_ALLOC | ||
struct lockdep_map dep_map; | ||
#endif | ||
} raw_spinlock_t; | ||
|
||
#define SPINLOCK_MAGIC 0xdead4ead | ||
|
||
#define SPINLOCK_OWNER_INIT ((void *)-1L) | ||
|
||
#ifdef CONFIG_DEBUG_LOCK_ALLOC | ||
# define RAW_SPIN_DEP_MAP_INIT(lockname) \ | ||
.dep_map = { \ | ||
.name = #lockname, \ | ||
.wait_type_inner = LD_WAIT_SPIN, \ | ||
} | ||
# define SPIN_DEP_MAP_INIT(lockname) \ | ||
.dep_map = { \ | ||
.name = #lockname, \ | ||
.wait_type_inner = LD_WAIT_CONFIG, \ | ||
} | ||
#else | ||
# define RAW_SPIN_DEP_MAP_INIT(lockname) | ||
# define SPIN_DEP_MAP_INIT(lockname) | ||
#endif | ||
|
||
#ifdef CONFIG_DEBUG_SPINLOCK | ||
# define SPIN_DEBUG_INIT(lockname) \ | ||
.magic = SPINLOCK_MAGIC, \ | ||
.owner_cpu = -1, \ | ||
.owner = SPINLOCK_OWNER_INIT, | ||
#else | ||
# define SPIN_DEBUG_INIT(lockname) | ||
#endif | ||
|
||
#define __RAW_SPIN_LOCK_INITIALIZER(lockname) \ | ||
{ \ | ||
.raw_lock = __ARCH_SPIN_LOCK_UNLOCKED, \ | ||
SPIN_DEBUG_INIT(lockname) \ | ||
RAW_SPIN_DEP_MAP_INIT(lockname) } | ||
|
||
#define __RAW_SPIN_LOCK_UNLOCKED(lockname) \ | ||
(raw_spinlock_t) __RAW_SPIN_LOCK_INITIALIZER(lockname) | ||
|
||
#define DEFINE_RAW_SPINLOCK(x) raw_spinlock_t x = __RAW_SPIN_LOCK_UNLOCKED(x) | ||
|
||
#endif /* __LINUX_SPINLOCK_TYPES_RAW_H */ |