我需要支持一个旧的硬件,这个用户端库没有源代码,但是我有设备驱动程序的源代码。因此,我必须重写设备驱动程序以支持IA-32模式的用户登录二进制文件。
对于ioctl调用,添加compat-ioctl以支持用户端的IA-32。但是32位库进行mmap调用,它只返回地址的一半(当然)。我的问题是,有没有类似于compat-ioctl对ioctl的mmap支持?如果没有compat_mmap,如何支持IA-32用户的land mmap调用?
谢谢你的帮助!
最佳答案
你不用担心。当调用f_op->mmap()
函数时,它会传递一个struct vm_area_struct
函数,该函数已经为调用任务正确定位。
(在x86-64上,arch_get_unmapped_area()
函数会处理这个问题—它确保返回的区域小于TASK_SIZE
,并且TASK_SIZE
取决于任务是否设置了TIF_ADDR32
标志)。
关于c - 如何为x86_64上的mmap支持IA-32?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15100106/