24 #ifndef __UTILS_IPC_SHM_H_ 25 #define __UTILS_IPC_SHM_H_ 28 #include <sys/types.h> 29 #include <utils/ipc/shm_registry.h> 36 virtual bool matches(
void *memptr) = 0;
37 virtual size_t size() = 0;
39 virtual void set(
void *memptr) = 0;
40 virtual void reset() = 0;
59 bool is_read_only,
bool create,
60 bool destroy_on_delete,
61 const char *registry_name = 0);
67 bool is_read_only()
const;
68 bool is_destroyed()
const;
69 bool is_swapable()
const;
70 bool is_valid()
const;
71 bool is_creator()
const;
72 bool is_protected()
const;
73 void * memptr()
const;
76 unsigned int num_attached()
const;
78 void set(
void *memptr);
79 void set_destroy_on_delete(
bool destroy);
81 void set_swapable(
bool swapable);
84 bool try_lock_for_read();
85 void lock_for_write();
86 bool try_lock_for_write();
89 void * ptr(
void *addr)
const;
90 void * addr(
void *ptr)
const;
92 static void list(
const char *magic_token,
94 const char *registry_name = 0);
96 static void erase(
const char *magic_token,
99 const char *registry_name = 0);
101 static void erase_orphaned(
const char *magic_token,
104 const char *registry_name = 0);
106 static bool exists(
const char *magic_token,
108 const char *registry_name = 0);
110 static bool is_destroyed(
int shm_id);
111 static bool is_swapable(
int shm_id);
112 static unsigned int num_attached(
int shm_id);
132 const char * magic_token()
const;
134 int semaphore()
const;
135 size_t segmsize()
const;
136 size_t segmnattch()
const;
137 void * databuf()
const;
144 std::list<SharedMemoryRegistry::SharedMemID> __ids;
145 std::list<SharedMemoryRegistry::SharedMemID>::iterator __id_it;
157 const char *registry_name = 0);
171 bool is_read_only,
bool create,
bool destroy_on_delete,
172 const char *registry_name = 0);
193 char * __registry_name;
197 void *__shared_mem_upper_bound;
203 bool __write_lock_aquired;
Fawkes library namespace.
size_t _mem_size
Total size of the segment, including headers.
bool _should_create
Create shared memory segment.
size_t _data_size
Size of the data segment only.
SharedMemory_header_t * _shm_header
general header as stored in the shared memory segment
void * _shm_upper_bound
Upper bound of memory.
char * _magic_token
Magic token.
char * _shm_magic_token
Magic token as stored in the shared memory segment.
bool _destroy_on_delete
destroy on delete.
void * _memptr
Pointer to the data segment.
Format list output for shared memory segments.
static const short MaxNumConcurrentReaders
Maximum number of concurrent readers.
bool _is_read_only
Read-only.
SharedMemoryHeader * _header
Data-specific header.
static const unsigned int MagicTokenSize
The magic token size.
long unsigned int _shm_offset
Offset to the master's base addr.