2012-05-01 77 views
3

我有一个数组展开阵列Linux内核模块

char* temp; 
temp=kmalloc(3,GFP_KERNEL); 

我需要我每次调用这个函数 注意扩大这个数组:ReAlloc如果不能在Linux内核中使用我不知道它的存在

回答

6

滚动您自己的realloc,但要注意的是,realloc是设计不佳的功能界面。只需使用kmalloc和memcpy将新数据分配到新缓冲区;这基本上就是realloc所做的,如果它不能扩展缓冲区的话。

+2

我不会继续做3字节的kmallocs和memcpy。只需在1K等较大的块中使用kmalloc,那么您只需稍后再执行一次realloc – TJD

1

我建议你应该使用基于mmapped内存(或类似的东西),而不是每次扩大分配的固定大小的环形缓冲区。

2

<linux/slab.h>确实有krealloc()去跟kmalloc()。这是在2007/kernel 2.6.22中添加的。