函数逻辑报告 |
Source Code:kernel\trace\trace_kprobe.c |
Create Date:2022-07-27 13:50:13 |
Last Modify:2020-03-12 14:18:49 | Copyright©Brick |
首页 | 函数Tree |
注解内核,赢得工具 | 下载SCCT | English |
函数名称:trace_kprobe_create
函数原型:static int trace_kprobe_create(int argc, const char *argv[])
返回类型:int
参数:
类型 | 参数 | 名称 |
---|---|---|
int | argc | |
const char * | argv |
736 | struct trace_kprobe * tk = NULL |
737 | ret等于0 |
738 | bool is_return = false |
740 | event等于NULL, group等于KPROBE_EVENT_SYSTEM |
741 | maxactive等于0 |
742 | offset等于0 |
743 | void * addr = NULL |
745 | flags等于TPARG_FL_KERNEL |
753 | 退出 |
754 | 默认 |
755 | 返回:负ECANCELED |
760 | trace_probe_log_init("trace_kprobe", argc, argv) |
762 | event等于strchr - Find the first occurrence of the character c in the string s.*@s: the string to be searched*@c: the character to search for |
766 | 如果是数字则 |
767 | 如果非is_return则 |
768 | trace_probe_log_err(1, MAXACT_NO_KPROBE) |
769 | 转到:parse_error |
775 | 如果len大于MAX_EVENT_NAME_LEN减1则 |
776 | trace_probe_log_err(1, BAD_MAXACT) |
777 | 转到:parse_error |
783 | trace_probe_log_err(1, BAD_MAXACT) |
784 | 转到:parse_error |
789 | 如果maxactive大于KRETPROBE_MAXACTIVE_MAX则 |
790 | trace_probe_log_err(1, MAXACT_TOO_BIG) |
791 | 转到:parse_error |
798 | trace_probe_log_set_index(1) |
805 | symbol等于kstrdup(argv[1], GFP_KERNEL) |
809 | ret等于traceprobe_split_symbol_offset(symbol, & offset) |
811 | trace_probe_log_err(0, BAD_PROBE_ADDR) |
812 | 转到:parse_error |
814 | 如果kprobe_on_func_entry(NULL, symbol, offset)则flags或等于TPARG_FL_FENTRY |
816 | 如果offset且is_return且非flags按位与TPARG_FL_FENTRY的值则 |
817 | trace_probe_log_err(0, BAD_RETPROBE) |
818 | 转到:parse_error |
822 | trace_probe_log_set_index(0) |
823 | 如果event则 |
826 | 如果ret则转到:parse_error |
828 | 否则 |
843 | 如果是错误则 |
849 | argc减等于2 |
849 | argv加等于2 |
852 | 以i小于argc且i小于MAX_TRACE_ARGS循环 |
866 | ret等于traceprobe_set_print_fmt( & tp, is_return) |
871 | 如果ret则 |
872 | trace_probe_log_set_index(1) |
873 | 如果ret恒等于负EILSEQ则trace_probe_log_err(0, BAD_INSN_BNDRY) |
875 | 否则如果ret恒等于负ENOENT则trace_probe_log_err(0, BAD_PROBE_ADDR) |
877 | 否则如果ret不等于负ENOMEM且ret不等于负EEXIST则trace_probe_log_err(0, FAIL_REG_PROBE) |
879 | 转到:error |
882 | out : |
883 | trace_probe_log_clear() |
885 | 返回:ret |
887 | parse_error : |
889 | error : |
890 | free_trace_kprobe(tk) |
891 | 转到:out |
名称 | 描述 |
---|---|
create_or_delete_trace_kprobe |
源代码转换工具 开放的插件接口 | X |
---|---|
支持:c/c++/esqlc/java Oracle/Informix/Mysql 插件可实现:逻辑报告 代码生成和批量转换代码 |