Mohamed Gamal
Mohamed Gamal

Reputation: 1348

Expand array linux kernel module

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

Answers (4)

stsquad
stsquad

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

Roland
Roland

Reputation: 6543

<linux/slab.h> does have krealloc() to go with kmalloc(). This was added in 2007 / kernel 2.6.22.

Upvotes: 4

Jay D
Jay D

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

Burton Samograd
Burton Samograd

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

Related Questions