[Darshan-commits] [Git][darshan/darshan][mmap-dev] more mmap logic and instrumentation for testing

Shane Snyder xgitlab at cels.anl.gov
Tue Oct 13 16:45:05 CDT 2015


Shane Snyder pushed to branch mmap-dev at darshan / darshan


Commits:
c3c5e597 by Shane Snyder at 2015-10-13T16:44:32Z
more mmap logic and instrumentation for testing

- - - - -


4 changed files:

- darshan-runtime/Makefile.in
- darshan-runtime/lib/darshan-core.c
- darshan-runtime/lib/darshan-posix.c
- darshan-util/Makefile.in


Changes:

=====================================
darshan-runtime/Makefile.in
=====================================
--- a/darshan-runtime/Makefile.in
+++ b/darshan-runtime/Makefile.in
@@ -33,15 +33,8 @@ CFLAGS_SHARED = -DDARSHAN_CONFIG_H=\"darshan-runtime-config.h\" -I . -I$(srcdir)
 
 LIBS = -lz @LIBBZ2@
 
-static-mod-objs = lib/darshan-posix.o lib/darshan-mpiio.o lib/darshan-hdf5.o lib/darshan-pnetcdf.o
-dynamic-mod-objs = lib/darshan-posix.po lib/darshan-mpiio.po lib/darshan-hdf5.po lib/darshan-pnetcdf.po
-
-ifdef DARSHAN_USE_BGQ
-static-mod-objs += lib/darshan-bgq.o
-dynamic-mod-objs += lib/darshan-bgq.po
-CFLAGS += -DDARSHAN_BGQ
-CFLAGS_SHARED += -DDARSHAN_BGQ
-endif
+static-mod-objs = lib/darshan-posix.o
+dynamic-mod-objs = lib/darshan-posix.po 
 
 lib::
 	@mkdir -p $@


=====================================
darshan-runtime/lib/darshan-core.c
=====================================
--- a/darshan-runtime/lib/darshan-core.c
+++ b/darshan-runtime/lib/darshan-core.c
@@ -122,7 +122,7 @@ void darshan_core_initialize(int argc, char **argv)
     struct darshan_core_runtime *init_core = NULL;
     int internal_timing_flag = 0;
     double init_start, init_time, init_max;
-    char *mmap_log_name = "darshan-log.out";
+    char mmap_log_name[PATH_MAX];
     int mmap_fd;
     int mmap_size;
     int sys_page_size;
@@ -176,6 +176,26 @@ void darshan_core_initialize(int argc, char **argv)
             memset(init_core, 0, sizeof(*init_core));
             init_core->wtime_offset = DARSHAN_MPI_CALL(PMPI_Wtime)();
 
+            /* Use DARSHAN_JOBID_OVERRIDE for the env var for __DARSHAN_JOBID */
+            envstr = getenv(DARSHAN_JOBID_OVERRIDE);
+            if(!envstr)
+            {
+                envstr = __DARSHAN_JOBID;
+            }
+
+            /* find a job id */
+            jobid_str = getenv(envstr);
+            if(jobid_str)
+            {
+                /* in cobalt we can find it in env var */
+                ret = sscanf(jobid_str, "%d", &jobid);
+            }
+            if(!jobid_str || ret != 1)
+            {
+                /* use pid as fall back */
+                jobid = getpid();
+            }
+
             sys_page_size = sysconf(_SC_PAGESIZE);
             assert(sys_page_size > 0);
 
@@ -187,7 +207,13 @@ void darshan_core_initialize(int argc, char **argv)
             if(mmap_size % sys_page_size)
                 mmap_size = ((mmap_size / sys_page_size) + 1) * sys_page_size;
 
-            /* TODO: logfile name should have process rank in it for uniqueness */
+            /* construct a unique temporary log file name for this process
+             * to write mmap log data to
+             */
+            snprintf(mmap_log_name, PATH_MAX, "/tmp/darshan_job%d.%d",
+                jobid, my_rank);
+
+            /* create the temporary mmapped darshan log */
             mmap_fd = open(mmap_log_name, O_CREAT|O_RDWR|O_EXCL , 0644);
             if(mmap_fd < 0)
             {
@@ -238,26 +264,6 @@ void darshan_core_initialize(int argc, char **argv)
             init_core->mmap_job_p->uid = getuid();
             init_core->mmap_job_p->start_time = time(NULL);
             init_core->mmap_job_p->nprocs = nprocs;
-
-            /* Use DARSHAN_JOBID_OVERRIDE for the env var for __DARSHAN_JOBID */
-            envstr = getenv(DARSHAN_JOBID_OVERRIDE);
-            if(!envstr)
-            {
-                envstr = __DARSHAN_JOBID;
-            }
-
-            /* find a job id */
-            jobid_str = getenv(envstr);
-            if(jobid_str)
-            {
-                /* in cobalt we can find it in env var */
-                ret = sscanf(jobid_str, "%d", &jobid);
-            }
-            if(!jobid_str || ret != 1)
-            {
-                /* use pid as fall back */
-                jobid = getpid();
-            }
             init_core->mmap_job_p->jobid = (int64_t)jobid;
 
             /* if we are using any hints to write the log file, then record those
@@ -299,42 +305,17 @@ void darshan_core_initialize(int argc, char **argv)
 
 void darshan_core_shutdown()
 {
-
-    return;
-#if 0
     int i;
-    char *logfile_name;
     struct darshan_core_runtime *final_core;
     int internal_timing_flag = 0;
-    char *envjobid;
-    char *jobid_str;
-    int jobid;
-    struct tm *start_tm;
-    time_t start_time_tmp;
-    int ret = 0;
-    int all_ret = 0;
-    int64_t first_start_time;
-    int64_t last_end_time;
-    int local_mod_use[DARSHAN_MAX_MODS] = {0};
-    int global_mod_use_count[DARSHAN_MAX_MODS] = {0};
-    darshan_record_id shared_recs[DARSHAN_CORE_MAX_RECORDS] = {0};
     double start_log_time;
-    double open1, open2;
-    double job1, job2;
-    double rec1, rec2;
-    double mod1[DARSHAN_MAX_MODS] = {0};
-    double mod2[DARSHAN_MAX_MODS] = {0};
-    double header1, header2;
     double tm_end;
-    uint64_t gz_fp = 0;
-    unsigned char tmp_partial_flag;
-    MPI_File log_fh;
-    MPI_Status status;
 
     if(getenv("DARSHAN_INTERNAL_TIMING"))
         internal_timing_flag = 1;
 
-    start_log_time = DARSHAN_MPI_CALL(PMPI_Wtime)();
+    if(internal_timing_flag)
+        start_log_time = DARSHAN_MPI_CALL(PMPI_Wtime)();
 
     /* disable darhan-core while we shutdown */
     DARSHAN_CORE_LOCK();
@@ -346,413 +327,38 @@ void darshan_core_shutdown()
     final_core = darshan_core;
     darshan_core = NULL;
 
-    /* we also need to set which modules were registered on this process and
-     * call into those modules and give them a chance to perform any necessary
-     * pre-shutdown steps.
-     */
     for(i = 0; i < DARSHAN_MAX_MODS; i++)
     {
         if(final_core->mod_array[i])
         {
-            local_mod_use[i] = 1;
             final_core->mod_array[i]->mod_funcs.begin_shutdown();
         }
     }
     DARSHAN_CORE_UNLOCK();
 
-    logfile_name = malloc(PATH_MAX);
-    if(!logfile_name)
-    {
-        darshan_core_cleanup(final_core);
-        return;
-    }
-
-    /* set darshan job id/metadata and constuct log file name on rank 0 */
-    if(my_rank == 0)
-    {
-        /* Use DARSHAN_JOBID_OVERRIDE for the env var for __DARSHAN_JOBID */
-        envjobid = getenv(DARSHAN_JOBID_OVERRIDE);
-        if(!envjobid)
-        {
-            envjobid = __DARSHAN_JOBID;
-        }
-
-        /* find a job id */
-        jobid_str = getenv(envjobid);
-        if(jobid_str)
-        {
-            /* in cobalt we can find it in env var */
-            ret = sscanf(jobid_str, "%d", &jobid);
-        }
-        if(!jobid_str || ret != 1)
-        {
-            /* use pid as fall back */
-            jobid = getpid();
-        }
-
-        final_core->log_job.jobid = (int64_t)jobid;
-
-        /* if we are using any hints to write the log file, then record those
-         * hints with the darshan job information
-         */
-        darshan_log_record_hints_and_ver(final_core);
-
-        /* use human readable start time format in log filename */
-        start_time_tmp = final_core->log_job.start_time;
-        start_tm = localtime(&start_time_tmp);
-
-        /* construct log file name */
-        darshan_get_logfile_name(logfile_name, jobid, start_tm);
-    }
-
-    /* broadcast log file name */
-    DARSHAN_MPI_CALL(PMPI_Bcast)(logfile_name, PATH_MAX, MPI_CHAR, 0,
-        MPI_COMM_WORLD);
-
-    if(strlen(logfile_name) == 0)
-    {
-        /* failed to generate log file name */
-        free(logfile_name);
-        darshan_core_cleanup(final_core);
-        return;
-    }
-
-    final_core->log_job.end_time = time(NULL);
-
-    /* reduce to report first start time and last end time across all ranks
-     * at rank 0
-     */
-    DARSHAN_MPI_CALL(PMPI_Reduce)(&final_core->log_job.start_time, &first_start_time, 1, MPI_LONG_LONG, MPI_MIN, 0, MPI_COMM_WORLD);
-    DARSHAN_MPI_CALL(PMPI_Reduce)(&final_core->log_job.end_time, &last_end_time, 1, MPI_LONG_LONG, MPI_MAX, 0, MPI_COMM_WORLD);
-    if(my_rank == 0)
-    {
-        final_core->log_job.start_time = first_start_time;
-        final_core->log_job.end_time = last_end_time;
-    }
-
-    /* reduce the number of times a module was opened globally and bcast to everyone */   
-    DARSHAN_MPI_CALL(PMPI_Allreduce)(local_mod_use, global_mod_use_count, DARSHAN_MAX_MODS, MPI_INT, MPI_SUM, MPI_COMM_WORLD);
-
-    /* get a list of records which are shared across all processes */
-    darshan_get_shared_records(final_core, shared_recs);
-
-    if(internal_timing_flag)
-        open1 = DARSHAN_MPI_CALL(PMPI_Wtime)();
-    /* collectively open the darshan log file */
-    ret = darshan_log_open_all(logfile_name, &log_fh);
-    if(internal_timing_flag)
-        open2 = DARSHAN_MPI_CALL(PMPI_Wtime)();
-
-    /* error out if unable to open log file */
-    DARSHAN_MPI_CALL(PMPI_Allreduce)(&ret, &all_ret, 1, MPI_INT,
-        MPI_LOR, MPI_COMM_WORLD);
-    if(all_ret != 0)
-    {
-        if(my_rank == 0)
-        {
-            fprintf(stderr, "darshan library warning: unable to open log file %s\n",
-                logfile_name);
-            unlink(logfile_name);
-        }
-        free(logfile_name);
-        darshan_core_cleanup(final_core);
-        return;
-    }
-
-    if(internal_timing_flag)
-        job1 = DARSHAN_MPI_CALL(PMPI_Wtime)();
-    /* rank 0 is responsible for writing the compressed darshan job information */
-    if(my_rank == 0)
-    {
-        void *pointers[2] = {&final_core->log_job, final_core->trailing_data};
-        int lengths[2] = {sizeof(struct darshan_job), strlen(final_core->trailing_data)};
-        int comp_buf_sz = 0;
-
-        /* compress the job info and the trailing mount/exe data */
-        all_ret = darshan_deflate_buffer(pointers, lengths, 2,
-            final_core->comp_buf, &comp_buf_sz);
-        if(all_ret)
-        {
-            fprintf(stderr, "darshan library warning: unable to compress job data\n");
-            unlink(logfile_name);
-        }
-        else
-        {
-            /* write the job information, preallocing space for the log header */
-            gz_fp += sizeof(struct darshan_header);
-            all_ret = DARSHAN_MPI_CALL(PMPI_File_write_at)(log_fh, gz_fp,
-                final_core->comp_buf, comp_buf_sz, MPI_BYTE, &status);
-            if(all_ret != MPI_SUCCESS)
-            {
-                fprintf(stderr, "darshan library warning: unable to write job data to log file %s\n",
-                        logfile_name);
-                unlink(logfile_name);
-                
-            }
-            gz_fp += comp_buf_sz;
-        }
-    }
-
-    /* error out if unable to write job information */
-    DARSHAN_MPI_CALL(PMPI_Bcast)(&all_ret, 1, MPI_INT, 0, MPI_COMM_WORLD);
-    if(all_ret != 0)
-    {
-        free(logfile_name);
-        darshan_core_cleanup(final_core);
-        return;
-    }
-    if(internal_timing_flag)
-        job2 = DARSHAN_MPI_CALL(PMPI_Wtime)();
-
-    if(internal_timing_flag)
-        rec1 = DARSHAN_MPI_CALL(PMPI_Wtime)();
-    /* write the record name->id hash to the log file */
-    final_core->log_header.rec_map.off = gz_fp;
-    ret = darshan_log_write_record_hash(log_fh, final_core, &gz_fp);
-    final_core->log_header.rec_map.len = gz_fp - final_core->log_header.rec_map.off;
-
-    /* error out if unable to write record hash */
-    DARSHAN_MPI_CALL(PMPI_Allreduce)(&ret, &all_ret, 1, MPI_INT,
-        MPI_LOR, MPI_COMM_WORLD);
-    if(all_ret != 0)
-    {
-        if(my_rank == 0)
-        {
-            fprintf(stderr, "darshan library warning: unable to write record hash to log file %s\n",
-                logfile_name);
-            unlink(logfile_name);
-        }
-        free(logfile_name);
-        darshan_core_cleanup(final_core);
-        return;
-    }
-    if(internal_timing_flag)
-        rec2 = DARSHAN_MPI_CALL(PMPI_Wtime)();
-
-    /* loop over globally used darshan modules and:
-     *      - perform shared file reductions, if possible
-     *      - get final output buffer
-     *      - compress (zlib) provided output buffer
-     *      - append compressed buffer to log file
-     *      - add module index info (file offset/length) to log header
-     *      - shutdown the module
-     */
-    for(i = 0; i < DARSHAN_MAX_MODS; i++)
-    {
-        struct darshan_core_module* this_mod = final_core->mod_array[i];
-        struct darshan_core_record_ref *ref = NULL;
-        darshan_record_id mod_shared_recs[DARSHAN_CORE_MAX_RECORDS];
-        int mod_shared_rec_cnt = 0;
-        void* mod_buf = NULL;
-        int mod_buf_sz = 0;
-        int j;
-
-        if(global_mod_use_count[i] == 0)
-        {
-            if(my_rank == 0)
-            {
-                final_core->log_header.mod_map[i].off = 0;
-                final_core->log_header.mod_map[i].len = 0;
-            }
-            continue;
-        }
- 
-        if(internal_timing_flag)
-            mod1[i] = DARSHAN_MPI_CALL(PMPI_Wtime)();
-
-        /* set the shared file list for this module */
-        memset(mod_shared_recs, 0, DARSHAN_CORE_MAX_RECORDS * sizeof(darshan_record_id));
-        for(j = 0; j < DARSHAN_CORE_MAX_RECORDS && shared_recs[j] != 0; j++)
-        {
-            HASH_FIND(hlink, final_core->rec_hash, &shared_recs[j],
-                sizeof(darshan_record_id), ref);
-            assert(ref);
-            if(DARSHAN_CORE_MOD_ISSET(ref->global_mod_flags, i))
-            {
-                mod_shared_recs[mod_shared_rec_cnt++] = shared_recs[j];
-            }
-        }
-
-        /* if module is registered locally, get the corresponding output buffer
-         * 
-         * NOTE: this function can be used to run collective operations across
-         * modules, if there are file records shared globally.
-         */
-        if(this_mod)
-        {
-            this_mod->mod_funcs.get_output_data(MPI_COMM_WORLD, mod_shared_recs,
-                mod_shared_rec_cnt, &mod_buf, &mod_buf_sz);
-        }
-
-        /* append this module's data to the darshan log */
-        final_core->log_header.mod_map[i].off = gz_fp;
-        ret = darshan_log_append_all(log_fh, final_core, mod_buf, mod_buf_sz, &gz_fp);
-        final_core->log_header.mod_map[i].len =
-            gz_fp - final_core->log_header.mod_map[i].off;
-
-        /* error out if the log append failed */
-        DARSHAN_MPI_CALL(PMPI_Allreduce)(&ret, &all_ret, 1, MPI_INT,
-            MPI_LOR, MPI_COMM_WORLD);
-        if(all_ret != 0)
-        {
-            if(my_rank == 0)
-            {
-                fprintf(stderr,
-                    "darshan library warning: unable to write %s module data to log file %s\n",
-                    darshan_module_names[i], logfile_name);
-                unlink(logfile_name);
-            }
-            free(logfile_name);
-            darshan_core_cleanup(final_core);
-            return;
-        }
-
-        /* shutdown module if registered locally */
-        if(this_mod)
-        {
-            this_mod->mod_funcs.shutdown();
-        }
-        if(internal_timing_flag)
-            mod2[i] = DARSHAN_MPI_CALL(PMPI_Wtime)();
-    }
-
-    /* run a reduction to determine if any application processes had to set the
-     * partial flag. this happens when a process has tracked too many records
-     * at once and cannot track new records
-     */
-    DARSHAN_MPI_CALL(PMPI_Reduce)(&(final_core->log_header.partial_flag),
-        &tmp_partial_flag, 1, MPI_UNSIGNED_CHAR, MPI_MAX, 0, MPI_COMM_WORLD);
-
-    if(internal_timing_flag)
-        header1 = DARSHAN_MPI_CALL(PMPI_Wtime)();
-    /* rank 0 is responsible for writing the log header */
-    if(my_rank == 0)
-    {
-        /* initialize the remaining header fields */
-        strcpy(final_core->log_header.version_string, DARSHAN_LOG_VERSION);
-        final_core->log_header.magic_nr = DARSHAN_MAGIC_NR;
-        final_core->log_header.comp_type = DARSHAN_ZLIB_COMP;
-        final_core->log_header.partial_flag = tmp_partial_flag;
-
-        all_ret = DARSHAN_MPI_CALL(PMPI_File_write_at)(log_fh, 0, &(final_core->log_header),
-            sizeof(struct darshan_header), MPI_BYTE, &status);
-        if(all_ret != MPI_SUCCESS)
-        {
-            fprintf(stderr, "darshan library warning: unable to write header to log file %s\n",
-                    logfile_name);
-            unlink(logfile_name);
-        }
-    }
-
-    /* error out if unable to write log header */
-    DARSHAN_MPI_CALL(PMPI_Bcast)(&all_ret, 1, MPI_INT, 0, MPI_COMM_WORLD);
-    if(all_ret != 0)
-    {
-        free(logfile_name);
-        darshan_core_cleanup(final_core);
-        return;
-    }
-    if(internal_timing_flag)
-        header2 = DARSHAN_MPI_CALL(PMPI_Wtime)();
+    final_core->mmap_job_p->end_time = time(NULL);
 
-    DARSHAN_MPI_CALL(PMPI_File_close)(&log_fh);
-
-    /* if we got this far, there are no errors, so rename from *.darshan_partial
-     * to *-<logwritetime>.darshan, which indicates that this log file is
-     * complete and ready for analysis
-     */
-    if(my_rank == 0)
-    {
-        if(getenv("DARSHAN_LOGFILE"))
-        {
-#ifdef __DARSHAN_GROUP_READABLE_LOGS
-            chmod(logfile_name, (S_IRUSR|S_IRGRP));
-#else
-            chmod(logfile_name, (S_IRUSR));
-#endif
-        }
-        else
-        {
-            char* tmp_index;
-            double end_log_time;
-            char* new_logfile_name;
-
-            new_logfile_name = malloc(PATH_MAX);
-            if(new_logfile_name)
-            {
-                new_logfile_name[0] = '\0';
-                end_log_time = DARSHAN_MPI_CALL(PMPI_Wtime)();
-                strcat(new_logfile_name, logfile_name);
-                tmp_index = strstr(new_logfile_name, ".darshan_partial");
-                sprintf(tmp_index, "_%d.darshan", (int)(end_log_time-start_log_time+1));
-                rename(logfile_name, new_logfile_name);
-                /* set permissions on log file */
-#ifdef __DARSHAN_GROUP_READABLE_LOGS
-                chmod(new_logfile_name, (S_IRUSR|S_IRGRP));
-#else
-                chmod(new_logfile_name, (S_IRUSR));
-#endif
-                free(new_logfile_name);
-            }
-        }
-    }
-
-    free(logfile_name);
     darshan_core_cleanup(final_core);
 
     if(internal_timing_flag)
     {
-        double open_tm, open_slowest;
-        double header_tm, header_slowest;
-        double job_tm, job_slowest;
-        double rec_tm, rec_slowest;
-        double mod_tm[DARSHAN_MAX_MODS], mod_slowest[DARSHAN_MAX_MODS];
         double all_tm, all_slowest;
 
         tm_end = DARSHAN_MPI_CALL(PMPI_Wtime)();
 
-        open_tm = open2 - open1;
-        header_tm = header2 - header1;
-        job_tm = job2 - job1;
-        rec_tm = rec2 - rec1;
         all_tm = tm_end - start_log_time;
-        for(i = 0;i < DARSHAN_MAX_MODS; i++)
-        {
-            mod_tm[i] = mod2[i] - mod1[i];
-        }
 
-        DARSHAN_MPI_CALL(PMPI_Reduce)(&open_tm, &open_slowest, 1,
-            MPI_DOUBLE, MPI_MAX, 0, MPI_COMM_WORLD);
-        DARSHAN_MPI_CALL(PMPI_Reduce)(&header_tm, &header_slowest, 1,
-            MPI_DOUBLE, MPI_MAX, 0, MPI_COMM_WORLD);
-        DARSHAN_MPI_CALL(PMPI_Reduce)(&job_tm, &job_slowest, 1,
-            MPI_DOUBLE, MPI_MAX, 0, MPI_COMM_WORLD);
-        DARSHAN_MPI_CALL(PMPI_Reduce)(&rec_tm, &rec_slowest, 1,
-            MPI_DOUBLE, MPI_MAX, 0, MPI_COMM_WORLD);
         DARSHAN_MPI_CALL(PMPI_Reduce)(&all_tm, &all_slowest, 1,
             MPI_DOUBLE, MPI_MAX, 0, MPI_COMM_WORLD);
-        DARSHAN_MPI_CALL(PMPI_Reduce)(mod_tm, mod_slowest, DARSHAN_MAX_MODS,
-            MPI_DOUBLE, MPI_MAX, 0, MPI_COMM_WORLD);
 
         if(my_rank == 0)
         {
             fprintf(stderr, "#darshan:<op>\t<nprocs>\t<time>\n");
-            fprintf(stderr, "darshan:log_open\t%d\t%f\n", nprocs, open_slowest);
-            fprintf(stderr, "darshan:job_write\t%d\t%f\n", nprocs, job_slowest);
-            fprintf(stderr, "darshan:hash_write\t%d\t%f\n", nprocs, rec_slowest);
-            fprintf(stderr, "darshan:header_write\t%d\t%f\n", nprocs, header_slowest);
-            for(i = 0; i < DARSHAN_MAX_MODS; i++)
-            {
-                if(global_mod_use_count[i])
-                    fprintf(stderr, "darshan:%s_shutdown\t%d\t%f\n", darshan_module_names[i],
-                        nprocs, mod_slowest[i]);
-            }
             fprintf(stderr, "darshan:core_shutdown\t%d\t%f\n", nprocs, all_slowest);
         }
     }
 
     return;
-#endif
 }
 
 /* *********************************** */


=====================================
darshan-runtime/lib/darshan-posix.c
=====================================
--- a/darshan-runtime/lib/darshan-posix.c
+++ b/darshan-runtime/lib/darshan-posix.c
@@ -346,6 +346,16 @@ static void posix_shutdown(void);
     (__file)->file_record->counters[POSIX_STATS] += 1; \
 } while(0)
 
+static double psx_wrap_time = 0.0;
+
+#define PSX_PRE_WRAP() \
+    double pre_wrap = darshan_core_wtime();
+
+#define PSX_POST_WRAP() \
+    double post_wrap = darshan_core_wtime(); \
+    psx_wrap_time += (post_wrap-pre_wrap);
+
+
 /**********************************************************
  *      Wrappers for POSIX I/O functions of interest      * 
  **********************************************************/
@@ -356,6 +366,8 @@ int DARSHAN_DECL(open)(const char *path, int flags, ...)
     int ret;
     double tm1, tm2;
 
+    PSX_PRE_WRAP();
+
     MAP_OR_FAIL(open);
 
     if(flags & O_CREAT) 
@@ -381,6 +393,8 @@ int DARSHAN_DECL(open)(const char *path, int flags, ...)
     POSIX_RECORD_OPEN(ret, path, mode, 0, tm1, tm2);
     POSIX_UNLOCK();
 
+    PSX_POST_WRAP();
+
     return(ret);
 }
 
@@ -390,6 +404,8 @@ int DARSHAN_DECL(open64)(const char *path, int flags, ...)
     int ret;
     double tm1, tm2;
 
+    PSX_PRE_WRAP();
+
     MAP_OR_FAIL(open64);
 
     if(flags & O_CREAT)
@@ -415,6 +431,8 @@ int DARSHAN_DECL(open64)(const char *path, int flags, ...)
     POSIX_RECORD_OPEN(ret, path, mode, 0, tm1, tm2);
     POSIX_UNLOCK();
 
+    PSX_POST_WRAP();
+
     return(ret);
 }
 
@@ -423,6 +441,8 @@ int DARSHAN_DECL(creat)(const char* path, mode_t mode)
     int ret;
     double tm1, tm2;
 
+    PSX_PRE_WRAP();
+
     MAP_OR_FAIL(creat);
 
     tm1 = darshan_core_wtime();
@@ -434,6 +454,8 @@ int DARSHAN_DECL(creat)(const char* path, mode_t mode)
     POSIX_RECORD_OPEN(ret, path, mode, 0, tm1, tm2);
     POSIX_UNLOCK();
 
+    PSX_POST_WRAP();
+
     return(ret);
 }
 
@@ -442,6 +464,8 @@ int DARSHAN_DECL(creat64)(const char* path, mode_t mode)
     int ret;
     double tm1, tm2;
 
+    PSX_PRE_WRAP();
+
     MAP_OR_FAIL(creat64);
 
     tm1 = darshan_core_wtime();
@@ -453,6 +477,8 @@ int DARSHAN_DECL(creat64)(const char* path, mode_t mode)
     POSIX_RECORD_OPEN(ret, path, mode, 0, tm1, tm2);
     POSIX_UNLOCK();
 
+    PSX_POST_WRAP();
+
     return(ret);
 }
 
@@ -462,6 +488,8 @@ FILE* DARSHAN_DECL(fopen)(const char *path, const char *mode)
     int fd;
     double tm1, tm2;
 
+    PSX_PRE_WRAP();
+
     MAP_OR_FAIL(fopen);
 
     tm1 = darshan_core_wtime();
@@ -478,6 +506,8 @@ FILE* DARSHAN_DECL(fopen)(const char *path, const char *mode)
     POSIX_RECORD_OPEN(fd, path, 0, 1, tm1, tm2);
     POSIX_UNLOCK();
 
+    PSX_POST_WRAP();
+
     return(ret);
 }
 
@@ -487,6 +517,8 @@ FILE* DARSHAN_DECL(fopen64)(const char *path, const char *mode)
     int fd;
     double tm1, tm2;
 
+    PSX_PRE_WRAP();
+
     MAP_OR_FAIL(fopen64);
 
     tm1 = darshan_core_wtime();
@@ -503,6 +535,8 @@ FILE* DARSHAN_DECL(fopen64)(const char *path, const char *mode)
     POSIX_RECORD_OPEN(fd, path, 0, 1, tm1, tm2);
     POSIX_UNLOCK();
 
+    PSX_POST_WRAP();
+
     return(ret);
 }
 
@@ -511,6 +545,8 @@ int DARSHAN_DECL(mkstemp)(char* template)
     int ret;
     double tm1, tm2;
 
+    PSX_PRE_WRAP();
+
     MAP_OR_FAIL(mkstemp);
 
     tm1 = darshan_core_wtime();
@@ -522,6 +558,8 @@ int DARSHAN_DECL(mkstemp)(char* template)
     POSIX_RECORD_OPEN(ret, template, 0, 0, tm1, tm2);
     POSIX_UNLOCK();
 
+    PSX_POST_WRAP();
+
     return(ret);
 }
 
@@ -530,6 +568,8 @@ int DARSHAN_DECL(mkostemp)(char* template, int flags)
     int ret;
     double tm1, tm2;
 
+    PSX_PRE_WRAP();
+
     MAP_OR_FAIL(mkostemp);
 
     tm1 = darshan_core_wtime();
@@ -541,6 +581,8 @@ int DARSHAN_DECL(mkostemp)(char* template, int flags)
     POSIX_RECORD_OPEN(ret, template, 0, 0, tm1, tm2);
     POSIX_UNLOCK();
 
+    PSX_POST_WRAP();
+
     return(ret);
 }
 
@@ -549,6 +591,8 @@ int DARSHAN_DECL(mkstemps)(char* template, int suffixlen)
     int ret;
     double tm1, tm2;
 
+    PSX_PRE_WRAP();
+
     MAP_OR_FAIL(mkstemps);
 
     tm1 = darshan_core_wtime();
@@ -560,6 +604,8 @@ int DARSHAN_DECL(mkstemps)(char* template, int suffixlen)
     POSIX_RECORD_OPEN(ret, template, 0, 0, tm1, tm2);
     POSIX_UNLOCK();
 
+    PSX_POST_WRAP();
+
     return(ret);
 }
 
@@ -568,6 +614,8 @@ int DARSHAN_DECL(mkostemps)(char* template, int suffixlen, int flags)
     int ret;
     double tm1, tm2;
 
+    PSX_PRE_WRAP();
+
     MAP_OR_FAIL(mkostemps);
 
     tm1 = darshan_core_wtime();
@@ -579,6 +627,8 @@ int DARSHAN_DECL(mkostemps)(char* template, int suffixlen, int flags)
     POSIX_RECORD_OPEN(ret, template, 0, 0, tm1, tm2);
     POSIX_UNLOCK();
 
+    PSX_POST_WRAP();
+
     return(ret);
 }
 
@@ -588,6 +638,8 @@ ssize_t DARSHAN_DECL(read)(int fd, void *buf, size_t count)
     int aligned_flag = 0;
     double tm1, tm2;
 
+    PSX_PRE_WRAP();
+
     MAP_OR_FAIL(read);
 
     if((unsigned long)buf % darshan_mem_alignment == 0) aligned_flag = 1;
@@ -601,6 +653,8 @@ ssize_t DARSHAN_DECL(read)(int fd, void *buf, size_t count)
     POSIX_RECORD_READ(ret, fd, 0, 0, aligned_flag, 0, tm1, tm2);
     POSIX_UNLOCK();
 
+    PSX_POST_WRAP();
+
     return(ret);
 }
 
@@ -610,6 +664,8 @@ ssize_t DARSHAN_DECL(write)(int fd, const void *buf, size_t count)
     int aligned_flag = 0;
     double tm1, tm2;
 
+    PSX_PRE_WRAP();
+
     MAP_OR_FAIL(write);
 
     if((unsigned long)buf % darshan_mem_alignment == 0) aligned_flag = 1;
@@ -623,6 +679,8 @@ ssize_t DARSHAN_DECL(write)(int fd, const void *buf, size_t count)
     POSIX_RECORD_WRITE(ret, fd, 0, 0, aligned_flag, 0, tm1, tm2);
     POSIX_UNLOCK();
 
+    PSX_POST_WRAP();
+
     return(ret);
 }
 
@@ -632,6 +690,8 @@ ssize_t DARSHAN_DECL(pread)(int fd, void *buf, size_t count, off_t offset)
     int aligned_flag = 0;
     double tm1, tm2;
 
+    PSX_PRE_WRAP();
+
     MAP_OR_FAIL(pread);
 
     if((unsigned long)buf % darshan_mem_alignment == 0) aligned_flag = 1;
@@ -645,6 +705,8 @@ ssize_t DARSHAN_DECL(pread)(int fd, void *buf, size_t count, off_t offset)
     POSIX_RECORD_READ(ret, fd, 1, offset, aligned_flag, 0, tm1, tm2);
     POSIX_UNLOCK();
 
+    PSX_POST_WRAP();
+
     return(ret);
 }
 
@@ -654,6 +716,8 @@ ssize_t DARSHAN_DECL(pwrite)(int fd, const void *buf, size_t count, off_t offset
     int aligned_flag = 0;
     double tm1, tm2;
 
+    PSX_PRE_WRAP();
+
     MAP_OR_FAIL(pwrite);
 
     if((unsigned long)buf % darshan_mem_alignment == 0) aligned_flag = 1;
@@ -667,6 +731,8 @@ ssize_t DARSHAN_DECL(pwrite)(int fd, const void *buf, size_t count, off_t offset
     POSIX_RECORD_WRITE(ret, fd, 1, offset, aligned_flag, 0, tm1, tm2);
     POSIX_UNLOCK();
 
+    PSX_POST_WRAP();
+
     return(ret);
 }
 
@@ -676,6 +742,8 @@ ssize_t DARSHAN_DECL(pread64)(int fd, void *buf, size_t count, off64_t offset)
     int aligned_flag = 0;
     double tm1, tm2;
 
+    PSX_PRE_WRAP();
+
     MAP_OR_FAIL(pread64);
 
     if((unsigned long)buf % darshan_mem_alignment == 0) aligned_flag = 1;
@@ -689,6 +757,8 @@ ssize_t DARSHAN_DECL(pread64)(int fd, void *buf, size_t count, off64_t offset)
     POSIX_RECORD_READ(ret, fd, 1, offset, aligned_flag, 0, tm1, tm2);
     POSIX_UNLOCK();
 
+    PSX_POST_WRAP();
+
     return(ret);
 }
 
@@ -698,6 +768,8 @@ ssize_t DARSHAN_DECL(pwrite64)(int fd, const void *buf, size_t count, off64_t of
     int aligned_flag = 0;
     double tm1, tm2;
 
+    PSX_PRE_WRAP();
+
     MAP_OR_FAIL(pwrite64);
 
     if((unsigned long)buf % darshan_mem_alignment == 0) aligned_flag = 1;
@@ -711,6 +783,8 @@ ssize_t DARSHAN_DECL(pwrite64)(int fd, const void *buf, size_t count, off64_t of
     POSIX_RECORD_WRITE(ret, fd, 1, offset, aligned_flag, 0, tm1, tm2);
     POSIX_UNLOCK();
 
+    PSX_POST_WRAP();
+
     return(ret);
 }
 
@@ -721,6 +795,8 @@ ssize_t DARSHAN_DECL(readv)(int fd, const struct iovec *iov, int iovcnt)
     int i;
     double tm1, tm2;
 
+    PSX_PRE_WRAP();
+
     MAP_OR_FAIL(readv);
 
     for(i=0; i<iovcnt; i++)
@@ -738,6 +814,8 @@ ssize_t DARSHAN_DECL(readv)(int fd, const struct iovec *iov, int iovcnt)
     POSIX_RECORD_READ(ret, fd, 0, 0, aligned_flag, 0, tm1, tm2);
     POSIX_UNLOCK();
 
+    PSX_POST_WRAP();
+
     return(ret);
 }
 
@@ -748,6 +826,8 @@ ssize_t DARSHAN_DECL(writev)(int fd, const struct iovec *iov, int iovcnt)
     int i;
     double tm1, tm2;
 
+    PSX_PRE_WRAP();
+
     MAP_OR_FAIL(writev);
 
     for(i=0; i<iovcnt; i++)
@@ -765,6 +845,8 @@ ssize_t DARSHAN_DECL(writev)(int fd, const struct iovec *iov, int iovcnt)
     POSIX_RECORD_WRITE(ret, fd, 0, 0, aligned_flag, 0, tm1, tm2);
     POSIX_UNLOCK();
 
+    PSX_POST_WRAP();
+
     return(ret);
 }
 
@@ -774,6 +856,8 @@ size_t DARSHAN_DECL(fread)(void *ptr, size_t size, size_t nmemb, FILE *stream)
     int aligned_flag = 0;
     double tm1, tm2;
 
+    PSX_PRE_WRAP();
+
     MAP_OR_FAIL(fread);
 
     if((unsigned long)ptr % darshan_mem_alignment == 0) aligned_flag = 1;
@@ -796,6 +880,8 @@ size_t DARSHAN_DECL(fread)(void *ptr, size_t size, size_t nmemb, FILE *stream)
     }
     POSIX_UNLOCK();
 
+    PSX_POST_WRAP();
+
     return(ret);
 }
 
@@ -805,6 +891,8 @@ size_t DARSHAN_DECL(fwrite)(const void *ptr, size_t size, size_t nmemb, FILE *st
     int aligned_flag = 0;
     double tm1, tm2;
 
+    PSX_PRE_WRAP();
+
     MAP_OR_FAIL(fwrite);
 
     if((unsigned long)ptr % darshan_mem_alignment == 0) aligned_flag = 1;
@@ -827,6 +915,8 @@ size_t DARSHAN_DECL(fwrite)(const void *ptr, size_t size, size_t nmemb, FILE *st
     }
     POSIX_UNLOCK();
 
+    PSX_POST_WRAP();
+
     return(ret);
 }
 
@@ -836,6 +926,8 @@ off_t DARSHAN_DECL(lseek)(int fd, off_t offset, int whence)
     struct posix_file_runtime* file;
     double tm1, tm2;
 
+    PSX_PRE_WRAP();
+
     MAP_OR_FAIL(lseek);
 
     tm1 = darshan_core_wtime();
@@ -858,6 +950,8 @@ off_t DARSHAN_DECL(lseek)(int fd, off_t offset, int whence)
         POSIX_UNLOCK();
     }
 
+    PSX_POST_WRAP();
+
     return(ret);
 }
 
@@ -867,6 +961,8 @@ off_t DARSHAN_DECL(lseek64)(int fd, off_t offset, int whence)
     struct posix_file_runtime* file;
     double tm1, tm2;
 
+    PSX_PRE_WRAP();
+
     MAP_OR_FAIL(lseek64);
 
     tm1 = darshan_core_wtime();
@@ -889,6 +985,8 @@ off_t DARSHAN_DECL(lseek64)(int fd, off_t offset, int whence)
         POSIX_UNLOCK();
     }
 
+    PSX_POST_WRAP();
+
     return(ret);
 }
 
@@ -898,6 +996,8 @@ int DARSHAN_DECL(fseek)(FILE *stream, long offset, int whence)
     struct posix_file_runtime* file;
     double tm1, tm2;
 
+    PSX_PRE_WRAP();
+
     MAP_OR_FAIL(fseek);
 
     tm1 = darshan_core_wtime();
@@ -920,6 +1020,8 @@ int DARSHAN_DECL(fseek)(FILE *stream, long offset, int whence)
         POSIX_UNLOCK();
     }
 
+    PSX_POST_WRAP();
+
     return(ret);
 }
 
@@ -928,6 +1030,8 @@ int DARSHAN_DECL(__xstat)(int vers, const char *path, struct stat *buf)
     int ret;
     double tm1, tm2;
 
+    PSX_PRE_WRAP();
+
     MAP_OR_FAIL(__xstat);
 
     tm1 = darshan_core_wtime();
@@ -942,6 +1046,8 @@ int DARSHAN_DECL(__xstat)(int vers, const char *path, struct stat *buf)
     POSIX_LOOKUP_RECORD_STAT(path, buf, tm1, tm2);
     POSIX_UNLOCK();
 
+    PSX_POST_WRAP();
+
     return(ret);
 }
 
@@ -950,6 +1056,8 @@ int DARSHAN_DECL(__xstat64)(int vers, const char *path, struct stat64 *buf)
     int ret;
     double tm1, tm2;
 
+    PSX_PRE_WRAP();
+
     MAP_OR_FAIL(__xstat64);
 
     tm1 = darshan_core_wtime();
@@ -964,6 +1072,8 @@ int DARSHAN_DECL(__xstat64)(int vers, const char *path, struct stat64 *buf)
     POSIX_LOOKUP_RECORD_STAT(path, buf, tm1, tm2);
     POSIX_UNLOCK();
 
+    PSX_POST_WRAP();
+
     return(ret);
 }
 
@@ -972,6 +1082,8 @@ int DARSHAN_DECL(__lxstat)(int vers, const char *path, struct stat *buf)
     int ret;
     double tm1, tm2;
 
+    PSX_PRE_WRAP();
+
     MAP_OR_FAIL(__lxstat);
 
     tm1 = darshan_core_wtime();
@@ -986,6 +1098,8 @@ int DARSHAN_DECL(__lxstat)(int vers, const char *path, struct stat *buf)
     POSIX_LOOKUP_RECORD_STAT(path, buf, tm1, tm2);
     POSIX_UNLOCK();
 
+    PSX_POST_WRAP();
+
     return(ret);
 }
 
@@ -994,6 +1108,8 @@ int DARSHAN_DECL(__lxstat64)(int vers, const char *path, struct stat64 *buf)
     int ret;
     double tm1, tm2;
 
+    PSX_PRE_WRAP();
+
     MAP_OR_FAIL(__lxstat64);
 
     tm1 = darshan_core_wtime();
@@ -1008,6 +1124,8 @@ int DARSHAN_DECL(__lxstat64)(int vers, const char *path, struct stat64 *buf)
     POSIX_LOOKUP_RECORD_STAT(path, buf, tm1, tm2);
     POSIX_UNLOCK();
 
+    PSX_POST_WRAP();
+
     return(ret);
 }
 
@@ -1017,6 +1135,8 @@ int DARSHAN_DECL(__fxstat)(int vers, int fd, struct stat *buf)
     struct posix_file_runtime* file;
     double tm1, tm2;
 
+    PSX_PRE_WRAP();
+
     MAP_OR_FAIL(__fxstat);
 
     tm1 = darshan_core_wtime();
@@ -1035,6 +1155,8 @@ int DARSHAN_DECL(__fxstat)(int vers, int fd, struct stat *buf)
     }
     POSIX_UNLOCK();
 
+    PSX_POST_WRAP();
+
     return(ret);
 }
 
@@ -1044,6 +1166,8 @@ int DARSHAN_DECL(__fxstat64)(int vers, int fd, struct stat64 *buf)
     struct posix_file_runtime* file;
     double tm1, tm2;
 
+    PSX_PRE_WRAP();
+
     MAP_OR_FAIL(__fxstat64);
 
     tm1 = darshan_core_wtime();
@@ -1062,6 +1186,8 @@ int DARSHAN_DECL(__fxstat64)(int vers, int fd, struct stat64 *buf)
     }
     POSIX_UNLOCK();
 
+    PSX_POST_WRAP();
+
     return(ret);
 }
 
@@ -1071,6 +1197,8 @@ void* DARSHAN_DECL(mmap)(void *addr, size_t length, int prot, int flags,
     void* ret;
     struct posix_file_runtime* file;
 
+    PSX_PRE_WRAP();
+
     MAP_OR_FAIL(mmap);
 
     ret = __real_mmap(addr, length, prot, flags, fd, offset);
@@ -1086,6 +1214,8 @@ void* DARSHAN_DECL(mmap)(void *addr, size_t length, int prot, int flags,
     }
     POSIX_UNLOCK();
 
+    PSX_POST_WRAP();
+
     return(ret);
 }
 
@@ -1095,6 +1225,8 @@ void* DARSHAN_DECL(mmap64)(void *addr, size_t length, int prot, int flags,
     void* ret;
     struct posix_file_runtime* file;
 
+    PSX_PRE_WRAP();
+
     MAP_OR_FAIL(mmap64);
 
     ret = __real_mmap64(addr, length, prot, flags, fd, offset);
@@ -1110,6 +1242,8 @@ void* DARSHAN_DECL(mmap64)(void *addr, size_t length, int prot, int flags,
     }
     POSIX_UNLOCK();
 
+    PSX_POST_WRAP();
+
     return(ret);
 }
 
@@ -1119,6 +1253,8 @@ int DARSHAN_DECL(fsync)(int fd)
     struct posix_file_runtime* file;
     double tm1, tm2;
 
+    PSX_PRE_WRAP();
+
     MAP_OR_FAIL(fsync);
 
     tm1 = darshan_core_wtime();
@@ -1140,6 +1276,8 @@ int DARSHAN_DECL(fsync)(int fd)
     }
     POSIX_UNLOCK();
 
+    PSX_POST_WRAP();
+
     return(ret);
 }
 
@@ -1149,6 +1287,8 @@ int DARSHAN_DECL(fdatasync)(int fd)
     struct posix_file_runtime* file;
     double tm1, tm2;
 
+    PSX_PRE_WRAP();
+
     MAP_OR_FAIL(fdatasync);
 
     tm1 = darshan_core_wtime();
@@ -1170,6 +1310,8 @@ int DARSHAN_DECL(fdatasync)(int fd)
     }
     POSIX_UNLOCK();
 
+    PSX_POST_WRAP();
+
     return(ret);
 }
 
@@ -1179,6 +1321,8 @@ int DARSHAN_DECL(close)(int fd)
     double tm1, tm2;
     int ret;
 
+    PSX_PRE_WRAP();
+
     MAP_OR_FAIL(close);
 
     tm1 = darshan_core_wtime();
@@ -1201,6 +1345,8 @@ int DARSHAN_DECL(close)(int fd)
     }
     POSIX_UNLOCK();    
 
+    PSX_POST_WRAP();
+
     return(ret);
 }
 
@@ -1211,6 +1357,8 @@ int DARSHAN_DECL(fclose)(FILE *fp)
     double tm1, tm2;
     int ret;
 
+    PSX_PRE_WRAP();
+
     MAP_OR_FAIL(fclose);
 
     tm1 = darshan_core_wtime();
@@ -1233,6 +1381,8 @@ int DARSHAN_DECL(fclose)(FILE *fp)
     }
     POSIX_UNLOCK();
 
+    PSX_POST_WRAP();
+
     return(ret);
 }
 
@@ -1240,6 +1390,8 @@ int DARSHAN_DECL(aio_read)(struct aiocb *aiocbp)
 {
     int ret;
 
+    PSX_PRE_WRAP();
+
     MAP_OR_FAIL(aio_read);
 
     ret = __real_aio_read(aiocbp);
@@ -1251,6 +1403,8 @@ int DARSHAN_DECL(aio_read)(struct aiocb *aiocbp)
         POSIX_UNLOCK();
     }
 
+    PSX_POST_WRAP();
+
     return(ret);
 }
 
@@ -1258,6 +1412,8 @@ int DARSHAN_DECL(aio_write)(struct aiocb *aiocbp)
 {
     int ret;
 
+    PSX_PRE_WRAP();
+
     MAP_OR_FAIL(aio_write);
 
     ret = __real_aio_write(aiocbp);
@@ -1269,6 +1425,8 @@ int DARSHAN_DECL(aio_write)(struct aiocb *aiocbp)
         POSIX_UNLOCK();
     }
 
+    PSX_POST_WRAP();
+
     return(ret);
 }
 
@@ -1276,6 +1434,8 @@ int DARSHAN_DECL(aio_read64)(struct aiocb64 *aiocbp)
 {
     int ret;
 
+    PSX_PRE_WRAP();
+
     MAP_OR_FAIL(aio_read64);
 
     ret = __real_aio_read64(aiocbp);
@@ -1287,6 +1447,8 @@ int DARSHAN_DECL(aio_read64)(struct aiocb64 *aiocbp)
         POSIX_UNLOCK();
     }
 
+    PSX_POST_WRAP();
+
     return(ret);
 }
 
@@ -1294,6 +1456,8 @@ int DARSHAN_DECL(aio_write64)(struct aiocb64 *aiocbp)
 {
     int ret;
 
+    PSX_PRE_WRAP();
+
     MAP_OR_FAIL(aio_write64);
 
     ret = __real_aio_write64(aiocbp);
@@ -1305,6 +1469,8 @@ int DARSHAN_DECL(aio_write64)(struct aiocb64 *aiocbp)
         POSIX_UNLOCK();
     }
 
+    PSX_POST_WRAP();
+
     return(ret);
 }
 
@@ -1315,6 +1481,8 @@ ssize_t DARSHAN_DECL(aio_return)(struct aiocb *aiocbp)
     struct posix_aio_tracker *tmp;
     int aligned_flag = 0;
 
+    PSX_PRE_WRAP();
+
     MAP_OR_FAIL(aio_return);
 
     ret = __real_aio_return(aiocbp);
@@ -1343,6 +1511,8 @@ ssize_t DARSHAN_DECL(aio_return)(struct aiocb *aiocbp)
     }
     POSIX_UNLOCK();
 
+    PSX_POST_WRAP();
+
     return(ret);
 }
 
@@ -1353,6 +1523,8 @@ ssize_t DARSHAN_DECL(aio_return64)(struct aiocb64 *aiocbp)
     struct posix_aio_tracker *tmp;
     int aligned_flag = 0;
 
+    PSX_PRE_WRAP();
+
     MAP_OR_FAIL(aio_return64);
 
     ret = __real_aio_return64(aiocbp);
@@ -1381,6 +1553,8 @@ ssize_t DARSHAN_DECL(aio_return64)(struct aiocb64 *aiocbp)
     }
     POSIX_UNLOCK();
 
+    PSX_POST_WRAP();
+
     return(ret);
 }
 
@@ -1390,6 +1564,8 @@ int DARSHAN_DECL(lio_listio)(int mode, struct aiocb *const aiocb_list[],
     int ret;
     int i;
 
+    PSX_PRE_WRAP();
+
     MAP_OR_FAIL(lio_listio);
 
     ret = __real_lio_listio(mode, aiocb_list, nitems, sevp);
@@ -1404,6 +1580,8 @@ int DARSHAN_DECL(lio_listio)(int mode, struct aiocb *const aiocb_list[],
         POSIX_UNLOCK();
     }
 
+    PSX_POST_WRAP();
+
     return(ret);
 }
 
@@ -1413,6 +1591,8 @@ int DARSHAN_DECL(lio_listio64)(int mode, struct aiocb64 *const aiocb_list[],
     int ret;
     int i;
 
+    PSX_PRE_WRAP();
+
     MAP_OR_FAIL(lio_listio64);
 
     ret = __real_lio_listio64(mode, aiocb_list, nitems, sevp);
@@ -1427,6 +1607,8 @@ int DARSHAN_DECL(lio_listio64)(int mode, struct aiocb64 *const aiocb_list[],
         POSIX_UNLOCK();
     }
 
+    PSX_POST_WRAP();
+
     return(ret);
 }
 
@@ -2054,6 +2236,8 @@ static void posix_begin_shutdown()
     instrumentation_disabled = 1;
     POSIX_UNLOCK();
 
+    fprintf(stderr, "POSIX:wrappers\t%f\n", psx_wrap_time);
+
     return;
 }
 


=====================================
darshan-util/Makefile.in
=====================================
--- a/darshan-util/Makefile.in
+++ b/darshan-util/Makefile.in
@@ -127,6 +127,19 @@ ifeq ($(DARSHAN_ENABLE_SHARED),1)
 	install -m 755 libdarshan-util.so $(libdir)
 endif
 	install -m 644 $(srcdir)/darshan-logutils.h $(includedir)
+	install -m 644 $(srcdir)/darshan-posix-logutils.h $(includedir)
+	install -m 644 $(srcdir)/darshan-mpiio-logutils.h $(includedir)
+	install -m 644 $(srcdir)/darshan-hdf5-logutils.h $(includedir)
+	install -m 644 $(srcdir)/darshan-pnetcdf-logutils.h $(includedir)
+	install -m 644 $(srcdir)/darshan-bgq-logutils.h $(includedir)
+	install -m 644 $(srcdir)/../darshan-posix-log-format.h $(includedir)
+	install -m 644 $(srcdir)/../darshan-mpiio-log-format.h $(includedir)
+	install -m 644 $(srcdir)/../darshan-hdf5-log-format.h $(includedir)
+	install -m 644 $(srcdir)/../darshan-pnetcdf-log-format.h $(includedir)
+	install -m 644 $(srcdir)/../darshan-bgq-log-format.h $(includedir)
+	install -d $(includedir)/uthash-1.9.2
+	install -d $(includedir)/uthash-1.9.2/src
+	install -m 644 uthash-1.9.2/src/uthash.h $(includedir)/uthash-1.9.2/src/
 	install -m 644 $(DARSHAN_LOG_FORMAT) $(includedir)
 	install -m 755 darshan-job-summary/bin/darshan-job-summary.pl $(bindir)
 	install -d $(libdir)/TeX



View it on GitLab: https://xgitlab.cels.anl.gov/darshan/darshan/commit/c3c5e59770b89b2d00aeb45a1dccbbf132a0514d
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mcs.anl.gov/pipermail/darshan-commits/attachments/20151013/82894f25/attachment-0001.html>


More information about the Darshan-commits mailing list