b为从上往下数的段落号,如有lastb字样则为从下往上数第b段。
Error %d\n", name, err); else { pr_warn("kmem_cache_create(%s) failed with error %d\n", name, err); dump_stack(); } return NULL; } return s; } EXPORT_SYMBOL(kmem_cache_create); kmem_cache_create()只是分配size大小的缓存,并不会调用对象的构造函数,只有当再调用kmem_cache_alloc()...
do_tune_cpucache() 主要做两件事情: 1. 调用 alloc_kmem_cache_cpus() 初始化 kmem_cache::cpu_cache 成员; 1. 调用 setup_kmem_cache_nodes() 初始化 kmem_cache::node 成员; /// @file mm/slab.c 3799 static int do_tune_cpucache(struct kmem_cache *cachep, int limit, 3800 int batchcoun...
当我没有调用kmem_cache_alloc(),只调用kmem_cache_create()的时候是没有调用对象的构造函数的,可以对照源码,调用kmem_cache_create()并没有分配slab,是在创建对象的时候发现没有空闲对象,调用cache_grow()分配一个slab,然后再分配对象。所以这里调用构造函数初始化的object都是刚分配的slab中的。cat/proc/slabinf...
在create_task_io_context函数内部,kmem_cache_alloc_node函数耗时0.485 us,而_raw_spin_lock函数...
staticintsplat_kmem_cache_thread_test(struct file *file,void*arg,char*name,intsize,intalloc,intmax_time){kmem_cache_priv_t*kcp;kthread_t*thr;structtimespecstart,stop,delta;charcache_name[32];inti, rc =0; kcp = splat_kmem_cache_test_kcp_alloc(file, name, size,0, alloc);if(!kcp) ...