1
1
This commit was SVN r6546.
Этот коммит содержится в:
Tim Woodall 2005-07-18 21:22:55 +00:00
родитель 485e549f38
Коммит 14ba3322e9
2 изменённых файлов: 27 добавлений и 12 удалений

Просмотреть файл

@ -138,6 +138,9 @@ static void mca_pml_ob1_rndv_completion(
/* advance the request */ /* advance the request */
MCA_PML_OB1_SEND_REQUEST_ADVANCE(sendreq); MCA_PML_OB1_SEND_REQUEST_ADVANCE(sendreq);
/* check for pending requests */
MCA_PML_OB1_SEND_REQUEST_PROCESS_PENDING();
} }
@ -189,15 +192,8 @@ static void mca_pml_ob1_frag_completion(
mca_pml_ob1_send_request_schedule(sendreq); mca_pml_ob1_send_request_schedule(sendreq);
} }
/* advance pending requests */ /* check for pending requests */
while(opal_list_get_size(&mca_pml_ob1.send_pending)) { MCA_PML_OB1_SEND_REQUEST_PROCESS_PENDING();
OPAL_THREAD_LOCK(&mca_pml_ob1.ob1_lock);
sendreq = (mca_pml_ob1_send_request_t*)opal_list_remove_first(&mca_pml_ob1.send_pending);
OPAL_THREAD_UNLOCK(&mca_pml_ob1.ob1_lock);
if(NULL == sendreq)
break;
mca_pml_ob1_send_request_schedule(sendreq);
}
} }

Просмотреть файл

@ -296,9 +296,28 @@ do {
} \ } \
} while(0) } while(0)
/*
* Attempt to process any pending requests
*/
#define MCA_PML_OB1_SEND_REQUEST_PROCESS_PENDING() \
do { \
/* advance pending requests */ \
while(opal_list_get_size(&mca_pml_ob1.send_pending)) { \
mca_pml_ob1_send_request_t* sendreq; \
OPAL_THREAD_LOCK(&mca_pml_ob1.ob1_lock); \
sendreq = (mca_pml_ob1_send_request_t*) \
opal_list_remove_first(&mca_pml_ob1.send_pending); \
OPAL_THREAD_UNLOCK(&mca_pml_ob1.ob1_lock); \
if(NULL == sendreq) \
break; \
mca_pml_ob1_send_request_schedule(sendreq); \
} \
} while (0)
/** /**
* * Start the specified request
*/ */
int mca_pml_ob1_send_request_start( int mca_pml_ob1_send_request_start(
@ -306,13 +325,13 @@ int mca_pml_ob1_send_request_start(
mca_pml_ob1_endpoint_t* endpoint); mca_pml_ob1_endpoint_t* endpoint);
/** /**
* * Schedule additional fragments
*/ */
int mca_pml_ob1_send_request_schedule( int mca_pml_ob1_send_request_schedule(
mca_pml_ob1_send_request_t* sendreq); mca_pml_ob1_send_request_t* sendreq);
/** /**
* * Initiate a put scheduled by the receiver.
*/ */
void mca_pml_ob1_send_request_put( void mca_pml_ob1_send_request_put(