2012-05-01 115 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中添加的。