我已经创建了自己的缓存内存池,并将模块插入 Linux 2.6 中的内核空间,并且它已经运行。它使用 显示缓存信息cat /proc/slabinfo
。
问题:我的问题是现在我正在使用 Linux 3.5 版本,并且我已经测试了相同的驱动模块,但没有显示缓存信息cat /proc/slabinfo
。
以下是 Linux 2.6 的工作代码:
#include<linux/module.h>
#include<linux/kernel.h>
#include<linux/version.h>
#include<linux/init.h>
#include<linux/slab.h>
#include<linux/mempool.h>
#define SUCCESS 0
mempool_t *mem;
struct kmem_cache *cache_ptr;
int *ret;
typedef struct abc {
int a;
int b;
int c;
} abc_t;
abc_t *ptr;
static int var = 12;
static void func(void);
void func(void) {
ptr = (struct abc_t *)mempool_alloc(mem,GFP_KERNEL);
ptr->a = 100;
ptr->b = 300;
ptr->c = 700;
printk("val is %d\n",ptr->a);
}
int init_module(void) {
cache_ptr = kmem_cache_create("cache_mem1",var,0,SLAB_HWCACHE_ALIGN,NULL);
mem = mempool_create(20,mempool_alloc_slab,mempool_free_slab,cache_ptr);
if(mem == NULL)
return -ENOMEM;
printk("\n module loaded");
func();
return SUCCESS;
}
void cleanup_module(void) {
printk("\n module removed");
mempool_free(ptr,mem);
mempool_destroy(mem);
kmem_cache_destroy(cache_ptr);
}
MODULE_AUTHOR("KOTI");
MODULE_LICENSE("GPL");
MODULE_DESCRIPTION("CACHE_SLAB");