Lines Matching refs:data
589 struct action_data *data, u64 *var_ref_vals);
729 struct track_data *data = kzalloc(sizeof(*data), GFP_KERNEL); in track_data_alloc() local
732 if (!data) in track_data_alloc()
735 data->key = kzalloc(key_len, GFP_KERNEL); in track_data_alloc()
736 if (!data->key) { in track_data_alloc()
737 track_data_free(data); in track_data_alloc()
741 data->key_len = key_len; in track_data_alloc()
742 data->action_data = action_data; in track_data_alloc()
743 data->hist_data = hist_data; in track_data_alloc()
747 track_data_free(data); in track_data_alloc()
751 data->elt.private_data = elt_data; in track_data_alloc()
755 track_data_free(data); in track_data_alloc()
759 return data; in track_data_alloc()
839 __data = probe_func_ptr->data; in trace_synth()
850 struct action_data *data, u64 *var_ref_vals) in action_trace() argument
852 struct synth_event *event = data->synth_event; in action_trace()
854 trace_synth(event, var_ref_vals, data->var_ref_idx); in action_trace()
1219 struct action_data *data = hist_data->actions[i]; in find_match_var() local
1221 if (data->handler == HANDLER_ONMATCH) { in find_match_var()
1222 char *system = data->match_data.event_system; in find_match_var()
1223 char *event_name = data->match_data.event; in find_match_var()
3201 struct action_data *data, u64 *var_ref_vals) in save_track_data_vars() argument
3359 struct action_data *data) in get_track_val() argument
3361 unsigned int track_var_idx = data->track_data.track_var->var.idx; in get_track_val()
3371 struct action_data *data, u64 var_val) in save_track_val() argument
3373 unsigned int track_var_idx = data->track_data.track_var->var.idx; in save_track_val()
3382 struct action_data *data, u64 *var_ref_vals) in save_track_data() argument
3384 if (data->track_data.save_data) in save_track_data()
3385 data->track_data.save_data(hist_data, elt, buffer, rec, rbe, in save_track_data()
3386 key, data, var_ref_vals); in save_track_data()
3390 struct action_data *data, in check_track_val() argument
3396 hist_data = data->track_data.track_var->hist_data; in check_track_val()
3397 track_val = get_track_val(hist_data, elt, data); in check_track_val()
3399 return data->track_data.check_val(track_val, var_val); in check_track_val()
3440 struct action_data *data, in save_track_data_snapshot() argument
3465 struct action_data *data = hist_data->actions[i]; in snapshot_action() local
3467 if (data->action == ACTION_SNAPSHOT) in snapshot_action()
3468 return data; in snapshot_action()
3510 struct action_data *data, in save_track_data_snapshot() argument
3519 struct action_data *data) in track_data_print() argument
3521 u64 track_val = get_track_val(hist_data, elt, data); in track_data_print()
3524 if (data->handler == HANDLER_ONMAX) in track_data_print()
3526 else if (data->handler == HANDLER_ONCHANGE) in track_data_print()
3529 if (data->action == ACTION_SNAPSHOT) in track_data_print()
3553 struct action_data *data, u64 *var_ref_vals) in ontrack_action() argument
3555 u64 var_val = var_ref_vals[data->track_data.var_ref->var_ref_idx]; in ontrack_action()
3557 if (check_track_val(elt, data, var_val)) { in ontrack_action()
3558 save_track_val(hist_data, elt, data, var_val); in ontrack_action()
3560 key, data, var_ref_vals); in ontrack_action()
3564 static void action_data_destroy(struct action_data *data) in action_data_destroy() argument
3570 kfree(data->action_name); in action_data_destroy()
3572 for (i = 0; i < data->n_params; i++) in action_data_destroy()
3573 kfree(data->params[i]); in action_data_destroy()
3575 if (data->synth_event) in action_data_destroy()
3576 data->synth_event->ref--; in action_data_destroy()
3578 kfree(data->synth_event_name); in action_data_destroy()
3580 kfree(data); in action_data_destroy()
3584 struct action_data *data) in track_data_destroy() argument
3588 destroy_hist_field(data->track_data.track_var, 0); in track_data_destroy()
3590 if (data->action == ACTION_SNAPSHOT) { in track_data_destroy()
3600 kfree(data->track_data.var_str); in track_data_destroy()
3602 action_data_destroy(data); in track_data_destroy()
3606 struct action_data *data);
3609 struct action_data *data) in track_data_create() argument
3617 track_data_var_str = data->track_data.var_str; in track_data_create()
3634 data->track_data.var_ref = ref_field; in track_data_create()
3636 if (data->handler == HANDLER_ONMAX) in track_data_create()
3644 if (data->handler == HANDLER_ONCHANGE) in track_data_create()
3651 data->track_data.track_var = track_var; in track_data_create()
3653 ret = action_create(hist_data, data); in track_data_create()
3659 struct action_data *data) in parse_action_params() argument
3666 if (data->n_params >= SYNTH_FIELDS_MAX) { in parse_action_params()
3692 if (first_param && data->use_trace_keyword) { in parse_action_params()
3693 data->synth_event_name = saved_param; in parse_action_params()
3699 data->params[data->n_params++] = saved_param; in parse_action_params()
3705 static int action_parse(struct trace_array *tr, char *str, struct action_data *data, in action_parse() argument
3734 ret = parse_action_params(tr, params, data); in action_parse()
3739 data->track_data.check_val = check_track_val_max; in action_parse()
3741 data->track_data.check_val = check_track_val_changed; in action_parse()
3748 data->track_data.save_data = save_track_data_vars; in action_parse()
3749 data->fn = ontrack_action; in action_parse()
3750 data->action = ACTION_SAVE; in action_parse()
3761 data->track_data.check_val = check_track_val_max; in action_parse()
3763 data->track_data.check_val = check_track_val_changed; in action_parse()
3770 data->track_data.save_data = save_track_data_snapshot; in action_parse()
3771 data->fn = ontrack_action; in action_parse()
3772 data->action = ACTION_SNAPSHOT; in action_parse()
3777 data->use_trace_keyword = true; in action_parse()
3780 ret = parse_action_params(tr, params, data); in action_parse()
3786 data->track_data.check_val = check_track_val_max; in action_parse()
3788 data->track_data.check_val = check_track_val_changed; in action_parse()
3791 data->track_data.save_data = action_trace; in action_parse()
3792 data->fn = ontrack_action; in action_parse()
3794 data->fn = action_trace; in action_parse()
3796 data->action = ACTION_TRACE; in action_parse()
3799 data->action_name = kstrdup(action_name, GFP_KERNEL); in action_parse()
3800 if (!data->action_name) { in action_parse()
3805 data->handler = handler; in action_parse()
3813 struct action_data *data; in track_data_parse() local
3817 data = kzalloc(sizeof(*data), GFP_KERNEL); in track_data_parse()
3818 if (!data) in track_data_parse()
3827 data->track_data.var_str = kstrdup(var_str, GFP_KERNEL); in track_data_parse()
3828 if (!data->track_data.var_str) { in track_data_parse()
3833 ret = action_parse(hist_data->event_file->tr, str, data, handler); in track_data_parse()
3837 return data; in track_data_parse()
3839 track_data_destroy(hist_data, data); in track_data_parse()
3840 data = ERR_PTR(ret); in track_data_parse()
3844 static void onmatch_destroy(struct action_data *data) in onmatch_destroy() argument
3846 kfree(data->match_data.event); in onmatch_destroy()
3847 kfree(data->match_data.event_system); in onmatch_destroy()
3849 action_data_destroy(data); in onmatch_destroy()
3919 struct action_data *data, in trace_action_find_var() argument
3929 if (!system && data->handler == HANDLER_ONMATCH) { in trace_action_find_var()
3930 system = data->match_data.event_system; in trace_action_find_var()
3931 event = data->match_data.event; in trace_action_find_var()
3945 struct action_data *data, char *system, in trace_action_create_field_var() argument
3969 if (!system && data->handler == HANDLER_ONMATCH) { in trace_action_create_field_var()
3970 system = data->match_data.event_system; in trace_action_create_field_var()
3971 event = data->match_data.event; in trace_action_create_field_var()
3996 struct action_data *data) in trace_action_create() argument
4010 if (data->n_params > SYNTH_FIELDS_MAX) in trace_action_create()
4013 if (data->use_trace_keyword) in trace_action_create()
4014 synth_event_name = data->synth_event_name; in trace_action_create()
4016 synth_event_name = data->action_name; in trace_action_create()
4026 for (i = 0; i < data->n_params; i++) { in trace_action_create()
4029 p = param = kstrdup(data->params[i], GFP_KERNEL); in trace_action_create()
4049 hist_field = trace_action_find_var(hist_data, data, in trace_action_create()
4054 data, in trace_action_create()
4081 data->var_ref_idx[i] = var_ref_idx; in trace_action_create()
4100 data->synth_event = event; in trace_action_create()
4110 struct action_data *data) in action_create() argument
4120 if (data->action == ACTION_TRACE) in action_create()
4121 return trace_action_create(hist_data, data); in action_create()
4123 if (data->action == ACTION_SNAPSHOT) { in action_create()
4124 track_data = track_data_alloc(hist_data->key_size, data, hist_data); in action_create()
4138 if (data->action == ACTION_SAVE) { in action_create()
4145 for (i = 0; i < data->n_params; i++) { in action_create()
4146 param = kstrdup(data->params[i], GFP_KERNEL); in action_create()
4173 struct action_data *data) in onmatch_create() argument
4175 return action_create(hist_data, data); in onmatch_create()
4181 struct action_data *data; in onmatch_parse() local
4184 data = kzalloc(sizeof(*data), GFP_KERNEL); in onmatch_parse()
4185 if (!data) in onmatch_parse()
4205 data->match_data.event = kstrdup(match_event, GFP_KERNEL); in onmatch_parse()
4206 if (!data->match_data.event) { in onmatch_parse()
4211 data->match_data.event_system = kstrdup(match_event_system, GFP_KERNEL); in onmatch_parse()
4212 if (!data->match_data.event_system) { in onmatch_parse()
4217 ret = action_parse(tr, str, data, HANDLER_ONMATCH); in onmatch_parse()
4221 return data; in onmatch_parse()
4223 onmatch_destroy(data); in onmatch_parse()
4224 data = ERR_PTR(ret); in onmatch_parse()
4809 struct action_data *data = hist_data->actions[i]; in destroy_actions() local
4811 if (data->handler == HANDLER_ONMATCH) in destroy_actions()
4812 onmatch_destroy(data); in destroy_actions()
4813 else if (data->handler == HANDLER_ONMAX || in destroy_actions()
4814 data->handler == HANDLER_ONCHANGE) in destroy_actions()
4815 track_data_destroy(hist_data, data); in destroy_actions()
4817 kfree(data); in destroy_actions()
4824 struct action_data *data; in parse_actions() local
4847 data = onmatch_parse(tr, action_str); in parse_actions()
4851 data = track_data_parse(hist_data, action_str, hid); in parse_actions()
4854 data = ERR_PTR(-EINVAL); in parse_actions()
4858 if (IS_ERR(data)) { in parse_actions()
4859 ret = PTR_ERR(data); in parse_actions()
4863 hist_data->actions[hist_data->n_actions++] = data; in parse_actions()
4871 struct action_data *data; in create_actions() local
4876 data = hist_data->actions[i]; in create_actions()
4878 if (data->handler == HANDLER_ONMATCH) { in create_actions()
4879 ret = onmatch_create(hist_data, data); in create_actions()
4882 } else if (data->handler == HANDLER_ONMAX || in create_actions()
4883 data->handler == HANDLER_ONCHANGE) { in create_actions()
4884 ret = track_data_create(hist_data, data); in create_actions()
4903 struct action_data *data = hist_data->actions[i]; in print_actions() local
4905 if (data->action == ACTION_SNAPSHOT) in print_actions()
4908 if (data->handler == HANDLER_ONMAX || in print_actions()
4909 data->handler == HANDLER_ONCHANGE) in print_actions()
4910 track_data_print(m, hist_data, elt, data); in print_actions()
4916 struct action_data *data) in print_action_spec() argument
4920 if (data->action == ACTION_SAVE) { in print_action_spec()
4926 } else if (data->action == ACTION_TRACE) { in print_action_spec()
4927 if (data->use_trace_keyword) in print_action_spec()
4928 seq_printf(m, "%s", data->synth_event_name); in print_action_spec()
4929 for (i = 0; i < data->n_params; i++) { in print_action_spec()
4930 if (i || data->use_trace_keyword) in print_action_spec()
4932 seq_printf(m, "%s", data->params[i]); in print_action_spec()
4939 struct action_data *data) in print_track_data_spec() argument
4941 if (data->handler == HANDLER_ONMAX) in print_track_data_spec()
4943 else if (data->handler == HANDLER_ONCHANGE) in print_track_data_spec()
4945 seq_printf(m, "%s", data->track_data.var_str); in print_track_data_spec()
4946 seq_printf(m, ").%s(", data->action_name); in print_track_data_spec()
4948 print_action_spec(m, hist_data, data); in print_track_data_spec()
4955 struct action_data *data) in print_onmatch_spec() argument
4957 seq_printf(m, ":onmatch(%s.%s).", data->match_data.event_system, in print_onmatch_spec()
4958 data->match_data.event); in print_onmatch_spec()
4960 seq_printf(m, "%s(", data->action_name); in print_onmatch_spec()
4962 print_action_spec(m, hist_data, data); in print_onmatch_spec()
4976 struct action_data *data = hist_data->actions[i]; in actions_match() local
4980 if (data->handler != data_test->handler) in actions_match()
4982 if (data->action != data_test->action) in actions_match()
4985 if (data->n_params != data_test->n_params) in actions_match()
4988 for (j = 0; j < data->n_params; j++) { in actions_match()
4989 if (strcmp(data->params[j], data_test->params[j]) != 0) in actions_match()
4993 if (data->use_trace_keyword) in actions_match()
4994 action_name = data->synth_event_name; in actions_match()
4996 action_name = data->action_name; in actions_match()
5006 if (data->handler == HANDLER_ONMATCH) { in actions_match()
5007 if (strcmp(data->match_data.event_system, in actions_match()
5010 if (strcmp(data->match_data.event, in actions_match()
5013 } else if (data->handler == HANDLER_ONMAX || in actions_match()
5014 data->handler == HANDLER_ONCHANGE) { in actions_match()
5015 if (strcmp(data->track_data.var_str, in actions_match()
5031 struct action_data *data = hist_data->actions[i]; in print_actions_spec() local
5033 if (data->handler == HANDLER_ONMATCH) in print_actions_spec()
5034 print_onmatch_spec(m, hist_data, data); in print_actions_spec()
5035 else if (data->handler == HANDLER_ONMAX || in print_actions_spec()
5036 data->handler == HANDLER_ONCHANGE) in print_actions_spec()
5037 print_track_data_spec(m, hist_data, data); in print_actions_spec()
5269 struct action_data *data; in hist_trigger_actions() local
5273 data = hist_data->actions[i]; in hist_trigger_actions()
5274 data->fn(hist_data, elt, buffer, rec, rbe, key, data, var_ref_vals); in hist_trigger_actions()
5357 static void event_hist_trigger(struct event_trigger_data *data, in event_hist_trigger() argument
5361 struct hist_trigger_data *hist_data = data->private_data; in event_hist_trigger()
5688 struct event_trigger_data *data, int n) in hist_trigger_show() argument
5697 data->ops->print(m, data); in hist_trigger_show()
5700 hist_data = data->private_data; in hist_trigger_show()
5721 struct event_trigger_data *data; in get_hist_hit_count() local
5724 list_for_each_entry(data, &event_file->triggers, list) { in get_hist_hit_count()
5725 if (data->cmd_ops->trigger_type == ETT_EVENT_HIST) { in get_hist_hit_count()
5726 hist_data = data->private_data; in get_hist_hit_count()
5736 struct event_trigger_data *data; in hist_show() local
5746 list_for_each_entry(data, &event_file->triggers, list) { in hist_show()
5747 if (data->cmd_ops->trigger_type == ETT_EVENT_HIST) in hist_show()
5748 hist_trigger_show(m, data, n++); in hist_show()
5952 struct action_data *data, int i) in hist_action_debug_show() argument
5956 if (data->handler == HANDLER_ONMAX || in hist_action_debug_show()
5957 data->handler == HANDLER_ONCHANGE) { in hist_action_debug_show()
5959 ret = hist_field_debug_show(m, data->track_data.var_ref, in hist_action_debug_show()
5965 ret = hist_field_debug_show(m, data->track_data.track_var, in hist_action_debug_show()
5971 if (data->handler == HANDLER_ONMATCH) { in hist_action_debug_show()
5973 i, data->match_data.event_system); in hist_action_debug_show()
5975 i, data->match_data.event); in hist_action_debug_show()
6010 struct event_trigger_data *data, int n) in hist_trigger_debug_show() argument
6019 data->ops->print(m, data); in hist_trigger_debug_show()
6022 hist_data = data->private_data; in hist_trigger_debug_show()
6081 struct event_trigger_data *data; in hist_debug_show() local
6091 list_for_each_entry(data, &event_file->triggers, list) { in hist_debug_show()
6092 if (data->cmd_ops->trigger_type == ETT_EVENT_HIST) in hist_debug_show()
6093 hist_trigger_debug_show(m, data, n++); in hist_debug_show()
6158 struct event_trigger_data *data) in event_hist_trigger_print() argument
6160 struct hist_trigger_data *hist_data = data->private_data; in event_hist_trigger_print()
6168 if (data->name) in event_hist_trigger_print()
6169 seq_printf(m, "%s:", data->name); in event_hist_trigger_print()
6262 if (data->filter_str) in event_hist_trigger_print()
6263 seq_printf(m, " if %s", data->filter_str); in event_hist_trigger_print()
6265 if (data->paused) in event_hist_trigger_print()
6275 static int event_hist_trigger_init(struct event_trigger_data *data) in event_hist_trigger_init() argument
6277 struct hist_trigger_data *hist_data = data->private_data; in event_hist_trigger_init()
6282 if (!data->ref && hist_data->attrs->name) in event_hist_trigger_init()
6283 save_named_trigger(hist_data->attrs->name, data); in event_hist_trigger_init()
6285 data->ref++; in event_hist_trigger_init()
6306 static void event_hist_trigger_free(struct event_trigger_data *data) in event_hist_trigger_free() argument
6308 struct hist_trigger_data *hist_data = data->private_data; in event_hist_trigger_free()
6310 if (WARN_ON_ONCE(data->ref <= 0)) in event_hist_trigger_free()
6313 data->ref--; in event_hist_trigger_free()
6314 if (!data->ref) { in event_hist_trigger_free()
6315 if (data->name) in event_hist_trigger_free()
6316 del_named_trigger(data); in event_hist_trigger_free()
6318 trigger_data_free(data); in event_hist_trigger_free()
6336 static int event_hist_trigger_named_init(struct event_trigger_data *data) in event_hist_trigger_named_init() argument
6338 data->ref++; in event_hist_trigger_named_init()
6340 save_named_trigger(data->named_data->name, data); in event_hist_trigger_named_init()
6342 return event_hist_trigger_init(data->named_data); in event_hist_trigger_named_init()
6345 static void event_hist_trigger_named_free(struct event_trigger_data *data) in event_hist_trigger_named_free() argument
6347 if (WARN_ON_ONCE(data->ref <= 0)) in event_hist_trigger_named_free()
6350 event_hist_trigger_free(data->named_data); in event_hist_trigger_named_free()
6352 data->ref--; in event_hist_trigger_named_free()
6353 if (!data->ref) { in event_hist_trigger_named_free()
6354 del_named_trigger(data); in event_hist_trigger_named_free()
6355 trigger_data_free(data); in event_hist_trigger_named_free()
6372 static void hist_clear(struct event_trigger_data *data) in hist_clear() argument
6374 struct hist_trigger_data *hist_data = data->private_data; in hist_clear()
6376 if (data->name) in hist_clear()
6377 pause_named_trigger(data); in hist_clear()
6383 if (data->name) in hist_clear()
6384 unpause_named_trigger(data); in hist_clear()
6406 static bool hist_trigger_match(struct event_trigger_data *data, in hist_trigger_match() argument
6423 hist_data = data->private_data; in hist_trigger_match()
6432 if ((data->filter_str && !data_test->filter_str) || in hist_trigger_match()
6433 (!data->filter_str && data_test->filter_str)) in hist_trigger_match()
6467 if (!ignore_filter && data->filter_str && in hist_trigger_match()
6468 (strcmp(data->filter_str, data_test->filter_str) != 0)) in hist_trigger_match()
6478 struct event_trigger_data *data, in existing_hist_update_only() argument
6481 struct hist_trigger_data *hist_data = data->private_data; in existing_hist_update_only()
6492 if (!hist_trigger_match(data, named_data, named_data, in existing_hist_update_only()
6503 if (!hist_trigger_match(data, test, named_data, false)) in existing_hist_update_only()
6520 struct event_trigger_data *data, in hist_register_trigger() argument
6523 struct hist_trigger_data *hist_data = data->private_data; in hist_register_trigger()
6531 if (!hist_trigger_match(data, named_data, named_data, in hist_register_trigger()
6547 if (hist_trigger_match(data, test, named_data, false)) { in hist_register_trigger()
6562 data->paused = true; in hist_register_trigger()
6565 data->private_data = named_data->private_data; in hist_register_trigger()
6566 set_named_trigger_data(data, named_data); in hist_register_trigger()
6567 data->ops = &event_hist_trigger_named_ops; in hist_register_trigger()
6570 if (data->ops->init) { in hist_register_trigger()
6571 ret = data->ops->init(data); in hist_register_trigger()
6594 static int hist_trigger_enable(struct event_trigger_data *data, in hist_trigger_enable() argument
6599 list_add_tail_rcu(&data->list, &file->triggers); in hist_trigger_enable()
6604 list_del_rcu(&data->list); in hist_trigger_enable()
6612 static bool have_hist_trigger_match(struct event_trigger_data *data, in have_hist_trigger_match() argument
6615 struct hist_trigger_data *hist_data = data->private_data; in have_hist_trigger_match()
6626 if (hist_trigger_match(data, test, named_data, false)) { in have_hist_trigger_match()
6636 static bool hist_trigger_check_refs(struct event_trigger_data *data, in hist_trigger_check_refs() argument
6639 struct hist_trigger_data *hist_data = data->private_data; in hist_trigger_check_refs()
6649 if (!hist_trigger_match(data, test, named_data, false)) in hist_trigger_check_refs()
6662 struct event_trigger_data *data, in hist_unregister_trigger() argument
6666 struct hist_trigger_data *hist_data = data->private_data; in hist_unregister_trigger()
6675 if (!hist_trigger_match(data, iter, named_data, false)) in hist_unregister_trigger()
6930 hist_enable_trigger(struct event_trigger_data *data, in hist_enable_trigger() argument
6934 struct enable_trigger_data *enable_data = data->private_data; in hist_enable_trigger()
6949 hist_enable_count_trigger(struct event_trigger_data *data, in hist_enable_count_trigger() argument
6953 if (!data->count) in hist_enable_count_trigger()
6956 if (data->count != -1) in hist_enable_count_trigger()
6957 (data->count)--; in hist_enable_count_trigger()
6959 hist_enable_trigger(data, buffer, rec, event); in hist_enable_count_trigger()