我正在做內核模塊編程,使用ioctl調用來在用戶空間和內核空間之間進行通信。 我打算在python中製作用戶空間api。如何獲取python中的結構對象的地址?
要在內核和用戶空間之間傳遞數據ioctl調用利用地址,並使用copy_to_user或copy_from_user複製數據。這裏的地址由unsigned long arg
給出。
int ioctl(struct inode *inode,struct file *filp,unsigned int cmd,unsigned long arg)
在C用戶空間編程它是微不足道的傳遞地址。 我想要做的是使用python的struct創建一個與我在內核模塊中定義的結構兼容的結構,並使用python的fcntl模塊中的ioctl傳遞填充的python結構。
可能嗎? 如果可能的話,我如何在ioctl調用中傳遞python結構的地址?
我不想使用ctypes或用c擴展python。純Python代碼,是我想要的。
(+1)在同一個問題中使用'[python]'和'[kernel-programming]':) – NPE
不確定你爲什麼「不想使用ctypes」,因爲這正是它的任務它被創造了! –
你讀過'fcntl'的基礎知識嗎?因爲它已經做了你所要求的:「..當參數是一個字符串時,它表示一個二進制結構,例如由struct.pack()創建。二進制數據被複制到一個緩衝區,其地址被傳遞給C fcntl ()呼叫......「。你還想做什麼? – mmgp