Lines Matching refs:class

204 struct lock_class_stats lock_stats(struct lock_class *class)  in lock_stats()  argument
212 &per_cpu(cpu_lock_stats, cpu)[class - lock_classes]; in lock_stats()
233 void clear_lock_stats(struct lock_class *class) in clear_lock_stats() argument
239 &per_cpu(cpu_lock_stats, cpu)[class - lock_classes]; in clear_lock_stats()
243 memset(class->contention_point, 0, sizeof(class->contention_point)); in clear_lock_stats()
244 memset(class->contending_point, 0, sizeof(class->contending_point)); in clear_lock_stats()
247 static struct lock_class_stats *get_lock_stats(struct lock_class *class) in get_lock_stats() argument
249 return &get_cpu_var(cpu_lock_stats)[class - lock_classes]; in get_lock_stats()
352 static int class_filter(struct lock_class *class) in class_filter() argument
356 if (class->name_version == 1 && in class_filter()
357 !strcmp(class->name, "lockname")) in class_filter()
359 if (class->name_version == 1 && in class_filter()
360 !strcmp(class->name, "&struct->lockfield")) in class_filter()
368 static int verbose(struct lock_class *class) in verbose() argument
371 return class_filter(class); in verbose()
483 static char get_usage_char(struct lock_class *class, enum lock_usage_bit bit) in get_usage_char() argument
487 if (class->usage_mask & lock_flag(bit + 2)) in get_usage_char()
489 if (class->usage_mask & lock_flag(bit)) { in get_usage_char()
491 if (class->usage_mask & lock_flag(bit + 2)) in get_usage_char()
498 void get_usage_chars(struct lock_class *class, char usage[LOCK_USAGE_CHARS]) in get_usage_chars() argument
503 usage[i++] = get_usage_char(class, LOCK_USED_IN_##__STATE); \ in get_usage_chars()
504 usage[i++] = get_usage_char(class, LOCK_USED_IN_##__STATE##_READ); in get_usage_chars()
511 static void __print_lock_name(struct lock_class *class) in __print_lock_name() argument
516 name = class->name; in __print_lock_name()
518 name = __get_key_name(class->key, str); in __print_lock_name()
522 if (class->name_version > 1) in __print_lock_name()
523 printk("#%d", class->name_version); in __print_lock_name()
524 if (class->subclass) in __print_lock_name()
525 printk("/%d", class->subclass); in __print_lock_name()
529 static void print_lock_name(struct lock_class *class) in print_lock_name() argument
533 get_usage_chars(class, usage); in print_lock_name()
536 __print_lock_name(class); in print_lock_name()
598 static int very_verbose(struct lock_class *class) in very_verbose() argument
601 return class_filter(class); in very_verbose()
644 struct lock_class *class; in count_matching_names() local
650 list_for_each_entry_rcu(class, &all_lock_classes, lock_entry) { in count_matching_names()
651 if (new_class->key - new_class->subclass == class->key) in count_matching_names()
652 return class->name_version; in count_matching_names()
653 if (class->name && !strcmp(class->name, new_class->name)) in count_matching_names()
654 count = max(count, class->name_version); in count_matching_names()
670 struct lock_class *class; in look_up_lock_class() local
722 list_for_each_entry_rcu(class, hash_head, hash_entry) { in look_up_lock_class()
723 if (class->key == key) { in look_up_lock_class()
728 WARN_ON_ONCE(class->name != lock->name); in look_up_lock_class()
729 return class; in look_up_lock_class()
746 struct lock_class *class; in register_lock_class() local
750 class = look_up_lock_class(lock, subclass); in register_lock_class()
751 if (likely(class)) in register_lock_class()
777 list_for_each_entry_rcu(class, hash_head, hash_entry) { in register_lock_class()
778 if (class->key == key) in register_lock_class()
795 class = lock_classes + nr_lock_classes++; in register_lock_class()
797 class->key = key; in register_lock_class()
798 class->name = lock->name; in register_lock_class()
799 class->subclass = subclass; in register_lock_class()
800 INIT_LIST_HEAD(&class->lock_entry); in register_lock_class()
801 INIT_LIST_HEAD(&class->locks_before); in register_lock_class()
802 INIT_LIST_HEAD(&class->locks_after); in register_lock_class()
803 class->name_version = count_matching_names(class); in register_lock_class()
808 list_add_tail_rcu(&class->hash_entry, hash_head); in register_lock_class()
812 list_add_tail_rcu(&class->lock_entry, &all_lock_classes); in register_lock_class()
814 if (verbose(class)) { in register_lock_class()
817 printk("\nnew class %p: %s", class->key, class->name); in register_lock_class()
818 if (class->name_version > 1) in register_lock_class()
819 printk("#%d", class->name_version); in register_lock_class()
832 lock->class_cache[0] = class; in register_lock_class()
834 lock->class_cache[subclass] = class; in register_lock_class()
840 if (DEBUG_LOCKS_WARN_ON(class->subclass != subclass)) in register_lock_class()
843 return class; in register_lock_class()
867 static int add_lock_to_list(struct lock_class *class, struct lock_class *this, in add_lock_to_list() argument
880 entry->class = this; in add_lock_to_list()
965 lock->class->dep_gen_id = lockdep_dependency_gen_id; in mark_lock_accessed()
974 return lock->class->dep_gen_id == lockdep_dependency_gen_id; in lock_accessed()
1012 head = &source_entry->class->locks_after; in __bfs()
1014 head = &source_entry->class->locks_before; in __bfs()
1027 if (!lock->class) { in __bfs()
1033 head = &lock->class->locks_after; in __bfs()
1035 head = &lock->class->locks_before; in __bfs()
1097 print_lock_name(target->class); in print_circular_bug_entry()
1111 struct lock_class *parent = prt->class; in print_circular_lock_scenario()
1188 return entry->class == data; in class_equal()
1259 unsigned long lockdep_count_forward_deps(struct lock_class *class) in lockdep_count_forward_deps() argument
1265 this.class = class; in lockdep_count_forward_deps()
1286 unsigned long lockdep_count_backward_deps(struct lock_class *class) in lockdep_count_backward_deps() argument
1292 this.class = class; in lockdep_count_backward_deps()
1329 return entry->class->usage_mask & (1 << (enum lock_usage_bit)bit); in usage_match()
1380 static void print_lock_class_header(struct lock_class *class, int depth) in print_lock_class_header() argument
1385 print_lock_name(class); in print_lock_class_header()
1386 printk(" ops: %lu", class->ops); in print_lock_class_header()
1390 if (class->usage_mask & (1 << bit)) { in print_lock_class_header()
1395 print_stack_trace(class->usage_traces + bit, len); in print_lock_class_header()
1401 print_ip_sym((unsigned long)class->key); in print_lock_class_header()
1418 print_lock_class_header(entry->class, depth); in print_shortest_lock_dependencies()
1441 struct lock_class *safe_class = safe_entry->class; in print_irq_lock_scenario()
1442 struct lock_class *unsafe_class = unsafe_entry->class; in print_irq_lock_scenario()
1530 print_lock_name(backwards_entry->class); in print_bad_irq_dependency()
1533 print_stack_trace(backwards_entry->class->usage_traces + bit1, 1); in print_bad_irq_dependency()
1536 print_lock_name(forwards_entry->class); in print_bad_irq_dependency()
1540 print_stack_trace(forwards_entry->class->usage_traces + bit2, 1); in print_bad_irq_dependency()
1578 this.class = hlock_class(prev); in check_usage()
1586 that.class = hlock_class(next); in check_usage()
1849 this.class = hlock_class(next); in check_prev_add()
1879 if (entry->class == hlock_class(next)) { in check_prev_add()
2019 struct lock_class *class = hlock_class(hlock); in lookup_chain_cache() local
2040 if (very_verbose(class)) in lookup_chain_cache()
2044 class->key, class->name); in lookup_chain_cache()
2048 if (very_verbose(class)) in lookup_chain_cache()
2050 (unsigned long long)chain_key, class->key, class->name); in lookup_chain_cache()
2092 chain_hlocks[chain->base + j] = class - lock_classes; in lookup_chain_cache()
2218 struct lock_class *class = hlock_class(lock); in print_usage_bug_scenario() local
2224 __print_lock_name(class); in print_usage_bug_scenario()
2228 __print_lock_name(class); in print_usage_bug_scenario()
2317 print_lock_name(other->class); in print_irq_inversion_bug()
2335 middle ? middle->class : root->class, other->class); in print_irq_inversion_bug()
2338 middle ? middle->class : other->class, root->class); in print_irq_inversion_bug()
2366 root.class = hlock_class(this); in check_usage_forwards()
2390 root.class = hlock_class(this); in check_usage_backwards()
2414 static int HARDIRQ_verbose(struct lock_class *class) in HARDIRQ_verbose() argument
2417 return class_filter(class); in HARDIRQ_verbose()
2422 static int SOFTIRQ_verbose(struct lock_class *class) in SOFTIRQ_verbose() argument
2425 return class_filter(class); in SOFTIRQ_verbose()
2430 static int RECLAIM_FS_verbose(struct lock_class *class) in RECLAIM_FS_verbose() argument
2433 return class_filter(class); in RECLAIM_FS_verbose()
2440 static int (*state_verbose_f[])(struct lock_class *class) = {
2448 struct lock_class *class) in state_verbose() argument
2450 return state_verbose_f[bit >> 2](class); in state_verbose()
3074 struct lock_class *class = NULL; in __lock_acquire() local
3096 class = lock->class_cache[subclass]; in __lock_acquire()
3100 if (unlikely(!class)) { in __lock_acquire()
3101 class = register_lock_class(lock, subclass, 0); in __lock_acquire()
3102 if (!class) in __lock_acquire()
3105 atomic_inc((atomic_t *)&class->ops); in __lock_acquire()
3106 if (very_verbose(class)) { in __lock_acquire()
3107 printk("\nacquire class [%p] %s", class->key, class->name); in __lock_acquire()
3108 if (class->name_version > 1) in __lock_acquire()
3109 printk("#%d", class->name_version); in __lock_acquire()
3126 class_idx = class - lock_classes + 1; in __lock_acquire()
3145 if (DEBUG_LOCKS_WARN_ON(!class)) in __lock_acquire()
3179 id = class - lock_classes; in __lock_acquire()
3270 struct lock_class *class = lock->class_cache[0]; in match_held_lock() local
3272 if (!class) in match_held_lock()
3273 class = look_up_lock_class(lock, 0); in match_held_lock()
3281 if (!class) in match_held_lock()
3292 if (hlock->class_idx == class - lock_classes + 1) in match_held_lock()
3306 struct lock_class *class; in __lock_set_class() local
3334 class = register_lock_class(lock, subclass, 0); in __lock_set_class()
3335 hlock->class_idx = class - lock_classes + 1; in __lock_set_class()
3882 static void zap_class(struct lock_class *class) in zap_class() argument
3891 if (list_entries[i].class == class) in zap_class()
3897 list_del_rcu(&class->hash_entry); in zap_class()
3898 list_del_rcu(&class->lock_entry); in zap_class()
3900 RCU_INIT_POINTER(class->key, NULL); in zap_class()
3901 RCU_INIT_POINTER(class->name, NULL); in zap_class()
3919 struct lock_class *class; in lockdep_free_key_range() local
3935 list_for_each_entry_rcu(class, head, hash_entry) { in lockdep_free_key_range()
3936 if (within(class->key, start, size)) in lockdep_free_key_range()
3937 zap_class(class); in lockdep_free_key_range()
3938 else if (within(class->name, start, size)) in lockdep_free_key_range()
3939 zap_class(class); in lockdep_free_key_range()
3964 struct lock_class *class; in lockdep_reset_lock() local
3979 class = look_up_lock_class(lock, j); in lockdep_reset_lock()
3980 if (class) in lockdep_reset_lock()
3981 zap_class(class); in lockdep_reset_lock()
3992 list_for_each_entry_rcu(class, head, hash_entry) { in lockdep_reset_lock()
3996 match |= class == lock->class_cache[j]; in lockdep_reset_lock()