34 #ifndef COROAPI_H_DEFINED 35 #define COROAPI_H_DEFINED 44 #include <qb/qbloop.h> 63 #ifndef TIMER_HANDLE_T 65 #define TIMER_HANDLE_T 1 73 #define TOTEMIP_ADDRLEN (sizeof(struct in6_addr)) 75 #define INTERFACE_MAX 2 77 #ifndef MESSAGE_QUEUE_MAX 78 #ifdef HAVE_SMALL_MEMORY_FOOTPRINT 79 #define PROCESSOR_COUNT_MAX 16 80 #define MESSAGE_SIZE_MAX 1024*64 81 #define MESSAGE_QUEUE_MAX 512 83 #define PROCESSOR_COUNT_MAX 384 84 #define MESSAGE_SIZE_MAX 1024*1024 85 #define MESSAGE_QUEUE_MAX ((4 * MESSAGE_SIZE_MAX) / totem_config->net_mtu) 89 #define TOTEM_AGREED 0 92 #define MILLI_2_NANO_SECONDS 1000000ULL 94 #if !defined(TOTEM_IP_ADDRESS) 102 #if !defined(MEMB_RING_ID) 109 #if !defined(TOTEM_CONFIGURATION_TYPE) 116 #if !defined(TOTEM_CALLBACK_TOKEN_TYPE) 127 #define corosync_lib_flow_control cs_lib_flow_control 128 #define COROSYNC_LIB_FLOW_CONTROL_REQUIRED CS_LIB_FLOW_CONTROL_REQUIRED 129 #define COROSYNC_LIB_FLOW_CONTROL_NOT_REQUIRED CS_LIB_FLOW_CONTROL_NOT_REQUIRED 136 #if !defined (COROSYNC_FLOW_CONTROL_STATE) 141 #define corosync_flow_control_state cs_flow_control_state 142 #define CS_FLOW_CONTROL_STATE_DISABLED CS_FLOW_CONTROL_STATE_DISABLED 143 #define CS_FLOW_CONTROL_STATE_ENABLED CS_FLOW_CONTROL_STATE_ENABLED 157 #define corosync_fatal_error_t cs_fatal_error_t; 159 #ifndef QUORUM_H_DEFINED 163 int (*quorate) (void);
169 const unsigned int *view_list,
170 size_t view_list_entries,
171 int primary_designated,
181 int (*timer_add_duration) (
182 unsigned long long nanoseconds_in_future,
184 void (*timer_nf) (
void *
data),
187 int (*timer_add_absolute) (
188 unsigned long long nanoseconds_from_epoch,
190 void (*timer_fn) (
void *
data),
193 void (*timer_delete) (
196 unsigned long long (*timer_time_get) (void);
198 unsigned long long (*timer_expire_time_get) (
208 void *(*ipc_private_data_get) (
void *conn);
210 int (*ipc_response_send) (
void *conn,
const void *msg,
size_t mlen);
212 int (*ipc_response_iov_send) (
void *conn,
213 const struct iovec *iov,
unsigned int iov_len);
215 int (*ipc_dispatch_send) (
void *conn,
const void *msg,
size_t mlen);
217 int (*ipc_dispatch_iov_send) (
void *conn,
218 const struct iovec *iov,
unsigned int iov_len);
220 void (*ipc_refcnt_inc) (
void *conn);
222 void (*ipc_refcnt_dec) (
void *conn);
227 unsigned int (*totem_nodeid_get) (void);
229 int (*totem_family_get) (void);
231 int (*totem_ring_reenable) (void);
233 int (*totem_mcast) (
const struct iovec *iovec,
234 unsigned int iov_len,
unsigned int guarantee);
236 int (*totem_ifaces_get) (
239 unsigned int interfaces_size,
241 unsigned int *iface_count);
243 const char *(*totem_ifaces_print) (
unsigned int nodeid);
247 int (*totem_crypto_set) (
const char *cipher_type,
const char *hash_type);
249 int (*totem_callback_token_create) (
267 unsigned int msg_len,
268 int endian_conversion_required),
272 const unsigned int *member_list,
273 size_t member_list_entries,
274 const unsigned int *left_list,
275 size_t left_list_entries,
276 const unsigned int *joined_list,
277 size_t joined_list_entries,
293 int (*tpg_joined_mcast) (
294 void *totempg_groups_instance,
295 const struct iovec *iovec,
296 unsigned int iov_len,
299 int (*tpg_joined_reserve) (
300 void *totempg_groups_instance,
301 const struct iovec *iovec,
302 unsigned int iov_len);
304 int (*tpg_joined_release) (
307 int (*tpg_groups_mcast) (
312 const struct iovec *iovec,
313 unsigned int iov_len);
315 int (*tpg_groups_reserve) (
319 const struct iovec *iovec,
320 unsigned int iov_len);
322 int (*tpg_groups_release) (
327 int (schedwrk_fn) (
const void *),
328 const void *context);
332 int (*sync_request) (
333 const char *service_name);
338 int (*quorum_is_quorate) (void);
350 int (*plugin_interface_reference) (
352 const char *iface_name,
362 unsigned int (*service_link_and_init) (
364 const char *service_name,
365 unsigned int service_ver);
368 struct corosync_api_v1 *corosync_api_v1,
369 const char *service_name,
370 unsigned int service_ver);
377 #define corosync_fatal_error(err) api->fatal_error ((err), __FILE__, __LINE__) 380 unsigned int line) __attribute__ ((noreturn));
386 qb_loop_t *(*poll_handle_get) (void);
388 void *(*totem_get_stats)(void);
392 int (schedwrk_fn) (
const void *),
393 const void *context);
400 int (*dispatch_fn) (
int fd,
411 #define SERVICE_ID_MAKE(a,b) ( ((a)<<16) | (b) ) 413 #define SERVICE_HANDLER_MAXIMUM_COUNT 64 415 #define SERVICES_COUNT_MAX 64 418 void (*lib_handler_fn) (
void *conn,
const void *msg);
423 void (*exec_handler_fn) (
const void *msg,
unsigned int nodeid);
424 void (*exec_endian_convert_fn) (
void *msg);
440 char *(*exec_init_fn) (
struct corosync_api_v1 *);
441 int (*exec_exit_fn) (void);
442 void (*exec_dump_fn) (void);
443 int (*lib_init_fn) (
void *conn);
444 int (*lib_exit_fn) (
void *conn);
449 int (*config_init_fn) (
struct corosync_api_v1 *);
452 const unsigned int *member_list,
size_t member_list_entries,
453 const unsigned int *left_list,
size_t left_list_entries,
454 const unsigned int *joined_list,
size_t joined_list_entries,
457 const unsigned int *trans_list,
458 size_t trans_list_entries,
459 const unsigned int *member_list,
460 size_t member_list_entries,
462 int (*sync_process) (void);
463 void (*sync_activate) (void);
int(* poll_dispatch_add)(qb_loop_t *handle, int fd, int events, void *data, int(*dispatch_fn)(int fd, int revents, void *data))
enum totem_configuration_type __attribute__
#define CS_FLOW_CONTROL_STATE_DISABLED
int sync_init(int(*sync_callbacks_retrieve)(int service_id, struct sync_callbacks *callbacks), void(*synchronization_completed)(void))
void(* shutdown_request)(void)
void(* fatal_error)(cs_fatal_error_t err, const char *file, unsigned int line) __attribute__((noreturn))
unsigned char addr[TOTEMIP_ADDRLEN]
void schedwrk_destroy(hdb_handle_t handle)
#define CS_FLOW_CONTROL_STATE_ENABLED
void(* error_memory_failure)(void) __attribute__((noreturn))
struct corosync_exec_handler * exec_engine
struct corosync_lib_handler * lib_engine
int schedwrk_create_nolock(hdb_handle_t *handle, int(schedwrk_fn)(const void *), const void *context)
void(* quorum_callback_fn_t)(int quorate, void *context)
void(* sync_callback_fn_t)(const unsigned int *view_list, size_t view_list_entries, int primary_designated, struct memb_ring_id *ring_id)
qb_loop_timer_handle corosync_timer_handle_t
unsigned int private_data_size
struct memb_ring_id ring_id
int(* poll_dispatch_delete)(qb_loop_t *handle, int fd)
unsigned int(* service_unlink_and_exit)(struct corosync_api_v1 *corosync_api_v1, const char *service_name, unsigned int service_ver)
int schedwrk_create(hdb_handle_t *handle, int(schedwrk_fn)(const void *), const void *context)
cs_error_t quorum_initialize(quorum_handle_t *handle, quorum_callbacks_t *callbacks, uint32_t *quorum_type)
Create a new quorum connection.
totem_callback_token_type
struct totem_ip_address rep