Function report |
Source Code:mm\slub.c |
Create Date:2022-07-28 15:48:18 |
| Last Modify:2020-03-12 14:18:49 | Copyright©Brick |
| home page | Tree |
| Annotation kernel can get tool activity | Download SCCT | Chinese |
Name:Slow path. The lockless freelist is empty or we need to perform* debugging duties.* Processing is still very fast if new objects have been freed to the* regular freelist. In that case we simply take over the regular freelist
Proto:static void *___slab_alloc(struct kmem_cache *s, gfp_t gfpflags, int node, unsigned long addr, struct kmem_cache_cpu *c)
Type:void
Parameter:
| Type | Parameter | Name |
|---|---|---|
| struct kmem_cache * | s | |
| gfp_t | gfpflags | |
| int | node | |
| unsigned long | addr | |
| struct kmem_cache_cpu * | c |
| 2549 | redo : |
| 2552 | searchnode = node |
| 2554 | If node != NUMA_NO_NODE && Not node_present_pages(node) Then searchnode = node_to_mem_node(node) |
| 2570 | Remove the cpu slab |
| 2571 | Go to new_slab |
| 2576 | If freelist Then Go to load_freelist |
| 2581 | If Not freelist Then |
| 2582 | The slab from which we are allocating = NULL |
| 2583 | stat(s, Implicit deactivation ) |
| 2584 | Go to new_slab |
| 2587 | stat(s, Refill cpu slab from slab freelist ) |
| 2589 | load_freelist : |
| 2598 | Return freelist |
| 2600 | new_slab : |
| 2602 | If slub_percpu_partial(c) Then |
| 2605 | stat(s, Used cpu partial on alloc ) |
| 2606 | Go to redo |
| 2612 | slab_out_of_memory(s, gfpflags, node) |
| 2613 | Return NULL |
| 2625 | Remove the cpu slab |
| 2626 | Return freelist |
| Name | Describe |
|---|---|
| __slab_alloc | Another one that disabled interrupt and compensates for possible* cpu changes by refetching the per cpu area pointer. |
| kmem_cache_alloc_bulk | Note that interrupts must be enabled when calling this function. |
| Source code conversion tool public plug-in interface | X |
|---|---|
| Support c/c++/esqlc/java Oracle/Informix/Mysql Plug-in can realize: logical Report Code generation and batch code conversion |