5
我的问题是关于从内核传递数据到用户空间程序。我想实现一个系统调用“get_data(size,char * buff,char ** meta_buf)”。在这个调用中,buff由用户空间程序分配,其长度在size参数中传递。但是,meta_buf是一个可变长度缓冲区,它被分配(在用户空间程序的虚拟机页面中)并由内核填充。用户空间程序将释放该区域。从内核线程为用户空间分配内存
(我不能在用户空间分配数据,因为用户空间程序不知道meta_buff的大小,而且用户空间程序不能分配固定数量的内存,并且一次又一次地调用系统调用来读取整个元数据。meta_data必须在一次系统调用中返回)
- 如何从内核线程为用户空间程序分配内存? (我甚至会很感激,如果你能指向我的任何其他系统调用做类似的操作 - 在内核中分配和释放用户空间)
- 这个接口是正确的还是有更好的方法来做到这一点?
最小运行示例:https://stackoverflow.com/questions/10760479/how-to-mmap-a-linux-kernel-buffer-to-user-space/45645732#45645732 – 2017-08-12 01:45:42