Пример #1
0
static
int psex_rma2_alloc(hca_info_t *hca_info, int size, mem_info_t *mem_info)
{
	int rc;

	mem_info->mr = NULL;

	/* Region for buffers */
	mem_info->ptr = valloc(size);
	if (!mem_info->ptr) goto err_malloc;

	rc = rma2_register(hca_info->rma2_port, mem_info->ptr, size, &mem_info->mr);
	if (!mem_info->mr) goto err_reg_mr;

	return 0;
	/* --- */
err_reg_mr:
	free(mem_info->ptr);
	mem_info->ptr = NULL;
	psex_err_rma2_error("rma2_register()", rc);
	/*if (rc == RMA2_ERR_NO_MEM)*/ print_mlock_help(size);
	return -1;
err_malloc:
	psex_err_errno("malloc()", errno);
	return -1;
}
Пример #2
0
static
int psoib_vapi_alloc(hca_info_t *hca_info, int size, enum ibv_access_flags access_perm, mem_info_t *mem_info)
{
    mem_info->mr = NULL;

    /* Region for buffers */
    mem_info->ptr = valloc(size);
    if (!mem_info->ptr) goto err_malloc;

//    printf("ibv_reg_mr(pd = %p, ptr = %p, size = %d, access_perm = 0x%x)\n",
//	   hca_info->pd, mem_info->ptr, size, access_perm);

    mem_info->mr = ibv_reg_mr(hca_info->pd, mem_info->ptr, size, access_perm);
    if (!mem_info->mr) goto err_reg_mr;

    return 0;
    /* --- */
 err_reg_mr:
    free(mem_info->ptr);
    mem_info->ptr = NULL;
    psoib_err_errno("ibv_reg_mr() failed", errno);
    if (errno == ENOMEM) print_mlock_help(size);
    return -1;
 err_malloc:
    psoib_err_errno("malloc() failed!", errno);
    return -1;
}
Пример #3
0
static
int psdapl_init_buffers_local(psdapl_con_info_t *ci)
{
	int rc;
	int i;

	rc = psdapl_bufpair_init_local(&ci->send_bufs, SIZE_SR_QUEUE * DAPL_BUFSIZE,
				       ci->socket->ia_handle, ci->socket->pz_handle);
	if (rc) goto err_init_send;

	rc = psdapl_bufpair_init_local(&ci->recv_bufs, SIZE_SR_QUEUE * DAPL_BUFSIZE,
				       ci->socket->ia_handle, ci->socket->pz_handle);
	if (rc) goto err_init_recv;

	ci->send_pos = 0;
	ci->recv_pos = 0;

	/* Clear all receive magics */
	for (i = 0; i < SIZE_SR_QUEUE; i++) {
		psdapl_msg_t *msg = ((psdapl_msg_t *)ci->recv_bufs.lmr_mem) + i;
		msg->tail.magic = PSDAPL_MAGIC_UNUSED;
	}

	return rc;
err_init_recv:
err_init_send:
	print_mlock_help();
	return rc;
}