Reputation: 1348
i have an array
char* temp;
temp=kmalloc(3,GFP_KERNEL);
i need to expand this array each time i call this function Note: Realloc can't be used in linux kernel i dont know if it exists
Upvotes: 5
Views: 4652
Reputation: 6022
You probably want to using something like Linux's Flexible Array implementation. See http://git.kernel.org/?p=linux/kernel/git/torvalds/linux.git;a=blob;f=Documentation/flexible-arrays.txt;h=df904aec99044f8056ac530b9e9dc6de8f26f73e;hb=HEAD
Upvotes: 0
Reputation: 6543
<linux/slab.h>
does have krealloc()
to go with kmalloc()
. This was added in 2007 / kernel 2.6.22.
Upvotes: 4
Reputation: 3307
I would suggest you should use a fixed size ring buffer based upon a mmapped memory(or something of that sort) instead of expanding allocation every time.
Upvotes: 1
Reputation: 3638
Roll your own realloc but be noted that realloc is a poorly designed function interface. Just allocate a new buffer with kmalloc and memcpy the old data into the new buffer; that's essentially all that realloc does if it cannot expand the buffer in place.
Upvotes: 8