我可以将可搜索字符设备`/ dev / mem_8`映射到内存并使用x86_64指令访问它吗?

时间:2013-10-08 18:48:04

标签: c++ c linux x86 mmap

如果我有一个可搜索的字符设备 - /dev/mem_8,允许用户空间程序通过简单的I / O操作随机访问存储器阵列,我可以将它映射到我的进程的虚拟寻址存储器以便于使用x86_64说明访问它:MOVREP MOVS和SSE:MOVNTDQMOVNTDQA ...?

操作系统:Linux x86_64内核> = 2.6

1 个答案:

答案 0 :(得分:1)

从Linux(用户模式)应用程序中成功调用mmap(2)系统调用后,address space已更改并且每个(非特权)计算机指令(来自执行{{ {1}})可以访问它,因为process可以使用virtual memory

您可以使用proc(5)文件系统查询地址空间,例如与mmap ....

如果cat /proc/$PID/maps /dev/mem_8能够mmap,那么它应该没问题。如果可能的话,或许最好使它成为block device。或者可能提供FUSE文件系统(在char设备上方提供类似块的抽象)....

另请阅读Advanced Linux Programming ...

也许raw(8)是相关的......(不确定)。