Skip to content

Commit

Permalink
locking/lockdep: Adjust lock usage bit character checks
Browse files Browse the repository at this point in the history
The lock usage bit characters are defined and determined with tricks.
Add some explanation to make it a bit clearer, then adjust the logic to
check the usage, which optimizes the code a bit.

No functional change.

Signed-off-by: Yuyang Du <duyuyang@gmail.com>
Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: bvanassche@acm.org
Cc: frederic@kernel.org
Cc: ming.lei@redhat.com
Cc: will.deacon@arm.com
Link: https://lkml.kernel.org/r/20190506081939.74287-4-duyuyang@gmail.com
Signed-off-by: Ingo Molnar <mingo@kernel.org>
  • Loading branch information
Yuyang Du authored and Ingo Molnar committed Jun 3, 2019
1 parent c01fbbc commit c52478f
Showing 1 changed file with 16 additions and 5 deletions.
21 changes: 16 additions & 5 deletions kernel/locking/lockdep.c
Original file line number Diff line number Diff line change
Expand Up @@ -500,15 +500,26 @@ static inline unsigned long lock_flag(enum lock_usage_bit bit)

static char get_usage_char(struct lock_class *class, enum lock_usage_bit bit)
{
/*
* The usage character defaults to '.' (i.e., irqs disabled and not in
* irq context), which is the safest usage category.
*/
char c = '.';

if (class->usage_mask & lock_flag(bit + LOCK_USAGE_DIR_MASK))
/*
* The order of the following usage checks matters, which will
* result in the outcome character as follows:
*
* - '+': irq is enabled and not in irq context
* - '-': in irq context and irq is disabled
* - '?': in irq context and irq is enabled
*/
if (class->usage_mask & lock_flag(bit + LOCK_USAGE_DIR_MASK)) {
c = '+';
if (class->usage_mask & lock_flag(bit)) {
c = '-';
if (class->usage_mask & lock_flag(bit + LOCK_USAGE_DIR_MASK))
if (class->usage_mask & lock_flag(bit))
c = '?';
}
} else if (class->usage_mask & lock_flag(bit))
c = '-';

return c;
}
Expand Down

0 comments on commit c52478f

Please sign in to comment.