96 SCP_LOGGER((),
"SharedMemoryCleaner");
103 void add_shared_memory_region(
const std::string&
memname);
108 bool is_full()
const {
return get_count() == MAX_SHM_SEGS_NUM; }
110 bool is_name_valid(
const std::string& name)
const {
return name.size() < MAX_SHM_STR_LENGTH; }
112 uint32_t get_count()
const {
return m_named_shm_registry->count; }
114 void ensure_shm_cleaner_service()
117 if (m_shm_cleaner_service ==
nullptr) m_shm_cleaner_service = std::make_unique<ShmemCleanerService>(
this);
121 std::unique_ptr<ShmemCleanerService> m_shm_cleaner_service;
127 SCP_LOGGER((),
"MemoryServices");
143 void start_shm_cleaner_proc();
147 static void cleanupexit();
151 struct SharedMemoryDescriptor {
152 SharedMemoryDescriptor(
int file_descriptor, uint8_t* addr,
size_t size)
153 : file_descriptor(file_descriptor), addr(addr), size(size)
157 const int file_descriptor;
163 std::map<std::string, SharedMemoryDescriptor> m_shmem_desc_map;
166 void initialize_shm_cleaner_service();
175 const char* name()
const;
177 size_t get_shmem_seg_num()
const;
186 int get_shmem_fd(
const std::string&
memname);
190 void unmap_file(uint8_t* ptr,
size_t size);
196 uint8_t* map_mem_join(
const std::string&
memname,
size_t size);
198 uint8_t* map_mem_join_new(
const std::string&
memname,
size_t size);