/**
* VTF3 - Vampir Trace Format handling 3.
*
* Copyright (c) 1999-2004 TU Dresden
* Center for High Performance Computing (ZHR)
*
* @name vtf3.h
*
* @version $Revision: 1.2 $
* $Date: 2005/10/22 00:57:03 $
* $Author: sameer $
*
* @author Stephan Seidl (ZHR)
*/
#ifndef VTF3_H
#define VTF3_H
/* Application examples. */
#if (0) /* Begin of application examples. */
/*
1. Write a trace file.
This is the typical job a trace library has to do.
*/
#include
#include "vtf3.h"
int main (int argc, char **argv)
{
void *fcb;
int writeunmergedrecord;
/* VTF3 needs to be initialized with respect to internal, statically
allocated tables. To do so, one has to invoke VTF3_InitTables()
as the first call to the VTF3 API. VTF3_InitTables() can be executed
multiple times, but, of course, only its first execution does some
initialization. Pay attention, the first execution of
VTF3_InitTables() is not thread-safe. VTF3_InitTables() does not
allocate any memory, it only sets up internal tables which are
used by all the other interfaces in a read-only manner. */
(void) VTF3_InitTables ();
/* Write standard binary format,
silently creating an Defunmerged record on top of the file.
Pay attention, do not make working more than one thread on any
fcb-controlled device. */
fcb = VTF3_OpenFileOutput ("mytracefile",
VTF3_FILEFORMAT_STD_BINARY,
writeunmergedrecord = 1);
if (fcb == 0) {
(void) printf ("Couldn't open %s\n", "mytracefile");
return (127);
}
/* Write the records now, one after another. */
(void) VTF3_WriteDefversion (fcb, VTF3_GetVersionNumber ());
(void) VTF3_WriteDefcreator (fcb, "me");
/* ... */
/* Close the output device. */
(void) VTF3_Close (fcb);
return (0);
}
/*
2. Read a trace file of any known format, translate it into the
standard ASCII format and write it onto a file.
This job can also be done invoking the function VTF3_CopyFile().
*/
#include
#include
#include
#include "vtf3.h"
int main (int argc, char **argv)
{
void *fcbout, **firsthandlerargs, *fcbin;
int writeunmergedrecord, nrectypes, i, substitudeupfrom;
VTF3_handler_t *copyhandlers;
size_t bytesread;
/* Initialize VTF3. */
(void) VTF3_InitTables ();
/* Open for standard ASCII output format. */
fcbout = VTF3_OpenFileOutput ("asciifile",
VTF3_FILEFORMAT_STD_ASCII,
writeunmergedrecord = 0);
if (fcbout == 0) {
(void) printf ("Couldn't open %s\n", "asciifile");
return (127);
}
/* How many different record types do exist ? */
nrectypes = VTF3_GetRecTypeArrayDim ();
/* Allocate two auxiliary arrays for the record
handler entry point pointers and some data. */
copyhandlers = (VTF3_handler_t *) malloc ((size_t) nrectypes *
sizeof (VTF3_handler_t));
firsthandlerargs = (void **) malloc ((size_t) nrectypes *
sizeof (void *));
if (copyhandlers == 0 || firsthandlerargs == 0) {
(void) printf ("No more memory\n");
return (127);
}
/* Store the predefined copy handler entry point pointers
onto the first one of these arrays. */
(void) VTF3_GetCopyHandlerArray (copyhandlers);
/* In particular, the predefined copy handlers want to see the
control block of an opened output device as the first argument.
Provide this information. */
for (i = 0; i < nrectypes; i++)
firsthandlerargs[i] = fcbout;
/* Open the input device, correctly installing the copy handlers. */
fcbin = VTF3_OpenFileInput ("anyfile", copyhandlers, firsthandlerargs,
substitudeupfrom = 0);
if (fcbin == 0) {
(void) printf ("Couldn't open %s\n", "anyfile");
return (127);
}
/* Free the auxiliary arrays. */
(void) free (firsthandlerargs);
(void) free (copyhandlers);
/* Now push the operation to process the whole input file contents.
The installed copy handlers work on the output device. */
bytesread = VTF3_ReadFileInput (fcbin);
(void) printf ("%d bytes read\n", (int) bytesread);
/* Close all devices. */
(void) VTF3_Close (fcbin);
(void) VTF3_Close (fcbout);
return (0);
}
/*
3. This is a more complicated example, outlining some more features.
Read a trace file of any known format in portions of 50000 bytes,
approximately, and translate this file into the standard binary format.
Any found Defunmerged records have to be ignored.
Furthermore, in all Sendmsg records, PE 12 should be replaced by PE 14.
Additionally, the first Sendmsg record with the global maximum value for
`msglength' has to be printed onto `stdout', in ASCII format, of course.
Any found Srcinfo_obsol records should abort the execution.
Finally, if any unrecognizable record is found in the input file, this
record has to be processed by the standard Unrecognizable record handler,
which translates it into an error-flagging comment record.
Moreover, if the input file is of the standard ASCII format, each
unrecognizable record has to be passed to an `alien' ASCII record parser.
*/
#include
#include
#include
#include
#include "vtf3.h"
/* Define a communication control block type for later use.
It will be passed to some user installed record handlers. */
typedef struct {
void *fcboutfile;
void *fcboutmemory;
void *fcbin;
int maxmsglength;
char *sendmsgrecord;
} ccb_t;
/* Two true user record handlers have to be installed here,
one for the Sendmsg records and one for the Unrecognizable
records. Declare their prototypes.
Let the compiler perform strict type checking. */
VTF3_DCL_SENDMSG (static, MySendmsgHandler );
VTF3_DCL_UNRECOGNIZABLE (static, MyUnrecognizableHandler);
/* Declare the extern `alien' ASCII record parser. */
extern int MyAlienParser (void *anydata, int numchars,
const char *record);
/***********************************************************************/
/* Now define the first user handler for the Sendmsg records.
Basically, all record handlers have to give back a
non-negative integer, otherwise, the processing will be
aborted after return. */
static int MySendmsgHandler (void *ccbvoid, double time,
unsigned int sender, unsigned int receiver,
int communicator, int msgtype,
int msglength, int scltoken)
{
ccb_t *ccb;
int writtenbytes;
VTF3_rec_t *record;
/* Prevent excessive casting. */
ccb = (ccb_t *) ccbvoid;
/* Check for `cpuid' translation.
Keep in mind, `sender' and `receiver' are located in the
stack area. Therefore, they can be modified without any
problem. In general, it is not allowed to destroy any data
coming in here. */
if (sender == 12)
sender = 14;
if (receiver == 12)
receiver = 14;
/* Invoke the predefined copy handler to put the modified record
onto the binary output stream. Remember, all the predefined
copy handlers want to see the control block of an opened
output device. */
writtenbytes = VTF3_WriteSendmsg (ccb->fcboutfile, time, sender,
receiver, communicator, msgtype,
msglength, scltoken);
/* Now check the message lengths. */
if (ccb->sendmsgrecord != 0 && msglength <= ccb->maxmsglength)
/* There is stored any Sendmsg record with a larger or equal
`msglength' value than this record has.
We are ready to go out from here. */
return (writtenbytes);
/* O.k., we have to store this Sendmsg record in ASCII format.
VTF3_ComposeSendmsg() is used as the record assembler.
VTF3_ComposeSendmsg() also needs an opened output device,
just for the buffers. But, at least because of the different
formats, this output device cannot be the same as for
VTF3_WriteSendmsg().
Hence, another output device has to be used. */
record = VTF3_ComposeSendmsg (ccb->fcboutmemory, time, sender,
receiver, communicator, msgtype,
msglength, scltoken);
/* Really store now.
Pay attention, the memory of data, coming in here from VTF3,
is recycled after return. Therefore, one has to save all the
things which should survive. */
ccb->maxmsglength = msglength;
if (ccb->sendmsgrecord != 0)
(void) free (ccb->sendmsgrecord);
/* Pay attention, because of the file format
which will be specified later, `record->record' is
a '\0'-terminated printable ASCII string. */
ccb->sendmsgrecord = (char *) malloc ((strlen (record->record) + 1) *
sizeof (char));
if (ccb->sendmsgrecord == 0) {
(void) printf ("No more memory\n");
(void) exit (127);
}
(void) strcpy (ccb->sendmsgrecord, record->record);
/* Ready to leave this function. */
return (writtenbytes);
}
/***********************************************************************/
/* Now define the second user handler
for all Unrecognizable records. */
static int MyUnrecognizableHandler (void *ccbvoid, double lastvalidtime,
int numberofunrecognizablechars,
int typeofunrecognizablerecord,
const char *unrecognizablerecord)
{
ccb_t *ccb;
int writtenbytes, rc;
/* Prevent excessive casting. */
ccb = (ccb_t *) ccbvoid;
/* Firstly, invoke the predefined copy handler which puts an
appropriate error-flagging comment record onto the binary
output stream. Remember, all the predefined copy handlers
want to see the control block of an opened output device. */
writtenbytes = VTF3_WriteUnrecognizable (ccb->fcboutfile, lastvalidtime,
numberofunrecognizablechars,
typeofunrecognizablerecord,
unrecognizablerecord);
/* Pass the Unrecognizable record to the `alien' ASCII record
parser, if the input file is of the Standard ASCII Format. */
if (VTF3_QueryFormat (ccb->fcbin) == VTF3_FILEFORMAT_STD_ASCII) {
/* Pay attention, `unrecognizablerecord'
is not '\0'-terminated. */
rc = MyAlienParser ((void *) 0, numberofunrecognizablechars,
unrecognizablerecord);
if (rc < 0)
/* This would abort the trace file processing. */
writtenbytes = rc;
}
/* Ready to leave this function. */
return (writtenbytes);
}
/***********************************************************************/
/* Now define the main program. */
int main (int argc, char **argv)
{
ccb_t ccb;
int writeunmergedrecord, nrectypes, *recordtypes, i, substitudeupfrom;
VTF3_handler_t *handlers;
void **firsthandlerargs;
size_t bytesread, bytestoberead;
/* Initialize VTF3. */
(void) VTF3_InitTables ();
/* Open a binary output device. */
ccb.fcboutfile = VTF3_OpenFileOutput ("binfile",
VTF3_FILEFORMAT_STD_BINARY,
writeunmergedrecord = 0);
if (ccb.fcboutfile == 0) {
(void) printf ("Couldn't open %s\n", "binfile");
return (127);
}
/* Open an ASCII in-core output device. */
ccb.fcboutmemory = VTF3_OpenMemoryOutput (VTF3_FILEFORMAT_STD_ASCII);
/* Continue the communication control block initialization. */
ccb.maxmsglength = 0;
ccb.sendmsgrecord = 0;
/* Again, how many different record types do exist ? */
nrectypes = VTF3_GetRecTypeArrayDim ();
/* Allocate three auxiliary arrays, one for record type magic
numbers, one for the record handler function pointers
and one for the first arguments to the record handler
functions. */
recordtypes = (int *) malloc ((size_t) nrectypes * sizeof (int));
handlers = (VTF3_handler_t *) malloc ((size_t) nrectypes *
sizeof (VTF3_handler_t));
firsthandlerargs = (void **) malloc ((size_t) nrectypes *
sizeof (void *));
if (recordtypes == 0 || handlers == 0 || firsthandlerargs == 0) {
(void) printf ("No more memory\n");
return (127);
}
/* Store the record type magic numbers onto the appropriate
array. Pay attention, the caller does not know their ordering
scheme. */
(void) VTF3_GetRecTypeArray (recordtypes);
/* Store the predefined copy handler function pointers onto my
array. */
(void) VTF3_GetCopyHandlerArray (handlers);
/* What follows, this is the final handler table setup. */
for (i = 0; i < nrectypes; i++) {
if (recordtypes[i] == VTF3_RECTYPE_DEFUNMERGED) {
/* Defunmerged records have to be suppressed. Install 0 as
the handler. Resetting `firsthandlerargs[i]' makes Purify
and Valgrind happy. */
handlers[i] = 0;
firsthandlerargs[i] = 0;
continue;
}
if (recordtypes[i] == VTF3_RECTYPE_SENDMSG) {
/* Replace the predefined copy handler by our own one,
do not forget to redirect the first argument, too. */
handlers[i] = (VTF3_handler_t) MySendmsgHandler;
firsthandlerargs[i] = &ccb;
continue;
}
if (recordtypes[i] == VTF3_RECTYPE_SRCINFO_OBSOL) {
/* To check whether anybody has created a trace file
containing Srcinfo_obsol records in the past, install
the builtin debug handler. This handler will never be
invoked, it only represents a valid machine address which
can internally be compared to. Resetting
`firsthandlerargs[i]' makes Purify and Valgrind happy. */
handlers[i] = VTF3_DebugHandler;
firsthandlerargs[i] = 0;
continue;
}
if (recordtypes[i] == VTF3_RECTYPE_UNRECOGNIZABLE) {
/* Replace the predefined copy handler by our own one, do
not forget to redirect the first argument, too. Pay
attention, since `ccb.fcbin' is not known up to now, it
keeps uninitialized.
At the moment, this is not a problem. */
handlers[i] = (VTF3_handler_t) MyUnrecognizableHandler;
firsthandlerargs[i] = &ccb;
continue;
}
/* All the other handlers keep the predefined copy handlers,
directly seeing the opened output device control block. */
firsthandlerargs[i] = ccb.fcboutfile;
/* End of loop. */
}
/* Open the input device, correctly installing the handlers.
Furthermore, a value for `ccb.fcbin' is returned so
that `ccb' initialization can be completed, being late but
early enough with respect to the handlers. */
ccb.fcbin = VTF3_OpenFileInput ("anyfile", handlers, firsthandlerargs,
substitudeupfrom = 0);
if (ccb.fcbin == 0) {
(void) printf ("Couldn't open %s\n", "anyfile");
return (127);
}
/* Free the auxiliary arrays. */
(void) free (firsthandlerargs);
(void) free (handlers);
(void) free (recordtypes);
/* Now push the operation
to portion-wise process the input file contents. */
do bytesread = VTF3_ReadFileInputLtdBytes (ccb.fcbin,
bytestoberead = 50000);
while (bytesread != 0);
/* Print now, if something is to be done. */
if (ccb.sendmsgrecord != 0) {
(void) printf ("%s\n", ccb.sendmsgrecord);
(void) free (ccb.sendmsgrecord);
}
/* Close all devices. */
(void) VTF3_Close (ccb.fcbin);
(void) VTF3_Close (ccb.fcboutmemory);
(void) VTF3_Close (ccb.fcboutfile);
return (0);
}
#endif /* End of application examples. */
/* File compressor/decompressor related definitions. */
/* The file compression types. */
#define VTF3_FILECOMPRESSION_NONE (0)
#define VTF3_FILECOMPRESSION_ZLIB (1)
/* File format related definitions. */
/* The file formats. */
#define VTF3_FILEFORMAT_UNDEFINED (-1)
#define VTF3_FILEFORMAT_STD_ASCII ( 0)
#define VTF3_FILEFORMAT_STD_BINARY ( 1)
#define VTF3_FILEFORMAT_FST_ASCII ( 2)
/* The legacy ASCII file format does not have a file format header
on top of the file. All the other file formats need to have one,
consisting of 8 characters, exactly.
If there is not a known file format header on top of the file,
then this file is processed by the standard ASCII parser, operating
in legacy mode. */
#define VTF3_HEADER_STD_ASCII {'C', ' ', 'S', 'A', 'V', 'T', 'F', '\n'}
#define VTF3_HEADER_STD_BINARY {0x55, 0xaa, 0xa5, 0x5a, 'B', 'P', 'V', 'I' }
#define VTF3_HEADER_FST_ASCII {'C', ' ', 'F', 'A', 'V', 'T', 'F', '\n'}
#define VTF3_HEADER_ALL_INIT { VTF3_HEADER_STD_ASCII, \
VTF3_HEADER_STD_BINARY, \
VTF3_HEADER_FST_ASCII }
/* Record related definitions. */
#define VTF3_EXCHANGETYPE_TO (0)
#define VTF3_EXCHANGETYPE_DOWNTO (1)
#define VTF3_EXCHANGETYPE_UPTO (2)
#define VTF3_EXCHANGETYPE_UPFROM (3)
#define VTF3_EXCHANGETYPE_NOEXCH (4)
#define VTF3_EXCHANGETYPENAME_INIT {"TO", "DOWNTO", "UPTO", "UPFROM", "?"}
#define VTF3_VALUETYPE_NOTYPE (0)
#define VTF3_VALUETYPE_UINT (1)
#define VTF3_VALUETYPE_FLOAT (2)
#define VTF3_DATAREPHINT_NOHINT (0)
#define VTF3_DATAREPHINT_BEFORE (1)
#define VTF3_DATAREPHINT_POINT (2)
#define VTF3_DATAREPHINT_AFTER (3)
#define VTF3_DATAREPHINT_SAMPLE (4)
#define VTF3_FILEIOTYPE_NOTYPE (0)
#define VTF3_FILEIOTYPE_READ (1)
#define VTF3_FILEIOTYPE_WRITE (2)
#define VTF3_FILEIOTYPENAME_INIT {"?", "READ", "WRITE"}
#define VTF3_PATTERNTYPE_NOTYPE (0)
#define VTF3_PATTERNTYPE_NESTED (1)
#define VTF3_PATTERNTYPE_REPEAT (2)
#define VTF3_PATTERNTYPE_SERIAL (3)
#define VTF3_PATTERNTYPE_SINGLE (4)
#define VTF3_PATTERNTYPENAME_INIT {"?", "NESTED", "REPEAT", "SERIAL", "SINGLE"}
#define VTF3_PATTERNTYPESINGLE_CALL (0)
#define VTF3_PATTERNTYPESINGLE_ENTER (1)
#define VTF3_PATTERNTYPESINGLE_LEAVE (2)
#define VTF3_SCLNONE ( 0)
#define VTF3_SCLRESET (-2)
#define VTF3_NOACT ( -1)
#define VTF3_NOCOMMUNICATOR ( -32767)
#define VTF3_NOJOB (-9999999)
#define VTF3_NOSTATE ( -1)
#define VTF3_NODATASTRUC ( -1)
#define VTF3_NOTIME ( 0)
#define VTF3_OLDACT_VALID_TOKEN ((unsigned int) 0x1)
#define VTF3_OLDACT_VALID_NAME ((unsigned int) 0x2)
#define VTF3_CPUGRP_MASK ((unsigned int) ((unsigned int) 0x1 << 31))
#define VTF3_IS_CPUGRP(u) (((unsigned int) (u) & VTF3_CPUGRP_MASK) != 0 \
? 1 : 0)
#define VTF3_GET_CPUGRPBASE(u) ((unsigned int) (u) \
& (unsigned int) ~ VTF3_CPUGRP_MASK)
#define VTF3_RECTYPE_CLSTRREGVAL ( 130)
#define VTF3_RECTYPE_COMMENT ( 0)
#define VTF3_RECTYPE_CPUREGVAL ( 135)
#define VTF3_RECTYPE_DEFACT ( 12)
#define VTF3_RECTYPE_DEFACT_OBSOL ( 10)
#define VTF3_RECTYPE_DEFCLKPERIOD ( 60)
#define VTF3_RECTYPE_DEFCLSTR ( 140)
#define VTF3_RECTYPE_DEFCLSTRREG ( 145)
#define VTF3_RECTYPE_DEFCLSTRREGCLASS ( 150)
#define VTF3_RECTYPE_DEFCOMMUNICATOR ( 250)
#define VTF3_RECTYPE_DEFCPUGRP ( 171)
#define VTF3_RECTYPE_DEFCPUNAME ( 100)
#define VTF3_RECTYPE_DEFCPUREG ( 155)
#define VTF3_RECTYPE_DEFCPUREGCLASS ( 160)
#define VTF3_RECTYPE_DEFCREATOR ( 1)
#define VTF3_RECTYPE_DEFDATASTRUC ( 215)
#define VTF3_RECTYPE_DEFGLOBALOP ( 200)
#define VTF3_RECTYPE_DEFHISTGRP ( 214)
#define VTF3_RECTYPE_DEFHIST ( 216)
#define VTF3_RECTYPE_DEFIOFILE ( 230)
#define VTF3_RECTYPE_DEFKPARREG ( 191)
#define VTF3_RECTYPE_DEFMSGNAME ( 30)
#define VTF3_RECTYPE_DEFOPENMPNAME ( 261)
#define VTF3_RECTYPE_DEFOPENMPTYPE ( 260)
#define VTF3_RECTYPE_DEFPATTERN ( 181)
#define VTF3_RECTYPE_DEFPATTERNSHAPE ( 182)
#define VTF3_RECTYPE_DEFREDFUNC_OBSOL ( 210)
#define VTF3_RECTYPE_DEFSAMP ( 172)
#define VTF3_RECTYPE_DEFSAMPCLASS ( 173)
#define VTF3_RECTYPE_DEFSCL ( 21)
#define VTF3_RECTYPE_DEFSCLFILE ( 120)
#define VTF3_RECTYPE_DEFSTATE ( 22)
#define VTF3_RECTYPE_DEFSTATE_OBSOL ( 20)
#define VTF3_RECTYPE_DEFSYSCPUNAMES ( 50)
#define VTF3_RECTYPE_DEFSYSCPUNUMS ( 40)
#define VTF3_RECTYPE_DEFTHREADNUMS ( 41)
#define VTF3_RECTYPE_DEFTIMEOFFSET ( 110)
#define VTF3_RECTYPE_DEFUNMERGED ( 5)
#define VTF3_RECTYPE_DEFVERSION ( 2)
#define VTF3_RECTYPE_DOWNTO ( 166)
#define VTF3_RECTYPE_EXCHANGE ( 165)
#define VTF3_RECTYPE_EXCHANGE_OBSOL ( 70)
#define VTF3_RECTYPE_FILEIOBEGIN ( 240)
#define VTF3_RECTYPE_FILEIOEND ( 245)
#define VTF3_RECTYPE_GLOBALOP ( 220)
#define VTF3_RECTYPE_HIST ( 217)
#define VTF3_RECTYPE_KPARREGBARSUM ( 192)
#define VTF3_RECTYPE_KPARREGBEGIN ( 193)
#define VTF3_RECTYPE_KPARREGEND ( 194)
#define VTF3_RECTYPE_MUTEXACQUIRE ( 212)
#define VTF3_RECTYPE_MUTEXRELEASE ( 213)
#define VTF3_RECTYPE_OPENMPENTER ( 262)
#define VTF3_RECTYPE_OPENMPLEAVE ( 263)
#define VTF3_RECTYPE_PARREG ( 264)
#define VTF3_RECTYPE_PATTERN ( 183)
#define VTF3_RECTYPE_RECVMSG ( 90)
#define VTF3_RECTYPE_SAMP ( 174)
#define VTF3_RECTYPE_SENDMSG ( 80)
#define VTF3_RECTYPE_SRCINFO_OBSOL (32767)
#define VTF3_RECTYPE_UNRECOGNIZABLE (32766)
#define VTF3_RECTYPE_UPFROM ( 168)
#define VTF3_RECTYPE_UPTO ( 167)
/* Handler related definitions. */
#define VTF3_ARGS_CLSTRREGVAL ( void *fcb, \
double time, \
int clstrtoken, \
int clstrregarraydim, \
const int *clstrregtokenarray, \
const int *clstrregvaluetypearray, \
const void *clstrregvaluearray )
#define VTF3_ARGS_COMMENT ( void *fcb, \
double time, \
const char *comment )
#define VTF3_ARGS_CPUREGVAL ( void *fcb, \
double time, \
unsigned int cpuid, \
int cpuregarraydim, \
const int *cpuregtokenarray, \
const int *cpuregvaluetypearray, \
const void *cpuregvaluearray )
#define VTF3_ARGS_DEFACT ( void *fcb, \
int activitytoken, \
const char *activityname )
#define VTF3_ARGS_DEFACT_OBSOL ( void *fcb, \
int activitytoken, \
const char *activityname )
#define VTF3_ARGS_DEFCLKPERIOD ( void *fcb, \
double clkperiod )
#define VTF3_ARGS_DEFCLSTR ( void *fcb, \
int clstrtoken, \
const char *clstrname, \
int cpuidarraydim, \
const unsigned int *cpuidarray )
#define VTF3_ARGS_DEFCLSTRREG ( void *fcb, \
int clstrregtoken, \
int clstrregclasstoken, \
int valuetype, \
const void *valuebounds, \
const char *clstrregname, \
const char *clstrregunit )
#define VTF3_ARGS_DEFCLSTRREGCLASS ( void *fcb, \
int clstrregclasstoken, \
const char *clstrregclassname )
#define VTF3_ARGS_DEFCOMMUNICATOR ( void *fcb, \
int communicator, \
int communicatorsize, \
int tripletarraydim, \
const unsigned int *tripletarray )
#define VTF3_ARGS_DEFCPUGRP ( void *fcb, \
unsigned int cpugrpid, \
int cpuorcpugrpidarraydim, \
const unsigned int *cpuorcpugrpidarray, \
const char *cpugrpname )
#define VTF3_ARGS_DEFCPUNAME ( void *fcb, \
unsigned int cpuid, \
const char *cpuname )
#define VTF3_ARGS_DEFCPUREG ( void *fcb, \
int cpuregtoken, \
int cpuregclasstoken, \
int valuetype, \
const void *valuebounds, \
const char *cpuregname, \
const char *cpuregunit )
#define VTF3_ARGS_DEFCPUREGCLASS ( void *fcb, \
int cpuregclasstoken, \
const char *cpuregclassname )
#define VTF3_ARGS_DEFCREATOR ( void *fcb, \
const char *creator )
#define VTF3_ARGS_DEFDATASTRUC ( void *fcb, \
int datastructoken, \
const char *datastrucname, \
int scltoken)
#define VTF3_ARGS_DEFGLOBALOP ( void *fcb, \
int globaloptoken, \
const char *globalopname )
#define VTF3_ARGS_DEFHIST ( void *fcb, \
int histtoken, \
int nrelements, \
int histgrp, \
const char *histname )
#define VTF3_ARGS_DEFHISTGRP ( void *fcb, \
int histgrptoken, \
const char *histgrpname )
#define VTF3_ARGS_DEFIOFILE ( void *fcb, \
int iofiletoken, \
int communicator, \
const char *iofilename )
#define VTF3_ARGS_DEFKPARREG ( void *fcb, \
int kparregtoken, \
const char *kparregname )
#define VTF3_ARGS_DEFMSGNAME ( void *fcb, \
int msgtype, \
int communicator, \
const char *msgname )
#define VTF3_ARGS_DEFOPENMPNAME ( void *fcb, \
unsigned int nametoken, \
const char *openmpname )
#define VTF3_ARGS_DEFOPENMPTYPE ( void *fcb, \
unsigned int constructtypetoken, \
const char *constructtypename )
#define VTF3_ARGS_DEFPATTERN ( void *fcb, \
int activitytoken, \
int pattoken, \
int patshptoken, \
double radius, \
int ratio, \
int timesteparraydim, \
const double *timesteparray )
#define VTF3_ARGS_DEFPATTERNSHAPE ( void *fcb, \
int activitytoken, \
int patshptoken, \
int patterntype, \
int patshptokenbref1, \
int patshptokenbref2 )
#define VTF3_ARGS_DEFREDFUNC_OBSOL ( void *fcb, \
int redfunctoken, \
const char *redfuncname )
#define VTF3_ARGS_DEFSAMP ( void *fcb, \
int sampletoken, \
int sampleclasstoken, \
int iscpugrpsamp, \
unsigned int cpuorcpugrpid, \
int valuetype, \
const void *valuebounds, \
int dodifferentiation, \
int datarephint, \
const char *samplename, \
const char *sampleunit )
#define VTF3_ARGS_DEFSAMPCLASS ( void *fcb, \
int sampleclasstoken, \
const char *sampleclassname )
#define VTF3_ARGS_DEFSCL ( void *fcb, \
int scltoken, \
int sclarraydim, \
const int *sclfiletokenarray, \
const int *scllinepositionarray )
#define VTF3_ARGS_DEFSCLFILE ( void *fcb, \
int sclfiletoken, \
const char *sclfilename )
#define VTF3_ARGS_DEFSTATE ( void *fcb, \
int activitytoken, \
int statetoken, \
const char *statename, \
int scltoken )
#define VTF3_ARGS_DEFSTATE_OBSOL ( void *fcb, \
int activitytoken, \
const char *activityname, \
unsigned int activityvalidity, \
int statetoken, \
const char *statename )
#define VTF3_ARGS_DEFSYSCPUNAMES ( void *fcb, \
int systemcpunamearraydim, \
char * const *systemcpunamearray )
#define VTF3_ARGS_DEFSYSCPUNUMS ( void *fcb, \
int systemcpunumberarraydim, \
const int *systemcpunumberarray )
#define VTF3_ARGS_DEFTHREADNUMS ( void *fcb, \
int threadnumarraydim, \
const int *threadnumarray )
#define VTF3_ARGS_DEFTIMEOFFSET ( void *fcb, \
double timeoffset )
#define VTF3_ARGS_DEFUNMERGED ( void *fcb )
#define VTF3_ARGS_DEFVERSION ( void *fcb, \
int versionnumber )
#define VTF3_ARGS_DOWNTO ( void *fcb, \
double time, \
int statetoken, \
unsigned int cpuid, \
int scltoken )
#define VTF3_ARGS_EXCHANGE ( void *fcb, \
double time, \
unsigned int cpuid, \
int exchangetype, \
int statetoken, \
int job, \
int scltoken )
#define VTF3_ARGS_EXCHANGE_OBSOL ( void *fcb, \
double time, \
unsigned int cpuid, \
int exchangetype, \
int statetoken, \
int activitytoken, \
const char *activityname, \
unsigned int activityvalidity, \
int job )
#define VTF3_ARGS_FILEIOBEGIN ( void *fcb, \
double time, \
unsigned int cpuid, \
int fileiotype, \
int iofiletoken, \
int bytescopied, \
int scltoken )
#define VTF3_ARGS_FILEIOEND ( void *fcb, \
double time, \
unsigned int cpuid, \
int fileiotype, \
int iofiletoken, \
int bytescopied, \
int scltoken )
#define VTF3_ARGS_GLOBALOP ( void *fcb, \
double time, \
int globaloptoken, \
unsigned int cpuid, \
int communicator, \
unsigned int rootcpuid, \
int bytessent, \
int bytesreceived, \
double durationtimesteps, \
int scltoken )
#define VTF3_ARGS_HIST ( void *fcb, \
double time, \
int histtoken, \
double starttime, \
unsigned int cpuid, \
int valuearraydim, \
int* numdatastrucperbin, \
const int* datastrucarray, \
const void *values )
#define VTF3_ARGS_KPARREGBARSUM ( void *fcb, \
double time, \
unsigned int cpuid, \
int kparregtoken, \
int seqn, \
int opasize, \
const void *opastream, \
int scltoken )
#define VTF3_ARGS_KPARREGBEGIN ( void *fcb, \
double time, \
unsigned int cpuid, \
int kparregtoken, \
int seqn, \
int numthreads, \
int scltoken )
#define VTF3_ARGS_KPARREGEND ( void *fcb, \
double time, \
unsigned int cpuid, \
int kparregtoken, \
int seqn, \
int opasize, \
const void *opastream, \
int scltoken )
#define VTF3_ARGS_MUTEXACQUIRE ( void *fcb, \
double time, \
unsigned int cpuid, \
int enterstatetoken, \
int leavestatetoken, \
int leavestatetokenisupfrom, \
double durationtimesteps, \
int mutexsize, \
const void *mutex, \
int scltoken )
#define VTF3_ARGS_MUTEXRELEASE ( void *fcb, \
double time, \
unsigned int cpuid, \
int enterstatetoken, \
int leavestatetoken, \
int leavestatetokenisupfrom, \
double durationtimesteps, \
int mutexsize, \
const void *mutex, \
int scltoken )
#define VTF3_ARGS_OPENMPENTER ( void *fcb, \
double time, \
unsigned int cpuid, \
unsigned int constructtypetoken, \
unsigned int nametoken, \
int scltoken )
#define VTF3_ARGS_OPENMPLEAVE ( void *fcb, \
double time, \
unsigned int cpuid, \
int scltoken )
#define VTF3_ARGS_PARREG ( void *fcb, \
double time, \
unsigned int cpugrpid, \
unsigned int nametoken, \
int sclstarttoken, \
int sclendtoken, \
int timearraydim, \
const double *timeoffsetanddurationarray )
#define VTF3_ARGS_PATTERN ( void *fcb, \
double time, \
unsigned int cpuid, \
int patorpatshptoken, \
double durationtimesteps, \
int timesteparraydim, \
const double *timesteparray, \
const int *patchindexarray )
#define VTF3_ARGS_RECVMSG ( void *fcb, \
double time, \
unsigned int receiver, \
unsigned int sender, \
int communicator, \
int msgtype, \
int msglength, \
int scltoken )
#define VTF3_ARGS_SAMP ( void *fcb, \
double time, \
unsigned int cpuorcpugrpid, \
int samplearraydim, \
const int *sampletokenarray, \
const int *samplevaluetypearray, \
const void *samplevaluearray )
#define VTF3_ARGS_SENDMSG ( void *fcb, \
double time, \
unsigned int sender, \
unsigned int receiver, \
int communicator, \
int msgtype, \
int msglength, \
int scltoken )
#define VTF3_ARGS_SRCINFO_OBSOL ( void *fcb, \
double time, \
int activitytoken, \
int statetoken, \
int scllineposition )
#define VTF3_ARGS_UNRECOGNIZABLE ( void *fcb, \
double lastvalidtime, \
int numberofunrecognizablechars, \
int typeofunrecognizablerecord, \
const char *unrecognizablerecord )
#define VTF3_ARGS_UPFROM ( void *fcb, \
double time, \
int statetoken, \
unsigned int cpuid, \
int scltoken )
#define VTF3_ARGS_UPTO ( void *fcb, \
double time, \
int statetoken, \
unsigned int cpuid, \
int scltoken )
/* More handler macro stuff. */
#define VTF3_DCL_CLSTRREGVAL(s,n) s int (n) VTF3_ARGS_CLSTRREGVAL
#define VTF3_DCL_COMMENT(s,n) s int (n) VTF3_ARGS_COMMENT
#define VTF3_DCL_CPUREGVAL(s,n) s int (n) VTF3_ARGS_CPUREGVAL
#define VTF3_DCL_DEFACT(s,n) s int (n) VTF3_ARGS_DEFACT
#define VTF3_DCL_DEFACT_OBSOL(s,n) s int (n) VTF3_ARGS_DEFACT_OBSOL
#define VTF3_DCL_DEFCLKPERIOD(s,n) s int (n) VTF3_ARGS_DEFCLKPERIOD
#define VTF3_DCL_DEFCLSTR(s,n) s int (n) VTF3_ARGS_DEFCLSTR
#define VTF3_DCL_DEFCLSTRREG(s,n) s int (n) VTF3_ARGS_DEFCLSTRREG
#define VTF3_DCL_DEFCLSTRREGCLASS(s,n) s int (n) VTF3_ARGS_DEFCLSTRREGCLASS
#define VTF3_DCL_DEFCOMMUNICATOR(s,n) s int (n) VTF3_ARGS_DEFCOMMUNICATOR
#define VTF3_DCL_DEFCPUGRP(s,n) s int (n) VTF3_ARGS_DEFCPUGRP
#define VTF3_DCL_DEFCPUNAME(s,n) s int (n) VTF3_ARGS_DEFCPUNAME
#define VTF3_DCL_DEFCPUREG(s,n) s int (n) VTF3_ARGS_DEFCPUREG
#define VTF3_DCL_DEFCPUREGCLASS(s,n) s int (n) VTF3_ARGS_DEFCPUREGCLASS
#define VTF3_DCL_DEFCREATOR(s,n) s int (n) VTF3_ARGS_DEFCREATOR
#define VTF3_DCL_DEFDATASTRUC(s,n) s int (n) VTF3_ARGS_DEFDATASTRUC
#define VTF3_DCL_DEFGLOBALOP(s,n) s int (n) VTF3_ARGS_DEFGLOBALOP
#define VTF3_DCL_DEFHIST(s,n) s int (n) VTF3_ARGS_DEFHIST
#define VTF3_DCL_DEFHISTGRP(s,n) s int (n) VTF3_ARGS_DEFHISTGRP
#define VTF3_DCL_DEFIOFILE(s,n) s int (n) VTF3_ARGS_DEFIOFILE
#define VTF3_DCL_DEFKPARREG(s,n) s int (n) VTF3_ARGS_DEFKPARREG
#define VTF3_DCL_DEFMSGNAME(s,n) s int (n) VTF3_ARGS_DEFMSGNAME
#define VTF3_DCL_DEFOPENMPNAME(s,n) s int (n) VTF3_ARGS_DEFOPENMPNAME
#define VTF3_DCL_DEFOPENMPTYPE(s,n) s int (n) VTF3_ARGS_DEFOPENMPTYPE
#define VTF3_DCL_DEFPATTERN(s,n) s int (n) VTF3_ARGS_DEFPATTERN
#define VTF3_DCL_DEFPATTERNSHAPE(s,n) s int (n) VTF3_ARGS_DEFPATTERNSHAPE
#define VTF3_DCL_DEFREDFUNC_OBSOL(s,n) s int (n) VTF3_ARGS_DEFREDFUNC_OBSOL
#define VTF3_DCL_DEFSAMP(s,n) s int (n) VTF3_ARGS_DEFSAMP
#define VTF3_DCL_DEFSAMPCLASS(s,n) s int (n) VTF3_ARGS_DEFSAMPCLASS
#define VTF3_DCL_DEFSCL(s,n) s int (n) VTF3_ARGS_DEFSCL
#define VTF3_DCL_DEFSCLFILE(s,n) s int (n) VTF3_ARGS_DEFSCLFILE
#define VTF3_DCL_DEFSTATE(s,n) s int (n) VTF3_ARGS_DEFSTATE
#define VTF3_DCL_DEFSTATE_OBSOL(s,n) s int (n) VTF3_ARGS_DEFSTATE_OBSOL
#define VTF3_DCL_DEFSYSCPUNAMES(s,n) s int (n) VTF3_ARGS_DEFSYSCPUNAMES
#define VTF3_DCL_DEFSYSCPUNUMS(s,n) s int (n) VTF3_ARGS_DEFSYSCPUNUMS
#define VTF3_DCL_DEFTHREADNUMS(s,n) s int (n) VTF3_ARGS_DEFTHREADNUMS
#define VTF3_DCL_DEFTIMEOFFSET(s,n) s int (n) VTF3_ARGS_DEFTIMEOFFSET
#define VTF3_DCL_DEFUNMERGED(s,n) s int (n) VTF3_ARGS_DEFUNMERGED
#define VTF3_DCL_DEFVERSION(s,n) s int (n) VTF3_ARGS_DEFVERSION
#define VTF3_DCL_DOWNTO(s,n) s int (n) VTF3_ARGS_DOWNTO
#define VTF3_DCL_EXCHANGE(s,n) s int (n) VTF3_ARGS_EXCHANGE
#define VTF3_DCL_EXCHANGE_OBSOL(s,n) s int (n) VTF3_ARGS_EXCHANGE_OBSOL
#define VTF3_DCL_FILEIOBEGIN(s,n) s int (n) VTF3_ARGS_FILEIOBEGIN
#define VTF3_DCL_FILEIOEND(s,n) s int (n) VTF3_ARGS_FILEIOEND
#define VTF3_DCL_GLOBALOP(s,n) s int (n) VTF3_ARGS_GLOBALOP
#define VTF3_DCL_HIST(s,n) s int (n) VTF3_ARGS_HIST
#define VTF3_DCL_KPARREGBARSUM(s,n) s int (n) VTF3_ARGS_KPARREGBARSUM
#define VTF3_DCL_KPARREGBEGIN(s,n) s int (n) VTF3_ARGS_KPARREGBEGIN
#define VTF3_DCL_KPARREGEND(s,n) s int (n) VTF3_ARGS_KPARREGEND
#define VTF3_DCL_MUTEXACQUIRE(s,n) s int (n) VTF3_ARGS_MUTEXACQUIRE
#define VTF3_DCL_MUTEXRELEASE(s,n) s int (n) VTF3_ARGS_MUTEXRELEASE
#define VTF3_DCL_OPENMPENTER(s,n) s int (n) VTF3_ARGS_OPENMPENTER
#define VTF3_DCL_OPENMPLEAVE(s,n) s int (n) VTF3_ARGS_OPENMPLEAVE
#define VTF3_DCL_PARREG(s,n) s int (n) VTF3_ARGS_PARREG
#define VTF3_DCL_PATTERN(s,n) s int (n) VTF3_ARGS_PATTERN
#define VTF3_DCL_RECVMSG(s,n) s int (n) VTF3_ARGS_RECVMSG
#define VTF3_DCL_SAMP(s,n) s int (n) VTF3_ARGS_SAMP
#define VTF3_DCL_SENDMSG(s,n) s int (n) VTF3_ARGS_SENDMSG
#define VTF3_DCL_SRCINFO_OBSOL(s,n) s int (n) VTF3_ARGS_SRCINFO_OBSOL
#define VTF3_DCL_UNRECOGNIZABLE(s,n) s int (n) VTF3_ARGS_UNRECOGNIZABLE
#define VTF3_DCL_UPFROM(s,n) s int (n) VTF3_ARGS_UPFROM
#define VTF3_DCL_UPTO(s,n) s int (n) VTF3_ARGS_UPTO
/* Aggregates. */
/* Structure of a transiently stored record.
Pay attention, the contents of the member `record' is the
complete record, represented in any binary or ASCII format.
In ASCII format, `record' is a '\0'-terminated printable
ASCII string without any '\n'-character. */
#ifdef __cplusplus
extern "C" {
#endif
struct VTF3_rec_struct_t {
int type;
int numchars;
const char *record;
};
typedef const struct VTF3_rec_struct_t VTF3_rec_t;
#ifdef __cplusplus
}
#endif
/* Additional header files. */
/* This is for `size_t'. */
#include
/* This is for `FILE'. */
#include
/* The generic handler type. */
typedef int (*VTF3_handler_t) (void *firsthandlerarg, ...);
/* Visible entry stuff. */
#ifdef __cplusplus
extern "C" {
#endif
VTF3_DCL_CLSTRREGVAL (extern, VTF3_WriteClstrregval );
VTF3_DCL_COMMENT (extern, VTF3_WriteComment );
VTF3_DCL_CPUREGVAL (extern, VTF3_WriteCpuregval );
VTF3_DCL_DEFACT (extern, VTF3_WriteDefact );
VTF3_DCL_DEFACT_OBSOL (extern, VTF3_WriteDefact_obsol );
VTF3_DCL_DEFCLKPERIOD (extern, VTF3_WriteDefclkperiod );
VTF3_DCL_DEFCLSTR (extern, VTF3_WriteDefclstr );
VTF3_DCL_DEFCLSTRREG (extern, VTF3_WriteDefclstrreg );
VTF3_DCL_DEFCLSTRREGCLASS (extern, VTF3_WriteDefclstrregclass);
VTF3_DCL_DEFCOMMUNICATOR (extern, VTF3_WriteDefcommunicator );
VTF3_DCL_DEFCPUGRP (extern, VTF3_WriteDefcpugrp );
VTF3_DCL_DEFCPUNAME (extern, VTF3_WriteDefcpuname );
VTF3_DCL_DEFCPUREG (extern, VTF3_WriteDefcpureg );
VTF3_DCL_DEFCPUREGCLASS (extern, VTF3_WriteDefcpuregclass );
VTF3_DCL_DEFCREATOR (extern, VTF3_WriteDefcreator );
VTF3_DCL_DEFDATASTRUC (extern, VTF3_WriteDefdatastruc );
VTF3_DCL_DEFGLOBALOP (extern, VTF3_WriteDefglobalop );
VTF3_DCL_DEFHIST (extern, VTF3_WriteDefhist );
VTF3_DCL_DEFHISTGRP (extern, VTF3_WriteDefhistgrp );
VTF3_DCL_DEFIOFILE (extern, VTF3_WriteDefiofile );
VTF3_DCL_DEFKPARREG (extern, VTF3_WriteDefkparreg );
VTF3_DCL_DEFMSGNAME (extern, VTF3_WriteDefmsgname );
VTF3_DCL_DEFOPENMPNAME (extern, VTF3_WriteDefopenmpname );
VTF3_DCL_DEFOPENMPTYPE (extern, VTF3_WriteDefopenmptype );
VTF3_DCL_DEFPATTERN (extern, VTF3_WriteDefpattern );
VTF3_DCL_DEFPATTERNSHAPE (extern, VTF3_WriteDefpatternshape );
VTF3_DCL_DEFREDFUNC_OBSOL (extern, VTF3_WriteDefredfunc_obsol);
VTF3_DCL_DEFSAMP (extern, VTF3_WriteDefsamp );
VTF3_DCL_DEFSAMPCLASS (extern, VTF3_WriteDefsampclass );
VTF3_DCL_DEFSCL (extern, VTF3_WriteDefscl );
VTF3_DCL_DEFSCLFILE (extern, VTF3_WriteDefsclfile );
VTF3_DCL_DEFSTATE (extern, VTF3_WriteDefstate );
VTF3_DCL_DEFSTATE_OBSOL (extern, VTF3_WriteDefstate_obsol );
VTF3_DCL_DEFSYSCPUNAMES (extern, VTF3_WriteDefsyscpunames );
VTF3_DCL_DEFSYSCPUNUMS (extern, VTF3_WriteDefsyscpunums );
VTF3_DCL_DEFTHREADNUMS (extern, VTF3_WriteDefthreadnums );
VTF3_DCL_DEFTIMEOFFSET (extern, VTF3_WriteDeftimeoffset );
VTF3_DCL_DEFUNMERGED (extern, VTF3_WriteDefunmerged );
VTF3_DCL_DEFVERSION (extern, VTF3_WriteDefversion );
VTF3_DCL_DOWNTO (extern, VTF3_WriteDownto );
VTF3_DCL_EXCHANGE (extern, VTF3_WriteExchange );
VTF3_DCL_EXCHANGE_OBSOL (extern, VTF3_WriteExchange_obsol );
VTF3_DCL_FILEIOBEGIN (extern, VTF3_WriteFileiobegin );
VTF3_DCL_FILEIOEND (extern, VTF3_WriteFileioend );
VTF3_DCL_GLOBALOP (extern, VTF3_WriteGlobalop );
VTF3_DCL_HIST (extern, VTF3_WriteHist );
VTF3_DCL_KPARREGBARSUM (extern, VTF3_WriteKparregbarsum );
VTF3_DCL_KPARREGBEGIN (extern, VTF3_WriteKparregbegin );
VTF3_DCL_KPARREGEND (extern, VTF3_WriteKparregend );
VTF3_DCL_MUTEXACQUIRE (extern, VTF3_WriteMutexacquire );
VTF3_DCL_MUTEXRELEASE (extern, VTF3_WriteMutexrelease );
VTF3_DCL_OPENMPENTER (extern, VTF3_WriteOpenmpenter );
VTF3_DCL_OPENMPLEAVE (extern, VTF3_WriteOpenmpleave );
VTF3_DCL_PARREG (extern, VTF3_WriteParreg );
VTF3_DCL_PATTERN (extern, VTF3_WritePattern );
VTF3_DCL_RECVMSG (extern, VTF3_WriteRecvmsg );
VTF3_DCL_SAMP (extern, VTF3_WriteSamp );
VTF3_DCL_SENDMSG (extern, VTF3_WriteSendmsg );
VTF3_DCL_SRCINFO_OBSOL (extern, VTF3_WriteSrcinfo_obsol );
VTF3_DCL_UNRECOGNIZABLE (extern, VTF3_WriteUnrecognizable );
VTF3_DCL_UPFROM (extern, VTF3_WriteUpfrom );
VTF3_DCL_UPTO (extern, VTF3_WriteUpto );
extern VTF3_rec_t *VTF3_ComposeClstrregval VTF3_ARGS_CLSTRREGVAL ;
extern VTF3_rec_t *VTF3_ComposeComment VTF3_ARGS_COMMENT ;
extern VTF3_rec_t *VTF3_ComposeCpuregval VTF3_ARGS_CPUREGVAL ;
extern VTF3_rec_t *VTF3_ComposeDefact VTF3_ARGS_DEFACT ;
extern VTF3_rec_t *VTF3_ComposeDefact_obsol VTF3_ARGS_DEFACT_OBSOL ;
extern VTF3_rec_t *VTF3_ComposeDefclkperiod VTF3_ARGS_DEFCLKPERIOD ;
extern VTF3_rec_t *VTF3_ComposeDefclstr VTF3_ARGS_DEFCLSTR ;
extern VTF3_rec_t *VTF3_ComposeDefclstrreg VTF3_ARGS_DEFCLSTRREG ;
extern VTF3_rec_t *VTF3_ComposeDefclstrregclass VTF3_ARGS_DEFCLSTRREGCLASS;
extern VTF3_rec_t *VTF3_ComposeDefcommunicator VTF3_ARGS_DEFCOMMUNICATOR ;
extern VTF3_rec_t *VTF3_ComposeDefcpugrp VTF3_ARGS_DEFCPUGRP ;
extern VTF3_rec_t *VTF3_ComposeDefcpuname VTF3_ARGS_DEFCPUNAME ;
extern VTF3_rec_t *VTF3_ComposeDefcpureg VTF3_ARGS_DEFCPUREG ;
extern VTF3_rec_t *VTF3_ComposeDefcpuregclass VTF3_ARGS_DEFCPUREGCLASS ;
extern VTF3_rec_t *VTF3_ComposeDefcreator VTF3_ARGS_DEFCREATOR ;
extern VTF3_rec_t *VTF3_ComposeDefdatastruc VTF3_ARGS_DEFDATASTRUC ;
extern VTF3_rec_t *VTF3_ComposeDefglobalop VTF3_ARGS_DEFGLOBALOP ;
extern VTF3_rec_t *VTF3_ComposeDefhist VTF3_ARGS_DEFHIST ;
extern VTF3_rec_t *VTF3_ComposeDefhistgrp VTF3_ARGS_DEFHISTGRP ;
extern VTF3_rec_t *VTF3_ComposeDefiofile VTF3_ARGS_DEFIOFILE ;
extern VTF3_rec_t *VTF3_ComposeDefkparreg VTF3_ARGS_DEFKPARREG ;
extern VTF3_rec_t *VTF3_ComposeDefmsgname VTF3_ARGS_DEFMSGNAME ;
extern VTF3_rec_t *VTF3_ComposeDefopenmpname VTF3_ARGS_DEFOPENMPNAME ;
extern VTF3_rec_t *VTF3_ComposeDefopenmptype VTF3_ARGS_DEFOPENMPTYPE ;
extern VTF3_rec_t *VTF3_ComposeDefpattern VTF3_ARGS_DEFPATTERN ;
extern VTF3_rec_t *VTF3_ComposeDefpatternshape VTF3_ARGS_DEFPATTERNSHAPE ;
extern VTF3_rec_t *VTF3_ComposeDefredfunc_obsol VTF3_ARGS_DEFREDFUNC_OBSOL;
extern VTF3_rec_t *VTF3_ComposeDefsamp VTF3_ARGS_DEFSAMP ;
extern VTF3_rec_t *VTF3_ComposeDefsampclass VTF3_ARGS_DEFSAMPCLASS ;
extern VTF3_rec_t *VTF3_ComposeDefscl VTF3_ARGS_DEFSCL ;
extern VTF3_rec_t *VTF3_ComposeDefsclfile VTF3_ARGS_DEFSCLFILE ;
extern VTF3_rec_t *VTF3_ComposeDefstate VTF3_ARGS_DEFSTATE ;
extern VTF3_rec_t *VTF3_ComposeDefstate_obsol VTF3_ARGS_DEFSTATE_OBSOL ;
extern VTF3_rec_t *VTF3_ComposeDefsyscpunames VTF3_ARGS_DEFSYSCPUNAMES ;
extern VTF3_rec_t *VTF3_ComposeDefsyscpunums VTF3_ARGS_DEFSYSCPUNUMS ;
extern VTF3_rec_t *VTF3_ComposeDefthreadnums VTF3_ARGS_DEFTHREADNUMS ;
extern VTF3_rec_t *VTF3_ComposeDeftimeoffset VTF3_ARGS_DEFTIMEOFFSET ;
extern VTF3_rec_t *VTF3_ComposeDefunmerged VTF3_ARGS_DEFUNMERGED ;
extern VTF3_rec_t *VTF3_ComposeDefversion VTF3_ARGS_DEFVERSION ;
extern VTF3_rec_t *VTF3_ComposeDownto VTF3_ARGS_DOWNTO ;
extern VTF3_rec_t *VTF3_ComposeExchange VTF3_ARGS_EXCHANGE ;
extern VTF3_rec_t *VTF3_ComposeExchange_obsol VTF3_ARGS_EXCHANGE_OBSOL ;
extern VTF3_rec_t *VTF3_ComposeFileiobegin VTF3_ARGS_FILEIOBEGIN ;
extern VTF3_rec_t *VTF3_ComposeFileioend VTF3_ARGS_FILEIOEND ;
extern VTF3_rec_t *VTF3_ComposeGlobalop VTF3_ARGS_GLOBALOP ;
extern VTF3_rec_t *VTF3_ComposeHist VTF3_ARGS_HIST ;
extern VTF3_rec_t *VTF3_ComposeKparregbarsum VTF3_ARGS_KPARREGBARSUM ;
extern VTF3_rec_t *VTF3_ComposeKparregbegin VTF3_ARGS_KPARREGBEGIN ;
extern VTF3_rec_t *VTF3_ComposeKparregend VTF3_ARGS_KPARREGEND ;
extern VTF3_rec_t *VTF3_ComposeMutexacquire VTF3_ARGS_MUTEXACQUIRE ;
extern VTF3_rec_t *VTF3_ComposeMutexrelease VTF3_ARGS_MUTEXRELEASE ;
extern VTF3_rec_t *VTF3_ComposeOpenmpenter VTF3_ARGS_OPENMPENTER ;
extern VTF3_rec_t *VTF3_ComposeOpenmpleave VTF3_ARGS_OPENMPLEAVE ;
extern VTF3_rec_t *VTF3_ComposeParreg VTF3_ARGS_PARREG ;
extern VTF3_rec_t *VTF3_ComposePattern VTF3_ARGS_PATTERN ;
extern VTF3_rec_t *VTF3_ComposeRecvmsg VTF3_ARGS_RECVMSG ;
extern VTF3_rec_t *VTF3_ComposeSamp VTF3_ARGS_SAMP ;
extern VTF3_rec_t *VTF3_ComposeSendmsg VTF3_ARGS_SENDMSG ;
extern VTF3_rec_t *VTF3_ComposeSrcinfo_obsol VTF3_ARGS_SRCINFO_OBSOL ;
extern VTF3_rec_t *VTF3_ComposeUnrecognizable VTF3_ARGS_UNRECOGNIZABLE ;
extern VTF3_rec_t *VTF3_ComposeUpfrom VTF3_ARGS_UPFROM ;
extern VTF3_rec_t *VTF3_ComposeUpto VTF3_ARGS_UPTO ;
extern void VTF3_InitTables ( void );
extern void *VTF3_OpenFileOutput ( const char *outputfilename,
int outputfileformat,
int writeunmergedrecord );
extern void *VTF3_OpenMemoryOutput ( int outputfileformat );
/* VTF3_GetDefRecTypeArrayDim() and VTF3_GetDefRecTypeArray() are
for Vptmerge to get define-type record sorting information. */
extern int VTF3_GetDefRecTypeArrayDim ( void );
extern void VTF3_GetDefRecTypeArray ( int *defrecordtypes );
extern int VTF3_GetRecTypeArrayDim ( void );
extern void VTF3_GetRecTypeArray ( int *recordtypes );
extern void VTF3_GetCopyHandlerArray ( VTF3_handler_t *copyhandlers );
extern int VTF3_DebugHandler ( void *firsthandlerarg, ...);
/* Vampir should always open the input devices with `substitudeupfrom=1'.
All other applications should open them with `substitudeupfrom=0'. */
extern void *VTF3_OpenFileInput ( const char *inputfilename,
const VTF3_handler_t *handlers,
void * const *firsthandlerargs,
int substitudeupfrom );
extern void *VTF3_OpenMemoryInput ( int inputfileformat,
const VTF3_handler_t *handlers,
void * const *firsthandlerargs,
int substitudeupfrom );
/* VTF3_QueryFormat() is for input and for output devices, too. */
extern int VTF3_QueryFormat ( const void *fcb );
extern size_t VTF3_ReadFileInput ( void *fcb );
extern size_t VTF3_ReadFileInputLtdBytes ( void *fcb,
size_t bytestoberead );
extern int VTF3_ReadFileInputLtdRecs ( void *fcb,
int recordstoberead );
extern size_t VTF3_ReadMemoryInput ( void *fcb,
const void *src,
size_t size );
extern void VTF3_Close ( void *fcb );
extern size_t VTF3_CopyFile ( const char *inputfilename,
const char *outputfilename,
int outputfileformat,
int substitudeupfrom );
/* To check whether or not ZLIB support is compiled in. */
extern int VTF3_HaveZlib ( void );
/* VTF3_GetZlibVersion() points to a statically allocated string. */
extern const char *VTF3_GetZlibVersion ( void );
/* VTF3_GzRead() and VTF3_GzWrite() are `internal' interfaces,
but they have their own source file, for safety. */
extern int VTF3_GzRead ( FILE **ppfile,
void **pzfile,
void *buffer,
size_t size,
size_t *zfileposition );
extern int VTF3_GzWrite ( FILE **ppfile,
void **pzfile,
void *buffer,
size_t size );
/* VTF3_GetVersion() points to a statically allocated string. */
extern const char *VTF3_GetVersion ( void );
extern int VTF3_GetVersionNumber ( void );
/* Basically, this is not the right place to declare the interface of a
VTF3 application, but the Vampir developers should get a compilation
error in case of any change here. */
extern char *VTF3_ShowTraceFileWindow ( const char *inputfilename,
double *timestampmin,
double *timestampmax,
char *outputbuffer,
size_t outputbuffersize );
#ifdef __cplusplus
}
#endif
/* {{{ HISTORY */
/*
*
* $Log: vtf3.h,v $
* Revision 1.2 2005/10/22 00:57:03 sameer
* committing source of vtf3 1.43.
*
* Revision 1.44 2005/01/31 10:29:40 rmp
* added VTF_NOTIME, used for histogram if no starttime of accumulation is known
*
* Revision 1.43 2005/01/27 15:19:58 rmp
* added starttime to HIST event record, updated doc accordingly, rewrote make dist to macke architecture dendent distributions
*
* Revision 1.42 2004/12/06 09:45:51 rmp
* added new records for histograms (DEFHISTGRP, DEFHIST, HIST) and data structure (DEFDATASTRUC), added vtf3recdoc
*
* Revision 1.41 2004/03/01 22:51:36 seidl
* Introduced `VTF3_GetZlibVersion()'.
*
* Revision 1.40 2004/02/20 13:22:39 knuepfer
* OpenMp related records added to default branch by Sven Bauer
*
* Revision 1.39 2003/11/24 23:44:09 seidl
* Changed for C++.
*
* Revision 1.38 2003/11/23 23:54:27 seidl
* Changed the examples on top and a comment.
*
* Revision 1.37 2003/02/14 13:09:34 seidl
* I changed the examples on top so that they
* aren't in contradiction to the documentation.
* The examples on top are in "Clean C" now.
*
* Revision 1.36 2002/11/08 16:28:18 seidl
* New representation hints for Patrick Ohly.
*
* Revision 1.35 2002/09/09 15:55:24 seidl
* DEFPATTERN got an additional argument.
*
* Revision 1.34 2002/05/03 07:54:46 seidl
* Cosmetic change.
*
* Revision 1.33 2002/04/19 01:30:55 seidl
* New entry VTF3_GetVersionNumber() introduced.
*
* Revision 1.32 2002/04/11 12:59:01 seidl
* Records and interfaces of DEFPATTERN and PATTERN changed.
*
* Revision 1.31 2002/03/06 10:32:54 seidl
* Work around a problem with respect to the `strdup()' declaration.
*
* Revision 1.30 2002/03/02 22:05:02 seidl
* Surplus blanks removed.
*
* Revision 1.29 2002/03/01 19:04:44 seidl
* Cosmetic change of GLOBALOP dcl, for clearifying.
*
* Revision 1.28 2002/02/28 16:32:52 seidl
* Declaration of VTF3_ShowTraceFileWindow() changed.
* Declaration of VTF3_ShowTraceFileWindow() went to here.
* Changes with respect to DEFPATTERN, DEFPATTERNSHAPE, PATTERN,
* MUTEXACQUIRE and MUTEXRELEASE.
* DOWNTO, UPFROM and UPTO got SCL.
*
* Revision 1.27 2002/01/22 14:18:41 seidl
* VTF3_RECTYPE_MUTEX... magic numbers changed.
* New interface VTF3_HaveZlib declared.
*
* Revision 1.26 2002/01/17 16:49:11 seidl
* 5 new interfaces declared, i.e. for
* DEFPATTERN, DEFPATTERNSHAPE, PATTERN,
* MUTEXACQUIRE and MUTEXRELEASE.
*
* Revision 1.25 2001/10/11 13:48:34 seidl
* Cosmetic change.
*
* Revision 1.24 2001/10/11 13:30:18 seidl
* Cosmetic change.
*
* Revision 1.23 2001/09/24 14:43:07 brunst
* Added missing stdio.h.
*
* Revision 1.22 2001/09/19 08:36:00 seidl
* Globally changed the prefix from `VTF_' to `VTF3_'.
*
* Revision 1.21 2001/08/15 03:21:09 seidl
* Changed VTF_SCLRESET from (0xfffffffe) to (-2)
* for true 64 bit architectures (T3E).
*
* Revision 1.20 2001/08/14 09:16:05 seidl
* Some cosmetic changes.
*
* Revision 1.19 2001/08/13 13:28:44 seidl
* Some changes for Z-stream support for `*.gz' files.
*
* Revision 1.18 2001/08/09 12:47:59 seidl
* VTF_NOACT changed from (0) to (-1) to work around
* illegal records in all the Pallas trace files.
* `DEFACT 0 "MPI"' is now legal as well as
* `DEFSTATE 107 ACT 0 "MPI_Info_delete"'.
*
* Revision 1.17 2001/08/06 15:54:02 seidl
* Changed a comment.
*
* Revision 1.16 2001/07/26 15:16:24 seidl
* VTF_FILEFORMAT_UNDEFINED added.
*
* Revision 1.15 2001/07/25 00:13:11 seidl
* VTF_OLDACT_VALID_TOKEN and VTF_OLDACT_VALID_NAME introduced.
* Interfaces for DEFSTATE_OBSOL and EXCHANGE_OBSOL changed.
* Interface VTF_OpenMemoryInput() changed.
*
* Revision 1.14 2001/07/17 19:45:20 seidl
* Changed VTF_ARGS_DEFSTATE_OBSOL.
*
* Revision 1.13 2001/07/17 03:22:14 seidl
* Changed some legacy interfaces.
*
* Revision 1.12 2001/07/14 17:37:04 seidl
* VTF_OpenMemoryOutput() and VTF_WriteUnrecognizable() changed.
*
* Revision 1.11 2001/07/13 14:58:50 seidl
* New entry VTF_GetVersion() added.
*
* Revision 1.10 2001/07/10 09:16:33 seidl
* Fixes minor bugs with respect to `Defsyscpunums'.
*
* Revision 1.9 2001/04/06 09:14:52 seidl
* Defsamp arglist changed.
*
* Revision 1.8 2001/03/19 13:36:45 seidl
* Cosmetic changes.
*
* Revision 1.7 2001/03/06 10:04:04 seidl
* More cosmetic changes.
*
* Revision 1.6 2001/03/05 19:58:05 seidl
* Some cosmetic changes.
*
* Revision 1.5 2001/03/05 17:53:35 seidl
* Some improvements, stimulated by A.Knuepfer and H.Brunst.
*
* Revision 1.4 2001/03/04 19:33:20 seidl
* Final design.
*
* Revision 1.3 2001/03/02 17:25:30 seidl
* Type remastering, interfaces changed, more features.
*
* Revision 1.2 2001/02/26 19:59:48 seidl
* Fixed some bugs in application examples.
*
* Revision 1.1 2001/02/26 19:10:07 seidl
* Initial version
*
*/
/* }}} */
#endif /* VTF3_H */