@@ -108,6 +108,7 @@ static struct dxt_file_record_ref *dxt_posix_track_new_file_record(
108108 darshan_record_id rec_id );
109109static struct dxt_file_record_ref * dxt_mpiio_track_new_file_record (
110110 darshan_record_id rec_id );
111+ void annotate_trace_segment (char * extra_info_str );
111112
112113/* DXT output/cleanup routines for darshan-core */
113114static void dxt_posix_output (
@@ -227,7 +228,6 @@ void dxt_posix_write(darshan_record_id rec_id, int64_t offset,
227228{
228229 struct dxt_file_record_ref * rec_ref = NULL ;
229230 struct dxt_file_record * file_rec ;
230- char * s ;
231231
232232 DXT_LOCK ();
233233
@@ -263,13 +263,7 @@ void dxt_posix_write(darshan_record_id rec_id, int64_t offset,
263263 rec_ref -> write_traces [file_rec -> write_count ].length = length ;
264264 rec_ref -> write_traces [file_rec -> write_count ].start_time = start_time ;
265265 rec_ref -> write_traces [file_rec -> write_count ].end_time = end_time ;
266- s = getenv ("DARSHAN_DXT_EXTRA_INFO" );
267- if (s != NULL ) {
268- strncpy (rec_ref -> write_traces [file_rec -> write_count ].extra_info , s ,
269- EXTRA_INFO_LEN - 1 );
270- } else {
271- rec_ref -> write_traces [file_rec -> write_count ].extra_info [0 ] = '\0' ;
272- }
266+ annotate_trace_segment (rec_ref -> write_traces [file_rec -> write_count ].extra_info );
273267 file_rec -> write_count += 1 ;
274268
275269 DXT_UNLOCK ();
@@ -280,7 +274,6 @@ void dxt_posix_read(darshan_record_id rec_id, int64_t offset,
280274{
281275 struct dxt_file_record_ref * rec_ref = NULL ;
282276 struct dxt_file_record * file_rec ;
283- char * s ;
284277
285278 DXT_LOCK ();
286279
@@ -316,14 +309,7 @@ void dxt_posix_read(darshan_record_id rec_id, int64_t offset,
316309 rec_ref -> read_traces [file_rec -> read_count ].length = length ;
317310 rec_ref -> read_traces [file_rec -> read_count ].start_time = start_time ;
318311 rec_ref -> read_traces [file_rec -> read_count ].end_time = end_time ;
319- s = getenv ("DARSHAN_DXT_EXTRA_INFO" );
320- if (s != NULL ) {
321- strncpy (rec_ref -> read_traces [file_rec -> read_count ].extra_info , s ,
322- EXTRA_INFO_LEN - 1 );
323- } else {
324- rec_ref -> read_traces [file_rec -> read_count ].extra_info [0 ] = '\0' ;
325- }
326-
312+ annotate_trace_segment (rec_ref -> read_traces [file_rec -> read_count ].extra_info );
327313 file_rec -> read_count += 1 ;
328314
329315 DXT_UNLOCK ();
@@ -334,7 +320,6 @@ void dxt_mpiio_write(darshan_record_id rec_id, int64_t offset,
334320{
335321 struct dxt_file_record_ref * rec_ref = NULL ;
336322 struct dxt_file_record * file_rec ;
337- char * s ;
338323
339324 DXT_LOCK ();
340325
@@ -370,13 +355,7 @@ void dxt_mpiio_write(darshan_record_id rec_id, int64_t offset,
370355 rec_ref -> write_traces [file_rec -> write_count ].offset = offset ;
371356 rec_ref -> write_traces [file_rec -> write_count ].start_time = start_time ;
372357 rec_ref -> write_traces [file_rec -> write_count ].end_time = end_time ;
373- s = getenv ("DARSHAN_DXT_EXTRA_INFO" );
374- if (s != NULL ) {
375- strncpy (rec_ref -> write_traces [file_rec -> write_count ].extra_info , s ,
376- EXTRA_INFO_LEN - 1 );
377- } else {
378- rec_ref -> write_traces [file_rec -> write_count ].extra_info [0 ] = '\0' ;
379- }
358+ annotate_trace_segment (rec_ref -> write_traces [file_rec -> write_count ].extra_info );
380359 file_rec -> write_count += 1 ;
381360
382361 DXT_UNLOCK ();
@@ -387,7 +366,6 @@ void dxt_mpiio_read(darshan_record_id rec_id, int64_t offset,
387366{
388367 struct dxt_file_record_ref * rec_ref = NULL ;
389368 struct dxt_file_record * file_rec ;
390- char * s ;
391369
392370 DXT_LOCK ();
393371
@@ -423,13 +401,7 @@ void dxt_mpiio_read(darshan_record_id rec_id, int64_t offset,
423401 rec_ref -> read_traces [file_rec -> read_count ].offset = offset ;
424402 rec_ref -> read_traces [file_rec -> read_count ].start_time = start_time ;
425403 rec_ref -> read_traces [file_rec -> read_count ].end_time = end_time ;
426- s = getenv ("DARSHAN_DXT_EXTRA_INFO" );
427- if (s != NULL ) {
428- strncpy (rec_ref -> read_traces [file_rec -> read_count ].extra_info , s ,
429- EXTRA_INFO_LEN - 1 );
430- } else {
431- rec_ref -> read_traces [file_rec -> read_count ].extra_info [0 ] = '\0' ;
432- }
404+ annotate_trace_segment (rec_ref -> read_traces [file_rec -> read_count ].extra_info );
433405 file_rec -> read_count += 1 ;
434406
435407 DXT_UNLOCK ();
@@ -793,6 +765,23 @@ static struct dxt_file_record_ref *dxt_mpiio_track_new_file_record(
793765 return (rec_ref );
794766}
795767
768+ void annotate_trace_segment (char * extra_info_str )
769+ {
770+ char * extra_info_env = getenv ("DARSHAN_DXT_EXTRA_INFO" );
771+ if (extra_info_env != NULL ) {
772+ strncpy (extra_info_str , extra_info_env , EXTRA_INFO_LEN - 1 );
773+ } else {
774+ extra_info_str [0 ] = '\0' ;
775+ }
776+ unsigned long pthread_id = (unsigned long )pthread_self ();
777+ if (strlen (extra_info_str ))
778+ strcat (extra_info_str , " " );
779+ snprintf (extra_info_str + strlen (extra_info_str ), EXTRA_INFO_LEN - 1 - strlen (extra_info_str ),
780+ "pthread_id=%lu" , pthread_id );
781+
782+ return ;
783+ }
784+
796785static void dxt_free_record_data (void * rec_ref_p , void * user_ptr )
797786{
798787 struct dxt_file_record_ref * dxt_rec_ref = (struct dxt_file_record_ref * )rec_ref_p ;
0 commit comments