Eu criei meu próprio pool de memória para cache e inseri meu módulo em
espaço do kernel no Linux 2.6 e funcionou. Ele exibiu as informações do cache usando cat /proc/slabinfo
.
PROBLEMA:
Meu problema é agora eu estou usando o Linux versão 3.5 e eu testei o mesmo
módulo do driver, mas não exibe informações de cache em cat /proc/slabinfo
.
Aqui está o código de trabalho do 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");