25 lines
965 B
C++
25 lines
965 B
C++
#pragma once
|
||
|
||
#include <stdint.h>
|
||
#include <fcntl.h>
|
||
#include <sys/mman.h>
|
||
|
||
class MemMapping
|
||
{
|
||
public:
|
||
/*
|
||
* memOpenFlags - параметры доступа к /dev/mem, например O_RDWR, O_SYNC
|
||
* addr - физический адрес в памяти, м.б. не кратен размеру страницы
|
||
* mmapProt - параметры mmap, например PROT_READ | PROT_WRITE
|
||
* mmapFlags - параметры mmap, например MAP_SHARED
|
||
*/
|
||
MemMapping(int memOpenFlags, size_t addr, size_t size, int mmapProt, int mmapFlags);
|
||
~MemMapping();
|
||
void * get() { return m_mapAddr + m_pageOffset; };
|
||
|
||
private:
|
||
void * m_mapAddr; //замапированный виртуальный адрес, кратный размеру страницы
|
||
size_t m_size; //замапированный размер
|
||
|
||
size_t m_pageOffset; //отступ исходного addr от начала страницы
|
||
}; |