darshan-log-format.h 2.04 KB
Newer Older
1 2 3 4 5
/*
 *  (C) 2009 by Argonne National Laboratory.
 *      See COPYRIGHT in top-level directory.
 */

6 7 8 9 10 11
#ifndef __DARSHAN_LOG_FORMAT_H
#define __DARSHAN_LOG_FORMAT_H

#include <unistd.h>
#include <sys/types.h>
#include <stdint.h>
12
#include <inttypes.h>
13

14 15
#if !defined PRId64
#error failed to detect PRId64
16
#endif
17 18
#if !defined PRIu64
#error failed to detect PRIu64
Philip Carns's avatar
Philip Carns committed
19
#endif
20

21
/* update this on file format changes */
22
#define CP_VERSION "3.00"
23

24 25 26
/* magic number for validating output files and checking byte order */
#define CP_MAGIC_NR 6567223

27
/* size (in bytes) of job record */
Philip Carns's avatar
Philip Carns committed
28
#define CP_JOB_RECORD_SIZE 4096
29 30 31 32

/* max length of exe string within job record (not counting '\0') */
#define CP_EXE_LEN (CP_JOB_RECORD_SIZE - sizeof(struct darshan_job) - 1)

33 34
typedef uint64_t darshan_record_id;

35 36 37 38
/* unique identifiers to distinguish between available darshan modules */
/* NOTES: - valid ids range from [0...DARSHAN_MAX_MODS-1]
 *        - order of ids control module shutdown order (and consequently, order in log file)
 */
39
/* TODO: enforce maximum? */
40 41 42
#define DARSHAN_MAX_MODS 16
typedef enum
{
43
    DARSHAN_POSIX_MOD = 0,
44 45 46 47 48
    DARSHAN_MPIIO_MOD,
    DARSHAN_HDF5_MOD,
    DARSHAN_PNETCDF_MOD,
} darshan_module_id;

49 50 51 52 53 54 55 56
static char *darshan_module_names[] =
{
    "POSIX",
    "MPI-IO",
    "HDF5",
    "PNETCDF"
};

Shane Snyder's avatar
Shane Snyder committed
57 58 59
enum darshan_comp_type
{
    DARSHAN_GZ_COMP,
60
    DARSHAN_BZ2_COMP, /* TODO: no bz2 support util side, yet */
Shane Snyder's avatar
Shane Snyder committed
61 62
};

63
struct darshan_log_map
64
{
65 66
    uint64_t off;
    uint64_t len;
67 68
};

69
struct darshan_header
70
{
71 72 73 74 75
    char version_string[8];
    int64_t magic_nr;
    unsigned char comp_type;
    struct darshan_log_map rec_map;
    struct darshan_log_map mod_map[DARSHAN_MAX_MODS];
76 77
};

78
/* statistics for the job as a whole */
79
#define DARSHAN_JOB_METADATA_LEN 1024 /* including null terminator! */
80 81
struct darshan_job
{
82 83 84 85
    int64_t uid;
    int64_t start_time;
    int64_t end_time;
    int64_t nprocs;
86
    int64_t jobid;
87
    char metadata[DARSHAN_JOB_METADATA_LEN]; /* TODO: what is this? */
88 89
};

90 91 92 93 94 95
struct darshan_record
{
    char* name;
    darshan_record_id id;
};

96
#endif /* __DARSHAN_LOG_FORMAT_H */