#pragma once #include #include #include 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 от начала страницы };