Я не могу понять, как получить виртуальный адрес стандарта mmap объектов в Python (из модуля mmap). Документированные методы, по-видимому, имеют доступ к памяти как к массиву байтов или как к символьным строкам.Как получить адрес mmap-ed памяти в Python?
Но мне нужно получить доступ к памяти mmap'ом точно через 2 или 4 байта за раз - потому что эта память в моем приложении сопоставляется с аппаратными регистрами (think/dev/mem или GPIO или таковыми). Доступ к памяти таким образом возможен с ctypes module - но для этого мне нужен указатель - или виртуальный адрес - отображения.
В настоящее время я преодолеваю это с помощью собственных функций open() и mmap() из libc (благодаря тем же типам), но скорее не будет.
Почему модуль mmap не обеспечивает простой способ получить адрес памяти? Надеемся, что я что-то очевидное отсутствую ...
- дд
Отлично! Большое спасибо. – ddbug
Вчера я сделал быстрый тест и хотел уже отметить ваш ответ. но тогда я не могу сделать «реальную» работу кода с Python 2.7 на Linux. Точный код, который вы отправили, не разрешен. Я не понимаю, почему. Когда я изменяю MAP_SHARED на MAP_PRIVATE, mmap преуспевает. Когда я изменяю PROT_WRITE на PROT_READ, mmap преуспевает. Но мне нужно, чтобы он был общим (видимым в глобальном масштабе) и доступным для записи. Не могли бы вы дать еще один намек, пожалуйста? – ddbug