我有一个数组展开阵列Linux内核模块
char* temp;
temp=kmalloc(3,GFP_KERNEL);
我需要我每次调用这个函数 注意扩大这个数组:ReAlloc如果不能在Linux内核中使用我不知道它的存在
我有一个数组展开阵列Linux内核模块
char* temp;
temp=kmalloc(3,GFP_KERNEL);
我需要我每次调用这个函数 注意扩大这个数组:ReAlloc如果不能在Linux内核中使用我不知道它的存在
滚动您自己的realloc,但要注意的是,realloc是设计不佳的功能界面。只需使用kmalloc和memcpy将新数据分配到新缓冲区;这基本上就是realloc所做的,如果它不能扩展缓冲区的话。
我建议你应该使用基于mmapped内存(或类似的东西),而不是每次扩大分配的固定大小的环形缓冲区。
<linux/slab.h>
确实有krealloc()
去跟kmalloc()
。这是在2007/kernel 2.6.22中添加的。
我不会继续做3字节的kmallocs和memcpy。只需在1K等较大的块中使用kmalloc,那么您只需稍后再执行一次realloc – TJD