mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-25 06:03:36 -04:00
[PATCH] lockdep: locking init debugging improvement
Locking init improvement: - introduce and use __SPIN_LOCK_UNLOCKED for array initializations, to pass in the name string of locks, used by debugging Signed-off-by: Ingo Molnar <mingo@elte.hu> Signed-off-by: Arjan van de Ven <arjan@linux.intel.com> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
This commit is contained in:
parent
9cebb55268
commit
e4d9191885
13 changed files with 37 additions and 26 deletions
|
|
@ -66,7 +66,7 @@ struct idr {
|
|||
.id_free = NULL, \
|
||||
.layers = 0, \
|
||||
.id_free_cnt = 0, \
|
||||
.lock = SPIN_LOCK_UNLOCKED, \
|
||||
.lock = __SPIN_LOCK_UNLOCKED(name.lock), \
|
||||
}
|
||||
#define DEFINE_IDR(name) struct idr name = IDR_INIT(name)
|
||||
|
||||
|
|
|
|||
|
|
@ -21,7 +21,7 @@
|
|||
.count = ATOMIC_INIT(1), \
|
||||
.fdt = &init_files.fdtab, \
|
||||
.fdtab = INIT_FDTABLE, \
|
||||
.file_lock = SPIN_LOCK_UNLOCKED, \
|
||||
.file_lock = __SPIN_LOCK_UNLOCKED(init_task.file_lock), \
|
||||
.next_fd = 0, \
|
||||
.close_on_exec_init = { { 0, } }, \
|
||||
.open_fds_init = { { 0, } }, \
|
||||
|
|
@ -36,7 +36,7 @@
|
|||
.user_id = 0, \
|
||||
.next = NULL, \
|
||||
.wait = __WAIT_QUEUE_HEAD_INITIALIZER(name.wait), \
|
||||
.ctx_lock = SPIN_LOCK_UNLOCKED, \
|
||||
.ctx_lock = __SPIN_LOCK_UNLOCKED(name.ctx_lock), \
|
||||
.reqs_active = 0U, \
|
||||
.max_reqs = ~0U, \
|
||||
}
|
||||
|
|
@ -48,7 +48,7 @@
|
|||
.mm_users = ATOMIC_INIT(2), \
|
||||
.mm_count = ATOMIC_INIT(1), \
|
||||
.mmap_sem = __RWSEM_INITIALIZER(name.mmap_sem), \
|
||||
.page_table_lock = SPIN_LOCK_UNLOCKED, \
|
||||
.page_table_lock = __SPIN_LOCK_UNLOCKED(name.page_table_lock), \
|
||||
.mmlist = LIST_HEAD_INIT(name.mmlist), \
|
||||
.cpu_vm_mask = CPU_MASK_ALL, \
|
||||
}
|
||||
|
|
@ -69,7 +69,7 @@
|
|||
#define INIT_SIGHAND(sighand) { \
|
||||
.count = ATOMIC_INIT(1), \
|
||||
.action = { { { .sa_handler = NULL, } }, }, \
|
||||
.siglock = SPIN_LOCK_UNLOCKED, \
|
||||
.siglock = __SPIN_LOCK_UNLOCKED(sighand.siglock), \
|
||||
}
|
||||
|
||||
extern struct group_info init_groups;
|
||||
|
|
@ -119,7 +119,7 @@ extern struct group_info init_groups;
|
|||
.list = LIST_HEAD_INIT(tsk.pending.list), \
|
||||
.signal = {{0}}}, \
|
||||
.blocked = {{0}}, \
|
||||
.alloc_lock = SPIN_LOCK_UNLOCKED, \
|
||||
.alloc_lock = __SPIN_LOCK_UNLOCKED(tsk.alloc_lock), \
|
||||
.journal_info = NULL, \
|
||||
.cpu_timers = INIT_CPU_TIMERS(tsk.cpu_timers), \
|
||||
.fs_excl = ATOMIC_INIT(0), \
|
||||
|
|
|
|||
|
|
@ -65,7 +65,7 @@ struct raw_notifier_head {
|
|||
} while (0)
|
||||
|
||||
#define ATOMIC_NOTIFIER_INIT(name) { \
|
||||
.lock = SPIN_LOCK_UNLOCKED, \
|
||||
.lock = __SPIN_LOCK_UNLOCKED(name.lock), \
|
||||
.head = NULL }
|
||||
#define BLOCKING_NOTIFIER_INIT(name) { \
|
||||
.rwsem = __RWSEM_INITIALIZER((name).rwsem), \
|
||||
|
|
|
|||
|
|
@ -38,9 +38,17 @@ typedef struct {
|
|||
* These macros triggered gcc-3.x compile-time problems. We think these are
|
||||
* OK now. Be cautious.
|
||||
*/
|
||||
#define SEQLOCK_UNLOCKED { 0, SPIN_LOCK_UNLOCKED }
|
||||
#define seqlock_init(x) do { *(x) = (seqlock_t) SEQLOCK_UNLOCKED; } while (0)
|
||||
#define __SEQLOCK_UNLOCKED(lockname) \
|
||||
{ 0, __SPIN_LOCK_UNLOCKED(lockname) }
|
||||
|
||||
#define SEQLOCK_UNLOCKED \
|
||||
__SEQLOCK_UNLOCKED(old_style_seqlock_init)
|
||||
|
||||
#define seqlock_init(x) \
|
||||
do { *(x) = (seqlock_t) __SEQLOCK_UNLOCKED(x); } while (0)
|
||||
|
||||
#define DEFINE_SEQLOCK(x) \
|
||||
seqlock_t x = __SEQLOCK_UNLOCKED(x)
|
||||
|
||||
/* Lock out other writers and update the count.
|
||||
* Acts like a normal spin_lock/unlock.
|
||||
|
|
|
|||
|
|
@ -44,24 +44,27 @@ typedef struct {
|
|||
#define SPINLOCK_OWNER_INIT ((void *)-1L)
|
||||
|
||||
#ifdef CONFIG_DEBUG_SPINLOCK
|
||||
# define SPIN_LOCK_UNLOCKED \
|
||||
# define __SPIN_LOCK_UNLOCKED(lockname) \
|
||||
(spinlock_t) { .raw_lock = __RAW_SPIN_LOCK_UNLOCKED, \
|
||||
.magic = SPINLOCK_MAGIC, \
|
||||
.owner = SPINLOCK_OWNER_INIT, \
|
||||
.owner_cpu = -1 }
|
||||
#define RW_LOCK_UNLOCKED \
|
||||
#define __RW_LOCK_UNLOCKED(lockname) \
|
||||
(rwlock_t) { .raw_lock = __RAW_RW_LOCK_UNLOCKED, \
|
||||
.magic = RWLOCK_MAGIC, \
|
||||
.owner = SPINLOCK_OWNER_INIT, \
|
||||
.owner_cpu = -1 }
|
||||
#else
|
||||
# define SPIN_LOCK_UNLOCKED \
|
||||
# define __SPIN_LOCK_UNLOCKED(lockname) \
|
||||
(spinlock_t) { .raw_lock = __RAW_SPIN_LOCK_UNLOCKED }
|
||||
#define RW_LOCK_UNLOCKED \
|
||||
#define __RW_LOCK_UNLOCKED(lockname) \
|
||||
(rwlock_t) { .raw_lock = __RAW_RW_LOCK_UNLOCKED }
|
||||
#endif
|
||||
|
||||
#define DEFINE_SPINLOCK(x) spinlock_t x = SPIN_LOCK_UNLOCKED
|
||||
#define DEFINE_RWLOCK(x) rwlock_t x = RW_LOCK_UNLOCKED
|
||||
#define SPIN_LOCK_UNLOCKED __SPIN_LOCK_UNLOCKED(old_style_spin_init)
|
||||
#define RW_LOCK_UNLOCKED __RW_LOCK_UNLOCKED(old_style_rw_init)
|
||||
|
||||
#define DEFINE_SPINLOCK(x) spinlock_t x = __SPIN_LOCK_UNLOCKED(x)
|
||||
#define DEFINE_RWLOCK(x) rwlock_t x = __RW_LOCK_UNLOCKED(x)
|
||||
|
||||
#endif /* __LINUX_SPINLOCK_TYPES_H */
|
||||
|
|
|
|||
|
|
@ -68,7 +68,7 @@ struct task_struct;
|
|||
wait_queue_t name = __WAITQUEUE_INITIALIZER(name, tsk)
|
||||
|
||||
#define __WAIT_QUEUE_HEAD_INITIALIZER(name) { \
|
||||
.lock = SPIN_LOCK_UNLOCKED, \
|
||||
.lock = __SPIN_LOCK_UNLOCKED(name.lock), \
|
||||
.task_list = { &(name).task_list, &(name).task_list } }
|
||||
|
||||
#define DECLARE_WAIT_QUEUE_HEAD(name) \
|
||||
|
|
|
|||
Loading…
Reference in a new issue