我需要支持一个旧的硬件,这个用户端库没有源代码,但是我有设备驱动程序的源代码。因此,我必须重写设备驱动程序以支持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/

10-15 00:07
查看更多