函数逻辑报告 |
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 |
| 注解内核,赢得工具 | 下载SCCT | English |
函数名称: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 long | val | |
| void * | dest | |
| void * | base |
| 75 | struct fetch_insn * s3 = NULL |
| 77 | loc等于0 |
| 80 | stage2 : |
| 82 | 循环 |
| 96 | 当1循环 |
| 99 | stage3 : |
| 101 | 如果此条件成立可能性小(为编译器优化)(!dest)则 |
| 102 | 如果op恒等于 String: .offset, .size 则 |
| 106 | 否则如果op恒等于 User String: .offset, .size 则 |
| 110 | 否则返回:负EILSEQ |
| 115 | 当:op恒等于 Raw: .size |
| 117 | 退出 |
| 118 | 当:op恒等于 Mem: .offset, .size |
| 121 | 当:op恒等于 Mem: .offset, .size |
| 124 | 当:op恒等于 String: .offset, .size |
| 126 | ret等于Fetch a null-terminated string. Caller MUST set *(u32 *)dest with max* length and relative data location. |
| 127 | 退出 |
| 128 | 当:op恒等于 User String: .offset, .size |
| 130 | ret等于Fetch a null-terminated string from user. Caller MUST set *(u32 *)buf* with max length and relative data location. |
| 131 | 退出 |
| 132 | 默认 |
| 133 | 返回:负EILSEQ |
| 135 | code自加 |
| 138 | 如果op恒等于 Bitfield: .basesize, .lshift, .rshift 则 |
| 139 | fetch_apply_bitfield(code, dest) |
| 140 | code自加 |
| 143 | array : |
| 145 | 如果op恒等于 Array: .param = loop count 则 |
| 149 | 如果op不等于 String: .offset, .size 且op不等于 User String: .offset, .size 则 |
| 155 | code自减 |
| 157 | 如果dest则 |
| 161 | 转到:stage2 |
| 163 | code自加 |
| 167 | 返回:如果op恒等于FETCH_OP_END则ret否则负EILSEQ |
| 名称 | 描述 |
|---|---|
| process_fetch_insn | Note that we don't verify it, since the code does not come from user space |
| process_fetch_insn | Note that we don't verify it, since the code does not come from user space |
| 源代码转换工具 开放的插件接口 | X |
|---|---|
| 支持:c/c++/esqlc/java Oracle/Informix/Mysql 插件可实现:逻辑报告 代码生成和批量转换代码 |