| 函数逻辑报告 | 
| Source Code: kernel\kprobes.c | Create Date:2022-07-27 12:38:30 | 
| Last Modify:2022-05-22 18:14:58 | Copyright©Brick | 
| 首页 | 函数Tree | 
| 注解内核,赢得工具 | 下载SCCT | English | 
函数名称:__get_insn_slot() - Find a slot on an executable page for an instruction.* We allocate an executable page if there's no room on existing ones.
函数原型:kprobe_opcode_t *__get_insn_slot(struct kprobe_insn_cache *c)
返回类型:kprobe_opcode_t
参数:
| 类型 | 参数 | 名称 | 
|---|---|---|
| struct kprobe_insn_cache * | c | 
| 134 | kprobe_opcode_t * slot = NULL | 
| 137 | mutex_lock( & mutex) | 
| 138 | retry : | 
| 141 | 如果nused小于slots_per_page(c)则 | 
| 143 | 以i小于slots_per_page(c)循环 | 
| 144 | 如果slot_used[i]恒等于SLOT_CLEAN则 | 
| 153 | nused等于slots_per_page(c) | 
| 154 | WARN_ON(1) | 
| 160 | 如果nr_garbage且collect_garbage_slots(c)恒等于0则转到:retry | 
| 173 | Page of instruction slots 等于alloc() | 
| 174 | 如果非Page of instruction slots 则 | 
| 178 | 初始化链表头 | 
| 179 | memset(slot_used, SLOT_CLEAN, slots_per_page(c)) | 
| 181 | nused等于1 | 
| 182 | ngarbage等于0 | 
| 184 | 添加RCU保护项 | 
| 186 | out : | 
| 188 | 返回:slot | 
| 名称 | 描述 | 
|---|---|
| get_insn_slot | |
| get_optinsn_slot | 
| 源代码转换工具 开放的插件接口 | X | 
|---|---|
| 支持:c/c++/esqlc/java Oracle/Informix/Mysql 插件可实现:逻辑报告 代码生成和批量转换代码 |