Esempio n. 1
0
EC_BOOL cextsrv_req_encode(CEXTSRV *cextsrv, UINT8 *out_buff, const UINT32 out_buff_max_len, UINT32 *out_buff_len, TASK_FUNC *task_req_func)
{
    FUNC_ADDR_NODE *func_addr_node;

    UINT32 send_comm;

    UINT32  position;

    send_comm = CMPI_ANY_COMM;

    position = 0;

    if(0 != dbg_fetch_func_addr_node_by_index(task_req_func->func_id, &func_addr_node))
    {
        dbg_log(SEC_0069_CEXTSRV, 0)(LOGSTDOUT, "error:cextsrv_req_encode: failed to fetch func addr node by func id %lx\n", task_req_func->func_id);
        return (EC_FALSE);
    }

    cmpi_encode_uint32(send_comm, (task_req_func->func_id), out_buff, out_buff_max_len, &(position));
    cmpi_encode_uint32(send_comm, (task_req_func->func_para_num), out_buff, out_buff_max_len, &(position));

    task_req_func_para_encode(send_comm, task_req_func->func_para_num, (FUNC_PARA *)task_req_func->func_para,
                                         func_addr_node, out_buff, out_buff_max_len, &(position));
    (*out_buff_len) = position;/*set to real length*/

    return (EC_TRUE);
}
Esempio n. 2
0
File: cproc.c Progetto: okayman/ebgn
EC_BOOL cproc_isend(CPROC *cproc, const UINT32 recv_rank, const UINT32 msg_tag, TASK_NODE *task_node)
{
    CPROC_ITEM *cproc_item;
    UINT32 msg_len;
    UINT32 pos;

    /*check validity*/
    if(recv_rank >= CPROC_SIZE(cproc))
    {
        sys_log(LOGSTDOUT, "error:cproc_isend: invalid recv rank %ld where communicator size is %ld\n", recv_rank, CPROC_SIZE(cproc));
        return (EC_FALSE);
    }

    cproc_item = CPROC_ITEM(cproc, CMPI_LOCAL_RANK, recv_rank);
#if 0
    sys_log(LOGSTDOUT, "[DEBUG] cproc_isend: to send task_node %lx (pos %ld, len %ld) on cproc_item %lx (row %ld, col %ld) while send_rank = %ld, recv_rank = %ld\n",
                        task_node, TASK_NODE_BUFF_POS(task_node), TASK_NODE_BUFF_LEN(task_node),
                        cproc_item, CPROC_ITEM_ROW_RANK(cproc_item), CPROC_ITEM_COL_RANK(cproc_item), CMPI_LOCAL_RANK, recv_rank);
#endif
    msg_len = TASK_NODE_BUFF_LEN(task_node);
    pos = 0;
    cmpi_encode_uint32(CMPI_LOCAL_COMM, msg_len, TASK_NODE_BUFF(task_node), TASK_NODE_BUFF_LEN(task_node), &pos);
    cmpi_encode_uint32(CMPI_LOCAL_COMM, msg_tag, TASK_NODE_BUFF(task_node), TASK_NODE_BUFF_LEN(task_node), &pos);

    cproc_isend_node(cproc, cproc_item, task_node);
    return (EC_TRUE);
}