函数逻辑报告 |
Source Code:arch\x86\kernel\kprobes\core.c |
Create Date:2022-07-27 09:38:00 |
Last Modify:2020-03-12 14:18:49 | Copyright©Brick |
首页 | 函数Tree |
注解内核,赢得工具 | 下载SCCT | English |
函数名称:Called from kretprobe_trampoline
函数原型:__used __visible void *trampoline_handler(struct pt_regs *regs)
返回类型:void
参数:
类型 | 参数 | 名称 |
---|---|---|
struct pt_regs * | regs |
763 | struct kretprobe_instance * ri = NULL |
766 | orig_ret_address等于0 |
767 | unsigned long trampoline_address = (unsigned long) & kretprobe_trampoline |
768 | kprobe_opcode_t * correct_ret_addr = NULL |
770 | bool skipped = false |
772 | 禁止抢占() |
779 | kcb等于get_kprobe_ctlblk() |
783 | INIT_HLIST_HEAD( & empty_rp) |
784 | kretprobe_hash_lock(当前进程, & head, & flags) |
788 | cs或等于get_kernel_rpl() |
789 | gs等于0 |
792 | frame_pointer等于sp |
793 | ip等于trampoline_address |
794 | orig_ax等于0UL的反 |
821 | 如果fp不等于frame_pointer则 |
824 | skipped = true |
825 | 继续下一循环 |
828 | orig_ret_address等于ret_addr |
833 | 如果orig_ret_address不等于trampoline_address则退出 |
844 | correct_ret_addr等于ret_addr |
849 | 如果fp不等于frame_pointer则继续下一循环 |
852 | orig_ret_address等于ret_addr |
854 | __this_cpu_write(current_kprobe, & kp) |
855 | ret_addr等于correct_ret_addr |
860 | recycle_rp_inst(ri, & empty_rp) |
862 | 如果orig_ret_address不等于trampoline_address则退出 |
871 | kretprobe_hash_unlock(当前进程, & flags) |
873 | __this_cpu_write(current_kprobe, NULL) |
874 | 禁用抢占和中断() |
878 | 释放内存 |
880 | 返回:orig_ret_address |
源代码转换工具 开放的插件接口 | X |
---|---|
支持:c/c++/esqlc/java Oracle/Informix/Mysql 插件可实现:逻辑报告 代码生成和批量转换代码 |