函数逻辑报告

Linux Kernel

v5.5.9

Brick Technologies Co., Ltd

Source Code:kernel\trace\trace_events_hist.c Create Date:2022-07-27 13:41:12
Last Modify:2020-03-12 14:18:49 Copyright©Brick
首页 函数Tree
注解内核,赢得工具下载SCCTEnglish

函数名称:trace_action_create

函数原型:static int trace_action_create(struct hist_trigger_data *hist_data, struct action_data *data)

返回类型:int

参数:

类型参数名称
struct hist_trigger_data *hist_data
struct action_data *data
4242  tr等于tr
4243  char * event_name, * param, * system = NULL
4246  field_pos等于0
4249  ret等于0
4251  lockdep_assert_held( & event_mutex)
4253  如果use_trace_keywordsynth_event_name等于synth_event_name
4255  否则synth_event_name等于action_name
4258  event等于find_synth_event(synth_event_name)
4259  如果非event
4260  hist_err(tr, HIST_ERR_SYNTH_EVENT_NOT_FOUND, errpos(synth_event_name))
4261  返回:负EINVAL
4264  ref自加
4266 i小于n_params循环
4269  p等于param等于kstrdup(params[i], GFP_KERNEL)
4270  如果非param
4271  ret等于负ENOMEM
4272  转到:err
4275  system等于分割字符串
4276  如果非param
4277  param等于system
4278  system = event_name = NULL
4279  否则
4281  如果非param
4282  kfree(p)
4283  ret等于负EINVAL
4284  转到:err
4288  如果param[0]恒等于'$'则hist_field等于trace_action_find_var(hist_data, data, system, event_name, param)
4292  否则hist_field等于trace_action_create_field_var(hist_data, data, system, event_name, param)
4299  如果非hist_field
4300  kfree(p)
4301  ret等于负EINVAL
4302  转到:err
4305  如果check_synth_field(event, hist_field, field_pos)恒等于0则
4308  如果非var_ref
4309  kfree(p)
4310  ret等于负ENOMEM
4311  转到:err
4315  如果WARN_ON(var_ref_idx < 0)则
4316  ret等于var_ref_idx
4317  转到:err
4322  field_pos自加
4323  kfree(p)
4324  继续下一循环
4327  hist_err(tr, HIST_ERR_SYNTH_TYPE_MISMATCH, errpos(param))
4328  kfree(p)
4329  ret等于负EINVAL
4330  转到:err
4333  如果field_pos不等于n_fields
4334  hist_err(tr, HIST_ERR_SYNTH_COUNT_MISMATCH, errpos(name))
4335  ret等于负EINVAL
4336  转到:err
4339  synth_event等于event
4340  out :
4341  返回:ret
4342  err :
4343  ref自减
4345  转到:out
调用者
名称描述
action_create