当前位置: 技术问答>linux和unix
内存池加载后异常问题
来源: 互联网 发布时间:2016-05-23
本文导语: 下面代码运行有问题,请高手为我看一下,谢谢! //内存池实例 #include #include #include #include #include #define MIN_ELEMENT 4 #define TEST_ELEMENT 4 typedef struct { int number; char string[128]; } TMemElement; int elementcount=0; voi...
下面代码运行有问题,请高手为我看一下,谢谢!
//内存池实例
#include
#include
#include
#include
#include
#define MIN_ELEMENT 4
#define TEST_ELEMENT 4
typedef struct
{
int number;
char string[128];
} TMemElement;
int elementcount=0;
void *mempool_alloc_test(int gfp_mask,void *pool_data)
{
TMemElement *data;
printk("---->mempool_alloc_testn");
data=kmalloc(sizeof(TMemElement),gfp_mask); //通过kmalloc()函数分配TMemElement结构体大小内存,在分配到的结构体number域上记录分配次数
if(data!=NULL) data->number=elementcount++;
return data;
}
void mempool_free_test(void *element,void *pool_data)
{
printk("---->call mempool_free_testn");
if(element!=NULL) kfree(element);
}
int mempool_init(void)
{
mempool_t *mp;
TMemElement *element[TEST_ELEMENT];
int lp;
printk("Module MEMPOOL Testn");
memset(element,0,sizeof(element));
printk("call mempool_createn");
mp=mempool_create(MIN_ELEMENT,mempool_alloc_test,
mempool_free_test,NULL);
printk("mempool allocaten");
for(lp=0;lpstring,"alloc data %dn",
element[lp]->number);
printk(element[lp]->string);
}
}
printk("mempool freen");
for(lp=0;lp
//内存池实例
#include
#include
#include
#include
#include
#define MIN_ELEMENT 4
#define TEST_ELEMENT 4
typedef struct
{
int number;
char string[128];
} TMemElement;
int elementcount=0;
void *mempool_alloc_test(int gfp_mask,void *pool_data)
{
TMemElement *data;
printk("---->mempool_alloc_testn");
data=kmalloc(sizeof(TMemElement),gfp_mask); //通过kmalloc()函数分配TMemElement结构体大小内存,在分配到的结构体number域上记录分配次数
if(data!=NULL) data->number=elementcount++;
return data;
}
void mempool_free_test(void *element,void *pool_data)
{
printk("---->call mempool_free_testn");
if(element!=NULL) kfree(element);
}
int mempool_init(void)
{
mempool_t *mp;
TMemElement *element[TEST_ELEMENT];
int lp;
printk("Module MEMPOOL Testn");
memset(element,0,sizeof(element));
printk("call mempool_createn");
mp=mempool_create(MIN_ELEMENT,mempool_alloc_test,
mempool_free_test,NULL);
printk("mempool allocaten");
for(lp=0;lpstring,"alloc data %dn",
element[lp]->number);
printk(element[lp]->string);
}
}
printk("mempool freen");
for(lp=0;lp