1
1

Distinguish between success/failure and the number of requests

progressed

This commit was SVN r4212.
Этот коммит содержится в:
Jeff Squyres 2005-01-28 18:54:34 +00:00
родитель ba3016bc1e
Коммит 6362a63459
3 изменённых файлов: 17 добавлений и 21 удалений

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

@ -157,9 +157,9 @@ int mca_io_base_component_del(mca_io_base_components_t *comp)
}
int mca_io_base_progress(void)
int mca_io_base_progress(int *num_pending)
{
int ret, count = 0;
int ret;
ompi_list_item_t *item;
component_item_t *citem;
@ -173,25 +173,23 @@ int mca_io_base_progress(void)
item = ompi_list_get_next(item)) {
citem = (component_item_t *) item;
switch(citem->version) {
switch (citem->version) {
case MCA_IO_BASE_V_1_0_0:
ret = citem->component.v1_0_0.io_progress();
break;
default:
ret = -1;
break;
}
if (ret > 0) {
count += ret;
} else {
ret = citem->component.v1_0_0.io_progress(num_pending);
if (OMPI_SUCCESS != ret) {
OMPI_THREAD_UNLOCK(&mutex);
return ret;
}
break;
default:
break;
}
}
OMPI_THREAD_UNLOCK(&mutex);
return count;
return OMPI_SUCCESS;
}

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

@ -44,7 +44,7 @@ union mca_io_base_modules_t;
/**
* External progress function; invoked from ompi_progress()
*/
int mca_io_base_progress(void);
int mca_io_base_progress(int *num_requests);
/**
@ -102,7 +102,7 @@ typedef int (*mca_io_base_component_file_delete_unselect_fn_t)
(char *filename, struct ompi_info_t *info,
struct mca_io_base_delete_t *private_data);
typedef int (*mca_io_base_component_progress_fn_t)(void);
typedef int (*mca_io_base_component_progress_fn_t)(int *num_pending);
/* IO component version and interface functions. */
struct mca_io_base_component_1_0_0_t {

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

@ -35,7 +35,7 @@ void ompi_progress_events(int flag)
void ompi_progress(void)
{
/* progress any outstanding communications */
int ret, events = 0;
int ret, temp, events = 0;
#if OMPI_HAVE_THREADS == 0
if (ompi_progress_event_flag != 0) {
ret = ompi_event_loop(ompi_progress_event_flag);
@ -52,11 +52,9 @@ void ompi_progress(void)
/* Progress IO requests, if there are any */
if (ompi_progress_pending_io_reqs > 0) {
ret = mca_io_base_progress();
if (ret > 0) {
events += ret;
ompi_progress_pending_io_reqs -= ret;
}
temp = ompi_progress_pending_io_reqs;
mca_io_base_progress(&ompi_progress_pending_io_reqs);
events += (temp - ompi_progress_pending_io_reqs);
}
#if 1