【问题标题】:How to access physical memory in linux from userspace?如何从用户空间访问linux中的物理内存?
【发布时间】:2009-11-25 17:32:32
【问题描述】:

我有一个物理内存地址,驱动程序通过 ioctl 提供给我。如何在我的 linux 应用程序中访问它。

【问题讨论】:

    标签: linux memory-management


    【解决方案1】:

    如果您必须这样做,请使用标头 <unistd.h> 中的函数 mmap 和 mprotect 打开 /dev/mem

    【讨论】:

    • 这需要root权限才能这样做,因为普通的非root用户将被拒绝访问/dev/mem!
    • 是的,我有点假设他无法通过驱动程序接口访问内存区域。否则他一开始就不会问这个问题。问题没有提到权限级别。
    • 是的 mmap /dev/mem。但这很糟糕:)
    【解决方案2】:

    这是邪恶,你会遇到这种方法的微妙问题,而且你很可能会破坏内存。正如 abyx 所说,让 IOCTL 本身返回您感兴趣的内存。

    【讨论】:

      【解决方案3】:

      通常,要在用户空间中访问它,您需要使用copy_to_user() 来获取有效的用户空间副本。

      【讨论】:

        猜你喜欢
        • 2012-08-15
        • 2014-04-27
        • 2012-05-17
        • 1970-01-01
        • 2014-06-10
        • 2011-12-15
        • 2018-03-27
        • 2017-10-27
        • 1970-01-01
        相关资源
        最近更新 更多