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 |