Lines Matching refs:data
539 struct action_data *data, u64 *var_ref_vals);
679 struct track_data *data = kzalloc(sizeof(*data), GFP_KERNEL); in track_data_alloc() local
682 if (!data) in track_data_alloc()
685 data->key = kzalloc(key_len, GFP_KERNEL); in track_data_alloc()
686 if (!data->key) { in track_data_alloc()
687 track_data_free(data); in track_data_alloc()
691 data->key_len = key_len; in track_data_alloc()
692 data->action_data = action_data; in track_data_alloc()
693 data->hist_data = hist_data; in track_data_alloc()
697 track_data_free(data); in track_data_alloc()
701 data->elt.private_data = elt_data; in track_data_alloc()
705 track_data_free(data); in track_data_alloc()
709 return data; in track_data_alloc()
777 __data = probe_func_ptr->data; in trace_synth()
788 struct action_data *data, u64 *var_ref_vals) in action_trace() argument
790 struct synth_event *event = data->synth_event; in action_trace()
792 trace_synth(event, var_ref_vals, data->var_ref_idx); in action_trace()
1148 struct action_data *data = hist_data->actions[i]; in find_match_var() local
1150 if (data->handler == HANDLER_ONMATCH) { in find_match_var()
1151 char *system = data->match_data.event_system; in find_match_var()
1152 char *event_name = data->match_data.event; in find_match_var()
3065 struct action_data *data, u64 *var_ref_vals) in save_track_data_vars() argument
3223 struct action_data *data) in get_track_val() argument
3225 unsigned int track_var_idx = data->track_data.track_var->var.idx; in get_track_val()
3235 struct action_data *data, u64 var_val) in save_track_val() argument
3237 unsigned int track_var_idx = data->track_data.track_var->var.idx; in save_track_val()
3246 struct action_data *data, u64 *var_ref_vals) in save_track_data() argument
3248 if (data->track_data.save_data) in save_track_data()
3249 data->track_data.save_data(hist_data, elt, buffer, rec, rbe, in save_track_data()
3250 key, data, var_ref_vals); in save_track_data()
3254 struct action_data *data, in check_track_val() argument
3260 hist_data = data->track_data.track_var->hist_data; in check_track_val()
3261 track_val = get_track_val(hist_data, elt, data); in check_track_val()
3263 return data->track_data.check_val(track_val, var_val); in check_track_val()
3304 struct action_data *data, in save_track_data_snapshot() argument
3329 struct action_data *data = hist_data->actions[i]; in snapshot_action() local
3331 if (data->action == ACTION_SNAPSHOT) in snapshot_action()
3332 return data; in snapshot_action()
3374 struct action_data *data, in save_track_data_snapshot() argument
3383 struct action_data *data) in track_data_print() argument
3385 u64 track_val = get_track_val(hist_data, elt, data); in track_data_print()
3388 if (data->handler == HANDLER_ONMAX) in track_data_print()
3390 else if (data->handler == HANDLER_ONCHANGE) in track_data_print()
3393 if (data->action == ACTION_SNAPSHOT) in track_data_print()
3417 struct action_data *data, u64 *var_ref_vals) in ontrack_action() argument
3419 u64 var_val = var_ref_vals[data->track_data.var_ref->var_ref_idx]; in ontrack_action()
3421 if (check_track_val(elt, data, var_val)) { in ontrack_action()
3422 save_track_val(hist_data, elt, data, var_val); in ontrack_action()
3424 key, data, var_ref_vals); in ontrack_action()
3428 static void action_data_destroy(struct action_data *data) in action_data_destroy() argument
3434 kfree(data->action_name); in action_data_destroy()
3436 for (i = 0; i < data->n_params; i++) in action_data_destroy()
3437 kfree(data->params[i]); in action_data_destroy()
3439 if (data->synth_event) in action_data_destroy()
3440 data->synth_event->ref--; in action_data_destroy()
3442 kfree(data->synth_event_name); in action_data_destroy()
3444 kfree(data); in action_data_destroy()
3448 struct action_data *data) in track_data_destroy() argument
3452 destroy_hist_field(data->track_data.track_var, 0); in track_data_destroy()
3454 if (data->action == ACTION_SNAPSHOT) { in track_data_destroy()
3464 kfree(data->track_data.var_str); in track_data_destroy()
3466 action_data_destroy(data); in track_data_destroy()
3470 struct action_data *data);
3473 struct action_data *data) in track_data_create() argument
3481 track_data_var_str = data->track_data.var_str; in track_data_create()
3498 data->track_data.var_ref = ref_field; in track_data_create()
3500 if (data->handler == HANDLER_ONMAX) in track_data_create()
3508 if (data->handler == HANDLER_ONCHANGE) in track_data_create()
3515 data->track_data.track_var = track_var; in track_data_create()
3517 ret = action_create(hist_data, data); in track_data_create()
3523 struct action_data *data) in parse_action_params() argument
3530 if (data->n_params >= SYNTH_FIELDS_MAX) { in parse_action_params()
3556 if (first_param && data->use_trace_keyword) { in parse_action_params()
3557 data->synth_event_name = saved_param; in parse_action_params()
3563 data->params[data->n_params++] = saved_param; in parse_action_params()
3569 static int action_parse(struct trace_array *tr, char *str, struct action_data *data, in action_parse() argument
3598 ret = parse_action_params(tr, params, data); in action_parse()
3603 data->track_data.check_val = check_track_val_max; in action_parse()
3605 data->track_data.check_val = check_track_val_changed; in action_parse()
3612 data->track_data.save_data = save_track_data_vars; in action_parse()
3613 data->fn = ontrack_action; in action_parse()
3614 data->action = ACTION_SAVE; in action_parse()
3625 data->track_data.check_val = check_track_val_max; in action_parse()
3627 data->track_data.check_val = check_track_val_changed; in action_parse()
3634 data->track_data.save_data = save_track_data_snapshot; in action_parse()
3635 data->fn = ontrack_action; in action_parse()
3636 data->action = ACTION_SNAPSHOT; in action_parse()
3641 data->use_trace_keyword = true; in action_parse()
3644 ret = parse_action_params(tr, params, data); in action_parse()
3650 data->track_data.check_val = check_track_val_max; in action_parse()
3652 data->track_data.check_val = check_track_val_changed; in action_parse()
3655 data->track_data.save_data = action_trace; in action_parse()
3656 data->fn = ontrack_action; in action_parse()
3658 data->fn = action_trace; in action_parse()
3660 data->action = ACTION_TRACE; in action_parse()
3663 data->action_name = kstrdup(action_name, GFP_KERNEL); in action_parse()
3664 if (!data->action_name) { in action_parse()
3669 data->handler = handler; in action_parse()
3677 struct action_data *data; in track_data_parse() local
3681 data = kzalloc(sizeof(*data), GFP_KERNEL); in track_data_parse()
3682 if (!data) in track_data_parse()
3691 data->track_data.var_str = kstrdup(var_str, GFP_KERNEL); in track_data_parse()
3692 if (!data->track_data.var_str) { in track_data_parse()
3697 ret = action_parse(hist_data->event_file->tr, str, data, handler); in track_data_parse()
3701 return data; in track_data_parse()
3703 track_data_destroy(hist_data, data); in track_data_parse()
3704 data = ERR_PTR(ret); in track_data_parse()
3708 static void onmatch_destroy(struct action_data *data) in onmatch_destroy() argument
3710 kfree(data->match_data.event); in onmatch_destroy()
3711 kfree(data->match_data.event_system); in onmatch_destroy()
3713 action_data_destroy(data); in onmatch_destroy()
3782 struct action_data *data, in trace_action_find_var() argument
3792 if (!system && data->handler == HANDLER_ONMATCH) { in trace_action_find_var()
3793 system = data->match_data.event_system; in trace_action_find_var()
3794 event = data->match_data.event; in trace_action_find_var()
3808 struct action_data *data, char *system, in trace_action_create_field_var() argument
3832 if (!system && data->handler == HANDLER_ONMATCH) { in trace_action_create_field_var()
3833 system = data->match_data.event_system; in trace_action_create_field_var()
3834 event = data->match_data.event; in trace_action_create_field_var()
3859 struct action_data *data) in trace_action_create() argument
3873 if (data->n_params > SYNTH_FIELDS_MAX) in trace_action_create()
3876 if (data->use_trace_keyword) in trace_action_create()
3877 synth_event_name = data->synth_event_name; in trace_action_create()
3879 synth_event_name = data->action_name; in trace_action_create()
3889 for (i = 0; i < data->n_params; i++) { in trace_action_create()
3892 p = param = kstrdup(data->params[i], GFP_KERNEL); in trace_action_create()
3912 hist_field = trace_action_find_var(hist_data, data, in trace_action_create()
3917 data, in trace_action_create()
3944 data->var_ref_idx[i] = var_ref_idx; in trace_action_create()
3963 data->synth_event = event; in trace_action_create()
3973 struct action_data *data) in action_create() argument
3983 if (data->action == ACTION_TRACE) in action_create()
3984 return trace_action_create(hist_data, data); in action_create()
3986 if (data->action == ACTION_SNAPSHOT) { in action_create()
3987 track_data = track_data_alloc(hist_data->key_size, data, hist_data); in action_create()
4001 if (data->action == ACTION_SAVE) { in action_create()
4008 for (i = 0; i < data->n_params; i++) { in action_create()
4009 param = kstrdup(data->params[i], GFP_KERNEL); in action_create()
4035 struct action_data *data) in onmatch_create() argument
4037 return action_create(hist_data, data); in onmatch_create()
4043 struct action_data *data; in onmatch_parse() local
4046 data = kzalloc(sizeof(*data), GFP_KERNEL); in onmatch_parse()
4047 if (!data) in onmatch_parse()
4067 data->match_data.event = kstrdup(match_event, GFP_KERNEL); in onmatch_parse()
4068 if (!data->match_data.event) { in onmatch_parse()
4073 data->match_data.event_system = kstrdup(match_event_system, GFP_KERNEL); in onmatch_parse()
4074 if (!data->match_data.event_system) { in onmatch_parse()
4079 ret = action_parse(tr, str, data, HANDLER_ONMATCH); in onmatch_parse()
4083 return data; in onmatch_parse()
4085 onmatch_destroy(data); in onmatch_parse()
4086 data = ERR_PTR(ret); in onmatch_parse()
4560 struct action_data *data = hist_data->actions[i]; in destroy_actions() local
4562 if (data->handler == HANDLER_ONMATCH) in destroy_actions()
4563 onmatch_destroy(data); in destroy_actions()
4564 else if (data->handler == HANDLER_ONMAX || in destroy_actions()
4565 data->handler == HANDLER_ONCHANGE) in destroy_actions()
4566 track_data_destroy(hist_data, data); in destroy_actions()
4568 kfree(data); in destroy_actions()
4575 struct action_data *data; in parse_actions() local
4587 data = onmatch_parse(tr, action_str); in parse_actions()
4588 if (IS_ERR(data)) { in parse_actions()
4589 ret = PTR_ERR(data); in parse_actions()
4595 data = track_data_parse(hist_data, action_str, in parse_actions()
4597 if (IS_ERR(data)) { in parse_actions()
4598 ret = PTR_ERR(data); in parse_actions()
4604 data = track_data_parse(hist_data, action_str, in parse_actions()
4606 if (IS_ERR(data)) { in parse_actions()
4607 ret = PTR_ERR(data); in parse_actions()
4615 hist_data->actions[hist_data->n_actions++] = data; in parse_actions()
4623 struct action_data *data; in create_actions() local
4628 data = hist_data->actions[i]; in create_actions()
4630 if (data->handler == HANDLER_ONMATCH) { in create_actions()
4631 ret = onmatch_create(hist_data, data); in create_actions()
4634 } else if (data->handler == HANDLER_ONMAX || in create_actions()
4635 data->handler == HANDLER_ONCHANGE) { in create_actions()
4636 ret = track_data_create(hist_data, data); in create_actions()
4655 struct action_data *data = hist_data->actions[i]; in print_actions() local
4657 if (data->action == ACTION_SNAPSHOT) in print_actions()
4660 if (data->handler == HANDLER_ONMAX || in print_actions()
4661 data->handler == HANDLER_ONCHANGE) in print_actions()
4662 track_data_print(m, hist_data, elt, data); in print_actions()
4668 struct action_data *data) in print_action_spec() argument
4672 if (data->action == ACTION_SAVE) { in print_action_spec()
4678 } else if (data->action == ACTION_TRACE) { in print_action_spec()
4679 if (data->use_trace_keyword) in print_action_spec()
4680 seq_printf(m, "%s", data->synth_event_name); in print_action_spec()
4681 for (i = 0; i < data->n_params; i++) { in print_action_spec()
4682 if (i || data->use_trace_keyword) in print_action_spec()
4684 seq_printf(m, "%s", data->params[i]); in print_action_spec()
4691 struct action_data *data) in print_track_data_spec() argument
4693 if (data->handler == HANDLER_ONMAX) in print_track_data_spec()
4695 else if (data->handler == HANDLER_ONCHANGE) in print_track_data_spec()
4697 seq_printf(m, "%s", data->track_data.var_str); in print_track_data_spec()
4698 seq_printf(m, ").%s(", data->action_name); in print_track_data_spec()
4700 print_action_spec(m, hist_data, data); in print_track_data_spec()
4707 struct action_data *data) in print_onmatch_spec() argument
4709 seq_printf(m, ":onmatch(%s.%s).", data->match_data.event_system, in print_onmatch_spec()
4710 data->match_data.event); in print_onmatch_spec()
4712 seq_printf(m, "%s(", data->action_name); in print_onmatch_spec()
4714 print_action_spec(m, hist_data, data); in print_onmatch_spec()
4728 struct action_data *data = hist_data->actions[i]; in actions_match() local
4732 if (data->handler != data_test->handler) in actions_match()
4734 if (data->action != data_test->action) in actions_match()
4737 if (data->n_params != data_test->n_params) in actions_match()
4740 for (j = 0; j < data->n_params; j++) { in actions_match()
4741 if (strcmp(data->params[j], data_test->params[j]) != 0) in actions_match()
4745 if (data->use_trace_keyword) in actions_match()
4746 action_name = data->synth_event_name; in actions_match()
4748 action_name = data->action_name; in actions_match()
4758 if (data->handler == HANDLER_ONMATCH) { in actions_match()
4759 if (strcmp(data->match_data.event_system, in actions_match()
4762 if (strcmp(data->match_data.event, in actions_match()
4765 } else if (data->handler == HANDLER_ONMAX || in actions_match()
4766 data->handler == HANDLER_ONCHANGE) { in actions_match()
4767 if (strcmp(data->track_data.var_str, in actions_match()
4783 struct action_data *data = hist_data->actions[i]; in print_actions_spec() local
4785 if (data->handler == HANDLER_ONMATCH) in print_actions_spec()
4786 print_onmatch_spec(m, hist_data, data); in print_actions_spec()
4787 else if (data->handler == HANDLER_ONMAX || in print_actions_spec()
4788 data->handler == HANDLER_ONCHANGE) in print_actions_spec()
4789 print_track_data_spec(m, hist_data, data); in print_actions_spec()
5005 struct action_data *data; in hist_trigger_actions() local
5009 data = hist_data->actions[i]; in hist_trigger_actions()
5010 data->fn(hist_data, elt, buffer, rec, rbe, key, data, var_ref_vals); in hist_trigger_actions()
5014 static void event_hist_trigger(struct event_trigger_data *data, in event_hist_trigger() argument
5018 struct hist_trigger_data *hist_data = data->private_data; in event_hist_trigger()
5234 struct event_trigger_data *data, int n) in hist_trigger_show() argument
5243 data->ops->print(m, data->ops, data); in hist_trigger_show()
5246 hist_data = data->private_data; in hist_trigger_show()
5260 struct event_trigger_data *data; in hist_show() local
5272 list_for_each_entry(data, &event_file->triggers, list) { in hist_show()
5273 if (data->cmd_ops->trigger_type == ETT_EVENT_HIST) in hist_show()
5274 hist_trigger_show(m, data, n++); in hist_show()
5410 struct action_data *data, int i) in hist_action_debug_show() argument
5414 if (data->handler == HANDLER_ONMAX || in hist_action_debug_show()
5415 data->handler == HANDLER_ONCHANGE) { in hist_action_debug_show()
5417 ret = hist_field_debug_show(m, data->track_data.var_ref, in hist_action_debug_show()
5423 ret = hist_field_debug_show(m, data->track_data.track_var, in hist_action_debug_show()
5429 if (data->handler == HANDLER_ONMATCH) { in hist_action_debug_show()
5431 i, data->match_data.event_system); in hist_action_debug_show()
5433 i, data->match_data.event); in hist_action_debug_show()
5468 struct event_trigger_data *data, int n) in hist_trigger_debug_show() argument
5477 data->ops->print(m, data->ops, data); in hist_trigger_debug_show()
5480 hist_data = data->private_data; in hist_trigger_debug_show()
5539 struct event_trigger_data *data; in hist_debug_show() local
5551 list_for_each_entry(data, &event_file->triggers, list) { in hist_debug_show()
5552 if (data->cmd_ops->trigger_type == ETT_EVENT_HIST) in hist_debug_show()
5553 hist_trigger_debug_show(m, data, n++); in hist_debug_show()
5617 struct event_trigger_data *data) in event_hist_trigger_print() argument
5619 struct hist_trigger_data *hist_data = data->private_data; in event_hist_trigger_print()
5626 if (data->name) in event_hist_trigger_print()
5627 seq_printf(m, "%s:", data->name); in event_hist_trigger_print()
5711 if (data->filter_str) in event_hist_trigger_print()
5712 seq_printf(m, " if %s", data->filter_str); in event_hist_trigger_print()
5714 if (data->paused) in event_hist_trigger_print()
5725 struct event_trigger_data *data) in event_hist_trigger_init() argument
5727 struct hist_trigger_data *hist_data = data->private_data; in event_hist_trigger_init()
5729 if (!data->ref && hist_data->attrs->name) in event_hist_trigger_init()
5730 save_named_trigger(hist_data->attrs->name, data); in event_hist_trigger_init()
5732 data->ref++; in event_hist_trigger_init()
5754 struct event_trigger_data *data) in event_hist_trigger_free() argument
5756 struct hist_trigger_data *hist_data = data->private_data; in event_hist_trigger_free()
5758 if (WARN_ON_ONCE(data->ref <= 0)) in event_hist_trigger_free()
5761 data->ref--; in event_hist_trigger_free()
5762 if (!data->ref) { in event_hist_trigger_free()
5763 if (data->name) in event_hist_trigger_free()
5764 del_named_trigger(data); in event_hist_trigger_free()
5766 trigger_data_free(data); in event_hist_trigger_free()
5784 struct event_trigger_data *data) in event_hist_trigger_named_init() argument
5786 data->ref++; in event_hist_trigger_named_init()
5788 save_named_trigger(data->named_data->name, data); in event_hist_trigger_named_init()
5790 event_hist_trigger_init(ops, data->named_data); in event_hist_trigger_named_init()
5796 struct event_trigger_data *data) in event_hist_trigger_named_free() argument
5798 if (WARN_ON_ONCE(data->ref <= 0)) in event_hist_trigger_named_free()
5801 event_hist_trigger_free(ops, data->named_data); in event_hist_trigger_named_free()
5803 data->ref--; in event_hist_trigger_named_free()
5804 if (!data->ref) { in event_hist_trigger_named_free()
5805 del_named_trigger(data); in event_hist_trigger_named_free()
5806 trigger_data_free(data); in event_hist_trigger_named_free()
5823 static void hist_clear(struct event_trigger_data *data) in hist_clear() argument
5825 struct hist_trigger_data *hist_data = data->private_data; in hist_clear()
5827 if (data->name) in hist_clear()
5828 pause_named_trigger(data); in hist_clear()
5834 if (data->name) in hist_clear()
5835 unpause_named_trigger(data); in hist_clear()
5857 static bool hist_trigger_match(struct event_trigger_data *data, in hist_trigger_match() argument
5874 hist_data = data->private_data; in hist_trigger_match()
5883 if ((data->filter_str && !data_test->filter_str) || in hist_trigger_match()
5884 (!data->filter_str && data_test->filter_str)) in hist_trigger_match()
5918 if (!ignore_filter && data->filter_str && in hist_trigger_match()
5919 (strcmp(data->filter_str, data_test->filter_str) != 0)) in hist_trigger_match()
5929 struct event_trigger_data *data, in hist_register_trigger() argument
5932 struct hist_trigger_data *hist_data = data->private_data; in hist_register_trigger()
5940 if (!hist_trigger_match(data, named_data, named_data, in hist_register_trigger()
5956 if (!hist_trigger_match(data, test, named_data, false)) in hist_register_trigger()
5979 data->paused = true; in hist_register_trigger()
5982 data->private_data = named_data->private_data; in hist_register_trigger()
5983 set_named_trigger_data(data, named_data); in hist_register_trigger()
5984 data->ops = &event_hist_trigger_named_ops; in hist_register_trigger()
5987 if (data->ops->init) { in hist_register_trigger()
5988 ret = data->ops->init(data->ops, data); in hist_register_trigger()
6013 static int hist_trigger_enable(struct event_trigger_data *data, in hist_trigger_enable() argument
6018 list_add_tail_rcu(&data->list, &file->triggers); in hist_trigger_enable()
6023 list_del_rcu(&data->list); in hist_trigger_enable()
6031 static bool have_hist_trigger_match(struct event_trigger_data *data, in have_hist_trigger_match() argument
6034 struct hist_trigger_data *hist_data = data->private_data; in have_hist_trigger_match()
6045 if (hist_trigger_match(data, test, named_data, false)) { in have_hist_trigger_match()
6055 static bool hist_trigger_check_refs(struct event_trigger_data *data, in hist_trigger_check_refs() argument
6058 struct hist_trigger_data *hist_data = data->private_data; in hist_trigger_check_refs()
6068 if (!hist_trigger_match(data, test, named_data, false)) in hist_trigger_check_refs()
6081 struct event_trigger_data *data, in hist_unregister_trigger() argument
6084 struct hist_trigger_data *hist_data = data->private_data; in hist_unregister_trigger()
6095 if (!hist_trigger_match(data, test, named_data, false)) in hist_unregister_trigger()
6371 hist_enable_trigger(struct event_trigger_data *data, in hist_enable_trigger() argument
6375 struct enable_trigger_data *enable_data = data->private_data; in hist_enable_trigger()
6390 hist_enable_count_trigger(struct event_trigger_data *data, in hist_enable_count_trigger() argument
6394 if (!data->count) in hist_enable_count_trigger()
6397 if (data->count != -1) in hist_enable_count_trigger()
6398 (data->count)--; in hist_enable_count_trigger()
6400 hist_enable_trigger(data, buffer, rec, event); in hist_enable_count_trigger()