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