示例#1
0
static const char *
hook_eq_strerror(struct fid_eq *eq, int prov_errno,
		 const void *err_data, char *buf, size_t len)
{
	struct hook_eq *myeq = container_of(eq, struct hook_eq, eq);

	return fi_eq_strerror(myeq->heq, prov_errno, err_data, buf, len);
}
示例#2
0
void eq_readerr(struct fid_eq *eq, char *eq_str)
{
    struct fi_eq_err_entry eq_err;
    const char *err_str;
    int rd;

    rd = fi_eq_readerr(eq, &eq_err, 0);
    if (rd != sizeof(eq_err)) {
        FT_PRINTERR("fi_eq_readerr", rd);
    } else {
        err_str = fi_eq_strerror(eq, eq_err.prov_errno, eq_err.err_data, NULL, 0);
        fprintf(stderr, "%s: %d %s\n", eq_str, eq_err.err,
                fi_strerror(eq_err.err));
        fprintf(stderr, "%s: prov_err: %s (%d)\n", eq_str, err_str,
                eq_err.prov_errno);
    }
}
示例#3
0
文件: fabric.cpp 项目: 01org/intelRSD
std::string get_eq_error_string(fid_eq* eq, ssize_t ec) {
    fi_eq_err_entry entry = {};
    std::stringstream error{};

    if (ec < 0) {
        ec = -ec;
    }

    if (ec != FI_EAVAIL) {
        error << "fi_eq_sread error: " << fi_error_to_string(int(ec)) << "(" << ec << ") ";
    }

    auto rc = fi_eq_readerr(eq, &entry, 0);
    if (rc < 0) {
        error << "fi_eq_readerr error: " << fi_error_to_string(int(rc)) << "(" << rc << ")";
    }
    else {
        error << "fi_eq_readerr provider_error: " <<
                fi_eq_strerror(eq, entry.prov_errno, entry.err_data, nullptr, 0)
                << "(" << entry.prov_errno << ") error: " << fi_error_to_string(entry.err);
    }

    return error.str();
}
示例#4
0
文件: test.c 项目: DougSO/kfabric
int create_connection(void)
{
	struct fi_info		*prov;
	struct fi_eq_cm_entry	entry;
	struct fi_info		*info;
	ssize_t			n;
	uint32_t		event;
	int			ret = -1;

	print_trace("in\n");

	memset(&ctx, 0, sizeof(ctx));

	if (match_provider(&prov))
		goto err1;

	if (client_connect(prov, &ctx))
		goto err2;

	dprint(DEBUG_CONNECT, "Waiting for Server to connect\n");

	n = fi_eq_sread(ctx.eq, &event, &entry, sizeof(entry), CTIMEOUT, 0);
	if (n < sizeof(entry)) {
		struct fi_eq_err_entry eqe;
		int rc;

		print_err("fi_eq_sread '%s'(%d)\n", fi_strerror(n), (int) n);
		rc = fi_eq_readerr(ctx.eq, &eqe, 0);
		if (rc)
			print_err("fi_eq_readerr() returns %d '%s'\n",
				rc, fi_strerror(rc));
		else {
			char buf[64];

			print_err("fi_eq_readerr() prov_err '%s'(%d)\n",
				fi_eq_strerror(ctx.eq, eqe.prov_errno,
					eqe.err_data, buf, sizeof(buf)),
				eqe.prov_errno);
			print_err("fi_eq_readerr() err '%s'(%d)\n",
					fi_strerror(eqe.err), eqe.err);
		}

		return (int) n;
	}

	if (event != FI_CONNECTED) {
		print_err("unexpected event %d\n", event);
		return -FI_EOTHER;
	}

	/* same context specified in fi_endpoint()? */
	if (entry.fid->context != CONTEXT) {
		print_err("entry.fid->context %lx != %lx\n",
			(ulong)entry.fid->context, (ulong)CONTEXT);
	}

	info = entry.info;

	dprint(DEBUG_CONNECT, "*** Client Connected\n");

	dprint(DEBUG_CONNECT, "Client private data(len %ld): '%s'\n",
		(n - sizeof(entry)), entry.data);

	return 0;
err2:
	client_disconnect(&ctx);
	fi_freeinfo(prov);
err1:
	return ret;
}