为驱动模块创建内存池

为驱动模块创建内存池

我已经创建了自己的缓存内存池,并将模块插入 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");

相关内容