22 #include "../libs/indicore/shm_open_anon.c"
25 #include <system_error>
34 #include <linux/unistd.h>
39 #include <sys/types.h>
72 if (fstat(
fd, &sb) == -1)
75 throw std::system_error(e, std::generic_category(),
"Unable to stat buffer");
95 throw std::runtime_error(
"SharedBuffer is not allocated");
108 if (size < offset + writeSize)
110 throw std::runtime_error(
"Attempt to write beyond past");
113 void * mmapped = mmap(0, size, PROT_READ | PROT_WRITE, MAP_SHARED,
fd, 0);
114 if (mmapped == MAP_FAILED)
117 throw std::runtime_error(
"Mmap failed");
120 memcpy((
void*)((
char*)mmapped + offset), data, writeSize);
122 if (munmap(mmapped, size) == -1)
125 throw std::runtime_error(
"Munmap failed");
136 throw std::system_error(
errno, std::generic_category(),
"memfd_create");
139 int ret = ftruncate(
fd, nsize);
142 throw std::system_error(
errno, std::generic_category(),
"memfd_create");
void allocate(ssize_t size)
void write(const void *buffer, ssize_t offset, ssize_t size)