函数逻辑报告 |
Source Code:arch\x86\kernel\dumpstack.c |
Create Date:2022-07-27 08:34:09 |
| Last Modify:2020-03-12 14:18:49 | Copyright©Brick |
| 首页 | 函数Tree |
| 注解内核,赢得工具 | 下载SCCT | English |
函数名称:show_trace_log_lvl
函数原型:void show_trace_log_lvl(struct task_struct *task, struct pt_regs *regs, unsigned long *stack, char *log_lvl)
返回类型:void
参数:
| 类型 | 参数 | 名称 |
|---|---|---|
| struct task_struct * | task | |
| struct pt_regs * | regs | |
| unsigned long * | stack | |
| char * | log_lvl |
| 166 | struct stack_info stack_info = {0} |
| 167 | visit_mask等于0 |
| 168 | graph_idx等于0 |
| 169 | bool partial = false |
| 173 | unwind_start( & state, task, regs, stack) |
| 174 | stack等于如果stack否则get_stack_pointer(task, regs) |
| 175 | regs等于unwind_get_entry_regs( & state, & partial) |
| 196 | 如果get_stack_info(stack, task, & stack_info, & visit_mask)则 |
| 203 | stack等于 align the pointer to the (next) page boundary ((unsignedlong)stack) |
| 204 | 如果get_stack_info(stack, task, & stack_info, & visit_mask)则退出 |
| 208 | stack_name等于stack_type_name(type) |
| 209 | 如果stack_name则printk("%s <%s>\n", log_lvl, stack_name) |
| 212 | 如果regs则show_regs_if_on_stack( & stack_info, regs, partial) |
| 227 | reliable等于0 |
| 228 | addr等于Use READ_ONCE_NOCHECK() instead of READ_ONCE() if you need* to hide memory access from KASAN.( * stack) |
| 229 | ret_addr_p等于unwind_get_return_address_ptr( & state) |
| 232 | 如果非__kernel_text_address(addr)则继续下一循环 |
| 242 | 如果stack恒等于ret_addr_p则reliable等于1 |
| 256 | 如果real_addr不等于addr则printk_stack_address(addr, 0, log_lvl) |
| 260 | 如果非reliable则继续下一循环 |
| 263 | next : |
| 269 | unwind_next_frame( & state) |
| 272 | regs等于unwind_get_entry_regs( & state, & partial) |
| 273 | 如果regs则show_regs_if_on_stack( & stack_info, regs, partial) |
| 277 | 如果stack_name则printk("%s </%s>\n", log_lvl, stack_name) |
| 名称 | 描述 |
|---|---|
| show_stack | |
| show_stack_regs | |
| show_regs |
| 源代码转换工具 开放的插件接口 | X |
|---|---|
| 支持:c/c++/esqlc/java Oracle/Informix/Mysql 插件可实现:逻辑报告 代码生成和批量转换代码 |