Exemple #1
0
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;
}
Exemple #2
0
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;
}
Exemple #3
0
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;
}
Exemple #4
0
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;
}