函数逻辑报告 |
Source Code:arch\x86\kernel\unwind_orc.c |
Create Date:2022-07-27 09:50:05 |
Last Modify:2020-03-12 14:18:49 | Copyright©Brick |
首页 | 函数Tree |
注解内核,赢得工具 | 下载SCCT | English |
函数名称:orc_find
函数原型:static struct orc_entry *orc_find(unsigned long ip)
返回类型:struct orc_entry
参数:
类型 | 参数 | 名称 |
---|---|---|
unsigned long | ip |
145 | 如果非orc_init则返回:NULL |
148 | 如果ip恒等于0则返回:If we crash with IP==0, the last successfully executed instruction* was probably an indirect function call with a NULL function pointer,* and we don't have unwind information for NULL |
152 | 如果ip大于等于LOOKUP_START_IP且ip小于LOOKUP_STOP_IP则 |
155 | idx等于ip减LOOKUP_START_IP的差除LOOKUP_BLOCK_SIZE |
157 | 如果此条件成立可能性小(为编译器优化)((idx >= lookup_num_blocks - 1))则 |
158 | orc_warn("WARNING: bad lookup idx: idx=%u num=%u ip=%pB\n", idx, lookup_num_blocks, (void * )ip) |
160 | 返回:NULL |
163 | start等于orc_lookup[idx] |
164 | stop等于orc_lookup[idx + 1]加1 |
166 | 如果此条件成立可能性小(为编译器优化)((__start_orc_unwind + start >= __stop_orc_unwind) || (__start_orc_unwind + stop > __stop_orc_unwind))则 |
168 | orc_warn("WARNING: bad lookup value: idx=%u num=%u start=%u stop=%u ip=%pB\n", idx, lookup_num_blocks, start, stop, (void * )ip) |
170 | 返回:NULL |
173 | 返回:__orc_find(__start_orc_unwind_ip + start, __start_orc_unwind + start, stop - start, ip) |
178 | 如果init_kernel_text(ip)则返回:__orc_find(__start_orc_unwind_ip, __start_orc_unwind, __stop_orc_unwind_ip - __start_orc_unwind_ip, ip) |
183 | orc等于orc_module_find(ip) |
187 | 返回:orc_ftrace_find(ip) |
名称 | 描述 |
---|---|
unwind_next_frame |
源代码转换工具 开放的插件接口 | X |
---|---|
支持:c/c++/esqlc/java Oracle/Informix/Mysql 插件可实现:逻辑报告 代码生成和批量转换代码 |