函数逻辑报告 |
Source Code:arch\x86\kernel\unwind_orc.c |
Create Date:2022-07-27 09:50:21 |
Last Modify:2020-03-12 14:18:49 | Copyright©Brick |
首页 | 函数Tree |
注解内核,赢得工具 | 下载SCCT | English |
函数名称:unwind_next_frame
函数原型:bool unwind_next_frame(struct unwind_state *state)
返回类型:bool
参数:
类型 | 参数 | 名称 |
---|---|---|
struct unwind_state * | state |
386 | bool indirect = false |
388 | 如果unwind_done(state)则返回:false |
392 | 禁止抢占() |
405 | 如果非orc则 |
421 | 转到:the_end |
426 | 当:sp_reg恒等于ORC_REG_SP |
430 | 当:sp_reg恒等于ORC_REG_BP |
434 | 当:sp_reg恒等于ORC_REG_SP_INDIRECT |
439 | 当:sp_reg恒等于ORC_REG_BP_INDIRECT |
444 | 当:sp_reg恒等于ORC_REG_R10 |
451 | 退出 |
453 | 当:sp_reg恒等于ORC_REG_R13 |
460 | 退出 |
462 | 当:sp_reg恒等于ORC_REG_DI |
469 | 退出 |
471 | 当:sp_reg恒等于ORC_REG_DX |
478 | 退出 |
480 | 默认 |
486 | 如果indirect则 |
487 | 如果非deref_stack_reg(state, sp, & sp)则转到:err |
507 | 当:type恒等于ORC_TYPE_REGS |
508 | 如果非deref_stack_regs(state, sp, & ip, & sp)则 |
511 | 转到:err |
515 | full_regs = true |
516 | signal = true |
517 | 退出 |
519 | 当:type恒等于ORC_TYPE_REGS_IRET |
520 | 如果非deref_stack_iret_regs(state, sp, & ip, & sp)则 |
523 | 转到:err |
526 | regs等于sp减IRET_FRAME_OFFSET |
527 | full_regs = false |
528 | signal = true |
529 | 退出 |
531 | 默认 |
534 | 退出 |
544 | 当:bp_reg恒等于ORC_REG_PREV_SP |
549 | 当:bp_reg恒等于ORC_REG_BP |
554 | 默认 |
569 | 禁用抢占和中断() |
570 | 返回:true |
572 | err : |
573 | error = true |
575 | the_end : |
576 | 禁用抢占和中断() |
577 | type等于STACK_TYPE_UNKNOWN |
578 | 返回:false |
名称 | 描述 |
---|---|
__unwind_start |
源代码转换工具 开放的插件接口 | X |
---|---|
支持:c/c++/esqlc/java Oracle/Informix/Mysql 插件可实现:逻辑报告 代码生成和批量转换代码 |