函数逻辑报告 | 
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 插件可实现:逻辑报告 代码生成和批量转换代码  |