Return Type | Function name | Arguments |
---|---|---|
hzEcode | hzShmem::Init | (const char*,unsigned int,unsigned int,) |
Declared in file: hzProcess.h
Defined in file : hzProcess.cpp
Function Logic:
Function body:
hzEcode hzShmem::Init (const char* name, unsigned int size, unsigned int mask) { _hzfunc("hzShmem::Init") ; if (m_name) { hzerr(E_INITDUP, "Shared memory segment %s already initialized", *m_name) ; return E_INITDUP ; } if (!name || !name[0]) { hzerr(E_ARGUMENT, "No name supplied") ; return E_ARGUMENT ; } m_name = name ; m_size = ((size/4096)+1)*4096; m_perm = mask ; // Open shared memory m_fd = shm_open(name, O_RDWR | O_CREAT, 0666); threadLog("Set fd to %d\n", m_fd) ; if (ftruncate(m_fd, m_size) != 0) { hzerr(E_INITFAIL, "Shared memory could not be sized to %d bytes", m_size) ; return E_INITFAIL ; } threadLog("Set size to %d\n", m_size) ; m_pStart = mmap(0,m_size, PROT_READ | PROT_WRITE, MAP_SHARED, m_fd, 0); if (!m_pStart || m_pStart == (void*)-1) { hzerr(E_INITFAIL, "Shared memory address at %p errno is %d\n", m_pStart, errno) ; return E_INITFAIL ; } threadLog("mem at %p\n", m_pStart) ; return E_OK ; }