函数逻辑报告 |
Source Code:lib\stackdepot.c |
Create Date:2022-07-27 08:19:44 |
| Last Modify:2020-03-12 14:18:49 | Copyright©Brick |
| 首页 | 函数Tree |
| 注解内核,赢得工具 | 下载SCCT | English |
函数名称:stack_depot_save - Save a stack trace from an array*@entries: Pointer to storage array*@nr_entries: Size of the storage array*@alloc_flags: Allocation gfp flags* Return: The handle of the stack struct stored in depot
函数原型:depot_stack_handle_t stack_depot_save(unsigned long *entries, unsigned int nr_entries, gfp_t alloc_flags)
返回类型:depot_stack_handle_t
参数:
| 类型 | 参数 | 名称 |
|---|---|---|
| unsigned long * | entries | |
| unsigned int | nr_entries | |
| gfp_t | alloc_flags |
| 228 | retval等于0 |
| 230 | void * prealloc = NULL |
| 234 | 如果此条件成立可能性小(为编译器优化)(nr_entries == 0)则转到:fast_exit |
| 238 | bucket等于stack_table[hash & STACK_HASH_MASK] |
| 245 | found等于find_stack(smp_load_acquire(bucket), entries, nr_entries, hash) |
| 258 | 如果此条件成立可能性小(为编译器优化)(!smp_load_acquire( & next_slab_inited))则 |
| 264 | alloc_flags与等于GFP_ZONEMASK的反 |
| 268 | 如果page则prealloc等于page_address(page) |
| 272 | spin_lock_irqsave( & depot_lock, flags) |
| 274 | found等于find_stack( * bucket, entries, nr_entries, hash) |
| 275 | 如果非found则 |
| 276 | new等于depot_alloc_stack(entries, nr_entries, hash, & prealloc, alloc_flags) |
| 279 | 如果new则 |
| 288 | 否则如果prealloc则 |
| 293 | WARN_ON(!init_stack_slab( & prealloc)) |
| 296 | spin_unlock_irqrestore( & depot_lock, flags) |
| 297 | exit : |
| 298 | 如果prealloc则 |
| 300 | free_pages((unsignedlong)prealloc, 'Slab' size order for stack depot, 4 pages ) |
| 304 | fast_exit : |
| 305 | 返回:retval |
| 名称 | 描述 |
|---|---|
| create_dummy_stack | |
| save_stack | |
| save_stack |
| 源代码转换工具 开放的插件接口 | X |
|---|---|
| 支持:c/c++/esqlc/java Oracle/Informix/Mysql 插件可实现:逻辑报告 代码生成和批量转换代码 |