函数逻辑报告

Linux Kernel

v5.5.9

Brick Technologies Co., Ltd

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

函数名称:From the 2nd stage, routine is same

函数原型:static inline __attribute__((__always_inline__)) int process_fetch_insn_bottom(struct fetch_insn *code, unsigned long val, void *dest, void *base)

返回类型:int

参数:

类型参数名称
struct fetch_insn *code
unsigned longval
void *dest
void *base
75  struct fetch_insn * s3 = NULL
76  total等于0, ret等于0, i等于0
77  loc等于0
78  lval等于val
80  stage2 :
82  循环
83  如果op恒等于 Dereference: .offset
84  lval等于val
85  ret等于probe_mem_read( & val, (void * )val + offset, val的长度)
87  否则如果op恒等于 User-space Dereference: .offset
88  lval等于val
89  ret等于probe_mem_read_user( & val, (void * )val + offset, val的长度)
91  否则退出
93  如果ret则返回:ret
95  code自加
96  当1循环
98  s3等于code
99  stage3 :
101  如果此条件成立可能性小(为编译器优化)(!dest)则
102  如果op恒等于 String: .offset, .size
104  code自加
105  转到:array
106  否则如果op恒等于 User String: .offset, .size
108  code自加
109  转到:array
110  否则返回:负EILSEQ
115  :op恒等于 Raw: .size
117  退出
119  probe_mem_read(dest, (void * )val + offset, size)
120  退出
122  probe_mem_read_user(dest, (void * )val + offset, size)
123  退出
125  loc等于dest
127  退出
129  loc等于dest
131  退出
132  默认
133  返回:负EILSEQ
135  code自加
140  code自加
143  array :
145  如果op恒等于 Array: .param = loop count
146  total加等于ret
147  如果i先自加小于param
148  code等于s3
149  如果op不等于 String: .offset, .size op不等于 User String: .offset, .size
151  dest加等于size
152  val加等于size
153  转到:stage3
155  code自减
156  val等于lval加*的长度
157  如果dest
158  dest加等于sizeof(u32)
159  dest等于update_data_loc(loc, ret)
161  转到:stage2
163  code自加
164  ret等于total
167  返回:如果op恒等于FETCH_OP_ENDret否则负EILSEQ
调用者
名称描述
process_fetch_insnNote that we don't verify it, since the code does not come from user space
process_fetch_insnNote that we don't verify it, since the code does not come from user space