1

我需要支持旧硬件,该用户土地库没有源代码,但我有设备驱动程序的源代码。因此,我必须重写设备驱动程序以支持 IA-32 模式用户登陆二进制文件。

对于 ioctl 调用,添加了 compat_ioctl 以支持用户空间中的 IA-32。但是 32 位库进行 mmap 调用,它只返回一半的地址(当然)。我的问题是,是否有类似于 compat_ioctl vs ioctl 的 mmap 支持?如果没有 compat_mmap,如何支持 IA-32 用户登陆 mmap 调用?

感谢你的帮助!

4

1 回答 1

3

你不必担心它。当你的f_op->mmap()函数被调用时,它会传递一个struct vm_area_struct已经为调用任务正确定位的函数。

(在 x86-64 上,该arch_get_unmapped_area()函数负责这一点 - 它确保返回的区域小于TASK_SIZE,并TASK_SIZE取决于任务是否TIF_ADDR32设置了标志)。

于 2013-02-26T23:33:43.480 回答