Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
Shane Snyder
darshan
Commits
8659e6a3
Commit
8659e6a3
authored
Sep 18, 2015
by
Shane Snyder
Browse files
new implementation of darshan-logutils
parent
86d17440
Changes
10
Expand all
Hide whitespace changes
Inline
Side-by-side
darshan-util/darshan-analyzer.c
View file @
8659e6a3
...
...
@@ -35,18 +35,16 @@ int process_log(const char *fname, double *io_ratio, int *used_mpio, int *used_p
{
int
ret
;
darshan_fd
file
;
struct
darshan_header
header
;
struct
darshan_job
job
;
struct
darshan_mod_logutil_funcs
*
psx_mod
=
mod_logutils
[
DARSHAN_POSIX_MOD
];
struct
darshan_posix_file
*
psx_buf
,
*
psx_buf_p
;
int
psx_buf_sz
,
psx_buf_bytes_left
;
struct
darshan_posix_file
*
psx_rec
;
struct
darshan_posix_file
psx_rec
;
darshan_record_id
rec_id
;
int
f_count
;
double
total_io_time
;
double
total_job_time
;
assert
(
psx_mod
);
memset
(
&
psx_rec
,
0
,
sizeof
(
struct
darshan_posix_file
));
file
=
darshan_log_open
(
fname
);
if
(
file
==
NULL
)
...
...
@@ -55,14 +53,6 @@ int process_log(const char *fname, double *io_ratio, int *used_mpio, int *used_p
return
-
1
;
}
ret
=
darshan_log_getheader
(
file
,
&
header
);
if
(
ret
<
0
)
{
fprintf
(
stderr
,
"darshan_log_getheader() failed on file %s.
\n
"
,
fname
);
darshan_log_close
(
file
);
return
-
1
;
}
ret
=
darshan_log_getjob
(
file
,
&
job
);
if
(
ret
<
0
)
{
...
...
@@ -71,49 +61,36 @@ int process_log(const char *fname, double *io_ratio, int *used_mpio, int *used_p
return
-
1
;
}
psx_buf_sz
=
DARSHAN_DEF_COMP_BUF_SZ
;
psx_buf
=
malloc
(
psx_buf_sz
);
if
(
!
psx_buf
)
{
darshan_log_close
(
file
);
return
-
1
;
}
ret
=
darshan_log_getmod
(
file
,
DARSHAN_POSIX_MOD
,
(
void
*
)
psx_buf
,
&
psx_buf_sz
);
if
(
ret
<
0
)
{
fprintf
(
stderr
,
"darshan_log_getmod() failed on file %s.
\n
"
,
fname
);
darshan_log_close
(
file
);
return
-
1
;
}
f_count
=
0
;
total_io_time
=
0
.
0
;
psx_buf_bytes_left
=
psx_buf_sz
;
psx_buf_p
=
psx_buf
;
while
(
psx_buf_bytes_left
)
while
((
ret
=
psx_mod
->
log_get_record
(
file
,
&
psx_rec
,
&
rec_id
))
==
1
)
{
ret
=
psx_mod
->
log_get_record
((
void
**
)
&
psx_buf_p
,
&
psx_buf_bytes_left
,
(
void
**
)
&
psx_rec
,
&
rec_id
,
file
->
swap_flag
);
f_count
+=
1
;
if
(
psx_rec
->
rank
==
-
1
)
if
(
psx_rec
.
rank
==
-
1
)
*
used_shared
=
1
;
else
*
used_fpp
=
1
;
total_io_time
+=
(
psx_rec
->
fcounters
[
POSIX_F_READ_TIME
]
+
psx_rec
->
fcounters
[
POSIX_F_WRITE_TIME
]
+
psx_rec
->
fcounters
[
POSIX_F_META_TIME
]);
total_io_time
+=
(
psx_rec
.
fcounters
[
POSIX_F_READ_TIME
]
+
psx_rec
.
fcounters
[
POSIX_F_WRITE_TIME
]
+
psx_rec
.
fcounters
[
POSIX_F_META_TIME
]);
memset
(
&
psx_rec
,
0
,
sizeof
(
struct
darshan_posix_file
));
}
if
(
ret
<
0
)
{
fprintf
(
stderr
,
"Error: unable to read posix file record in log file %s.
\n
"
,
fname
);
darshan_log_close
(
file
);
return
-
1
;
}
if
(
header
.
mod_map
[
DARSHAN_MPIIO_MOD
].
len
>
0
)
if
(
file
->
mod_map
[
DARSHAN_MPIIO_MOD
].
len
>
0
)
*
used_mpio
+=
1
;
if
(
header
.
mod_map
[
DARSHAN_HDF5_MOD
].
len
>
0
)
if
(
file
->
mod_map
[
DARSHAN_HDF5_MOD
].
len
>
0
)
*
used_hdf5
+=
1
;
if
(
header
.
mod_map
[
DARSHAN_PNETCDF_MOD
].
len
>
0
)
if
(
file
->
mod_map
[
DARSHAN_PNETCDF_MOD
].
len
>
0
)
*
used_pnet
+=
1
;
total_job_time
=
(
double
)
job
.
end_time
-
(
double
)
job
.
start_time
;
...
...
@@ -131,7 +108,6 @@ int process_log(const char *fname, double *io_ratio, int *used_mpio, int *used_p
*
io_ratio
=
0
.
0
;
}
free
(
psx_buf
);
darshan_log_close
(
file
);
return
0
;
...
...
darshan-util/darshan-bgq-logutils.c
View file @
8659e6a3
...
...
@@ -30,48 +30,65 @@ char *bgq_f_counter_names[] = {
};
#undef X
static
int
darshan_log_get_bgq_file
(
void
**
psx_buf_p
,
int
*
bytes_left
,
void
**
file_rec
,
darshan_record_id
*
rec_id
,
int
byte_swap_flag
);
static
void
darshan_log_print_bgq_file
(
void
*
file_rec
,
static
int
darshan_log_get_bgq_rec
(
darshan_fd
fd
,
void
*
bgq_buf
,
darshan_record_id
*
rec_id
);
static
int
darshan_log_put_bgq_rec
(
darshan_fd
fd
,
void
*
bgq_buf
);
static
void
darshan_log_print_bgq_rec
(
void
*
file_rec
,
char
*
file_name
,
char
*
mnt_pt
,
char
*
fs_type
);
struct
darshan_mod_logutil_funcs
bgq_logutils
=
{
.
log_get_record
=
&
darshan_log_get_bgq_file
,
.
log_print_record
=
&
darshan_log_print_bgq_file
,
.
log_get_record
=
&
darshan_log_get_bgq_rec
,
.
log_put_record
=
&
darshan_log_put_bgq_rec
,
.
log_print_record
=
&
darshan_log_print_bgq_rec
,
};
static
int
darshan_log_get_bgq_
file
(
void
**
psx_buf_p
,
int
*
bytes_left
,
void
**
file_rec
,
darshan_record_id
*
rec_id
,
int
byte_swap_flag
)
static
int
darshan_log_get_bgq_
rec
(
darshan_fd
fd
,
void
*
bgq_buf
,
darshan_record_id
*
rec_id
)
{
struct
darshan_bgq_record
*
rec
;
int
i
;
struct
darshan_bgq_record
*
file
=
(
struct
darshan_bgq_record
*
)
(
*
psx_buf_p
);
int
ret
;
if
(
*
bytes_left
<
sizeof
(
struct
darshan_bgq_record
))
ret
=
darshan_log_getmod
(
fd
,
DARSHAN_BGQ_MOD
,
bgq_buf
,
sizeof
(
struct
darshan_bgq_record
));
if
(
ret
<
0
)
return
(
-
1
);
if
(
byte_swap_flag
)
else
if
(
ret
<
sizeof
(
struct
darshan_bgq_record
))
return
(
0
);
else
{
/* swap bytes if necessary */
DARSHAN_BSWAP64
(
&
file
->
f_id
);
DARSHAN_BSWAP64
(
&
file
->
rank
);
for
(
i
=
0
;
i
<
BGQ_NUM_INDICES
;
i
++
)
DARSHAN_BSWAP64
(
&
file
->
counters
[
i
]);
for
(
i
=
0
;
i
<
BGQ_F_NUM_INDICES
;
i
++
)
DARSHAN_BSWAP64
(
&
file
->
fcounters
[
i
]);
rec
=
(
struct
darshan_bgq_record
*
)
bgq_buf
;
if
(
fd
->
swap_flag
)
{
/* swap bytes if necessary */
DARSHAN_BSWAP64
(
&
rec
->
f_id
);
DARSHAN_BSWAP64
(
&
rec
->
rank
);
for
(
i
=
0
;
i
<
BGQ_NUM_INDICES
;
i
++
)
DARSHAN_BSWAP64
(
&
rec
->
counters
[
i
]);
for
(
i
=
0
;
i
<
BGQ_F_NUM_INDICES
;
i
++
)
DARSHAN_BSWAP64
(
&
rec
->
fcounters
[
i
]);
}
*
rec_id
=
rec
->
f_id
;
return
(
1
);
}
}
/* update/set output variables */
*
file_rec
=
(
void
*
)
file
;
*
rec_id
=
file
->
f_id
;
*
psx_buf_p
=
(
file
+
1
);
/* increment input buf by size of file record */
*
bytes_left
-=
sizeof
(
struct
darshan_bgq_record
);
static
int
darshan_log_put_bgq_rec
(
darshan_fd
fd
,
void
*
bgq_buf
)
{
struct
darshan_bgq_record
*
rec
=
(
struct
darshan_bgq_record
*
)
bgq_buf
;
int
ret
;
ret
=
darshan_log_putmod
(
fd
,
DARSHAN_BGQ_MOD
,
rec
,
sizeof
(
struct
darshan_bgq_record
));
if
(
ret
<
0
)
return
(
-
1
);
return
(
0
);
}
static
void
darshan_log_print_bgq_
file
(
void
*
file_rec
,
char
*
file_name
,
static
void
darshan_log_print_bgq_
rec
(
void
*
file_rec
,
char
*
file_name
,
char
*
mnt_pt
,
char
*
fs_type
)
{
int
i
;
...
...
darshan-util/darshan-convert.c
View file @
8659e6a3
...
...
@@ -19,6 +19,8 @@
#include
"darshan-logutils.h"
#define DEF_MOD_BUF_SIZE 1024
/* 1 KiB is enough for all current mod records ... */
extern
uint32_t
darshan_hashlittle
(
const
void
*
key
,
size_t
length
,
uint32_t
initval
);
int
usage
(
char
*
exename
)
...
...
@@ -221,7 +223,6 @@ int main(int argc, char **argv)
int
ret
;
char
*
infile_name
;
char
*
outfile_name
;
struct
darshan_header
header
;
struct
darshan_job
job
;
char
tmp_string
[
4096
]
=
{
0
};
darshan_fd
infile
;
...
...
@@ -232,8 +233,7 @@ int main(int argc, char **argv)
char
**
fs_types
;
struct
darshan_record_ref
*
rec_hash
=
NULL
;
struct
darshan_record_ref
*
ref
,
*
tmp
;
char
*
mod_buf
;
int
mod_buf_sz
;
char
mod_buf
[
DEF_MOD_BUF_SIZE
];
enum
darshan_comp_type
comp_type
;
int
bzip2
;
int
obfuscate
;
...
...
@@ -247,42 +247,23 @@ int main(int argc, char **argv)
infile
=
darshan_log_open
(
infile_name
);
if
(
!
infile
)
{
fprintf
(
stderr
,
"darshan_log_open() failed to open %s
\n
."
,
infile_name
);
return
(
-
1
);
}
comp_type
=
bzip2
?
comp_type
=
DARSHAN_BZIP2_COMP
:
DARSHAN_ZLIB_COMP
;
outfile
=
darshan_log_create
(
outfile_name
,
comp_type
);
if
(
!
outfile
)
{
fprintf
(
stderr
,
"darshan_log_create() failed to create %s
\n
."
,
outfile_name
);
darshan_log_close
(
infile
);
return
(
-
1
);
}
/* read header from input file */
ret
=
darshan_log_getheader
(
infile
,
&
header
);
if
(
ret
<
0
)
{
fprintf
(
stderr
,
"Error: unable to read header from input log file %s.
\n
"
,
infile_name
);
darshan_log_close
(
infile
);
darshan_log_close
(
outfile
);
return
(
-
1
);
}
/* NOTE: we do not write the header to the output file until the end, as
* the mapping data stored in this structure may change in the conversion
* process (particularly, if we are converting between libz/bz2 compression)
*/
/* read job info */
ret
=
darshan_log_getjob
(
infile
,
&
job
);
if
(
ret
<
0
)
{
fprintf
(
stderr
,
"Error: unable to read job information from log file.
\n
"
);
darshan_log_close
(
infile
);
darshan_log_close
(
outfile
);
unlink
(
outfile_name
);
return
(
-
1
);
}
...
...
@@ -293,7 +274,6 @@ int main(int argc, char **argv)
ret
=
darshan_log_putjob
(
outfile
,
&
job
);
if
(
ret
<
0
)
{
fprintf
(
stderr
,
"Error: unable to write job information to log file.
\n
"
);
darshan_log_close
(
infile
);
darshan_log_close
(
outfile
);
return
(
-
1
);
...
...
@@ -302,9 +282,9 @@ int main(int argc, char **argv)
ret
=
darshan_log_getexe
(
infile
,
tmp_string
);
if
(
ret
<
0
)
{
fprintf
(
stderr
,
"Error: unable to read trailing job information.
\n
"
);
darshan_log_close
(
infile
);
darshan_log_close
(
outfile
);
unlink
(
outfile_name
);
return
(
-
1
);
}
...
...
@@ -313,7 +293,6 @@ int main(int argc, char **argv)
ret
=
darshan_log_putexe
(
outfile
,
tmp_string
);
if
(
ret
<
0
)
{
fprintf
(
stderr
,
"Error: unable to write trailing job information.
\n
"
);
darshan_log_close
(
infile
);
darshan_log_close
(
outfile
);
return
(
-
1
);
...
...
@@ -322,16 +301,15 @@ int main(int argc, char **argv)
ret
=
darshan_log_getmounts
(
infile
,
&
mnt_pts
,
&
fs_types
,
&
mount_count
);
if
(
ret
<
0
)
{
fprintf
(
stderr
,
"Error: unable to read trailing job information.
\n
"
);
darshan_log_close
(
infile
);
darshan_log_close
(
outfile
);
unlink
(
outfile_name
);
return
(
-
1
);
}
ret
=
darshan_log_putmounts
(
outfile
,
mnt_pts
,
fs_types
,
mount_count
);
if
(
ret
<
0
)
{
fprintf
(
stderr
,
"Error: unable to write mount information.
\n
"
);
darshan_log_close
(
infile
);
darshan_log_close
(
outfile
);
return
(
-
1
);
...
...
@@ -340,9 +318,9 @@ int main(int argc, char **argv)
ret
=
darshan_log_gethash
(
infile
,
&
rec_hash
);
if
(
ret
<
0
)
{
fprintf
(
stderr
,
"Error: unable to read darshan record hash.
\n
"
);
darshan_log_close
(
infile
);
darshan_log_close
(
outfile
);
unlink
(
outfile_name
);
return
(
-
1
);
}
...
...
@@ -355,104 +333,56 @@ int main(int argc, char **argv)
ret
=
darshan_log_puthash
(
outfile
,
rec_hash
);
if
(
ret
<
0
)
{
fprintf
(
stderr
,
"Error: unable to write darshan record hash.
\n
"
);
darshan_log_close
(
infile
);
darshan_log_close
(
outfile
);
return
(
-
1
);
}
mod_buf
=
malloc
(
DARSHAN_DEF_COMP_BUF_SZ
);
if
(
!
mod_buf
)
return
(
-
1
);
/* loop over each module and convert it's data to the new format */
for
(
i
=
0
;
i
<
DARSHAN_MAX_MODS
;
i
++
)
{
int
mod_bytes_left
;
int
mod_bytes_left_save
;
void
*
mod_buf_p
;
void
*
rec_p
=
NULL
;
darshan_record_id
rec_id
;
memset
(
mod_buf
,
0
,
DARSHAN_DEF_COMP_BUF_SZ
);
mod_buf_sz
=
DARSHAN_DEF_COMP_BUF_SZ
;
/* check each module for any data */
ret
=
darshan_log_getmod
(
infile
,
i
,
mod_buf
,
&
mod_buf_sz
);
if
(
ret
<
0
)
{
fprintf
(
stderr
,
"Error: failed to get module %s data.
\n
"
,
darshan_module_names
[
i
]);
darshan_log_close
(
infile
);
darshan_log_close
(
outfile
);
return
(
-
1
);
}
else
if
(
ret
==
0
)
{
/* skip modules not present in log file */
if
(
infile
->
mod_map
[
i
].
len
==
0
)
continue
;
}
/* skip modules with no defined logutil handlers */
if
(
!
mod_logutils
[
i
])
else
if
(
!
mod_logutils
[
i
])
{
fprintf
(
stderr
,
"Warning: no log utility handlers defined "
"for module %s, SKIPPING
\n
"
,
darshan_module_names
[
i
]);
"for module %s, SKIPPING
.
\n
"
,
darshan_module_names
[
i
]);
continue
;
}
/* we have module data to convert */
/* NOTE: it is necessary to iterate through each module's
* records to correct any endianness issues before writing
* this data back to file
*/
mod_bytes_left
=
mod_buf_sz
;
mod_buf_p
=
mod_buf
;
while
(
mod_bytes_left
>
0
)
{
mod_bytes_left_save
=
mod_bytes_left
;
ret
=
mod_logutils
[
i
]
->
log_get_record
(
&
mod_buf_p
,
&
mod_bytes_left
,
&
rec_p
,
&
rec_id
,
infile
->
swap_flag
);
if
(
ret
<
0
)
{
fprintf
(
stderr
,
"Error: failed to parse module %s data record
\n
"
,
darshan_module_names
[
i
]);
darshan_log_close
(
infile
);
darshan_log_close
(
outfile
);
return
(
-
1
);
}
memset
(
mod_buf
,
0
,
DEF_MOD_BUF_SIZE
);
if
(
hash
==
rec_id
)
{
mod_buf_p
=
rec_p
;
mod_buf_sz
=
mod_bytes_left_save
-
mod_bytes_left
;
break
;
}
else
if
(
mod_bytes_left
==
0
)
{
mod_buf_p
=
mod_buf
;
}
}
ret
=
darshan_log_putmod
(
outfile
,
i
,
mod_buf_p
,
mod_buf_sz
);
if
(
ret
<
0
)
ret
=
mod_logutils
[
i
]
->
log_get_record
(
infile
,
mod_buf
,
&
rec_id
);
if
(
ret
!=
1
)
{
fprintf
(
stderr
,
"Error: failed to p
ut module %s data
.
\n
"
,
fprintf
(
stderr
,
"Error: failed to p
arse the first %s module record
.
\n
"
,
darshan_module_names
[
i
]);
darshan_log_close
(
infile
);
darshan_log_close
(
outfile
);
unlink
(
outfile_name
);
return
(
-
1
);
}
}
free
(
mod_buf
);
/* write header to output file */
ret
=
darshan_log_putheader
(
outfile
);
if
(
ret
<
0
)
{
fprintf
(
stderr
,
"Error: unable to write header to output log file %s.
\n
"
,
outfile_name
);
darshan_log_close
(
infile
);
darshan_log_close
(
outfile
);
return
(
-
1
);
/* loop over each of the module's records and convert */
do
{
if
(
!
hash
||
hash
==
rec_id
)
{
ret
=
mod_logutils
[
i
]
->
log_put_record
(
outfile
,
mod_buf
);
if
(
ret
<
0
)
{
darshan_log_close
(
infile
);
darshan_log_close
(
outfile
);
return
(
-
1
);
}
memset
(
mod_buf
,
0
,
DEF_MOD_BUF_SIZE
);
}
}
while
((
ret
=
mod_logutils
[
i
]
->
log_get_record
(
infile
,
mod_buf
,
&
rec_id
))
==
1
);
}
darshan_log_close
(
infile
);
...
...
darshan-util/darshan-hdf5-logutils.c
View file @
8659e6a3
...
...
@@ -30,43 +30,60 @@ char *hdf5_f_counter_names[] = {
};
#undef X
static
int
darshan_log_get_hdf5_file
(
void
**
hdf5_buf_p
,
int
*
bytes_left
,
void
**
file_rec
,
darshan_record_id
*
rec_id
,
int
byte_swap_flag
);
static
int
darshan_log_get_hdf5_file
(
darshan_fd
fd
,
void
*
hdf5_buf
,
darshan_record_id
*
rec_id
);
static
int
darshan_log_put_hdf5_file
(
darshan_fd
fd
,
void
*
hdf5_buf
);
static
void
darshan_log_print_hdf5_file
(
void
*
file_rec
,
char
*
file_name
,
char
*
mnt_pt
,
char
*
fs_type
);
struct
darshan_mod_logutil_funcs
hdf5_logutils
=
{
.
log_get_record
=
&
darshan_log_get_hdf5_file
,
.
log_put_record
=
&
darshan_log_put_hdf5_file
,
.
log_print_record
=
&
darshan_log_print_hdf5_file
,
};
static
int
darshan_log_get_hdf5_file
(
void
*
*
hdf5_buf
_p
,
int
*
bytes_left
,
void
**
file_rec
,
darshan_record_id
*
rec_id
,
int
byte_swap_flag
)
static
int
darshan_log_get_hdf5_file
(
darshan_fd
fd
,
void
*
hdf5_buf
,
darshan_record_id
*
rec_id
)
{
struct
darshan_hdf5_file
*
file
;
int
i
;
struct
darshan_hdf5_file
*
file
=
(
struct
darshan_hdf5_file
*
)
(
*
hdf5_buf_p
);
int
ret
;
if
(
*
bytes_left
<
sizeof
(
struct
darshan_hdf5_file
))
ret
=
darshan_log_getmod
(
fd
,
DARSHAN_HDF5_MOD
,
hdf5_buf
,
sizeof
(
struct
darshan_hdf5_file
));
if
(
ret
<
0
)
return
(
-
1
);
if
(
byte_swap_flag
)
else
if
(
ret
<
sizeof
(
struct
darshan_hdf5_file
))
return
(
0
);
else
{
/* swap bytes if necessary */
DARSHAN_BSWAP64
(
&
file
->
f_id
);
DARSHAN_BSWAP64
(
&
file
->
rank
);
for
(
i
=
0
;
i
<
HDF5_NUM_INDICES
;
i
++
)
DARSHAN_BSWAP64
(
&
file
->
counters
[
i
]);
for
(
i
=
0
;
i
<
HDF5_F_NUM_INDICES
;
i
++
)
DARSHAN_BSWAP64
(
&
file
->
fcounters
[
i
]);
file
=
(
struct
darshan_hdf5_file
*
)
hdf5_buf
;
if
(
fd
->
swap_flag
)
{
/* swap bytes if necessary */
DARSHAN_BSWAP64
(
&
file
->
f_id
);
DARSHAN_BSWAP64
(
&
file
->
rank
);
for
(
i
=
0
;
i
<
HDF5_NUM_INDICES
;
i
++
)
DARSHAN_BSWAP64
(
&
file
->
counters
[
i
]);
for
(
i
=
0
;
i
<
HDF5_F_NUM_INDICES
;
i
++
)
DARSHAN_BSWAP64
(
&
file
->
fcounters
[
i
]);
}
*
rec_id
=
file
->
f_id
;
return
(
1
);
}
}
/* update/set output variables */
*
file_rec
=
(
void
*
)
file
;
*
rec_id
=
file
->
f_id
;
*
hdf5_buf_p
=
(
file
+
1
);
/* increment input buf by size of file record */
*
bytes_left
-=
sizeof
(
struct
darshan_hdf5_file
);
static
int
darshan_log_put_hdf5_file
(
darshan_fd
fd
,
void
*
hdf5_buf
)
{
struct
darshan_hdf5_file
*
file
=
(
struct
darshan_hdf5_file
*
)
hdf5_buf
;
int
ret
;
ret
=
darshan_log_putmod
(
fd
,
DARSHAN_HDF5_MOD
,
file
,
sizeof
(
struct
darshan_hdf5_file
));
if
(
ret
<
0
)
return
(
-
1
);
return
(
0
);
}
...
...
darshan-util/darshan-logutils.c
View file @
8659e6a3
This diff is collapsed.
Click to expand it.
darshan-util/darshan-logutils.h
View file @
8659e6a3
...
...
@@ -16,9 +16,6 @@
#include
"darshan-log-format.h"
/* default to a buffer size of 4 MiB for compression/decompression */
#define DARSHAN_DEF_COMP_BUF_SZ (4*1024*1024)
/* TODO: can we refactor this def out of header? modules currently poke at swap_flag
* directly, but other than that there's no reason for another module to know this
* definition.
...
...
@@ -26,14 +23,24 @@
struct
darshan_fd_s
{
int
fildes
;
int
o_flags
;
int64_t
pos
;
enum
darshan_comp_type
comp_type
;
char
logfile_path
[
PATH_MAX
];
char
version
[
8
];
int
swap_flag
;
char
*
exe_mnt_data
;
struct
darshan_log_map
job_map
;
struct
darshan_log_map
rec_map
;
struct
darshan_log_map
mod_map
[
DARSHAN_MAX_MODS
];
int
err
;
/* XXX */
void
*
dz_strm
;
int
dz_size
;
unsigned
char
*
dz_buf
;
int
dz_eor
;
int
dz_prev_reg_id
;
};
typedef
struct
darshan_fd_s
*
darshan_fd
;
...
...
@@ -46,11 +53,13 @@ struct darshan_record_ref
struct
darshan_mod_logutil_funcs
{
int
(
*
log_get_record
)(
void
**
mod_buf_p
,
int
*
mod_bytes_left
,
void
**
file_rec
,
darshan_record_id
*
rec_id
,
int
byte_swap_flag
darshan_fd
fd
,
void
*
buf
,
darshan_record_id
*
rec_id
);
int
(
*
log_put_record
)(
darshan_fd
fd
,
void
*
buf
);
void
(
*
log_print_record
)(
void
*
file_rec
,
...
...
@@ -70,8 +79,6 @@ extern struct darshan_mod_logutil_funcs *mod_logutils[DARSHAN_MAX_MODS];
darshan_fd
darshan_log_open
(
const
char
*
name
);
darshan_fd
darshan_log_create
(
const
char
*
name
,
enum
darshan_comp_type
comp_type
);
int
darshan_log_getheader
(
darshan_fd
fd
,
struct
darshan_header
*
header
);
int
darshan_log_putheader
(
darshan_fd
fd
);
int
darshan_log_getjob
(
darshan_fd
fd
,
struct
darshan_job
*
job
);
int
darshan_log_putjob
(
darshan_fd
fd
,
struct
darshan_job
*
job
);
int
darshan_log_getexe
(
darshan_fd
fd
,
char
*
buf
);
...
...
@@ -83,7 +90,7 @@ int darshan_log_putmounts(darshan_fd fd, char** mnt_pts,
int
darshan_log_gethash
(
darshan_fd
fd
,
struct
darshan_record_ref
**
hash
);
int
darshan_log_puthash
(
darshan_fd
fd
,
struct
darshan_record_ref
*
hash
);
int
darshan_log_getmod
(
darshan_fd
fd
,
darshan_module_id
mod_id
,
void
*
mod_
buf
,
int
*
mod_buf_sz
);
void
*
buf
,
int
len
);
int
darshan_log_putmod
(
darshan_fd
fd
,
darshan_module_id
mod_id
,
void
*
mod_buf
,
int
mod_buf_sz
);
void
darshan_log_close
(
darshan_fd
file
);
...
...
darshan-util/darshan-mpiio-logutils.c
View file @
8659e6a3
...
...
@@ -30,43 +30,60 @@ char *mpiio_f_counter_names[] = {
};
#undef X