我想编写一个内核模块,在那里我获得接近 8 mbps 的 TCP/IP 数据包。我必须将这些数据包存储 500 毫秒的持续时间。稍后这些数据包应按顺序转发。这些应该为 30 名成员完成。什么应该是最好的实施方法?我应该使用kmalloc一次(kmalloc(64000000, GFP_ATOMIC)吗?因为每次如果我这样做kmalloc,kfree都需要时间,从而导致性能问题。另外,如果我一次性在内核中分配内存,Linux 内核会允许我这样做吗?
我已经分配了一个指针
int *ptr = kmalloc(sizeof(int), GFP_ATOMIC);
Run Code Online (Sandbox Code Playgroud)
并且该指针在具有 5 秒超时值的计时器函数中被释放。
if( NULL != ptr )
{
kfree(ptr);
ptr = NULL;
}
Run Code Online (Sandbox Code Playgroud)
请告诉我这里有什么问题.. 提前致谢。