函数逻辑报告

Linux Kernel

v5.5.9

Brick Technologies Co., Ltd

Source Code:kernel\events\core.c Create Date:2022-07-27 14:59:30
Last Modify:2022-05-20 07:50:19 Copyright©Brick
首页 函数Tree
注解内核,赢得工具下载SCCTEnglish

函数名称:Address filter string parser

函数原型:static int perf_event_parse_addr_filter(struct perf_event *event, char *fstr, struct list_head *filters)

返回类型:int

参数:

类型参数名称
struct perf_event *event
char *fstr
struct list_head *filters
9568  struct perf_addr_filter * filter = NULL
9569  char * start, * orig, * filename = NULL
9571  state等于IF_STATE_ACTION
9572  kernel等于0
9573  ret等于负EINVAL
9575  orig等于fstr等于kstrdup(fstr, GFP_KERNEL)
9576  如果非fstr则返回:负ENOMEM
9579  当((start = 分割字符串) != NULL)循环
9580  static const enum perf_addr_filter_action_t actions[] = {[IF_ACT_FILTER] = PERF_ADDR_FILTER_ACTION_FILTER, [IF_ACT_START] = PERF_ADDR_FILTER_ACTION_START, [IF_ACT_STOP] = PERF_ADDR_FILTER_ACTION_STOP, }
9585  ret等于负EINVAL
9587  如果非start则继续下一循环
9591  如果state恒等于IF_STATE_ACTION
9593  如果非filter则转到:fail
9597  token等于match_token: - Find a token (and optional args) in a string*@s: the string to examine for token/argument pairs*@table: match_table_t describing the set of allowed option tokens and the* arguments that may be associated with them. Must be terminated with a
9599  :token恒等于IF_ACT_FILTER
9600  :token恒等于IF_ACT_START
9601  :token恒等于IF_ACT_STOP
9602  如果state不等于IF_STATE_ACTION则转到:fail
9605  action等于actions[token]
9606  state等于IF_STATE_SOURCE
9607  退出
9609  :token恒等于IF_SRC_KERNELADDR
9610  :token恒等于IF_SRC_KERNEL
9611  kernel等于1
9614  :token恒等于IF_SRC_FILEADDR
9615  :token恒等于IF_SRC_FILE
9616  如果state不等于IF_STATE_SOURCE则转到:fail
9619  to等于0
9621  如果ret则转到:fail
9624  如果token恒等于IF_SRC_KERNELtoken恒等于IF_SRC_FILE
9631  如果token恒等于IF_SRC_FILEtoken恒等于IF_SRC_FILEADDR
9641  state等于IF_STATE_END
9642  退出
9644  默认
9645  转到:fail
9653  如果state恒等于IF_STATE_END
9654  ret等于负EINVAL
9655  如果kernelexclude_kernel则转到:fail
9662  如果action恒等于PERF_ADDR_FILTER_ACTION_FILTER且非size则转到:fail
9666  如果非kernel
9667  如果非filename则转到:fail
9678  ret等于负EOPNOTSUPP
9679  如果非task则转到:fail_free_name
9685  如果ret则转到:fail_free_name
9688  kfree(filename)
9689  filename = NULL
9691  ret等于负EINVAL
9692  如果非dentry或非S_ISREG(i_mode)则转到:fail
9697  nr_file_filters自加
9701  state等于IF_STATE_ACTION
9702  filter = NULL
9706  如果state不等于IF_STATE_ACTION则转到:fail
9709  kfree(orig)
9711  返回:0
9713  fail_free_name :
9714  kfree(filename)
9715  fail :
9716  free_filters_list(filters)
9717  kfree(orig)
9719  返回:ret
调用者
名称描述
perf_event_set_addr_filter