static int connect_events(void) { struct fi_eq_cm_entry entry; uint32_t event; int ret = 0; while (connects_left && !ret) { ret = fi_eq_sread(eq, &event, &entry, sizeof entry, -1, 0); if (ret < 0) { FT_PRINTERR("fi_eq_sread", ret); break; } if (ret != sizeof entry) { printf("unexpected event during connect\n"); ret = -FI_EIO; break; } ret = cma_handler(event, &entry); } return ret; }
static int connect_events(void) { struct rdma_cm_event *event; int ret = 0; while (test.connects_left && !ret) { ret = rdma_get_cm_event(test.channel, &event); if (!ret) { ret = cma_handler(event->id, event); rdma_ack_cm_event(event); } } return ret; }
static int disconnect_events(void) { struct rdma_cm_event *event; int ret = 0; while (test.disconnects_left && !ret) { ret = rdma_get_cm_event(test.channel, &event); if (!ret) { ret = cma_handler(event->id, event); rdma_ack_cm_event(event); } else { perror("cmatose: failure in rdma_get_cm_event in disconnect events"); ret = errno; } } return ret; }
static int shutdown_events(void) { struct fi_eq_cm_entry entry; uint32_t event; int ret = 0; ssize_t rd; while (disconnects_left && !ret) { rd = fi_eq_sread(eq, &event, &entry, sizeof entry, -1, 0); if (rd != sizeof entry) { printf("unexpected event during shutdown\n"); FT_PROCESS_EQ_ERR(rd, eq, "fi_eq_sread", "shutdown"); ret = -FI_EIO; break; } ret = cma_handler(event, &entry); } return ret; }