不要尝试从内核为用户空间分配内存-这严重违反了内核的抽象层。相反,请考虑其他一些选择:
- 让用户空间询问它需要多少空间。用户空间进行分配,然后从内核中获取内存。
- 将驱动程序拥有的用户空间mmap页面直接放入其地址空间。
- 设置所需数据量的上限。只要分配那么多。
在不知道 为什么
这必须是原子的情况下很难说更多。实际上,分配内存无论如何都必须是可中断的(否则您不太可能成功),因此从内核中移出和移回内核的可能性不大。实际上,对用户空间内存的
任何 写入都 必须 是可中断的,因为存在可能需要IO的页面错误。



