34 #ifndef __jack_shm_h__ 35 #define __jack_shm_h__ 38 #include <sys/types.h> 40 #include "JackCompilerDeps.h" 51 #define MAX_SHM_ID 256 52 #define JACK_SERVER_NAME_SIZE 256 53 #define JACK_SHM_MAGIC 0x4a41434b 54 #define JACK_SHM_NULL_INDEX -1 55 #define JACK_SHM_REGISTRY_INDEX -2 69 #define SHM_NAME_MAX NAME_MAX 71 typedef char shm_name_t[SHM_NAME_MAX];
72 typedef shm_name_t jack_shm_id_t;
77 #define SHM_NAME_MAX NAME_MAX 79 typedef char shm_name_t[SHM_NAME_MAX];
80 typedef shm_name_t jack_shm_id_t;
84 typedef int jack_shm_id_t;
94 typedef int16_t jack_shm_registry_index_t;
112 char name[JACK_SERVER_NAME_SIZE];
121 jack_shmsize_t hdr_len;
122 jack_shmsize_t entry_len;
128 jack_shm_registry_index_t index;
141 #define JACK_SHM_REGISTRY_SIZE (sizeof (jack_shm_header_t) \ 142 + sizeof (jack_shm_registry_t) * MAX_SHM_ID) 154 jack_shm_registry_index_t index;
160 } POST_PACKED_STRUCTURE;
166 void jack_shm_copy_from_registry (jack_shm_info_t*,
167 jack_shm_registry_index_t);
168 void jack_shm_copy_to_registry (jack_shm_info_t*,
169 jack_shm_registry_index_t*);
170 int jack_release_shm_info (jack_shm_registry_index_t);
171 char* jack_shm_addr (jack_shm_info_t* si);
174 int jack_register_server (
const char *server_name,
int new_registry);
175 int jack_unregister_server (
const char *server_name);
177 int jack_initialize_shm (
const char *server_name);
178 int jack_initialize_shm_server (
void);
179 int jack_initialize_shm_client (
void);
180 int jack_cleanup_shm (
void);
182 int jack_shmalloc (
const char *shm_name, jack_shmsize_t size,
183 jack_shm_info_t* result);
184 void jack_release_shm (jack_shm_info_t*);
185 void jack_release_lib_shm (jack_shm_info_t*);
186 void jack_destroy_shm (jack_shm_info_t*);
187 int jack_attach_shm (jack_shm_info_t*);
188 int jack_attach_lib_shm (jack_shm_info_t*);
189 int jack_attach_shm_read (jack_shm_info_t*);
190 int jack_attach_lib_shm_read (jack_shm_info_t*);
191 int jack_resize_shm (jack_shm_info_t*, jack_shmsize_t size);