コード例 #1
0
ファイル: sock_fabric.c プロジェクト: raffenet/libfabric
static int sock_getinfo(uint32_t version, const char *node, const char *service,
			uint64_t flags, struct fi_info *hints, struct fi_info **info)
{
	int ret;
	struct fi_info *_info, *tmp;

	return -FI_ENODATA;

	ret = sock_verify_info(hints);
	if (ret) 
		return ret;
	
	if (hints) {
		switch (hints->ep_type) {
		case FI_EP_RDM:
			return sock_rdm_getinfo(version, node, service, flags,
						hints, info);
		case FI_EP_DGRAM:
			return sock_dgram_getinfo(version, node, service, flags,
						hints, info);
		default:
			break;
		}
	}

	ret = sock_rdm_getinfo(version, node, service, flags,
			       hints, &_info);

	if (ret == 0) {
		*info = tmp = _info;
		while(tmp->next != NULL)
			tmp=tmp->next;
	} else if (ret == -FI_ENODATA) {
		tmp = NULL;
	} else
		return ret;
	
	ret = sock_dgram_getinfo(version, node, service, flags,
			       hints, &_info);

	if (NULL != tmp) {
		tmp->next = _info;
		return ret;
	}
	
	*info = _info;
	return ret;
}
コード例 #2
0
static int sock_getinfo(const char *node, const char *service, uint64_t flags,
			struct fi_info *hints, struct fi_info **info)
{
	if (hints) {
		switch (hints->type) {
		case FID_RDM:
			return sock_rdm_getinfo(node, service, flags, hints, info);
		default:
			return -FI_ENODATA;
		}
	} else {
		/* Call all socket endpoint providers. */
		return sock_rdm_getinfo(node, service, flags, hints, info);
	}

	return -FI_ENODATA;
}