summaryrefslogtreecommitdiffstats
path: root/testpar/phdf5sup.c
diff options
context:
space:
mode:
Diffstat (limited to 'testpar/phdf5sup.c')
-rw-r--r--testpar/phdf5sup.c54
1 files changed, 54 insertions, 0 deletions
diff --git a/testpar/phdf5sup.c b/testpar/phdf5sup.c
new file mode 100644
index 0000000..e09c403
--- /dev/null
+++ b/testpar/phdf5sup.c
@@ -0,0 +1,54 @@
+/* debugging tools */
+#define MESG(x)\
+ printf("%s\n", x);\
+
+#ifdef HAVE_PARALLEL
+#define MPI_BANNER(mesg)\
+ {printf("================================\n");\
+ printf("Proc %d: ", myid); \
+ printf("*** %s\n", mesg);\
+ printf("================================\n");}
+#else
+#define MPI_BANNER(mesg)\
+ {printf("================================\n");\
+ printf("*** %s\n", mesg);\
+ printf("================================\n");}
+#endif
+
+#ifdef HAVE_PARALLEL
+#define SYNC(comm)\
+ {MPI_BANNER("doing a SYNC"); MPI_Barrier(comm); MPI_BANNER("SYNC DONE");}
+
+/* pause the process for a moment to allow debugger to attach if desired. */
+/* Will pause more if greenlight file is not persent but will eventually */
+/* continue. */
+#include <sys/types.h>
+#include <sys/stat.h>
+void pause_proc(MPI_Comm comm, int myid, char* processor_name, int namelen,
+ int argc, char **argv)
+{
+
+ int pid;
+ struct stat statbuf;
+ char greenlight[] = "go";
+ int maxloop = 10;
+ int time_int = 10;
+
+ /* check if an pause interval option is given */
+ if (--argc > 0 && isdigit(*++argv))
+ time_int = atoi(*argv);
+ pid = getpid();
+ printf("Proc %d (%*s): pid = %d\n",
+ myid, namelen, processor_name, pid);
+
+ if (myid == 0)
+ while ((stat(greenlight, &statbuf) == -1) && maxloop-- > 0){
+ printf("waiting(%ds) for file %s ...", time_int, greenlight);
+ fflush(stdout);
+ sleep(time_int);
+ }
+ MPI_Barrier(comm);
+}
+#endif /*HAVE_PARALLEL*/
+
+