如何在Python中获取mmap内存的地址?

2024-02-07

我不知道如何获取标准的虚拟地址mmapPython 中的对象(来自 mmap 模块)。 记录的方法似乎仅以字节数组或字符串的形式访问内存。

但我需要一次精确地访问 mmap'ped 内存 2 或 4 个字节 - 因为我的应用程序中的该内存被映射到硬件寄存器(想想 /dev/mem 或 GPIO 等)。以这种方式访问​​内存是可能的ctypes模块 - 但为此我需要pointer- 或映射的虚拟地址。

目前,我通过使用 libc 中的本机 open() 和 mmap() 函数(感谢相同的 ctypes)来克服这个问题,但我宁愿不这样做。

为什么 mmap 模块不提供获取内存地址的简单方法?希望我错过了一些明显的东西......

-- dd


mmap对象支持可写缓冲区接口,因此您可以使用from_buffer类方法ctypes类有mmap对象作为参数来获取ctypes共享内存的对象mmap file.

buf = mmap.mmap(fd, mmap.PAGESIZE, mmap.MAP_SHARED, mmap.PROT_WRITE)
int_pointer = ctypes.c_int.from_buffer(buf)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在Python中获取mmap内存的地址? 的相关文章

随机推荐