[mpich-commits] [mpich] MPICH primary repository branch, master, updated. v3.2b4-98-g4551de1
Service Account
noreply at mpich.org
Mon Aug 10 22:32:02 CDT 2015
This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "MPICH primary repository".
The branch, master has been updated
via 4551de14b1d752a9c7be49df4a9e70776addd02f (commit)
from 6f020c71b5f6349b3b616280ba9c24ed7988de40 (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
http://git.mpich.org/mpich.git/commitdiff/4551de14b1d752a9c7be49df4a9e70776addd02f
commit 4551de14b1d752a9c7be49df4a9e70776addd02f
Author: Xin Zhao <xinzhao3 at illinois.edu>
Date: Sun Aug 9 22:19:50 2015 -0500
Keep track of how many progress hooks are currently registered.
Here we add a counter to keep track of how many progress hooks
currently registered. Therefore, when we trigger progress hooks,
inside progress engine, we do not need to check all MAX_PROGRESS_HOOKS
number of slots.
Signed-off-by: Pavan Balaji <balaji at anl.gov>
diff --git a/src/mpid/ch3/channels/nemesis/src/ch3_progress.c b/src/mpid/ch3/channels/nemesis/src/ch3_progress.c
index 1dfbcdc..380fd45 100644
--- a/src/mpid/ch3/channels/nemesis/src/ch3_progress.c
+++ b/src/mpid/ch3/channels/nemesis/src/ch3_progress.c
@@ -87,6 +87,7 @@ static qn_ent_t *qn_head = NULL;
#define MAX_PROGRESS_HOOKS 16
typedef int (*progress_func_ptr_t) (int* made_progress);
static progress_func_ptr_t progress_hooks[MAX_PROGRESS_HOOKS] = { NULL };
+static int total_progress_hook_cnt = 0; /* Keep track of how many progress hooks are currently registered */
#ifdef HAVE_SIGNAL
static void sigusr1_handler(int sig)
@@ -302,6 +303,10 @@ int MPIDI_CH3I_Progress_register_hook(int (*progress_fn)(int*))
for (i = 0; i < MAX_PROGRESS_HOOKS; i++) {
if (progress_hooks[i] == NULL) {
progress_hooks[i] = progress_fn;
+
+ total_progress_hook_cnt++;
+ MPIU_Assert(total_progress_hook_cnt <= MAX_PROGRESS_HOOKS);
+
break;
}
}
@@ -337,6 +342,10 @@ int MPIDI_CH3I_Progress_deregister_hook(int (*progress_fn)(int*))
for (i = 0; i < MAX_PROGRESS_HOOKS; i++) {
if (progress_hooks[i] == progress_fn) {
progress_hooks[i] = NULL;
+
+ total_progress_hook_cnt--;
+ MPIU_Assert(total_progress_hook_cnt >= 0);
+
break;
}
}
@@ -434,6 +443,7 @@ int MPIDI_CH3I_Progress (MPID_Progress_state *progress_state, int is_blocking)
int in_fbox = 0;
MPIDI_VC_t *vc;
int i;
+ int called_progress_hook_cnt = 0;
do /* receive progress */
{
@@ -533,12 +543,17 @@ int MPIDI_CH3I_Progress (MPID_Progress_state *progress_state, int is_blocking)
if (mpi_errno) MPIU_ERR_POP(mpi_errno);
}
+ called_progress_hook_cnt = 0;
for (i = 0; i < MAX_PROGRESS_HOOKS; i++) {
if (progress_hooks[i] != NULL) {
mpi_errno = progress_hooks[i](&made_progress);
if (mpi_errno) MPIU_ERR_POP(mpi_errno);
if (made_progress)
MPIDI_CH3_Progress_signal_completion();
+
+ called_progress_hook_cnt++;
+ if (called_progress_hook_cnt == total_progress_hook_cnt)
+ break;
}
}
-----------------------------------------------------------------------
Summary of changes:
src/mpid/ch3/channels/nemesis/src/ch3_progress.c | 15 +++++++++++++++
1 files changed, 15 insertions(+), 0 deletions(-)
hooks/post-receive
--
MPICH primary repository
More information about the commits
mailing list