• Home
  • Raw
  • Download

Lines Matching refs:data

386 			     struct action_data *data, u64 *var_ref_vals);
506 struct track_data *data = kzalloc(sizeof(*data), GFP_KERNEL); in track_data_alloc() local
509 if (!data) in track_data_alloc()
512 data->key = kzalloc(key_len, GFP_KERNEL); in track_data_alloc()
513 if (!data->key) { in track_data_alloc()
514 track_data_free(data); in track_data_alloc()
518 data->key_len = key_len; in track_data_alloc()
519 data->action_data = action_data; in track_data_alloc()
520 data->hist_data = hist_data; in track_data_alloc()
524 track_data_free(data); in track_data_alloc()
528 data->elt.private_data = elt_data; in track_data_alloc()
532 track_data_free(data); in track_data_alloc()
536 return data; in track_data_alloc()
604 __data = probe_func_ptr->data; in trace_synth()
614 struct action_data *data, u64 *var_ref_vals) in action_trace() argument
616 struct synth_event *event = data->synth_event; in action_trace()
618 trace_synth(event, var_ref_vals, data->var_ref_idx); in action_trace()
972 struct action_data *data = hist_data->actions[i]; in find_match_var() local
974 if (data->handler == HANDLER_ONMATCH) { in find_match_var()
975 char *system = data->match_data.event_system; in find_match_var()
976 char *event_name = data->match_data.event; in find_match_var()
2662 struct action_data *data, u64 *var_ref_vals) in save_track_data_vars() argument
2820 struct action_data *data) in get_track_val() argument
2822 unsigned int track_var_idx = data->track_data.track_var->var.idx; in get_track_val()
2832 struct action_data *data, u64 var_val) in save_track_val() argument
2834 unsigned int track_var_idx = data->track_data.track_var->var.idx; in save_track_val()
2842 struct action_data *data, u64 *var_ref_vals) in save_track_data() argument
2844 if (data->track_data.save_data) in save_track_data()
2845 data->track_data.save_data(hist_data, elt, rec, rbe, key, data, var_ref_vals); in save_track_data()
2849 struct action_data *data, in check_track_val() argument
2855 hist_data = data->track_data.track_var->hist_data; in check_track_val()
2856 track_val = get_track_val(hist_data, elt, data); in check_track_val()
2858 return data->track_data.check_val(track_val, var_val); in check_track_val()
2898 struct action_data *data, in save_track_data_snapshot() argument
2923 struct action_data *data = hist_data->actions[i]; in snapshot_action() local
2925 if (data->action == ACTION_SNAPSHOT) in snapshot_action()
2926 return data; in snapshot_action()
2967 struct action_data *data, in save_track_data_snapshot() argument
2976 struct action_data *data) in track_data_print() argument
2978 u64 track_val = get_track_val(hist_data, elt, data); in track_data_print()
2981 if (data->handler == HANDLER_ONMAX) in track_data_print()
2983 else if (data->handler == HANDLER_ONCHANGE) in track_data_print()
2986 if (data->action == ACTION_SNAPSHOT) in track_data_print()
3009 struct action_data *data, u64 *var_ref_vals) in ontrack_action() argument
3011 u64 var_val = var_ref_vals[data->track_data.var_ref->var_ref_idx]; in ontrack_action()
3013 if (check_track_val(elt, data, var_val)) { in ontrack_action()
3014 save_track_val(hist_data, elt, data, var_val); in ontrack_action()
3015 save_track_data(hist_data, elt, rec, rbe, key, data, var_ref_vals); in ontrack_action()
3019 static void action_data_destroy(struct action_data *data) in action_data_destroy() argument
3025 kfree(data->action_name); in action_data_destroy()
3027 for (i = 0; i < data->n_params; i++) in action_data_destroy()
3028 kfree(data->params[i]); in action_data_destroy()
3030 if (data->synth_event) in action_data_destroy()
3031 data->synth_event->ref--; in action_data_destroy()
3033 kfree(data->synth_event_name); in action_data_destroy()
3035 kfree(data); in action_data_destroy()
3039 struct action_data *data) in track_data_destroy() argument
3043 destroy_hist_field(data->track_data.track_var, 0); in track_data_destroy()
3045 if (data->action == ACTION_SNAPSHOT) { in track_data_destroy()
3055 kfree(data->track_data.var_str); in track_data_destroy()
3057 action_data_destroy(data); in track_data_destroy()
3061 struct action_data *data);
3064 struct action_data *data) in track_data_create() argument
3072 track_data_var_str = data->track_data.var_str; in track_data_create()
3089 data->track_data.var_ref = ref_field; in track_data_create()
3091 if (data->handler == HANDLER_ONMAX) in track_data_create()
3099 if (data->handler == HANDLER_ONCHANGE) in track_data_create()
3106 data->track_data.track_var = track_var; in track_data_create()
3108 ret = action_create(hist_data, data); in track_data_create()
3114 struct action_data *data) in parse_action_params() argument
3121 if (data->n_params >= SYNTH_FIELDS_MAX) { in parse_action_params()
3147 if (first_param && data->use_trace_keyword) { in parse_action_params()
3148 data->synth_event_name = saved_param; in parse_action_params()
3154 data->params[data->n_params++] = saved_param; in parse_action_params()
3160 static int action_parse(struct trace_array *tr, char *str, struct action_data *data, in action_parse() argument
3189 ret = parse_action_params(tr, params, data); in action_parse()
3194 data->track_data.check_val = check_track_val_max; in action_parse()
3196 data->track_data.check_val = check_track_val_changed; in action_parse()
3203 data->track_data.save_data = save_track_data_vars; in action_parse()
3204 data->fn = ontrack_action; in action_parse()
3205 data->action = ACTION_SAVE; in action_parse()
3216 data->track_data.check_val = check_track_val_max; in action_parse()
3218 data->track_data.check_val = check_track_val_changed; in action_parse()
3225 data->track_data.save_data = save_track_data_snapshot; in action_parse()
3226 data->fn = ontrack_action; in action_parse()
3227 data->action = ACTION_SNAPSHOT; in action_parse()
3232 data->use_trace_keyword = true; in action_parse()
3235 ret = parse_action_params(tr, params, data); in action_parse()
3241 data->track_data.check_val = check_track_val_max; in action_parse()
3243 data->track_data.check_val = check_track_val_changed; in action_parse()
3246 data->track_data.save_data = action_trace; in action_parse()
3247 data->fn = ontrack_action; in action_parse()
3249 data->fn = action_trace; in action_parse()
3251 data->action = ACTION_TRACE; in action_parse()
3254 data->action_name = kstrdup(action_name, GFP_KERNEL); in action_parse()
3255 if (!data->action_name) { in action_parse()
3260 data->handler = handler; in action_parse()
3268 struct action_data *data; in track_data_parse() local
3272 data = kzalloc(sizeof(*data), GFP_KERNEL); in track_data_parse()
3273 if (!data) in track_data_parse()
3282 data->track_data.var_str = kstrdup(var_str, GFP_KERNEL); in track_data_parse()
3283 if (!data->track_data.var_str) { in track_data_parse()
3288 ret = action_parse(hist_data->event_file->tr, str, data, handler); in track_data_parse()
3292 return data; in track_data_parse()
3294 track_data_destroy(hist_data, data); in track_data_parse()
3295 data = ERR_PTR(ret); in track_data_parse()
3299 static void onmatch_destroy(struct action_data *data) in onmatch_destroy() argument
3301 kfree(data->match_data.event); in onmatch_destroy()
3302 kfree(data->match_data.event_system); in onmatch_destroy()
3304 action_data_destroy(data); in onmatch_destroy()
3370 struct action_data *data, in trace_action_find_var() argument
3380 if (!system && data->handler == HANDLER_ONMATCH) { in trace_action_find_var()
3381 system = data->match_data.event_system; in trace_action_find_var()
3382 event = data->match_data.event; in trace_action_find_var()
3396 struct action_data *data, char *system, in trace_action_create_field_var() argument
3420 if (!system && data->handler == HANDLER_ONMATCH) { in trace_action_create_field_var()
3421 system = data->match_data.event_system; in trace_action_create_field_var()
3422 event = data->match_data.event; in trace_action_create_field_var()
3447 struct action_data *data) in trace_action_create() argument
3461 if (data->n_params > SYNTH_FIELDS_MAX) in trace_action_create()
3464 if (data->use_trace_keyword) in trace_action_create()
3465 synth_event_name = data->synth_event_name; in trace_action_create()
3467 synth_event_name = data->action_name; in trace_action_create()
3477 for (i = 0; i < data->n_params; i++) { in trace_action_create()
3480 p = param = kstrdup(data->params[i], GFP_KERNEL); in trace_action_create()
3500 hist_field = trace_action_find_var(hist_data, data, in trace_action_create()
3505 data, in trace_action_create()
3532 data->var_ref_idx[i] = var_ref_idx; in trace_action_create()
3551 data->synth_event = event; in trace_action_create()
3561 struct action_data *data) in action_create() argument
3571 if (data->action == ACTION_TRACE) in action_create()
3572 return trace_action_create(hist_data, data); in action_create()
3574 if (data->action == ACTION_SNAPSHOT) { in action_create()
3575 track_data = track_data_alloc(hist_data->key_size, data, hist_data); in action_create()
3589 if (data->action == ACTION_SAVE) { in action_create()
3596 for (i = 0; i < data->n_params; i++) { in action_create()
3597 param = kstrdup(data->params[i], GFP_KERNEL); in action_create()
3623 struct action_data *data) in onmatch_create() argument
3625 return action_create(hist_data, data); in onmatch_create()
3631 struct action_data *data; in onmatch_parse() local
3634 data = kzalloc(sizeof(*data), GFP_KERNEL); in onmatch_parse()
3635 if (!data) in onmatch_parse()
3655 data->match_data.event = kstrdup(match_event, GFP_KERNEL); in onmatch_parse()
3656 if (!data->match_data.event) { in onmatch_parse()
3661 data->match_data.event_system = kstrdup(match_event_system, GFP_KERNEL); in onmatch_parse()
3662 if (!data->match_data.event_system) { in onmatch_parse()
3667 ret = action_parse(tr, str, data, HANDLER_ONMATCH); in onmatch_parse()
3671 return data; in onmatch_parse()
3673 onmatch_destroy(data); in onmatch_parse()
3674 data = ERR_PTR(ret); in onmatch_parse()
4110 struct action_data *data = hist_data->actions[i]; in destroy_actions() local
4112 if (data->handler == HANDLER_ONMATCH) in destroy_actions()
4113 onmatch_destroy(data); in destroy_actions()
4114 else if (data->handler == HANDLER_ONMAX || in destroy_actions()
4115 data->handler == HANDLER_ONCHANGE) in destroy_actions()
4116 track_data_destroy(hist_data, data); in destroy_actions()
4118 kfree(data); in destroy_actions()
4125 struct action_data *data; in parse_actions() local
4137 data = onmatch_parse(tr, action_str); in parse_actions()
4138 if (IS_ERR(data)) { in parse_actions()
4139 ret = PTR_ERR(data); in parse_actions()
4145 data = track_data_parse(hist_data, action_str, in parse_actions()
4147 if (IS_ERR(data)) { in parse_actions()
4148 ret = PTR_ERR(data); in parse_actions()
4154 data = track_data_parse(hist_data, action_str, in parse_actions()
4156 if (IS_ERR(data)) { in parse_actions()
4157 ret = PTR_ERR(data); in parse_actions()
4165 hist_data->actions[hist_data->n_actions++] = data; in parse_actions()
4173 struct action_data *data; in create_actions() local
4178 data = hist_data->actions[i]; in create_actions()
4180 if (data->handler == HANDLER_ONMATCH) { in create_actions()
4181 ret = onmatch_create(hist_data, data); in create_actions()
4184 } else if (data->handler == HANDLER_ONMAX || in create_actions()
4185 data->handler == HANDLER_ONCHANGE) { in create_actions()
4186 ret = track_data_create(hist_data, data); in create_actions()
4205 struct action_data *data = hist_data->actions[i]; in print_actions() local
4207 if (data->action == ACTION_SNAPSHOT) in print_actions()
4210 if (data->handler == HANDLER_ONMAX || in print_actions()
4211 data->handler == HANDLER_ONCHANGE) in print_actions()
4212 track_data_print(m, hist_data, elt, data); in print_actions()
4218 struct action_data *data) in print_action_spec() argument
4222 if (data->action == ACTION_SAVE) { in print_action_spec()
4228 } else if (data->action == ACTION_TRACE) { in print_action_spec()
4229 if (data->use_trace_keyword) in print_action_spec()
4230 seq_printf(m, "%s", data->synth_event_name); in print_action_spec()
4231 for (i = 0; i < data->n_params; i++) { in print_action_spec()
4232 if (i || data->use_trace_keyword) in print_action_spec()
4234 seq_printf(m, "%s", data->params[i]); in print_action_spec()
4241 struct action_data *data) in print_track_data_spec() argument
4243 if (data->handler == HANDLER_ONMAX) in print_track_data_spec()
4245 else if (data->handler == HANDLER_ONCHANGE) in print_track_data_spec()
4247 seq_printf(m, "%s", data->track_data.var_str); in print_track_data_spec()
4248 seq_printf(m, ").%s(", data->action_name); in print_track_data_spec()
4250 print_action_spec(m, hist_data, data); in print_track_data_spec()
4257 struct action_data *data) in print_onmatch_spec() argument
4259 seq_printf(m, ":onmatch(%s.%s).", data->match_data.event_system, in print_onmatch_spec()
4260 data->match_data.event); in print_onmatch_spec()
4262 seq_printf(m, "%s(", data->action_name); in print_onmatch_spec()
4264 print_action_spec(m, hist_data, data); in print_onmatch_spec()
4278 struct action_data *data = hist_data->actions[i]; in actions_match() local
4282 if (data->handler != data_test->handler) in actions_match()
4284 if (data->action != data_test->action) in actions_match()
4287 if (data->n_params != data_test->n_params) in actions_match()
4290 for (j = 0; j < data->n_params; j++) { in actions_match()
4291 if (strcmp(data->params[j], data_test->params[j]) != 0) in actions_match()
4295 if (data->use_trace_keyword) in actions_match()
4296 action_name = data->synth_event_name; in actions_match()
4298 action_name = data->action_name; in actions_match()
4308 if (data->handler == HANDLER_ONMATCH) { in actions_match()
4309 if (strcmp(data->match_data.event_system, in actions_match()
4312 if (strcmp(data->match_data.event, in actions_match()
4315 } else if (data->handler == HANDLER_ONMAX || in actions_match()
4316 data->handler == HANDLER_ONCHANGE) { in actions_match()
4317 if (strcmp(data->track_data.var_str, in actions_match()
4333 struct action_data *data = hist_data->actions[i]; in print_actions_spec() local
4335 if (data->handler == HANDLER_ONMATCH) in print_actions_spec()
4336 print_onmatch_spec(m, hist_data, data); in print_actions_spec()
4337 else if (data->handler == HANDLER_ONMAX || in print_actions_spec()
4338 data->handler == HANDLER_ONCHANGE) in print_actions_spec()
4339 print_track_data_spec(m, hist_data, data); in print_actions_spec()
4553 struct action_data *data; in hist_trigger_actions() local
4557 data = hist_data->actions[i]; in hist_trigger_actions()
4558 data->fn(hist_data, elt, rec, rbe, key, data, var_ref_vals); in hist_trigger_actions()
4562 static void event_hist_trigger(struct event_trigger_data *data, void *rec, in event_hist_trigger() argument
4565 struct hist_trigger_data *hist_data = data->private_data; in event_hist_trigger()
4773 struct event_trigger_data *data, int n) in hist_trigger_show() argument
4782 data->ops->print(m, data->ops, data); in hist_trigger_show()
4785 hist_data = data->private_data; in hist_trigger_show()
4799 struct event_trigger_data *data; in hist_show() local
4811 list_for_each_entry(data, &event_file->triggers, list) { in hist_show()
4812 if (data->cmd_ops->trigger_type == ETT_EVENT_HIST) in hist_show()
4813 hist_trigger_show(m, data, n++); in hist_show()
4942 struct action_data *data, int i) in hist_action_debug_show() argument
4946 if (data->handler == HANDLER_ONMAX || in hist_action_debug_show()
4947 data->handler == HANDLER_ONCHANGE) { in hist_action_debug_show()
4949 ret = hist_field_debug_show(m, data->track_data.var_ref, in hist_action_debug_show()
4955 ret = hist_field_debug_show(m, data->track_data.track_var, in hist_action_debug_show()
4961 if (data->handler == HANDLER_ONMATCH) { in hist_action_debug_show()
4963 i, data->match_data.event_system); in hist_action_debug_show()
4965 i, data->match_data.event); in hist_action_debug_show()
5000 struct event_trigger_data *data, int n) in hist_trigger_debug_show() argument
5009 data->ops->print(m, data->ops, data); in hist_trigger_debug_show()
5012 hist_data = data->private_data; in hist_trigger_debug_show()
5071 struct event_trigger_data *data; in hist_debug_show() local
5083 list_for_each_entry(data, &event_file->triggers, list) { in hist_debug_show()
5084 if (data->cmd_ops->trigger_type == ETT_EVENT_HIST) in hist_debug_show()
5085 hist_trigger_debug_show(m, data, n++); in hist_debug_show()
5143 struct event_trigger_data *data) in event_hist_trigger_print() argument
5145 struct hist_trigger_data *hist_data = data->private_data; in event_hist_trigger_print()
5152 if (data->name) in event_hist_trigger_print()
5153 seq_printf(m, "%s:", data->name); in event_hist_trigger_print()
5237 if (data->filter_str) in event_hist_trigger_print()
5238 seq_printf(m, " if %s", data->filter_str); in event_hist_trigger_print()
5240 if (data->paused) in event_hist_trigger_print()
5251 struct event_trigger_data *data) in event_hist_trigger_init() argument
5253 struct hist_trigger_data *hist_data = data->private_data; in event_hist_trigger_init()
5255 if (!data->ref && hist_data->attrs->name) in event_hist_trigger_init()
5256 save_named_trigger(hist_data->attrs->name, data); in event_hist_trigger_init()
5258 data->ref++; in event_hist_trigger_init()
5279 struct event_trigger_data *data) in event_hist_trigger_free() argument
5281 struct hist_trigger_data *hist_data = data->private_data; in event_hist_trigger_free()
5283 if (WARN_ON_ONCE(data->ref <= 0)) in event_hist_trigger_free()
5286 data->ref--; in event_hist_trigger_free()
5287 if (!data->ref) { in event_hist_trigger_free()
5288 if (data->name) in event_hist_trigger_free()
5289 del_named_trigger(data); in event_hist_trigger_free()
5291 trigger_data_free(data); in event_hist_trigger_free()
5309 struct event_trigger_data *data) in event_hist_trigger_named_init() argument
5311 data->ref++; in event_hist_trigger_named_init()
5313 save_named_trigger(data->named_data->name, data); in event_hist_trigger_named_init()
5315 event_hist_trigger_init(ops, data->named_data); in event_hist_trigger_named_init()
5321 struct event_trigger_data *data) in event_hist_trigger_named_free() argument
5323 if (WARN_ON_ONCE(data->ref <= 0)) in event_hist_trigger_named_free()
5326 event_hist_trigger_free(ops, data->named_data); in event_hist_trigger_named_free()
5328 data->ref--; in event_hist_trigger_named_free()
5329 if (!data->ref) { in event_hist_trigger_named_free()
5330 del_named_trigger(data); in event_hist_trigger_named_free()
5331 trigger_data_free(data); in event_hist_trigger_named_free()
5348 static void hist_clear(struct event_trigger_data *data) in hist_clear() argument
5350 struct hist_trigger_data *hist_data = data->private_data; in hist_clear()
5352 if (data->name) in hist_clear()
5353 pause_named_trigger(data); in hist_clear()
5359 if (data->name) in hist_clear()
5360 unpause_named_trigger(data); in hist_clear()
5382 static bool hist_trigger_match(struct event_trigger_data *data, in hist_trigger_match() argument
5399 hist_data = data->private_data; in hist_trigger_match()
5408 if ((data->filter_str && !data_test->filter_str) || in hist_trigger_match()
5409 (!data->filter_str && data_test->filter_str)) in hist_trigger_match()
5443 if (!ignore_filter && data->filter_str && in hist_trigger_match()
5444 (strcmp(data->filter_str, data_test->filter_str) != 0)) in hist_trigger_match()
5454 struct event_trigger_data *data, in hist_register_trigger() argument
5457 struct hist_trigger_data *hist_data = data->private_data; in hist_register_trigger()
5465 if (!hist_trigger_match(data, named_data, named_data, in hist_register_trigger()
5481 if (!hist_trigger_match(data, test, named_data, false)) in hist_register_trigger()
5504 data->paused = true; in hist_register_trigger()
5507 data->private_data = named_data->private_data; in hist_register_trigger()
5508 set_named_trigger_data(data, named_data); in hist_register_trigger()
5509 data->ops = &event_hist_trigger_named_ops; in hist_register_trigger()
5512 if (data->ops->init) { in hist_register_trigger()
5513 ret = data->ops->init(data->ops, data); in hist_register_trigger()
5538 static int hist_trigger_enable(struct event_trigger_data *data, in hist_trigger_enable() argument
5543 list_add_tail_rcu(&data->list, &file->triggers); in hist_trigger_enable()
5548 list_del_rcu(&data->list); in hist_trigger_enable()
5556 static bool have_hist_trigger_match(struct event_trigger_data *data, in have_hist_trigger_match() argument
5559 struct hist_trigger_data *hist_data = data->private_data; in have_hist_trigger_match()
5570 if (hist_trigger_match(data, test, named_data, false)) { in have_hist_trigger_match()
5580 static bool hist_trigger_check_refs(struct event_trigger_data *data, in hist_trigger_check_refs() argument
5583 struct hist_trigger_data *hist_data = data->private_data; in hist_trigger_check_refs()
5593 if (!hist_trigger_match(data, test, named_data, false)) in hist_trigger_check_refs()
5606 struct event_trigger_data *data, in hist_unregister_trigger() argument
5609 struct hist_trigger_data *hist_data = data->private_data; in hist_unregister_trigger()
5620 if (!hist_trigger_match(data, test, named_data, false)) in hist_unregister_trigger()
5886 hist_enable_trigger(struct event_trigger_data *data, void *rec, in hist_enable_trigger() argument
5889 struct enable_trigger_data *enable_data = data->private_data; in hist_enable_trigger()
5904 hist_enable_count_trigger(struct event_trigger_data *data, void *rec, in hist_enable_count_trigger() argument
5907 if (!data->count) in hist_enable_count_trigger()
5910 if (data->count != -1) in hist_enable_count_trigger()
5911 (data->count)--; in hist_enable_count_trigger()
5913 hist_enable_trigger(data, rec, event); in hist_enable_count_trigger()