lkml.org 
[lkml]   [2019]   [May]   [6]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH v2 03/23] locking/lockdep: Adjust lock usage bit character checks
    Date
    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>
    ---
    kernel/locking/lockdep.c | 21 ++++++++++++++++-----
    1 file changed, 16 insertions(+), 5 deletions(-)

    diff --git a/kernel/locking/lockdep.c b/kernel/locking/lockdep.c
    index a019330..720d195 100644
    --- a/kernel/locking/lockdep.c
    +++ b/kernel/locking/lockdep.c
    @@ -499,15 +499,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;
    }
    --
    1.8.3.1
    \
     
     \ /
      Last update: 2019-05-06 10:20    [W:4.753 / U:1.884 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site