Lines Matching refs:class

206 struct lock_class_stats lock_stats(struct lock_class *class)  in lock_stats()  argument
214 &per_cpu(cpu_lock_stats, cpu)[class - lock_classes]; in lock_stats()
235 void clear_lock_stats(struct lock_class *class) in clear_lock_stats() argument
241 &per_cpu(cpu_lock_stats, cpu)[class - lock_classes]; in clear_lock_stats()
245 memset(class->contention_point, 0, sizeof(class->contention_point)); in clear_lock_stats()
246 memset(class->contending_point, 0, sizeof(class->contending_point)); in clear_lock_stats()
249 static struct lock_class_stats *get_lock_stats(struct lock_class *class) in get_lock_stats() argument
251 return &this_cpu_ptr(cpu_lock_stats)[class - lock_classes]; in get_lock_stats()
350 static int class_filter(struct lock_class *class) in class_filter() argument
354 if (class->name_version == 1 && in class_filter()
355 !strcmp(class->name, "lockname")) in class_filter()
357 if (class->name_version == 1 && in class_filter()
358 !strcmp(class->name, "&struct->lockfield")) in class_filter()
366 static int verbose(struct lock_class *class) in verbose() argument
369 return class_filter(class); in verbose()
468 static char get_usage_char(struct lock_class *class, enum lock_usage_bit bit) in get_usage_char() argument
472 if (class->usage_mask & lock_flag(bit + 2)) in get_usage_char()
474 if (class->usage_mask & lock_flag(bit)) { in get_usage_char()
476 if (class->usage_mask & lock_flag(bit + 2)) in get_usage_char()
483 void get_usage_chars(struct lock_class *class, char usage[LOCK_USAGE_CHARS]) in get_usage_chars() argument
488 usage[i++] = get_usage_char(class, LOCK_USED_IN_##__STATE); \ in get_usage_chars()
489 usage[i++] = get_usage_char(class, LOCK_USED_IN_##__STATE##_READ); in get_usage_chars()
496 static void __print_lock_name(struct lock_class *class) in __print_lock_name() argument
501 name = class->name; in __print_lock_name()
503 name = __get_key_name(class->key, str); in __print_lock_name()
507 if (class->name_version > 1) in __print_lock_name()
508 printk(KERN_CONT "#%d", class->name_version); in __print_lock_name()
509 if (class->subclass) in __print_lock_name()
510 printk(KERN_CONT "/%d", class->subclass); in __print_lock_name()
514 static void print_lock_name(struct lock_class *class) in print_lock_name() argument
518 get_usage_chars(class, usage); in print_lock_name()
521 __print_lock_name(class); in print_lock_name()
587 static int very_verbose(struct lock_class *class) in very_verbose() argument
590 return class_filter(class); in very_verbose()
633 struct lock_class *class; in count_matching_names() local
639 list_for_each_entry_rcu(class, &all_lock_classes, lock_entry) { in count_matching_names()
640 if (new_class->key - new_class->subclass == class->key) in count_matching_names()
641 return class->name_version; in count_matching_names()
642 if (class->name && !strcmp(class->name, new_class->name)) in count_matching_names()
643 count = max(count, class->name_version); in count_matching_names()
654 struct lock_class *class; in look_up_lock_class() local
692 hlist_for_each_entry_rcu(class, hash_head, hash_entry) { in look_up_lock_class()
693 if (class->key == key) { in look_up_lock_class()
698 WARN_ON_ONCE(class->name != lock->name); in look_up_lock_class()
699 return class; in look_up_lock_class()
744 struct lock_class *class; in register_lock_class() local
748 class = look_up_lock_class(lock, subclass); in register_lock_class()
749 if (likely(class)) in register_lock_class()
769 hlist_for_each_entry_rcu(class, hash_head, hash_entry) { in register_lock_class()
770 if (class->key == key) in register_lock_class()
787 class = lock_classes + nr_lock_classes++; in register_lock_class()
789 class->key = key; in register_lock_class()
790 class->name = lock->name; in register_lock_class()
791 class->subclass = subclass; in register_lock_class()
792 INIT_LIST_HEAD(&class->lock_entry); in register_lock_class()
793 INIT_LIST_HEAD(&class->locks_before); in register_lock_class()
794 INIT_LIST_HEAD(&class->locks_after); in register_lock_class()
795 class->name_version = count_matching_names(class); in register_lock_class()
800 hlist_add_head_rcu(&class->hash_entry, hash_head); in register_lock_class()
804 list_add_tail_rcu(&class->lock_entry, &all_lock_classes); in register_lock_class()
806 if (verbose(class)) { in register_lock_class()
809 printk("\nnew class %px: %s", class->key, class->name); in register_lock_class()
810 if (class->name_version > 1) in register_lock_class()
811 printk(KERN_CONT "#%d", class->name_version); in register_lock_class()
824 lock->class_cache[0] = class; in register_lock_class()
826 lock->class_cache[subclass] = class; in register_lock_class()
832 if (DEBUG_LOCKS_WARN_ON(class->subclass != subclass)) in register_lock_class()
835 return class; in register_lock_class()
872 entry->class = this; in add_lock_to_list()
957 lock->class->dep_gen_id = lockdep_dependency_gen_id; in mark_lock_accessed()
966 return lock->class->dep_gen_id == lockdep_dependency_gen_id; in lock_accessed()
1004 head = &source_entry->class->locks_after; in __bfs()
1006 head = &source_entry->class->locks_before; in __bfs()
1019 if (!lock->class) { in __bfs()
1025 head = &lock->class->locks_after; in __bfs()
1027 head = &lock->class->locks_before; in __bfs()
1089 print_lock_name(target->class); in print_circular_bug_entry()
1103 struct lock_class *parent = prt->class; in print_circular_lock_scenario()
1182 return entry->class == data; in class_equal()
1254 unsigned long lockdep_count_forward_deps(struct lock_class *class) in lockdep_count_forward_deps() argument
1260 this.class = class; in lockdep_count_forward_deps()
1281 unsigned long lockdep_count_backward_deps(struct lock_class *class) in lockdep_count_backward_deps() argument
1287 this.class = class; in lockdep_count_backward_deps()
1337 return entry->class->usage_mask & (1 << (enum lock_usage_bit)bit); in usage_match()
1388 static void print_lock_class_header(struct lock_class *class, int depth) in print_lock_class_header() argument
1393 print_lock_name(class); in print_lock_class_header()
1394 printk(KERN_CONT " ops: %lu", class->ops); in print_lock_class_header()
1398 if (class->usage_mask & (1 << bit)) { in print_lock_class_header()
1403 print_stack_trace(class->usage_traces + bit, len); in print_lock_class_header()
1409 depth, "", class->key, class->key); in print_lock_class_header()
1426 print_lock_class_header(entry->class, depth); in print_shortest_lock_dependencies()
1449 struct lock_class *safe_class = safe_entry->class; in print_irq_lock_scenario()
1450 struct lock_class *unsafe_class = unsafe_entry->class; in print_irq_lock_scenario()
1538 print_lock_name(backwards_entry->class); in print_bad_irq_dependency()
1541 print_stack_trace(backwards_entry->class->usage_traces + bit1, 1); in print_bad_irq_dependency()
1544 print_lock_name(forwards_entry->class); in print_bad_irq_dependency()
1548 print_stack_trace(forwards_entry->class->usage_traces + bit2, 1); in print_bad_irq_dependency()
1585 this.class = hlock_class(prev); in check_usage()
1593 that.class = hlock_class(next); in check_usage()
1849 this.class = hlock_class(next); in check_prev_add()
1888 if (entry->class == hlock_class(next)) { in check_prev_add()
1898 this.class = hlock_class(prev); in check_prev_add()
2231 struct lock_class *class = hlock_class(hlock); in add_chain_cache() local
2273 chain_hlocks[chain->base + j] = class - lock_classes; in add_chain_cache()
2331 struct lock_class *class = hlock_class(hlock); in lookup_chain_cache_add() local
2339 if (very_verbose(class)) { in lookup_chain_cache_add()
2343 class->key, class->name); in lookup_chain_cache_add()
2349 if (very_verbose(class)) { in lookup_chain_cache_add()
2351 (unsigned long long)chain_key, class->key, class->name); in lookup_chain_cache_add()
2491 struct lock_class *class = hlock_class(lock); in print_usage_bug_scenario() local
2497 __print_lock_name(class); in print_usage_bug_scenario()
2501 __print_lock_name(class); in print_usage_bug_scenario()
2590 print_lock_name(other->class); in print_irq_inversion_bug()
2608 middle ? middle->class : root->class, other->class); in print_irq_inversion_bug()
2611 middle ? middle->class : other->class, root->class); in print_irq_inversion_bug()
2639 root.class = hlock_class(this); in check_usage_forwards()
2663 root.class = hlock_class(this); in check_usage_backwards()
2691 static int HARDIRQ_verbose(struct lock_class *class) in HARDIRQ_verbose() argument
2694 return class_filter(class); in HARDIRQ_verbose()
2699 static int SOFTIRQ_verbose(struct lock_class *class) in SOFTIRQ_verbose() argument
2702 return class_filter(class); in SOFTIRQ_verbose()
2709 static int (*state_verbose_f[])(struct lock_class *class) = {
2717 struct lock_class *class) in state_verbose() argument
2719 return state_verbose_f[bit >> 2](class); in state_verbose()
3272 struct lock_class *class = NULL; in __lock_acquire() local
3294 class = lock->class_cache[subclass]; in __lock_acquire()
3298 if (unlikely(!class)) { in __lock_acquire()
3299 class = register_lock_class(lock, subclass, 0); in __lock_acquire()
3300 if (!class) in __lock_acquire()
3303 atomic_inc((atomic_t *)&class->ops); in __lock_acquire()
3304 if (very_verbose(class)) { in __lock_acquire()
3305 printk("\nacquire class [%px] %s", class->key, class->name); in __lock_acquire()
3306 if (class->name_version > 1) in __lock_acquire()
3307 printk(KERN_CONT "#%d", class->name_version); in __lock_acquire()
3324 class_idx = class - lock_classes + 1; in __lock_acquire()
3350 if (DEBUG_LOCKS_WARN_ON(!class)) in __lock_acquire()
3476 const struct lock_class *class = lock->class_cache[0]; in match_held_lock() local
3478 if (!class) in match_held_lock()
3479 class = look_up_lock_class(lock, 0); in match_held_lock()
3487 if (!class) in match_held_lock()
3498 if (hlock->class_idx == class - lock_classes + 1) in match_held_lock()
3566 struct lock_class *class; in __lock_set_class() local
3583 class = register_lock_class(lock, subclass, 0); in __lock_set_class()
3584 hlock->class_idx = class - lock_classes + 1; in __lock_set_class()
4185 static void zap_class(struct lock_class *class) in zap_class() argument
4194 if (list_entries[i].class == class) in zap_class()
4200 hlist_del_rcu(&class->hash_entry); in zap_class()
4201 list_del_rcu(&class->lock_entry); in zap_class()
4203 RCU_INIT_POINTER(class->key, NULL); in zap_class()
4204 RCU_INIT_POINTER(class->name, NULL); in zap_class()
4222 struct lock_class *class; in lockdep_free_key_range() local
4236 hlist_for_each_entry_rcu(class, head, hash_entry) { in lockdep_free_key_range()
4237 if (within(class->key, start, size)) in lockdep_free_key_range()
4238 zap_class(class); in lockdep_free_key_range()
4239 else if (within(class->name, start, size)) in lockdep_free_key_range()
4240 zap_class(class); in lockdep_free_key_range()
4265 struct lock_class *class; in lockdep_reset_lock() local
4280 class = look_up_lock_class(lock, j); in lockdep_reset_lock()
4281 if (class) in lockdep_reset_lock()
4282 zap_class(class); in lockdep_reset_lock()
4291 hlist_for_each_entry_rcu(class, head, hash_entry) { in lockdep_reset_lock()
4295 match |= class == lock->class_cache[j]; in lockdep_reset_lock()