Remove the last bad symbol from the GM PTL.
This commit was SVN r7422.
Этот коммит содержится в:
родитель
b5cb27c006
Коммит
97673b45d1
@ -7,14 +7,14 @@
|
|||||||
* All rights reserved.
|
* All rights reserved.
|
||||||
* Copyright (c) 2004 The Ohio State University.
|
* Copyright (c) 2004 The Ohio State University.
|
||||||
* All rights reserved.
|
* All rights reserved.
|
||||||
* Copyright (c) 2004-2005 High Performance Computing Center Stuttgart,
|
* Copyright (c) 2004-2005 High Performance Computing Center Stuttgart,
|
||||||
* University of Stuttgart. All rights reserved.
|
* University of Stuttgart. All rights reserved.
|
||||||
* Copyright (c) 2004-2005 The Regents of the University of California.
|
* Copyright (c) 2004-2005 The Regents of the University of California.
|
||||||
* All rights reserved.
|
* All rights reserved.
|
||||||
* $COPYRIGHT$
|
* $COPYRIGHT$
|
||||||
*
|
*
|
||||||
* Additional copyrights may follow
|
* Additional copyrights may follow
|
||||||
*
|
*
|
||||||
* $HEADER$
|
* $HEADER$
|
||||||
*/
|
*/
|
||||||
#include "ompi_config.h"
|
#include "ompi_config.h"
|
||||||
@ -113,7 +113,7 @@ int mca_ptl_gm_receiver_advance_pipeline( mca_ptl_gm_recv_frag_t* frag, int only
|
|||||||
get_line = &(frag->pipeline.lines[frag->pipeline.pos_transfert]);
|
get_line = &(frag->pipeline.lines[frag->pipeline.pos_transfert]);
|
||||||
if( (PTL_GM_PIPELINE_TRANSFERT & get_line->flags) == PTL_GM_PIPELINE_TRANSFERT ) {
|
if( (PTL_GM_PIPELINE_TRANSFERT & get_line->flags) == PTL_GM_PIPELINE_TRANSFERT ) {
|
||||||
peer->get_started = true;
|
peer->get_started = true;
|
||||||
gm_get( peer->peer_ptl->gm_port, get_line->remote_memory.lval,
|
gm_get( peer->peer_ptl->gm_port, get_line->remote_memory.lval,
|
||||||
get_line->local_memory.pval, get_line->length,
|
get_line->local_memory.pval, get_line->length,
|
||||||
GM_LOW_PRIORITY, peer->peer_addr.local_id, peer->peer_addr.port_id,
|
GM_LOW_PRIORITY, peer->peer_addr.local_id, peer->peer_addr.port_id,
|
||||||
mca_ptl_gm_get_callback, frag );
|
mca_ptl_gm_get_callback, frag );
|
||||||
@ -194,11 +194,11 @@ int mca_ptl_gm_sender_advance_pipeline( mca_ptl_gm_send_frag_t* frag )
|
|||||||
if( (send_line->flags & PTL_GM_PIPELINE_TRANSFERT) == PTL_GM_PIPELINE_TRANSFERT ) {
|
if( (send_line->flags & PTL_GM_PIPELINE_TRANSFERT) == PTL_GM_PIPELINE_TRANSFERT ) {
|
||||||
opal_list_item_t* item;
|
opal_list_item_t* item;
|
||||||
int32_t rc;
|
int32_t rc;
|
||||||
|
|
||||||
OMPI_FREE_LIST_WAIT( &(peer->peer_ptl->gm_send_dma_frags), item, rc );
|
OMPI_FREE_LIST_WAIT( &(peer->peer_ptl->gm_send_dma_frags), item, rc );
|
||||||
opal_atomic_sub( &(peer->peer_ptl->num_send_tokens), 1 );
|
opal_atomic_sub( &(peer->peer_ptl->num_send_tokens), 1 );
|
||||||
hdr = (mca_ptl_gm_frag_header_t*)item;
|
hdr = (mca_ptl_gm_frag_header_t*)item;
|
||||||
|
|
||||||
hdr->hdr_frag.hdr_common.hdr_type = MCA_PTL_HDR_TYPE_FRAG;
|
hdr->hdr_frag.hdr_common.hdr_type = MCA_PTL_HDR_TYPE_FRAG;
|
||||||
hdr->hdr_frag.hdr_common.hdr_flags = send_line->hdr_flags |
|
hdr->hdr_frag.hdr_common.hdr_flags = send_line->hdr_flags |
|
||||||
frag->frag_send.frag_base.frag_header.hdr_common.hdr_flags;
|
frag->frag_send.frag_base.frag_header.hdr_common.hdr_flags;
|
||||||
@ -208,17 +208,17 @@ int mca_ptl_gm_sender_advance_pipeline( mca_ptl_gm_send_frag_t* frag )
|
|||||||
hdr->hdr_frag.hdr_frag_offset = send_line->offset;
|
hdr->hdr_frag.hdr_frag_offset = send_line->offset;
|
||||||
hdr->hdr_frag.hdr_frag_length = send_line->length;
|
hdr->hdr_frag.hdr_frag_length = send_line->length;
|
||||||
hdr->registered_memory = send_line->local_memory;
|
hdr->registered_memory = send_line->local_memory;
|
||||||
|
|
||||||
gm_send_with_callback( peer->peer_ptl->gm_port, hdr,
|
gm_send_with_callback( peer->peer_ptl->gm_port, hdr,
|
||||||
GM_SIZE, sizeof(mca_ptl_gm_frag_header_t),
|
GM_SIZE, sizeof(mca_ptl_gm_frag_header_t),
|
||||||
GM_HIGH_PRIORITY, peer->peer_addr.local_id, peer->peer_addr.port_id,
|
GM_HIGH_PRIORITY, peer->peer_addr.local_id, peer->peer_addr.port_id,
|
||||||
mca_ptl_gm_basic_frag_callback, (void*)hdr );
|
mca_ptl_gm_basic_frag_callback, (void*)hdr );
|
||||||
|
|
||||||
send_line->flags ^= PTL_GM_PIPELINE_REMOTE;
|
send_line->flags ^= PTL_GM_PIPELINE_REMOTE;
|
||||||
frag->pipeline.pos_transfert = (frag->pipeline.pos_transfert + 1) % GM_PIPELINE_DEPTH;
|
frag->pipeline.pos_transfert = (frag->pipeline.pos_transfert + 1) % GM_PIPELINE_DEPTH;
|
||||||
DO_DEBUG( count += sprintf( buffer + count, " send new fragment %lld", send_line->length ); )
|
DO_DEBUG( count += sprintf( buffer + count, " send new fragment %lld", send_line->length ); )
|
||||||
}
|
}
|
||||||
|
|
||||||
/* deregister previous segment */
|
/* deregister previous segment */
|
||||||
dereg_line = &(frag->pipeline.lines[frag->pipeline.pos_deregister]);
|
dereg_line = &(frag->pipeline.lines[frag->pipeline.pos_deregister]);
|
||||||
if( dereg_line->flags & PTL_GM_PIPELINE_DEREGISTER ) { /* something usefull */
|
if( dereg_line->flags & PTL_GM_PIPELINE_DEREGISTER ) { /* something usefull */
|
||||||
@ -265,7 +265,7 @@ int mca_ptl_gm_sender_advance_pipeline( mca_ptl_gm_send_frag_t* frag )
|
|||||||
reg_line->length, reg_line->offset ); )
|
reg_line->length, reg_line->offset ); )
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
DO_DEBUG( opal_output( 0, "sender %d %s", orte_process_info.my_name->vpid, buffer ); )
|
DO_DEBUG( opal_output( 0, "sender %d %s", orte_process_info.my_name->vpid, buffer ); )
|
||||||
return OMPI_SUCCESS;
|
return OMPI_SUCCESS;
|
||||||
}
|
}
|
||||||
@ -282,17 +282,17 @@ int mca_ptl_gm_send_internal_rndv_header( mca_ptl_gm_peer_t *ptl_peer,
|
|||||||
size_t max_data;
|
size_t max_data;
|
||||||
int32_t freeAfter;
|
int32_t freeAfter;
|
||||||
ompi_convertor_t *convertor = &(fragment->frag_send.frag_base.frag_convertor);
|
ompi_convertor_t *convertor = &(fragment->frag_send.frag_base.frag_convertor);
|
||||||
|
|
||||||
iov.iov_base = (char*)hdr + sizeof(mca_ptl_gm_frag_header_t);
|
iov.iov_base = (char*)hdr + sizeof(mca_ptl_gm_frag_header_t);
|
||||||
iov.iov_len = fragment->frag_send.frag_base.frag_size - fragment->frag_bytes_processed;
|
iov.iov_len = fragment->frag_send.frag_base.frag_size - fragment->frag_bytes_processed;
|
||||||
if( iov.iov_len > (mca_ptl_gm_component.gm_segment_size - sizeof(mca_ptl_gm_frag_header_t)) )
|
if( iov.iov_len > (mca_ptl_gm_component.gm_segment_size - sizeof(mca_ptl_gm_frag_header_t)) )
|
||||||
iov.iov_len = (mca_ptl_gm_component.gm_segment_size - sizeof(mca_ptl_gm_frag_header_t));
|
iov.iov_len = (mca_ptl_gm_component.gm_segment_size - sizeof(mca_ptl_gm_frag_header_t));
|
||||||
max_data = iov.iov_len;
|
max_data = iov.iov_len;
|
||||||
in_size = 1;
|
in_size = 1;
|
||||||
|
|
||||||
if( ompi_convertor_pack(convertor, &(iov), &in_size, &max_data, &freeAfter) < 0)
|
if( ompi_convertor_pack(convertor, &(iov), &in_size, &max_data, &freeAfter) < 0)
|
||||||
return OMPI_ERROR;
|
return OMPI_ERROR;
|
||||||
|
|
||||||
hdr->hdr_frag.hdr_common.hdr_type = MCA_PTL_HDR_TYPE_FRAG;
|
hdr->hdr_frag.hdr_common.hdr_type = MCA_PTL_HDR_TYPE_FRAG;
|
||||||
hdr->hdr_frag.hdr_common.hdr_flags = flags;
|
hdr->hdr_frag.hdr_common.hdr_flags = flags;
|
||||||
hdr->hdr_frag.hdr_src_ptr.lval = 0L; /* for VALGRIND/PURIFY - REPLACE WITH MACRO */
|
hdr->hdr_frag.hdr_src_ptr.lval = 0L; /* for VALGRIND/PURIFY - REPLACE WITH MACRO */
|
||||||
@ -303,7 +303,7 @@ int mca_ptl_gm_send_internal_rndv_header( mca_ptl_gm_peer_t *ptl_peer,
|
|||||||
fragment->frag_bytes_processed;
|
fragment->frag_bytes_processed;
|
||||||
hdr->registered_memory.lval = 0L;
|
hdr->registered_memory.lval = 0L;
|
||||||
hdr->registered_memory.pval = NULL;
|
hdr->registered_memory.pval = NULL;
|
||||||
|
|
||||||
DO_DEBUG( opal_output( 0, "sender %d before send internal rndv header hdr_offset %lld hdr_length %lld max_data %u",
|
DO_DEBUG( opal_output( 0, "sender %d before send internal rndv header hdr_offset %lld hdr_length %lld max_data %u",
|
||||||
orte_process_info.my_name->vpid, hdr->hdr_frag.hdr_frag_offset, hdr->hdr_frag.hdr_frag_length, max_data ); );
|
orte_process_info.my_name->vpid, hdr->hdr_frag.hdr_frag_offset, hdr->hdr_frag.hdr_frag_length, max_data ); );
|
||||||
gm_send_with_callback( ptl_peer->peer_ptl->gm_port, hdr, GM_SIZE,
|
gm_send_with_callback( ptl_peer->peer_ptl->gm_port, hdr, GM_SIZE,
|
||||||
@ -376,10 +376,10 @@ int mca_ptl_gm_send_burst_data( mca_ptl_gm_peer_t *ptl_peer,
|
|||||||
}
|
}
|
||||||
|
|
||||||
int mca_ptl_gm_peer_send_continue( mca_ptl_gm_peer_t *ptl_peer,
|
int mca_ptl_gm_peer_send_continue( mca_ptl_gm_peer_t *ptl_peer,
|
||||||
mca_ptl_gm_send_frag_t *fragment,
|
mca_ptl_gm_send_frag_t *fragment,
|
||||||
struct mca_ptl_base_send_request_t *sendreq,
|
struct mca_ptl_base_send_request_t *sendreq,
|
||||||
size_t offset,
|
size_t offset,
|
||||||
size_t *size,
|
size_t *size,
|
||||||
int flags )
|
int flags )
|
||||||
{
|
{
|
||||||
mca_ptl_gm_frag_header_t* hdr;
|
mca_ptl_gm_frag_header_t* hdr;
|
||||||
@ -507,7 +507,7 @@ static void send_match_callback( struct gm_port* port, void* context, gm_status_
|
|||||||
*/
|
*/
|
||||||
int mca_ptl_gm_peer_send( struct mca_ptl_base_module_t* ptl,
|
int mca_ptl_gm_peer_send( struct mca_ptl_base_module_t* ptl,
|
||||||
struct mca_ptl_base_peer_t* ptl_base_peer,
|
struct mca_ptl_base_peer_t* ptl_base_peer,
|
||||||
struct mca_ptl_base_send_request_t *sendreq,
|
struct mca_ptl_base_send_request_t *sendreq,
|
||||||
size_t offset,
|
size_t offset,
|
||||||
size_t size,
|
size_t size,
|
||||||
int flags )
|
int flags )
|
||||||
@ -542,11 +542,11 @@ int mca_ptl_gm_peer_send( struct mca_ptl_base_module_t* ptl,
|
|||||||
* request.
|
* request.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
if( (size + header_length) <= mca_ptl_gm_component.gm_segment_size )
|
if( (size + header_length) <= mca_ptl_gm_component.gm_segment_size )
|
||||||
iov.iov_len = size;
|
iov.iov_len = size;
|
||||||
else
|
else
|
||||||
iov.iov_len = mca_ptl_gm_component.gm_segment_size - header_length;
|
iov.iov_len = mca_ptl_gm_component.gm_segment_size - header_length;
|
||||||
|
|
||||||
/* copy the data to the registered buffer */
|
/* copy the data to the registered buffer */
|
||||||
iov.iov_base = ((char*)hdr) + header_length;
|
iov.iov_base = ((char*)hdr) + header_length;
|
||||||
max_data = iov.iov_len;
|
max_data = iov.iov_len;
|
||||||
@ -564,7 +564,7 @@ int mca_ptl_gm_peer_send( struct mca_ptl_base_module_t* ptl,
|
|||||||
GM_SIZE, max_data + header_length, GM_LOW_PRIORITY,
|
GM_SIZE, max_data + header_length, GM_LOW_PRIORITY,
|
||||||
ptl_peer->peer_addr.local_id, ptl_peer->peer_addr.port_id,
|
ptl_peer->peer_addr.local_id, ptl_peer->peer_addr.port_id,
|
||||||
send_match_callback, (void *)hdr );
|
send_match_callback, (void *)hdr );
|
||||||
|
|
||||||
if( !(flags & MCA_PTL_FLAGS_ACK) ) {
|
if( !(flags & MCA_PTL_FLAGS_ACK) ) {
|
||||||
ptl->ptl_send_progress( ptl, sendreq, max_data );
|
ptl->ptl_send_progress( ptl, sendreq, max_data );
|
||||||
DO_DEBUG( opal_output( 0, "sender %d complete request %p w/o rndv with %d bytes",
|
DO_DEBUG( opal_output( 0, "sender %d complete request %p w/o rndv with %d bytes",
|
||||||
@ -582,7 +582,7 @@ mca_ptl_gm_recv_frag_ctrl( struct mca_ptl_gm_module_t *ptl,
|
|||||||
mca_ptl_base_header_t * header, uint32_t msg_len )
|
mca_ptl_base_header_t * header, uint32_t msg_len )
|
||||||
{
|
{
|
||||||
mca_ptl_base_send_request_t *req;
|
mca_ptl_base_send_request_t *req;
|
||||||
|
|
||||||
assert( MCA_PTL_FLAGS_ACK & header->hdr_common.hdr_flags );
|
assert( MCA_PTL_FLAGS_ACK & header->hdr_common.hdr_flags );
|
||||||
req = (mca_ptl_base_send_request_t*)(header->hdr_ack.hdr_src_ptr.pval);
|
req = (mca_ptl_base_send_request_t*)(header->hdr_ack.hdr_src_ptr.pval);
|
||||||
req->req_peer_match = header->hdr_ack.hdr_dst_match;
|
req->req_peer_match = header->hdr_ack.hdr_dst_match;
|
||||||
@ -591,7 +591,7 @@ mca_ptl_gm_recv_frag_ctrl( struct mca_ptl_gm_module_t *ptl,
|
|||||||
DO_DEBUG( opal_output( 0, "sender %d get back the rendez-vous for request %p",
|
DO_DEBUG( opal_output( 0, "sender %d get back the rendez-vous for request %p",
|
||||||
orte_process_info.my_name->vpid, req ); );
|
orte_process_info.my_name->vpid, req ); );
|
||||||
ptl->super.ptl_send_progress( (mca_ptl_base_module_t*)ptl, req, req->req_offset );
|
ptl->super.ptl_send_progress( (mca_ptl_base_module_t*)ptl, req, req->req_offset );
|
||||||
|
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -640,7 +640,7 @@ mca_ptl_gm_recv_frag_match( struct mca_ptl_gm_module_t *ptl,
|
|||||||
recv_frag->frag_recv.frag_base.frag_addr = NULL;
|
recv_frag->frag_recv.frag_base.frag_addr = NULL;
|
||||||
}
|
}
|
||||||
recv_frag->matched = false;
|
recv_frag->matched = false;
|
||||||
|
|
||||||
return recv_frag;
|
return recv_frag;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -766,7 +766,7 @@ mca_ptl_gm_recv_frag_frag( struct mca_ptl_gm_module_t* ptl,
|
|||||||
ptl->super.ptl_recv_progress( (mca_ptl_base_module_t*)ptl, request, max_data, max_data );
|
ptl->super.ptl_recv_progress( (mca_ptl_base_module_t*)ptl, request, max_data, max_data );
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Update the status of the fragment depending on the amount of data converted so far */
|
/* Update the status of the fragment depending on the amount of data converted so far */
|
||||||
frag->frag_bytes_processed += max_data;
|
frag->frag_bytes_processed += max_data;
|
||||||
@ -787,7 +787,7 @@ mca_ptl_gm_recv_frag_frag( struct mca_ptl_gm_module_t* ptl,
|
|||||||
mca_ptl_gm_pipeline_line_t* pipeline;
|
mca_ptl_gm_pipeline_line_t* pipeline;
|
||||||
|
|
||||||
/* There is a kind of rendez-vous protocol used internally by the GM driver. If the amount of data
|
/* There is a kind of rendez-vous protocol used internally by the GM driver. If the amount of data
|
||||||
* to transfert is large enough, then the sender will start sending a frag message with the
|
* to transfert is large enough, then the sender will start sending a frag message with the
|
||||||
* remote_memory set to NULL (but with the length set to the length of the first fragment).
|
* remote_memory set to NULL (but with the length set to the length of the first fragment).
|
||||||
* It will allow the receiver to start to register it's own memory. Later when the receiver
|
* It will allow the receiver to start to register it's own memory. Later when the receiver
|
||||||
* get a fragment with the remote_memory field not NULL it can start getting the data.
|
* get a fragment with the remote_memory field not NULL it can start getting the data.
|
||||||
@ -865,34 +865,34 @@ void mca_ptl_gm_outstanding_recv( struct mca_ptl_gm_module_t *ptl )
|
|||||||
{
|
{
|
||||||
mca_ptl_gm_recv_frag_t * frag = NULL;
|
mca_ptl_gm_recv_frag_t * frag = NULL;
|
||||||
int size;
|
int size;
|
||||||
bool matched;
|
bool matched;
|
||||||
|
|
||||||
size = opal_list_get_size (&ptl->gm_recv_outstanding_queue);
|
size = opal_list_get_size (&ptl->gm_recv_outstanding_queue);
|
||||||
|
|
||||||
if (size > 0) {
|
if (size > 0) {
|
||||||
frag = (mca_ptl_gm_recv_frag_t *)
|
frag = (mca_ptl_gm_recv_frag_t *)
|
||||||
opal_list_remove_first( (opal_list_t *)&(ptl->gm_recv_outstanding_queue) );
|
opal_list_remove_first( (opal_list_t *)&(ptl->gm_recv_outstanding_queue) );
|
||||||
|
|
||||||
|
|
||||||
matched = ptl->super.ptl_match( &(ptl->super), &(frag->frag_recv),
|
matched = ptl->super.ptl_match( &(ptl->super), &(frag->frag_recv),
|
||||||
&(frag->frag_recv.frag_base.frag_header.hdr_match) );
|
&(frag->frag_recv.frag_base.frag_header.hdr_match) );
|
||||||
|
|
||||||
if(!matched) {
|
if(!matched) {
|
||||||
opal_list_append((opal_list_t *)&(ptl->gm_recv_outstanding_queue),
|
opal_list_append((opal_list_t *)&(ptl->gm_recv_outstanding_queue),
|
||||||
(opal_list_item_t *) frag);
|
(opal_list_item_t *) frag);
|
||||||
} else {
|
} else {
|
||||||
/* if allocated buffer, free the buffer */
|
/* if allocated buffer, free the buffer */
|
||||||
/* return the recv descriptor to the free list */
|
/* return the recv descriptor to the free list */
|
||||||
OMPI_FREE_LIST_RETURN(&(ptl->gm_recv_frags_free), (opal_list_item_t *)frag);
|
OMPI_FREE_LIST_RETURN(&(ptl->gm_recv_frags_free), (opal_list_item_t *)frag);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
frag_management_fct_t* frag_management_fct[MCA_PTL_HDR_TYPE_MAX] = {
|
mca_ptl_gm_frag_management_fct_t* mca_ptl_gm_frag_management_fct[MCA_PTL_HDR_TYPE_MAX] = {
|
||||||
NULL, /* empty no header type equal to zero */
|
NULL, /* empty no header type equal to zero */
|
||||||
NULL, /* mca_ptl_gm_recv_frag_match, */
|
NULL, /* mca_ptl_gm_recv_frag_match, */
|
||||||
mca_ptl_gm_recv_frag_match,
|
mca_ptl_gm_recv_frag_match,
|
||||||
(frag_management_fct_t*)mca_ptl_gm_recv_frag_frag, /* force the conversion to remove a warning */
|
(mca_ptl_gm_frag_management_fct_t*)mca_ptl_gm_recv_frag_frag, /* force the conversion to remove a warning */
|
||||||
mca_ptl_gm_recv_frag_ctrl,
|
mca_ptl_gm_recv_frag_ctrl,
|
||||||
NULL,
|
NULL,
|
||||||
NULL,
|
NULL,
|
||||||
@ -902,7 +902,7 @@ frag_management_fct_t* frag_management_fct[MCA_PTL_HDR_TYPE_MAX] = {
|
|||||||
int mca_ptl_gm_analyze_recv_event( struct mca_ptl_gm_module_t* ptl, gm_recv_event_t* event )
|
int mca_ptl_gm_analyze_recv_event( struct mca_ptl_gm_module_t* ptl, gm_recv_event_t* event )
|
||||||
{
|
{
|
||||||
mca_ptl_base_header_t *header = NULL, *release_buf;
|
mca_ptl_base_header_t *header = NULL, *release_buf;
|
||||||
frag_management_fct_t* function;
|
mca_ptl_gm_frag_management_fct_t* function;
|
||||||
uint32_t priority = GM_HIGH_PRIORITY, msg_len;
|
uint32_t priority = GM_HIGH_PRIORITY, msg_len;
|
||||||
|
|
||||||
release_buf = (mca_ptl_base_header_t*)gm_ntohp(event->recv.buffer);
|
release_buf = (mca_ptl_base_header_t*)gm_ntohp(event->recv.buffer);
|
||||||
@ -930,7 +930,7 @@ int mca_ptl_gm_analyze_recv_event( struct mca_ptl_gm_module_t* ptl, gm_recv_even
|
|||||||
}
|
}
|
||||||
|
|
||||||
assert( header->hdr_common.hdr_type < MCA_PTL_HDR_TYPE_MAX );
|
assert( header->hdr_common.hdr_type < MCA_PTL_HDR_TYPE_MAX );
|
||||||
function = frag_management_fct[header->hdr_common.hdr_type];
|
function = mca_ptl_gm_frag_management_fct[header->hdr_common.hdr_type];
|
||||||
assert( NULL != function );
|
assert( NULL != function );
|
||||||
|
|
||||||
msg_len = gm_ntohl( event->recv.length );
|
msg_len = gm_ntohl( event->recv.length );
|
||||||
|
Загрузка…
x
Ссылка в новой задаче
Block a user