我有一個數組展開陣列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