私は配列を持っています
char* temp;
temp=kmalloc(3,GFP_KERNEL);
この関数を呼び出すたびにこの配列を展開する必要があります注:ReallocはLinuxカーネルでは使用できません。存在するかどうかはわかりません。
私は配列を持っています
char* temp;
temp=kmalloc(3,GFP_KERNEL);
この関数を呼び出すたびにこの配列を展開する必要があります注:ReallocはLinuxカーネルでは使用できません。存在するかどうかはわかりません。
独自のreallocをロールしますが、reallocは不十分に設計された関数インターフェースであることに注意してください。kmallocとmemcpyを使用して新しいバッファを割り当て、古いデータを新しいバッファに割り当てるだけです。バッファを適切に拡張できない場合、reallocが実行するのは基本的にこれだけです。
<linux/slab.h>
krealloc()
と一緒に行く必要がありますkmalloc()
。これは2007/カーネル2.6.22で追加されました。
毎回割り当てを拡張するのではなく、mmapされたメモリ(またはそのようなもの)に基づく固定サイズのリングバッファを使用することをお勧めします。
LinuxのFlexibleArray実装のようなものを使用したいと思うかもしれません。http://git.kernel.org/?p=linux/kernel/git/torvalds/linux.git;a=blob;f=Documentation/flexible-arrays.txt;h=df904aec99044f8056ac530b9e9dc6de8f26f73e;hb=HEADを参照して ください