Пример #1
0
int
ompi_mtl_portals4_recv_short_link(int count)
{
    int ret = OMPI_SUCCESS;
    int active = ompi_mtl_portals4.active_recv_short_blocks;
    int i;

    if (active < count) {
        for (i = 0 ; i < (count - active) ; ++i) {
            ompi_mtl_portals4_recv_short_block_t *block =
                ompi_mtl_portals4_recv_short_block_alloc(true);
            if (NULL == block) {
                return OMPI_ERR_OUT_OF_RESOURCE;
            }
            OPAL_THREAD_LOCK(&ompi_mtl_portals4.short_block_mutex);
            opal_list_append(&ompi_mtl_portals4.recv_short_blocks,
                             &block->base);
            OPAL_OUTPUT_VERBOSE((10, ompi_mtl_base_framework.framework_output,
                                 "recv_short_link: total=%d active=%d",
                                 (int) opal_list_get_size(&ompi_mtl_portals4.recv_short_blocks), ompi_mtl_portals4.active_recv_short_blocks));
            OPAL_THREAD_UNLOCK(&ompi_mtl_portals4.short_block_mutex);
            ret = ompi_mtl_portals4_activate_block(block);
        }
    }

    return ret;
}
Пример #2
0
int
ompi_mtl_portals4_recv_short_link(int count)
{
    int active = ompi_mtl_portals4.active_recv_short_blocks;
    int i;

    if (active < count) {
        for (i = 0 ; i < (count - active) ; ++i) {
            ompi_mtl_portals4_recv_short_block_t *block =
                ompi_mtl_portals4_recv_short_block_alloc(false);
            if (NULL == block) {
                return OMPI_ERR_OUT_OF_RESOURCE;
            }
            ompi_mtl_portals4_activate_block(block);
        }
    }

    return OMPI_SUCCESS;
}
Пример #3
0
int
ompi_mtl_portals4_recv_short_link(int count)
{
    int active = opal_list_get_size(&ompi_mtl_portals4.active_recv_short_blocks);
    int i;

    if (active < count) {
        for (i = 0 ; i < (count - active) ; ++i) {
            ompi_mtl_portals4_recv_short_block_t *block = 
                ompi_mtl_portals4_recv_short_block_alloc(false);
            if (NULL == block) {
                return OMPI_ERR_OUT_OF_RESOURCE;
            }
            opal_list_append(&ompi_mtl_portals4.waiting_recv_short_blocks,
                             &block->base);
            ompi_mtl_portals4_activate_block(block);
        }
    }
    
    return OMPI_SUCCESS;
}
Пример #4
0
int
ompi_mtl_portals4_recv_short_init(void)
{
    int i;

    OBJ_CONSTRUCT(&ompi_mtl_portals4.short_block_mutex, opal_mutex_t);
    OBJ_CONSTRUCT(&(ompi_mtl_portals4.recv_short_blocks), opal_list_t);

    /* create the recv blocks */
    for (i = 0 ; i < ompi_mtl_portals4.recv_short_num ; ++i) {
        ompi_mtl_portals4_recv_short_block_t *block =
            ompi_mtl_portals4_recv_short_block_alloc(false);
        if (OPAL_UNLIKELY(NULL == block)) {
            return OMPI_ERR_OUT_OF_RESOURCE;
        }
        opal_list_append(&ompi_mtl_portals4.recv_short_blocks,
                         &block->base);
        ompi_mtl_portals4_activate_block(block);
    }

    return OMPI_SUCCESS;
}