我正在使用 ioctl 调用进行内核模块编程,以在用户空间和内核空间之间进行通信。我计划在 python 中制作用户空间 api。
为了在内核和用户空间之间传递数据,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 struct 的地址?
我不想使用 ctypes,或者用 c 扩展 python。纯python代码,是我想要的。