• Home
  • Raw
  • Download

Lines Matching refs:entry

205 	struct marker_entry *entry = container_of(head,  in free_old_closure()  local
207 kfree(entry->oldptr); in free_old_closure()
210 entry->rcu_pending = 0; in free_old_closure()
213 static void debug_print_probes(struct marker_entry *entry) in debug_print_probes() argument
220 if (!entry->ptype) { in debug_print_probes()
222 entry->single.func, in debug_print_probes()
223 entry->single.probe_private); in debug_print_probes()
225 for (i = 0; entry->multi[i].func; i++) in debug_print_probes()
227 entry->multi[i].func, in debug_print_probes()
228 entry->multi[i].probe_private); in debug_print_probes()
233 marker_entry_add_probe(struct marker_entry *entry, in marker_entry_add_probe() argument
241 debug_print_probes(entry); in marker_entry_add_probe()
242 old = entry->multi; in marker_entry_add_probe()
243 if (!entry->ptype) { in marker_entry_add_probe()
244 if (entry->single.func == probe && in marker_entry_add_probe()
245 entry->single.probe_private == probe_private) in marker_entry_add_probe()
247 if (entry->single.func == __mark_empty_function) { in marker_entry_add_probe()
249 entry->single.func = probe; in marker_entry_add_probe()
250 entry->single.probe_private = probe_private; in marker_entry_add_probe()
251 entry->refcount = 1; in marker_entry_add_probe()
252 entry->ptype = 0; in marker_entry_add_probe()
253 debug_print_probes(entry); in marker_entry_add_probe()
274 new[0] = entry->single; in marker_entry_add_probe()
280 entry->refcount = nr_probes + 1; in marker_entry_add_probe()
281 entry->multi = new; in marker_entry_add_probe()
282 entry->ptype = 1; in marker_entry_add_probe()
283 debug_print_probes(entry); in marker_entry_add_probe()
288 marker_entry_remove_probe(struct marker_entry *entry, in marker_entry_remove_probe() argument
294 old = entry->multi; in marker_entry_remove_probe()
296 debug_print_probes(entry); in marker_entry_remove_probe()
297 if (!entry->ptype) { in marker_entry_remove_probe()
299 WARN_ON(entry->single.func == __mark_empty_function); in marker_entry_remove_probe()
301 WARN_ON(probe && entry->single.func != probe); in marker_entry_remove_probe()
302 WARN_ON(entry->single.probe_private != probe_private); in marker_entry_remove_probe()
303 entry->single.func = __mark_empty_function; in marker_entry_remove_probe()
304 entry->refcount = 0; in marker_entry_remove_probe()
305 entry->ptype = 0; in marker_entry_remove_probe()
306 debug_print_probes(entry); in marker_entry_remove_probe()
320 entry->single.func = __mark_empty_function; in marker_entry_remove_probe()
321 entry->refcount = 0; in marker_entry_remove_probe()
322 entry->ptype = 0; in marker_entry_remove_probe()
328 entry->single = old[i]; in marker_entry_remove_probe()
329 entry->refcount = 1; in marker_entry_remove_probe()
330 entry->ptype = 0; in marker_entry_remove_probe()
343 entry->refcount = nr_probes - nr_del; in marker_entry_remove_probe()
344 entry->ptype = 1; in marker_entry_remove_probe()
345 entry->multi = new; in marker_entry_remove_probe()
347 debug_print_probes(entry); in marker_entry_remove_probe()
464 static int marker_set_format(struct marker_entry *entry, const char *format) in marker_set_format() argument
466 entry->format = kstrdup(format, GFP_KERNEL); in marker_set_format()
467 if (!entry->format) in marker_set_format()
469 entry->format_allocated = 1; in marker_set_format()
472 entry->name, entry->format); in marker_set_format()
479 static int set_marker(struct marker_entry *entry, struct marker *elem, in set_marker() argument
483 WARN_ON(strcmp(entry->name, elem->name) != 0); in set_marker()
485 if (entry->format) { in set_marker()
486 if (strcmp(entry->format, elem->format) != 0) { in set_marker()
490 entry->name, in set_marker()
491 entry->format, in set_marker()
496 ret = marker_set_format(entry, elem->format); in set_marker()
507 elem->call = entry->call; in set_marker()
514 && elem->single.probe_private != entry->single.probe_private in set_marker()
516 elem->single.probe_private = entry->single.probe_private; in set_marker()
522 elem->single.func = entry->single.func; in set_marker()
527 rcu_assign_pointer(elem->multi, entry->multi); in set_marker()
533 elem->ptype = entry->ptype; in set_marker()
676 struct marker_entry *entry; in marker_probe_register() local
681 entry = get_marker(name); in marker_probe_register()
682 if (!entry) { in marker_probe_register()
683 entry = add_marker(name, format); in marker_probe_register()
684 if (IS_ERR(entry)) in marker_probe_register()
685 ret = PTR_ERR(entry); in marker_probe_register()
687 if (!entry->format) in marker_probe_register()
688 ret = marker_set_format(entry, format); in marker_probe_register()
689 else if (strcmp(entry->format, format)) in marker_probe_register()
699 if (entry->rcu_pending) in marker_probe_register()
701 old = marker_entry_add_probe(entry, probe, probe_private); in marker_probe_register()
709 entry = get_marker(name); in marker_probe_register()
710 if (!entry) in marker_probe_register()
712 if (entry->rcu_pending) in marker_probe_register()
714 entry->oldptr = old; in marker_probe_register()
715 entry->rcu_pending = 1; in marker_probe_register()
718 call_rcu_sched(&entry->rcu, free_old_closure); in marker_probe_register()
740 struct marker_entry *entry; in marker_probe_unregister() local
745 entry = get_marker(name); in marker_probe_unregister()
746 if (!entry) in marker_probe_unregister()
748 if (entry->rcu_pending) in marker_probe_unregister()
750 old = marker_entry_remove_probe(entry, probe, probe_private); in marker_probe_unregister()
754 entry = get_marker(name); in marker_probe_unregister()
755 if (!entry) in marker_probe_unregister()
757 if (entry->rcu_pending) in marker_probe_unregister()
759 entry->oldptr = old; in marker_probe_unregister()
760 entry->rcu_pending = 1; in marker_probe_unregister()
763 call_rcu_sched(&entry->rcu, free_old_closure); in marker_probe_unregister()
775 struct marker_entry *entry; in get_marker_from_private_data() local
782 hlist_for_each_entry(entry, node, head, hlist) { in get_marker_from_private_data()
783 if (!entry->ptype) { in get_marker_from_private_data()
784 if (entry->single.func == probe in get_marker_from_private_data()
785 && entry->single.probe_private in get_marker_from_private_data()
787 return entry; in get_marker_from_private_data()
790 closure = entry->multi; in get_marker_from_private_data()
795 return entry; in get_marker_from_private_data()
819 struct marker_entry *entry; in marker_probe_unregister_private_data() local
824 entry = get_marker_from_private_data(probe, probe_private); in marker_probe_unregister_private_data()
825 if (!entry) { in marker_probe_unregister_private_data()
829 if (entry->rcu_pending) in marker_probe_unregister_private_data()
831 old = marker_entry_remove_probe(entry, NULL, probe_private); in marker_probe_unregister_private_data()
835 entry = get_marker_from_private_data(probe, probe_private); in marker_probe_unregister_private_data()
836 if (!entry) in marker_probe_unregister_private_data()
838 if (entry->rcu_pending) in marker_probe_unregister_private_data()
840 entry->oldptr = old; in marker_probe_unregister_private_data()
841 entry->rcu_pending = 1; in marker_probe_unregister_private_data()
844 call_rcu_sched(&entry->rcu, free_old_closure); in marker_probe_unregister_private_data()
845 remove_marker(entry->name); /* Ignore busy error message */ in marker_probe_unregister_private_data()