48#include <sys/socket.h>
69#define MAP_ANONYMOUS MAP_ANON
76#define MAX_RETRIES 100
81#define CPG_MEMORY_MAP_UMASK 077
104static void cpg_inst_free (
void *inst);
123coroipcc_msg_send_reply_receive (
140static void cpg_inst_free (
void *inst)
288 cpg_inst_finalize (
cpg_inst, handle);
460 marshall_from_mar_cpg_name_t (
475 marshall_from_mar_cpg_name_t (
558 marshall_from_mar_cpg_address_t (&
left_list[
i],
568 marshall_from_mar_cpg_name_t (
690 error = response.header.error;
747 int *member_list_entries)
762 if (member_list_entries ==
NULL) {
795 marshall_from_mar_cpg_address_t (&member_list[
i],
901 if (buffer ==
NULL) {
965 assert(memory_map (
path,
"corosync_zerocopy-XXXXXX", &
buf, map_size) != -1);
981 error = coroipcc_msg_send_reply_receive (
1026 error = coroipcc_msg_send_reply_receive (
1091 error = coroipcc_msg_send_reply_receive (
1150 else if ((sent +
iov[1].
iov_len) == msg_len) {
1176 sent +=
iov[1].iov_len;
1211 msg_len +=
iovec[
i].iov_len;
1256 if (cpg_iteration_handle ==
NULL) {
1370 marshall_from_mar_cpg_iteration_description_t(
unsigned char addr[TOTEMIP_ADDRLEN]
cs_dispatch_flags_t
The cs_dispatch_flags_t enum.
@ CS_DISPATCH_ONE_NONBLOCKING
cs_error_t qb_to_cs_error(int result)
qb_to_cs_error
cs_error_t
The cs_error_t enum.
#define CS_IPC_TIMEOUT_MS
cs_error_t cpg_flow_control_state_get(cpg_handle_t handle, cpg_flow_control_state_t *flow_control_state)
cpg_flow_control_state_get
cs_error_t cpg_iteration_next(cpg_iteration_handle_t handle, struct cpg_iteration_description_t *description)
cpg_iteration_next
cs_error_t cpg_model_initialize(cpg_handle_t *handle, cpg_model_t model, cpg_model_data_t *model_data, void *context)
Create a new cpg connection, initialize with model.
cs_error_t cpg_max_atomic_msgsize_get(cpg_handle_t handle, uint32_t *size)
Get maximum size of a message that will not be fragmented.
cs_error_t cpg_mcast_joined(cpg_handle_t handle, cpg_guarantee_t guarantee, const struct iovec *iovec, unsigned int iov_len)
Multicast to groups joined with cpg_join.
cs_error_t cpg_leave(cpg_handle_t handle, const struct cpg_name *group)
Leave one or more groups.
cs_error_t cpg_context_get(cpg_handle_t handle, void **context)
Get contexts for a CPG handle.
cs_error_t cpg_fd_get(cpg_handle_t handle, int *fd)
Get a file descriptor on which to poll.
cs_error_t cpg_join(cpg_handle_t handle, const struct cpg_name *group)
Join one or more groups.
cs_error_t cpg_zcb_free(cpg_handle_t handle, void *buffer)
cpg_zcb_free
cs_error_t cpg_iteration_finalize(cpg_iteration_handle_t handle)
cpg_iteration_finalize
cs_error_t cpg_zcb_alloc(cpg_handle_t handle, size_t size, void **buffer)
cpg_zcb_alloc
cs_error_t cpg_membership_get(cpg_handle_t handle, struct cpg_name *group_name, struct cpg_address *member_list, int *member_list_entries)
Get membership information from cpg.
cs_error_t cpg_initialize(cpg_handle_t *handle, cpg_callbacks_t *callbacks)
Create a new cpg connection.
cs_error_t cpg_local_get(cpg_handle_t handle, unsigned int *local_nodeid)
cpg_local_get
cs_error_t cpg_iteration_initialize(cpg_handle_t handle, cpg_iteration_type_t iteration_type, const struct cpg_name *group, cpg_iteration_handle_t *cpg_iteration_handle)
cpg_iteration_initialize
cs_error_t cpg_context_set(cpg_handle_t handle, void *context)
Set contexts for a CPG handle.
cs_error_t cpg_finalize(cpg_handle_t handle)
Close the cpg handle.
cs_error_t cpg_dispatch(cpg_handle_t handle, cs_dispatch_flags_t dispatch_types)
Dispatch messages and configuration changes.
cs_error_t cpg_zcb_mcast_joined(cpg_handle_t handle, cpg_guarantee_t guarantee, void *msg, size_t msg_len)
cpg_zcb_mcast_joined
cpg_flow_control_state_t
The cpg_flow_control_state_t enum.
#define CPG_MAX_NAME_LENGTH
cpg_guarantee_t
The cpg_guarantee_t enum.
cpg_iteration_type_t
The cpg_iteration_type_t enum.
uint64_t cpg_handle_t
cpg_handle_t
uint64_t cpg_iteration_handle_t
cpg_iteration_handle_t
cpg_model_t
The cpg_model_t enum.
#define CPG_MODEL_V1_DELIVER_INITIAL_TOTEM_CONF
@ CPG_FLOW_CONTROL_DISABLED
flow control is disabled - new messages may be sent
@ CPG_ITERATION_ONE_GROUP
@ CPG_ITERATION_NAME_ONLY
#define DECLARE_HDB_DATABASE
@ LIBCPG_PARTIAL_CONTINUED
@ MESSAGE_REQ_CPG_ZC_EXECUTE
@ MESSAGE_REQ_CPG_LOCAL_GET
@ MESSAGE_REQ_CPG_ITERATIONFINALIZE
@ MESSAGE_REQ_CPG_PARTIAL_MCAST
@ MESSAGE_REQ_CPG_ZC_ALLOC
@ MESSAGE_REQ_CPG_ZC_FREE
@ MESSAGE_REQ_CPG_ITERATIONINITIALIZE
@ MESSAGE_REQ_CPG_FINALIZE
@ MESSAGE_REQ_CPG_MEMBERSHIP
@ MESSAGE_REQ_CPG_ITERATIONNEXT
@ MESSAGE_RES_CPG_PARTIAL_DELIVER_CALLBACK
@ MESSAGE_RES_CPG_DELIVER_CALLBACK
@ MESSAGE_RES_CPG_TOTEM_CONFCHG_CALLBACK
@ MESSAGE_RES_CPG_CONFCHG_CALLBACK
#define CPG_MEMORY_MAP_UMASK
cs_error_t hdb_error_to_cs(int res)
#define IPC_DISPATCH_SIZE
uint32_t assembly_buf_ptr
The cpg_callbacks_t struct.
cpg_deliver_fn_t cpg_deliver_fn
cpg_confchg_fn_t cpg_confchg_fn
cpg_model_data_t model_data
struct qb_list_head assembly_list_head
struct qb_list_head iteration_list_head
cpg_model_v1_data_t model_v1_data
The cpg_iteration_description_t struct.
qb_ipcc_connection_t * conn
cpg_iteration_handle_t cpg_iteration_handle
hdb_handle_t executive_iteration_handle
The cpg_model_data_t struct.
The cpg_model_v1_data_t struct.
cpg_confchg_fn_t cpg_confchg_fn
cpg_deliver_fn_t cpg_deliver_fn
mar_req_coroipcc_zc_alloc_t struct
mar_req_coroipcc_zc_execute_t struct
mar_req_coroipcc_zc_free_t struct
The req_lib_cpg_finalize struct.
The req_lib_cpg_iterationfinalize struct.
The req_lib_cpg_iterationinitialize struct.
The req_lib_cpg_iterationnext struct.
The req_lib_cpg_join struct.
The req_lib_cpg_leave struct.
The req_lib_cpg_local_get struct.
The req_lib_cpg_mcast struct.
The req_lib_cpg_membership_get struct.
The req_lib_cpg_partial_mcast struct.
The res_lib_cpg_confchg_callback struct.
mar_cpg_address_t member_list[]
Message from another node.
The res_lib_cpg_finalize struct.
The res_lib_cpg_iterationfinalize struct.
The res_lib_cpg_iterationinitialize struct.
The res_lib_cpg_iterationnext struct.
The res_lib_cpg_join struct.
The res_lib_cpg_leave struct.
The res_lib_cpg_local_get struct.
The res_lib_cpg_mcast struct.
The res_lib_cpg_membership_get struct.
mar_cpg_address_t member_list[PROCESSOR_COUNT_MAX]
The res_lib_cpg_partial_deliver_callback struct.
The res_lib_cpg_partial_send struct.
The res_lib_cpg_totem_confchg_callback struct.
struct memb_ring_id ring_id
struct totem_message_header header