sitara_depot/utils/FileToSharedMem/MemMapping.h

25 lines
965 B
C
Raw Normal View History

2024-07-01 12:29:22 +03:00
#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 от начала страницы
};