• Home
  • Raw
  • Download

Lines Matching +full:tp +full:- +full:link

1 // SPDX-License-Identifier: GPL-2.0
3 * Common code for probe-based Dynamic events.
9 * Copyright (C) IBM Corporation, 2010-2011
199 *(p - 1) = '\0'; in __trace_probe_log_err()
214 return -EINVAL; in traceprobe_split_symbol_offset()
216 tmp = strpbrk(symbol, "+-"); in traceprobe_split_symbol_offset()
239 return -EINVAL; in traceprobe_parse_event_name()
241 if (slash - event + 1 > MAX_EVENT_NAME_LEN) { in traceprobe_parse_event_name()
243 return -EINVAL; in traceprobe_parse_event_name()
245 strlcpy(buf, event, slash - event + 1); in traceprobe_parse_event_name()
248 return -EINVAL; in traceprobe_parse_event_name()
252 offset += slash - event + 1; in traceprobe_parse_event_name()
258 return -EINVAL; in traceprobe_parse_event_name()
261 return -EINVAL; in traceprobe_parse_event_name()
265 return -EINVAL; in traceprobe_parse_event_name()
281 code->op = FETCH_OP_RETVAL; in parse_probe_vars()
284 ret = -EINVAL; in parse_probe_vars()
288 code->op = FETCH_OP_STACKP; in parse_probe_vars()
296 ret = -EINVAL; in parse_probe_vars()
298 code->op = FETCH_OP_STACK; in parse_probe_vars()
299 code->param = (unsigned int)param; in parse_probe_vars()
304 code->op = FETCH_OP_COMM; in parse_probe_vars()
314 return -EINVAL; in parse_probe_vars()
316 code->op = FETCH_OP_ARG; in parse_probe_vars()
317 code->param = (unsigned int)param - 1; in parse_probe_vars()
326 return -EINVAL; in parse_probe_vars()
333 else if (str[0] == '-') in str_to_immediate()
337 return -EINVAL; in str_to_immediate()
344 if (str[len - 1] != '"') { in __parse_imm_string()
346 return -EINVAL; in __parse_imm_string()
348 *pbuf = kstrndup(str, len - 1, GFP_KERNEL); in __parse_imm_string()
373 code->op = FETCH_OP_REG; in parse_probe_arg()
374 code->param = (unsigned int)ret; in parse_probe_arg()
380 case '@': /* memory, file-offset or symbol */ in parse_probe_arg()
388 code->op = FETCH_OP_IMM; in parse_probe_arg()
389 code->immediate = param; in parse_probe_arg()
394 return -EINVAL; in parse_probe_arg()
402 code->op = FETCH_OP_FOFFS; in parse_probe_arg()
403 code->immediate = (unsigned long)offset; // imm64? in parse_probe_arg()
408 return -EINVAL; in parse_probe_arg()
411 code->op = FETCH_NOP_SYMBOL; in parse_probe_arg()
412 code->data = kstrdup(arg + 1, GFP_KERNEL); in parse_probe_arg()
413 if (!code->data) in parse_probe_arg()
414 return -ENOMEM; in parse_probe_arg()
417 return -EINVAL; in parse_probe_arg()
419 code->op = FETCH_OP_IMM; in parse_probe_arg()
420 code->immediate = 0; in parse_probe_arg()
425 return -EINVAL; in parse_probe_arg()
428 code->op = FETCH_OP_DEREF; in parse_probe_arg()
429 code->offset = offset; in parse_probe_arg()
433 case '-': in parse_probe_arg()
444 return -EINVAL; in parse_probe_arg()
452 offs += (tmp + 1 - arg) + (arg[0] != '-' ? 1 : 0); in parse_probe_arg()
458 return -EINVAL; in parse_probe_arg()
466 if (code->op == FETCH_OP_COMM || in parse_probe_arg()
467 code->op == FETCH_OP_DATA) { in parse_probe_arg()
469 return -EINVAL; in parse_probe_arg()
473 return -EINVAL; in parse_probe_arg()
477 code->op = deref; in parse_probe_arg()
478 code->offset = offset; in parse_probe_arg()
486 code->op = FETCH_OP_DATA; in parse_probe_arg()
487 code->data = tmp; in parse_probe_arg()
489 ret = str_to_immediate(arg + 1, &code->immediate); in parse_probe_arg()
493 code->op = FETCH_OP_IMM; in parse_probe_arg()
497 if (!ret && code->op == FETCH_OP_NOP) { in parse_probe_arg()
500 ret = -EINVAL; in parse_probe_arg()
522 return -EINVAL; in __parse_bitfield_probe_arg()
528 return -EINVAL; in __parse_bitfield_probe_arg()
530 if (code->op != FETCH_OP_NOP) in __parse_bitfield_probe_arg()
531 return -EINVAL; in __parse_bitfield_probe_arg()
534 code->op = FETCH_OP_MOD_BF; in __parse_bitfield_probe_arg()
535 code->lshift = BYTES_TO_BITS(t->size) - (bw + bo); in __parse_bitfield_probe_arg()
536 code->rshift = BYTES_TO_BITS(t->size) - bw; in __parse_bitfield_probe_arg()
537 code->basesize = t->size; in __parse_bitfield_probe_arg()
539 return (BYTES_TO_BITS(t->size) < (bw + bo)) ? -EINVAL : 0; in __parse_bitfield_probe_arg()
553 return -EINVAL; in traceprobe_parse_probe_arg_body()
556 return -EINVAL; in traceprobe_parse_probe_arg_body()
559 parg->comm = kstrdup(arg, GFP_KERNEL); in traceprobe_parse_probe_arg_body()
560 if (!parg->comm) in traceprobe_parse_probe_arg_body()
561 return -ENOMEM; in traceprobe_parse_probe_arg_body()
571 offset += t2 + strlen(t2) - arg; in traceprobe_parse_probe_arg_body()
574 return -EINVAL; in traceprobe_parse_probe_arg_body()
576 trace_probe_log_err(offset + t3 + 1 - arg, in traceprobe_parse_probe_arg_body()
578 return -EINVAL; in traceprobe_parse_probe_arg_body()
581 if (kstrtouint(t2, 0, &parg->count) || !parg->count) { in traceprobe_parse_probe_arg_body()
582 trace_probe_log_err(offset + t2 - arg, in traceprobe_parse_probe_arg_body()
584 return -EINVAL; in traceprobe_parse_probe_arg_body()
586 if (parg->count > MAX_ARRAY_LEN) { in traceprobe_parse_probe_arg_body()
587 trace_probe_log_err(offset + t2 - arg, in traceprobe_parse_probe_arg_body()
589 return -EINVAL; in traceprobe_parse_probe_arg_body()
601 if (parg->count || (t && strcmp(t, "string"))) in traceprobe_parse_probe_arg_body()
602 return -EINVAL; in traceprobe_parse_probe_arg_body()
603 parg->type = find_fetch_type("string"); in traceprobe_parse_probe_arg_body()
605 parg->type = find_fetch_type(t); in traceprobe_parse_probe_arg_body()
606 if (!parg->type) { in traceprobe_parse_probe_arg_body()
607 trace_probe_log_err(offset + (t ? (t - arg) : 0), BAD_TYPE); in traceprobe_parse_probe_arg_body()
608 return -EINVAL; in traceprobe_parse_probe_arg_body()
610 parg->offset = *size; in traceprobe_parse_probe_arg_body()
611 *size += parg->type->size * (parg->count ?: 1); in traceprobe_parse_probe_arg_body()
613 if (parg->count) { in traceprobe_parse_probe_arg_body()
614 len = strlen(parg->type->fmttype) + 6; in traceprobe_parse_probe_arg_body()
615 parg->fmt = kmalloc(len, GFP_KERNEL); in traceprobe_parse_probe_arg_body()
616 if (!parg->fmt) in traceprobe_parse_probe_arg_body()
617 return -ENOMEM; in traceprobe_parse_probe_arg_body()
618 snprintf(parg->fmt, len, "%s[%d]", parg->type->fmttype, in traceprobe_parse_probe_arg_body()
619 parg->count); in traceprobe_parse_probe_arg_body()
624 return -ENOMEM; in traceprobe_parse_probe_arg_body()
625 code[FETCH_INSN_MAX - 1].op = FETCH_OP_END; in traceprobe_parse_probe_arg_body()
627 ret = parse_probe_arg(arg, parg->type, &code, &code[FETCH_INSN_MAX - 1], in traceprobe_parse_probe_arg_body()
633 if (!strcmp(parg->type->name, "string") || in traceprobe_parse_probe_arg_body()
634 !strcmp(parg->type->name, "ustring")) { in traceprobe_parse_probe_arg_body()
635 if (code->op != FETCH_OP_DEREF && code->op != FETCH_OP_UDEREF && in traceprobe_parse_probe_arg_body()
636 code->op != FETCH_OP_IMM && code->op != FETCH_OP_COMM && in traceprobe_parse_probe_arg_body()
637 code->op != FETCH_OP_DATA) { in traceprobe_parse_probe_arg_body()
638 trace_probe_log_err(offset + (t ? (t - arg) : 0), in traceprobe_parse_probe_arg_body()
640 ret = -EINVAL; in traceprobe_parse_probe_arg_body()
643 if ((code->op == FETCH_OP_IMM || code->op == FETCH_OP_COMM || in traceprobe_parse_probe_arg_body()
644 code->op == FETCH_OP_DATA) || parg->count) { in traceprobe_parse_probe_arg_body()
647 * must be kept, and if parg->count != 0, this is an in traceprobe_parse_probe_arg_body()
652 if (code->op != FETCH_OP_NOP) { in traceprobe_parse_probe_arg_body()
654 ret = -EINVAL; in traceprobe_parse_probe_arg_body()
659 if (!strcmp(parg->type->name, "ustring") || in traceprobe_parse_probe_arg_body()
660 code->op == FETCH_OP_UDEREF) in traceprobe_parse_probe_arg_body()
661 code->op = FETCH_OP_ST_USTRING; in traceprobe_parse_probe_arg_body()
663 code->op = FETCH_OP_ST_STRING; in traceprobe_parse_probe_arg_body()
664 code->size = parg->type->size; in traceprobe_parse_probe_arg_body()
665 parg->dynamic = true; in traceprobe_parse_probe_arg_body()
666 } else if (code->op == FETCH_OP_DEREF) { in traceprobe_parse_probe_arg_body()
667 code->op = FETCH_OP_ST_MEM; in traceprobe_parse_probe_arg_body()
668 code->size = parg->type->size; in traceprobe_parse_probe_arg_body()
669 } else if (code->op == FETCH_OP_UDEREF) { in traceprobe_parse_probe_arg_body()
670 code->op = FETCH_OP_ST_UMEM; in traceprobe_parse_probe_arg_body()
671 code->size = parg->type->size; in traceprobe_parse_probe_arg_body()
674 if (code->op != FETCH_OP_NOP) { in traceprobe_parse_probe_arg_body()
676 ret = -EINVAL; in traceprobe_parse_probe_arg_body()
679 code->op = FETCH_OP_ST_RAW; in traceprobe_parse_probe_arg_body()
680 code->size = parg->type->size; in traceprobe_parse_probe_arg_body()
685 ret = __parse_bitfield_probe_arg(t, parg->type, &code); in traceprobe_parse_probe_arg_body()
687 trace_probe_log_err(offset + t - arg, BAD_BITFIELD); in traceprobe_parse_probe_arg_body()
692 if (parg->count) { in traceprobe_parse_probe_arg_body()
693 if (scode->op != FETCH_OP_ST_MEM && in traceprobe_parse_probe_arg_body()
694 scode->op != FETCH_OP_ST_STRING && in traceprobe_parse_probe_arg_body()
695 scode->op != FETCH_OP_ST_USTRING) { in traceprobe_parse_probe_arg_body()
696 trace_probe_log_err(offset + (t ? (t - arg) : 0), in traceprobe_parse_probe_arg_body()
698 ret = -EINVAL; in traceprobe_parse_probe_arg_body()
702 if (code->op != FETCH_OP_NOP) { in traceprobe_parse_probe_arg_body()
704 ret = -EINVAL; in traceprobe_parse_probe_arg_body()
707 code->op = FETCH_OP_LP_ARRAY; in traceprobe_parse_probe_arg_body()
708 code->param = parg->count; in traceprobe_parse_probe_arg_body()
711 code->op = FETCH_OP_END; in traceprobe_parse_probe_arg_body()
714 parg->code = kcalloc(code - tmp + 1, sizeof(*code), GFP_KERNEL); in traceprobe_parse_probe_arg_body()
715 if (!parg->code) in traceprobe_parse_probe_arg_body()
716 ret = -ENOMEM; in traceprobe_parse_probe_arg_body()
718 memcpy(parg->code, tmp, sizeof(*code) * (code - tmp + 1)); in traceprobe_parse_probe_arg_body()
723 if (code->op == FETCH_NOP_SYMBOL || in traceprobe_parse_probe_arg_body()
724 code->op == FETCH_OP_DATA) in traceprobe_parse_probe_arg_body()
725 kfree(code->data); in traceprobe_parse_probe_arg_body()
749 int traceprobe_parse_probe_arg(struct trace_probe *tp, int i, char *arg, in traceprobe_parse_probe_arg() argument
752 struct probe_arg *parg = &tp->args[i]; in traceprobe_parse_probe_arg()
756 tp->nr_args++; in traceprobe_parse_probe_arg()
760 if (body - arg > MAX_ARG_NAME_LEN) { in traceprobe_parse_probe_arg()
762 return -EINVAL; in traceprobe_parse_probe_arg()
765 return -EINVAL; in traceprobe_parse_probe_arg()
767 parg->name = kmemdup_nul(arg, body - arg, GFP_KERNEL); in traceprobe_parse_probe_arg()
771 parg->name = kasprintf(GFP_KERNEL, "arg%d", i + 1); in traceprobe_parse_probe_arg()
774 if (!parg->name) in traceprobe_parse_probe_arg()
775 return -ENOMEM; in traceprobe_parse_probe_arg()
777 if (!is_good_name(parg->name)) { in traceprobe_parse_probe_arg()
779 return -EINVAL; in traceprobe_parse_probe_arg()
781 if (traceprobe_conflict_field_name(parg->name, tp->args, i)) { in traceprobe_parse_probe_arg()
783 return -EINVAL; in traceprobe_parse_probe_arg()
786 return traceprobe_parse_probe_arg_body(body, &tp->size, parg, flags, in traceprobe_parse_probe_arg()
787 body - arg); in traceprobe_parse_probe_arg()
792 struct fetch_insn *code = arg->code; in traceprobe_free_probe_arg()
794 while (code && code->op != FETCH_OP_END) { in traceprobe_free_probe_arg()
795 if (code->op == FETCH_NOP_SYMBOL || in traceprobe_free_probe_arg()
796 code->op == FETCH_OP_DATA) in traceprobe_free_probe_arg()
797 kfree(code->data); in traceprobe_free_probe_arg()
800 kfree(arg->code); in traceprobe_free_probe_arg()
801 kfree(arg->name); in traceprobe_free_probe_arg()
802 kfree(arg->comm); in traceprobe_free_probe_arg()
803 kfree(arg->fmt); in traceprobe_free_probe_arg()
808 struct fetch_insn *code = arg->code; in traceprobe_update_arg()
814 while (code && code->op != FETCH_OP_END) { in traceprobe_update_arg()
815 if (code->op == FETCH_NOP_SYMBOL) { in traceprobe_update_arg()
817 return -EINVAL; in traceprobe_update_arg()
819 tmp = strpbrk(code->data, "+-"); in traceprobe_update_arg()
822 ret = traceprobe_split_symbol_offset(code->data, in traceprobe_update_arg()
828 (unsigned long)kallsyms_lookup_name(code->data); in traceprobe_update_arg()
832 return -ENOENT; in traceprobe_update_arg()
841 #define LEN_OR_ZERO (len ? len - pos : 0)
842 static int __set_print_fmt(struct trace_probe *tp, char *buf, int len, in __set_print_fmt() argument
852 arg = "REC->" FIELD_STRING_IP; in __set_print_fmt()
854 fmt = "(%lx <- %lx)"; in __set_print_fmt()
855 arg = "REC->" FIELD_STRING_FUNC ", REC->" FIELD_STRING_RETIP; in __set_print_fmt()
860 for (i = 0; i < tp->nr_args; i++) { in __set_print_fmt()
861 parg = tp->args + i; in __set_print_fmt()
862 pos += snprintf(buf + pos, LEN_OR_ZERO, " %s=", parg->name); in __set_print_fmt()
863 if (parg->count) { in __set_print_fmt()
865 parg->type->fmt); in __set_print_fmt()
866 for (j = 1; j < parg->count; j++) in __set_print_fmt()
868 parg->type->fmt); in __set_print_fmt()
872 parg->type->fmt); in __set_print_fmt()
877 for (i = 0; i < tp->nr_args; i++) { in __set_print_fmt()
878 parg = tp->args + i; in __set_print_fmt()
879 if (parg->count) { in __set_print_fmt()
880 if ((strcmp(parg->type->name, "string") == 0) || in __set_print_fmt()
881 (strcmp(parg->type->name, "ustring") == 0)) in __set_print_fmt()
884 fmt = ", REC->%s[%d]"; in __set_print_fmt()
885 for (j = 0; j < parg->count; j++) in __set_print_fmt()
887 fmt, parg->name, j); in __set_print_fmt()
889 if ((strcmp(parg->type->name, "string") == 0) || in __set_print_fmt()
890 (strcmp(parg->type->name, "ustring") == 0)) in __set_print_fmt()
893 fmt = ", REC->%s"; in __set_print_fmt()
895 fmt, parg->name); in __set_print_fmt()
904 int traceprobe_set_print_fmt(struct trace_probe *tp, bool is_return) in traceprobe_set_print_fmt() argument
906 struct trace_event_call *call = trace_probe_event_call(tp); in traceprobe_set_print_fmt()
911 len = __set_print_fmt(tp, NULL, 0, is_return); in traceprobe_set_print_fmt()
914 return -ENOMEM; in traceprobe_set_print_fmt()
917 __set_print_fmt(tp, print_fmt, len + 1, is_return); in traceprobe_set_print_fmt()
918 call->print_fmt = print_fmt; in traceprobe_set_print_fmt()
924 size_t offset, struct trace_probe *tp) in traceprobe_define_arg_fields() argument
929 for (i = 0; i < tp->nr_args; i++) { in traceprobe_define_arg_fields()
930 struct probe_arg *parg = &tp->args[i]; in traceprobe_define_arg_fields()
931 const char *fmt = parg->type->fmttype; in traceprobe_define_arg_fields()
932 int size = parg->type->size; in traceprobe_define_arg_fields()
934 if (parg->fmt) in traceprobe_define_arg_fields()
935 fmt = parg->fmt; in traceprobe_define_arg_fields()
936 if (parg->count) in traceprobe_define_arg_fields()
937 size *= parg->count; in traceprobe_define_arg_fields()
938 ret = trace_define_field(event_call, fmt, parg->name, in traceprobe_define_arg_fields()
939 offset + parg->offset, size, in traceprobe_define_arg_fields()
940 parg->type->is_signed, in traceprobe_define_arg_fields()
950 kfree(tpe->class.system); in trace_probe_event_free()
951 kfree(tpe->call.name); in trace_probe_event_free()
952 kfree(tpe->call.print_fmt); in trace_probe_event_free()
956 int trace_probe_append(struct trace_probe *tp, struct trace_probe *to) in trace_probe_append() argument
958 if (trace_probe_has_sibling(tp)) in trace_probe_append()
959 return -EBUSY; in trace_probe_append()
961 list_del_init(&tp->list); in trace_probe_append()
962 trace_probe_event_free(tp->event); in trace_probe_append()
964 tp->event = to->event; in trace_probe_append()
965 list_add_tail(&tp->list, trace_probe_probe_list(to)); in trace_probe_append()
970 void trace_probe_unlink(struct trace_probe *tp) in trace_probe_unlink() argument
972 list_del_init(&tp->list); in trace_probe_unlink()
973 if (list_empty(trace_probe_probe_list(tp))) in trace_probe_unlink()
974 trace_probe_event_free(tp->event); in trace_probe_unlink()
975 tp->event = NULL; in trace_probe_unlink()
978 void trace_probe_cleanup(struct trace_probe *tp) in trace_probe_cleanup() argument
982 for (i = 0; i < tp->nr_args; i++) in trace_probe_cleanup()
983 traceprobe_free_probe_arg(&tp->args[i]); in trace_probe_cleanup()
985 if (tp->event) in trace_probe_cleanup()
986 trace_probe_unlink(tp); in trace_probe_cleanup()
989 int trace_probe_init(struct trace_probe *tp, const char *event, in trace_probe_init() argument
997 return -EINVAL; in trace_probe_init()
1002 tp->event = kzalloc(size, GFP_KERNEL); in trace_probe_init()
1003 if (!tp->event) in trace_probe_init()
1004 return -ENOMEM; in trace_probe_init()
1006 INIT_LIST_HEAD(&tp->event->files); in trace_probe_init()
1007 INIT_LIST_HEAD(&tp->event->class.fields); in trace_probe_init()
1008 INIT_LIST_HEAD(&tp->event->probes); in trace_probe_init()
1009 INIT_LIST_HEAD(&tp->list); in trace_probe_init()
1010 list_add(&tp->list, &tp->event->probes); in trace_probe_init()
1012 call = trace_probe_event_call(tp); in trace_probe_init()
1013 call->class = &tp->event->class; in trace_probe_init()
1014 call->name = kstrdup(event, GFP_KERNEL); in trace_probe_init()
1015 if (!call->name) { in trace_probe_init()
1016 ret = -ENOMEM; in trace_probe_init()
1020 tp->event->class.system = kstrdup(group, GFP_KERNEL); in trace_probe_init()
1021 if (!tp->event->class.system) { in trace_probe_init()
1022 ret = -ENOMEM; in trace_probe_init()
1029 trace_probe_cleanup(tp); in trace_probe_init()
1040 if (!tp_event->class->system || in find_trace_event_call()
1041 strcmp(system, tp_event->class->system)) in find_trace_event_call()
1052 int trace_probe_register_event_call(struct trace_probe *tp) in trace_probe_register_event_call() argument
1054 struct trace_event_call *call = trace_probe_event_call(tp); in trace_probe_register_event_call()
1059 if (find_trace_event_call(trace_probe_group_name(tp), in trace_probe_register_event_call()
1060 trace_probe_name(tp))) in trace_probe_register_event_call()
1061 return -EEXIST; in trace_probe_register_event_call()
1063 ret = register_trace_event(&call->event); in trace_probe_register_event_call()
1065 return -ENODEV; in trace_probe_register_event_call()
1069 unregister_trace_event(&call->event); in trace_probe_register_event_call()
1074 int trace_probe_add_file(struct trace_probe *tp, struct trace_event_file *file) in trace_probe_add_file() argument
1076 struct event_file_link *link; in trace_probe_add_file() local
1078 link = kmalloc(sizeof(*link), GFP_KERNEL); in trace_probe_add_file()
1079 if (!link) in trace_probe_add_file()
1080 return -ENOMEM; in trace_probe_add_file()
1082 link->file = file; in trace_probe_add_file()
1083 INIT_LIST_HEAD(&link->list); in trace_probe_add_file()
1084 list_add_tail_rcu(&link->list, &tp->event->files); in trace_probe_add_file()
1085 trace_probe_set_flag(tp, TP_FLAG_TRACE); in trace_probe_add_file()
1089 struct event_file_link *trace_probe_get_file_link(struct trace_probe *tp, in trace_probe_get_file_link() argument
1092 struct event_file_link *link; in trace_probe_get_file_link() local
1094 trace_probe_for_each_link(link, tp) { in trace_probe_get_file_link()
1095 if (link->file == file) in trace_probe_get_file_link()
1096 return link; in trace_probe_get_file_link()
1102 int trace_probe_remove_file(struct trace_probe *tp, in trace_probe_remove_file() argument
1105 struct event_file_link *link; in trace_probe_remove_file() local
1107 link = trace_probe_get_file_link(tp, file); in trace_probe_remove_file()
1108 if (!link) in trace_probe_remove_file()
1109 return -ENOENT; in trace_probe_remove_file()
1111 list_del_rcu(&link->list); in trace_probe_remove_file()
1113 kfree(link); in trace_probe_remove_file()
1115 if (list_empty(&tp->event->files)) in trace_probe_remove_file()
1116 trace_probe_clear_flag(tp, TP_FLAG_TRACE); in trace_probe_remove_file()
1130 if (a->nr_args < b->nr_args) in trace_probe_compare_arg_type()
1131 return a->nr_args + 1; in trace_probe_compare_arg_type()
1132 if (a->nr_args > b->nr_args) in trace_probe_compare_arg_type()
1133 return b->nr_args + 1; in trace_probe_compare_arg_type()
1135 for (i = 0; i < a->nr_args; i++) { in trace_probe_compare_arg_type()
1136 if ((b->nr_args <= i) || in trace_probe_compare_arg_type()
1137 ((a->args[i].type != b->args[i].type) || in trace_probe_compare_arg_type()
1138 (a->args[i].count != b->args[i].count) || in trace_probe_compare_arg_type()
1139 strcmp(a->args[i].name, b->args[i].name))) in trace_probe_compare_arg_type()
1146 bool trace_probe_match_command_args(struct trace_probe *tp, in trace_probe_match_command_args() argument
1152 if (tp->nr_args < argc) in trace_probe_match_command_args()
1157 tp->args[i].name, tp->args[i].comm); in trace_probe_match_command_args()