OpenMPI  0.1.1
OTF_Writer.h
Go to the documentation of this file.
1 /*
2  This is part of the OTF library. Copyright by ZIH, TU Dresden 2005-2012.
3  Authors: Andreas Knuepfer, Holger Brunst, Ronny Brendel, Thomas Kriebitzsch
4 */
5 
6 /**
7  * @file OTF_Writer.h
8  *
9  * @brief Transparently writes OTF traces which consist of multiple streams.
10  *
11  * \ingroup writer
12  */
13 
14 /** \defgroup writer Writer Interface
15  *
16  * This interface should be used whenever a trace file is to be written as a
17  * whole. Therefore, an initial call to the OTF_Writer_open() function
18  * allows to specify a number of streams which are going to be used to
19  * automatically partition the recorded event data. OTF than takes over the
20  * duty of distributing the data on multiple files.
21  *
22  * \section writer_example A simple Example
23  *
24  * \code
25  * #include <assert.h>
26  * #include "otf.h"
27  *
28  * int main( int argc, char** argv ) {
29  * \endcode
30  *
31  * Declare a file manager and a writer.
32  * \code
33  * OTF_FileManager* manager;
34  * OTF_Writer* writer;
35  * \endcode
36  *
37  * Initialize the file manager. Open at most 100 OS files.
38  * \code
39  * manager= OTF_FileManager_open( 100 );
40  * assert( manager );
41  * \endcode
42  *
43  * Initialize the writer. Open file "test", writing one stream.
44  * \code
45  * writer = OTF_Writer_open( "test", 1, manager );
46  * assert( writer );
47  * \endcode
48  *
49  * Write some important Definition Records.
50  * Have a look at the specific functions to see what the parameters mean.
51  * \code
52  * OTF_Writer_writeDefTimerResolution( writer, 0, 1000 );
53  * OTF_Writer_writeDefProcess( writer, 0, 1, "proc one", 0 );
54  * OTF_Writer_writeDefFunctionGroup( writer, 0, 1000, "all functions" );
55  * OTF_Writer_writeDefFunction( writer, 0, 1, "main", 1000, 0 );
56  * \endcode
57  *
58  *
59  * Write an enter and a leave record.
60  * time = 10000, 20000
61  * process = 1
62  * function = 1
63  * Sourcecode location doesn't matter, so it's zero.
64  * \code
65  * OTF_Writer_writeEnter( writer, 10000, 1, 1, 0 );
66  * OTF_Writer_writeLeave( writer, 20000, 1, 1, 0 );
67  * \endcode
68  *
69  * Clean up before exiting the program.
70  * \code
71  * OTF_Writer_close( writer );
72  * OTF_FileManager_close( manager );
73  *
74  * return 0;
75  * }
76  * \endcode
77  *
78  * Compile this using $ gcc -o test test.c `otfconfig --libs`.
79  *
80  */
81 
82 #ifndef OTF_WRITER_H
83 #define OTF_WRITER_H
84 
85 
86 #include "OTF_MasterControl.h"
87 #include "OTF_FileManager.h"
88 #include "OTF_WBuffer.h"
89 #include "OTF_WStream.h"
90 
91 
92 #ifdef __cplusplus
93 extern "C" {
94 #endif /* __cplusplus */
95 
96 /** writer object \ingroup writer */
98 
99 /* *** public member functions *** */
100 
101 
102 /**
103  * Create a new OTF_Writer instance with a given number of automatic streams.
104  *
105  * Setting the number of streams to 0 causes the OTF_Writer object to create a
106  * separate stream for each process. Important! Explicit calls to
107  * OTF_Writer_assignProcess() can lead to an overall number of streams which
108  * exceeds the initial number of streams in this call.
109  * OTF can reduce its file handle usage to a given number. Therefore, an
110  * initialized file manager instance is needed as parameter.
111  * See OTF_FileManager for further details.
112  *
113  * @param fileNamePrefix File name prefix which is going to be used by
114  * all sub-files which belong to the trace.
115  * @param numberOfStreams Initial number of independent data streams to
116  * be generated.
117  * @param fileManager File handle manager.
118  *
119  *
120  * @return Initialized OTF_Writer instance or 0 if a failure
121  * occurred.
122  *
123  * \ingroup writer
124  */
125 OTF_Writer* OTF_Writer_open( const char* fileNamePrefix,
126  uint32_t numberOfStreams,
127  OTF_FileManager* fileManager );
128 
129 
130 /**
131  * Close an OTF_Writer instance and all its related files.
132  *
133  * @param writer Pointer to an initialized OTF_Writer object. See
134  * also OTF_Writer_open().
135  *
136  * @return 1 if instance was closed successfully and 0 otherwise.
137  *
138  * \ingroup writer
139  */
140 int OTF_Writer_close( OTF_Writer* writer );
141 
142 
143 /**
144  * Close all streams that are open in this writer instance.
145  *
146  * @param writer Pointer to an initialized OTF_Writer object. See
147  * also OTF_Writer_open().
148  *
149  * @return 1 on success, 0 if an error occurs.
150  *
151  * \ingroup writer
152  */
154 
155 
156 /**
157  * Set the standard compression method for all buffers managed by this writer
158  *
159  * @param writer Pointer to an initialized OTF_Writer object. See
160  * also OTF_Writer_open().
161  *
162  * @param compression compression level to apply to all following streams
163  * 0-9, where 0 means no compression is applied, and 9 is
164  * the highest level of compression.
165  *
166  * @return 1 on success, 0 if an error occurs.
167  *
168  * \ingroup writer
169  */
170 int OTF_Writer_setCompression( OTF_Writer* writer, OTF_FileCompression
171  compression );
172 
173 
174 /**
175  * Return the standard compression method for all buffers managed by this writer
176  *
177  * @param writer Pointer to an initialized OTF_Writer object. See
178  * also OTF_Writer_open().
179  *
180  * @return Standard compression level for all buffers managed by
181  * this writer.
182  *
183  * \ingroup writer
184  */
185 OTF_FileCompression OTF_Writer_getCompression( OTF_Writer* writer );
186 
187 
188 /**
189  * Set the default buffer size for all buffers managed by this Writer.
190  * This is only effective for future buffers and will not change already
191  * allocated buffers. Those can be changed with the buffers directly.
192  *
193  * @param writer Pointer to an initialized OTF_Writer object. See
194  * also OTF_Writer_open().
195  *
196  * @param size Intended buffer size.
197  *
198  * \ingroup writer
199  */
200 void OTF_Writer_setBufferSizes( OTF_Writer* writer, uint32_t size );
201 
202 
203 /**
204  * Get the default buffer size for all buffers managed by this Writer.
205  *
206  * @param writer Pointer to an initialized OTF_Writer object. See
207  * also OTF_Writer_open().
208  *
209  * @return Default buffer size for all buffers managed by this Writer.
210  *
211  * \ingroup writer
212  */
213 uint32_t OTF_Writer_getBufferSizes( OTF_Writer* writer );
214 
215 
216 /**
217  * Set the default zbuffer size for all buffers managed by this Reader.
218  * This is only effective for future files and will not change already
219  * allocated zbuffers. Those can be changed with the files directly.
220  *
221  * @param writer Pointer to an initialized OTF_Writer object. See
222  * also OTF_Writer_open().
223  *
224  * @param size Intended zbuffer size.
225  *
226  * \ingroup writer
227  */
228 void OTF_Writer_setZBufferSizes( OTF_Writer* writer, uint32_t size );
229 
230 /**
231  * Get the default zbuffer size.
232  *
233  * @param writer Pointer to an initialized OTF_Writer object. See
234  * also OTF_Writer_open().
235  *
236  * @return zbuffer size.
237  *
238  * \ingroup writer
239  */
240 uint32_t OTF_Writer_getZBufferSizes( OTF_Writer* writer );
241 
242 /**
243  * Set the default ouput format. The format is applied to all streams opened by
244  * the writer.
245  *
246  * @param writer Pointer to an initialized OTF_Writer object. See
247  * also OTF_Writer_open().
248  *
249  * @param format Intended output format (OTF_WSTREAM_FORMAT_{LONG,SHORT}).
250  *
251  * \ingroup writer
252  */
253 void OTF_Writer_setFormat( OTF_Writer* writer, uint32_t format );
254 
255 
256 /**
257  * Get the default output format of all streams managed by this writer.
258  *
259  * @param writer Pointer to an initialized OTF_Writer object. See
260  * also OTF_Writer_open().
261  *
262  * @return Default output format.
263  *
264  * \ingroup writer
265  */
266 uint32_t OTF_Writer_getFormat( OTF_Writer* writer );
267 
268 
269 /**
270  * Explicitly assign a given process to a specific stream.
271  *
272  * Mind that 0 is not a valid stream or process identifier but a reserved
273  * value. By default, processes are automatically assigned to streams.
274  * Therefore, this call is optional.
275  *
276  * @param writer Pointer to an initialized OTF_Writer object. See
277  * also OTF_Writer_open().
278  * @param process Process identifier. See also OTF_Writer_writeDefProcess().
279  * @param stream Target stream identifier with
280  * 0 < stream <= number of streams as defined in
281  * OTF_Writer_open().
282  *
283  * @return 1 on success, 0 if an error occurs.
284  *
285  * \ingroup writer
286  */
287 uint32_t OTF_Writer_assignProcess( OTF_Writer* writer,
288  uint32_t process,
289  uint32_t stream );
290 
291 
292 /**
293  * Get a pointer to the master control object of the given writer instance.
294  *
295  * @param writer Pointer to an initialized OTF_Writer object. See
296  * also OTF_Writer_open().
297  *
298  * @return Pointer to a master control object. See OTF_MasterControl.
299  *
300  * \ingroup writer
301  */
303 
304 
305 /**
306  * Set an alternative master control object. Use this only right after
307  * initialization but never after having written some records already!
308  *
309  * @param writer Pointer to an initialized OTF_Writer object. See
310  * also OTF_Writer_open().
311  * @param mc new master control object
312  *
313  *
314  * \ingroup writer
315  */
317 
318 
319 /** For a process with id 'processId' return a stream id of the stream the
320  data is to be written to. If no mapping has been set so far it is defined
321  in a way such that it is added to the stream with the least processes.
322  \ingroup writer */
323 uint32_t OTF_Writer_mapProcess( OTF_Writer* writer, uint32_t processId );
324 
325 
326 /** Return the stream with the given stream id. If there is no such stream yet
327  create one and append it to 'streams'. \ingroup writer */
328 OTF_WStream* OTF_Writer_getStream( OTF_Writer* writer, uint32_t stream );
329 
330 
331 /* Methods for writing public definition records ************************** */
332 
333 
334 /**
335  * Write a comment record.
336  *
337  * @param writer Initialized OTF_Writer instance.
338  * @param stream Target stream identifier with
339  * 0 < stream <= number of streams as defined in
340  * OTF_Writer_open().
341  * @param comment Arbitrary comment string.
342  *
343  * @return 1 on success, 0 if an error occurs.
344  *
345  * \ingroup writer
346  */
348  uint32_t stream,
349  const char* comment );
350 
351 
352 /**
353  * Write a comment record including an OTF_KeyValueList.
354  *
355  * @param list Initialized OTF_KeyValueList() instance or NULL.
356  *
357  * @see OTF_Writer_writeDefinitionComment()
358  * \ingroup writer
359  */
361  uint32_t stream,
362  const char* comment,
363  OTF_KeyValueList* list );
364 
365 
366 /**
367  * Write the timer resolution definition record. All timed event records
368  * will be interpreted according to this definition. By default, a timer
369  * resultion of 1 us i.e. 1,000,000 clock ticks is assumed.
370  *
371  * @param writer Pointer to an initialized OTF_Writer object. See
372  * also OTF_Writer_open().
373  * @param stream Target stream identifier with
374  * 0 < stream <= number of streams as defined in
375  * OTF_Writer_open().
376  * @param ticksPerSecond Clock ticks per second of the timer.
377  *
378  * @return 1 on success, 0 if an error occurs.
379  *
380  * \ingroup writer
381  */
383  uint32_t stream,
384  uint64_t ticksPerSecond );
385 
386 
387 /**
388  * Write the timer resolution definition record including an OTF_KeyValueList.
389  *
390  * @param list Initialized OTF_KeyValueList() instance or NULL.
391  *
392  * @see OTF_Writer_writeTimerResolution()
393  * \ingroup writer
394  */
396  uint32_t stream,
397  uint64_t ticksPerSecond,
398  OTF_KeyValueList* list );
399 
400 
401 /**
402  * Write a process definition record.
403  *
404  * @param writer Pointer to an initialized OTF_Writer object. See
405  * also OTF_Writer_open().
406  * @param stream Target stream identifier with
407  * 0 < stream <= number of streams as defined in
408  * OTF_Writer_open().
409  * @param process Arbitrary but unique process identifier > 0.
410  * @param name Name of the process e.g. "Process X".
411  * @param parent Previously declared parent process identifier or 0 if
412  * process has no parent.
413  *
414  * @return 1 on success, 0 if an error occurs.
415  *
416  * \ingroup writer
417  */
419  uint32_t stream,
420  uint32_t process,
421  const char* name,
422  uint32_t parent );
423 
424 
425 /**
426  * Write a process definition record including an OTF_KeyValueList.
427  *
428  * @param list Initialized OTF_KeyValueList() instance or NULL.
429  *
430  * @see OTF_Writer_writeDefProcess()
431  * \ingroup writer
432  */
434  uint32_t stream,
435  uint32_t process,
436  const char* name,
437  uint32_t parent,
438  OTF_KeyValueList* list );
439 
440 
441 /**
442  * Write a process group definition record.
443  *
444  * OTF supports groups of processes. Their main objective is to classify
445  * processes depending on arbitrary characteristics. Processes can reside
446  * in multiple groups. This record type is optional.
447  *
448  * @param writer Pointer to an initialized OTF_Writer object. See
449  * also OTF_Writer_open().
450  * @param stream Target stream identifier with
451  * 0 < stream <= number of streams as defined in
452  * OTF_Writer_open().
453  * @param procGroup Arbitrary but unique process group identifier > 0.
454  * @param name Name of the process group e.g. "Well Balanced".
455  * @param numberOfProcs The number of processes in the process group.
456  * @param procs Vector of process identifiers or previously defined
457  * process group identifiers as defined with
458  * OTF_Writer_writeDefProcess() resp.
459  * OTF_Writer_writeDefProcessGroup.
460  *
461  * @return 1 on success, 0 if an error occurs.
462  *
463  * \ingroup writer
464  */
466  uint32_t stream,
467  uint32_t procGroup,
468  const char* name,
469  uint32_t numberOfProcs,
470  const uint32_t* procs );
471 
472 
473 /**
474  * Write a process group definition record including an OTF_KeyValueList.
475  *
476  * @param list Initialized OTF_KeyValueList() instance or NULL.
477  *
478  * @see OTF_Writer_writeDefProcessGroup()
479  * \ingroup writer
480  */
482  uint32_t stream,
483  uint32_t procGroup,
484  const char* name,
485  uint32_t numberOfProcs,
486  const uint32_t* procs,
487  OTF_KeyValueList* list );
488 
489 
490 /**
491  * Write an attribute list definition record.
492  *
493  * Defines a list of attributes that is assigned to a unique token.
494  *
495  * @param writer Pointer to an initialized OTF_Writer object. See
496  * also OTF_Writer_open().
497  * @param stream Target stream identifier with
498  * 0 < stream <= number of streams as defined in
499  * OTF_Writer_open().
500  * @param attr_token Arbitrary but unique attribute list identifier > 0.
501  * @param num Number of elements in the attribute list array.
502  * @param array An array of different attributes with type of OTF_ATTR_TYPE().
503  *
504  * @return 1 on success, 0 if an error occurs.
505  *
506  * \ingroup writer
507  */
509  uint32_t stream,
510  uint32_t attr_token,
511  uint32_t num,
512  OTF_ATTR_TYPE* array );
513 
514 
515 /**
516  * Write an attribute list definition record including an OTF_KeyValueList.
517  *
518  * @param list Initialized OTF_KeyValueList() instance or NULL.
519  *
520  * @see OTF_Writer_writeDefAttributeList()
521  * \ingroup writer
522  */
524  uint32_t stream,
525  uint32_t attr_token,
526  uint32_t num,
527  OTF_ATTR_TYPE* array,
528  OTF_KeyValueList* list );
529 
530 
531 /**
532  * Write a process or group attributes definition record.
533  *
534  * @param writer Pointer to an initialized OTF_Writer object. See
535  * also OTF_Writer_open().
536  * @param stream Target stream identifier with
537  * 0 < stream <= number of streams as defined in
538  * OTF_Writer_open().
539  * @param proc_token Arbitrary but unique process or process group identifier > 0.
540  * @param attr_token A unique token that was defined with OTF_Writer_writeDefAttributeList().
541  *
542  * @return 1 on success, 0 if an error occurs.
543  *
544  * \ingroup writer
545  */
547  uint32_t stream,
548  uint32_t proc_token,
549  uint32_t attr_token );
550 
551 
552 /**
553  * Write a process or group attributes definition record including an OTF_KeyValueList.
554  *
555  * @param list Initialized OTF_KeyValueList() instance or NULL.
556  *
557  * @see OTF_Writer_writeDefProcessOrGroupAttributes()
558  * \ingroup writer
559  */
561  uint32_t stream,
562  uint32_t proc_token,
563  uint32_t attr_token,
564  OTF_KeyValueList* list );
565 
566 
567 /**
568  * Write a function definition record.
569  *
570  * Defines a function of the given name. Functions can optionally belong to a
571  * certain function group to be defined with the
572  * OTF_Writer_writeDefFunctionGroup() call. A source code reference can
573  * be added to the definition aswell.
574  *
575  * @param writer Pointer to an initialized OTF_Writer object. See
576  * also OTF_Writer_open().
577  * @param stream Target stream identifier with
578  * 0 < stream <= number of streams as defined in
579  * OTF_Writer_open().
580  * @param func Arbitrary but unique function identifier > 0.
581  * @param name Name of the function e.g. "DoSomething".
582  * @param funcGroup A function group identifier preliminary defined with
583  * OTF_Writer_writeDefFunctionGroup() or 0 for no
584  * function group assignment.
585  * @param source Reference to the function's source code location
586  * preliminary defined with OTF_Writer_writeDefScl() or
587  * 0 for no source code location assignment.
588  *
589  * @return 1 on success, 0 if an error occurs.
590  *
591  * \ingroup writer
592  */
594  uint32_t stream,
595  uint32_t func,
596  const char* name,
597  uint32_t funcGroup,
598  uint32_t source );
599 
600 
601 /**
602  * Write a function definition record including an OTF_KeyValueList.
603  *
604  * @param list Initialized OTF_KeyValueList() instance or NULL.
605  *
606  * @see OTF_Writer_writeDefFunction()
607  * \ingroup writer
608  */
610  uint32_t stream,
611  uint32_t func,
612  const char* name,
613  uint32_t funcGroup,
614  uint32_t source,
615  OTF_KeyValueList* list );
616 
617 
618 /**
619  * Write a function group definition record.
620  *
621  * @param writer Pointer to an initialized OTF_Writer object. See
622  * also OTF_Writer_open().
623  * @param stream Target stream identifier with
624  * 0 < stream <= number of streams as defined in
625  * OTF_Writer_open().
626  * @param funcGroup An arbitrary but unique function group identifier > 0.
627  * @param name Name of the function group e.g. "Computation".
628  *
629  * @return 1 on success, 0 if an error occurs.
630  *
631  * \ingroup writer
632  */
634  uint32_t stream,
635  uint32_t funcGroup,
636  const char* name );
637 
638 
639 /**
640  * Write a function group definition record including an OTF_KeyValueList.
641  *
642  * @param list Initialized OTF_KeyValueList() instance or NULL.
643  *
644  * @see OTF_Writer_writeDefFunctionGroup()
645  * \ingroup writer
646  */
648  uint32_t stream,
649  uint32_t funcGroup,
650  const char* name,
651  OTF_KeyValueList* list );
652 
653 
654 /**
655  * Write a collective operation definition record.
656  *
657  * @param writer Initialized OTF_Writer instance.
658  * @param stream Target stream identifier with
659  * 0 < stream <= number of streams as defined in
660  * OTF_Writer_open().
661  * @param collOp An arbitrary but unique collective op. identifier > 0.
662  * @param name Name of the collective operation e.g. "MPI_Bcast".
663  * @param type One of the five supported collective classes:
664  * OTF_COLLECTIVE_TYPE_UNKNOWN (default),
665  * OTF_COLLECTIVE_TYPE_BARRIER,
666  * OTF_COLLECTIVE_TYPE_ONE2ALL,
667  * OTF_COLLECTIVE_TYPE_ALL2ONE,
668  * OTF_COLLECTIVE_TYPE_ALL2ALL.
669  *
670  * @return 1 on success, 0 if an error occurs.
671  *
672  * \ingroup writer
673  */
675  uint32_t stream,
676  uint32_t collOp,
677  const char* name,
678  uint32_t type );
679 
680 
681 /**
682  * Write a collective operation definition record including an OTF_KeyValueList.
683  *
684  * @param list Initialized OTF_KeyValueList() instance or NULL.
685  *
686  * @see OTF_Writer_writeDefCollectiveOperation()
687  * \ingroup writer
688  */
690  uint32_t stream,
691  uint32_t collOp,
692  const char* name,
693  uint32_t type,
694  OTF_KeyValueList* list );
695 
696 
697 /**
698  * Write a counter definition record.
699  *
700  * @param writer Initialized OTF_Writer instance.
701  * @param stream Target stream identifier with
702  * 0 < stream <= number of streams as defined in
703  * OTF_Writer_open().
704  * @param counter An arbitrary but unique counter identifier.
705  * @param name Name of the counter e.g. "Cache Misses".
706  * @param properties A combination of a type and scope counter property.
707  * OTF_COUNTER_TYPE_ACC (default) represents a counter
708  * with monotonously increasing values e.g. a FLOP
709  * counter. OTF_COUNTER_TYPE_ABS on the other hand
710  * defines a counter with alternating absolute values e.g.
711  * the memory usage of a process. The following counter
712  * measurement scopes are supported:
713  * OTF_COUNTER_SCOPE_START (default) always refers to the
714  * start of the process, OTF_COUNTER_SCOPE_POINT refers
715  * to exactly this moment in time, OTF_COUNTER_SCOPE_LAST
716  * relates to the previous measurement, and
717  * OTF_COUNTER_SCOPE_NEXT to the next measurement.
718  * Examples: OTF_COUNTER_TYPE_ACC +
719  * OTF_COUNTER_SCOPE_START should be used for most
720  * standard hardware (PAPI) counters.
721  * OTF_COUNTER_TYPE_ABS + OTF_COUNTER_SCOPE_POINT could
722  * be used to record information 'spikes'.
723  * OTF_COUNTER_TYPE_ABS + OTF_COUNTER_SCOPE_NEXT works
724  * for memory allocation recording.
725  * @param counterGroup A previously defined counter group identifier or 0
726  * for no group.
727  * @param unit Unit of the counter e.g. "#" for "number of..." or 0
728  * for no unit.
729  *
730  * @return 1 on success, 0 if an error occurs.
731  *
732  * \ingroup writer
733  */
735  uint32_t stream,
736  uint32_t counter,
737  const char* name,
738  uint32_t properties,
739  uint32_t counterGroup,
740  const char* unit );
741 
742 
743 /**
744  * Write a counter definition record including an OTF_KeyValueList.
745  *
746  * @param list Initialized OTF_KeyValueList() instance or NULL.
747  *
748  * @see OTF_Writer_writeDefCounter()
749  * \ingroup writer
750  */
752  uint32_t stream,
753  uint32_t counter,
754  const char* name,
755  uint32_t properties,
756  uint32_t counterGroup,
757  const char* unit,
758  OTF_KeyValueList* list );
759 
760 
761 /**
762  * Write a counter group definition record.
763  *
764  * @param writer Initialized OTF_Writer instance.
765  * @param stream Target stream identifier with
766  * 0 < stream <= number of streams as defined in
767  * OTF_Writer_open().
768  * @param counterGroup An arbitrary but unique counter group identifier.
769  * @param name Counter group name.
770  *
771  * @return 1 on success, 0 if an error occurs.
772  *
773  * \ingroup writer
774  */
776  uint32_t stream,
777  uint32_t counterGroup,
778  const char* name );
779 
780 
781 /**
782  * Write a counter group definition record including an OTF_KeyValueList.
783  *
784  * @param list Initialized OTF_KeyValueList() instance or NULL.
785  *
786  * @see OTF_Writer_writeDefCounterGroup()
787  * \ingroup writer
788  */
790  uint32_t stream,
791  uint32_t counterGroup,
792  const char* name,
793  OTF_KeyValueList* list );
794 
795 
796 /**
797  * Write a source code location (SCL) record.
798  *
799  * @param writer Initialized OTF_Writer instance.
800  * @param stream Target stream identifier with
801  * 0 < stream <= number of streams as defined in
802  * OTF_Writer_open().
803  * @param source Arbitrary but unique source code location
804  * identifier > 0.
805  * @param sourceFile Previously defined source file identifier. See
806  * OTF_Writer_writeDefSclFile().
807  * @param line Line number.
808  *
809  * @return 1 on success, 0 if an error occurs.
810  *
811  * \ingroup writer
812  */
814  uint32_t stream,
815  uint32_t source,
816  uint32_t sourceFile,
817  uint32_t line );
818 
819 
820 /**
821  * Write a source code location (SCL) record including an OTF_KeyValueList.
822  *
823  * @param list Initialized OTF_KeyValueList() instance or NULL.
824  *
825  * @see OTF_Writer_writeDefScl()
826  * \ingroup writer
827  */
829  uint32_t stream,
830  uint32_t source,
831  uint32_t sourceFile,
832  uint32_t line,
833  OTF_KeyValueList* list );
834 
835 
836 /**
837  * Write a source code location (SCL) file record.
838  *
839  * @param writer Initialized OTF_Writer instance.
840  * @param stream Target stream identifier with
841  * 0 < stream <= number of streams as defined in
842  * OTF_Writer_open().
843  * @param sourceFile Arbitrary but unique source code location
844  * identifier != 0.
845  * @param name File name.
846  *
847  * @return 1 on success, 0 if an error occurs.
848  *
849  * \ingroup writer
850  */
852  uint32_t stream,
853  uint32_t sourceFile,
854  const char* name );
855 
856 
857 /**
858  * Write a source code location (SCL) file record including an OTF_KeyValueList.
859  *
860  * @param list Initialized OTF_KeyValueList() instance or NULL.
861  *
862  * @see OTF_Writer_writeDefSclFile()
863  * \ingroup writer
864  */
866  uint32_t stream,
867  uint32_t sourceFile,
868  const char* name,
869  OTF_KeyValueList* list );
870 
871 
872 /**
873  * depricated. The Otf-Version-record is generated automatically at beginning of
874  * tracing in the global definiton stream.
875  *
876  * \ingroup writer
877  */
878 int OTF_Writer_writeOtfVersion( OTF_Writer* writer, uint32_t stream );
879 
880 
881 /**
882  * Write a creator record.
883  *
884  * @param writer Initialized OTF_Writer instance.
885  * @param stream Target stream identifier with
886  * 0 < stream <= number of streams as defined in
887  * OTF_Writer_open().
888  * @param creator String which identifies the creator of the
889  * file e.g. "TAU Version x.y.z".
890  *
891  * @return 1 on success, 0 if an error occurs.
892  *
893  * \ingroup writer
894  */
895 int OTF_Writer_writeDefCreator( OTF_Writer* writer, uint32_t stream,
896  const char* creator );
897 
898 
899 /**
900  * Write a creator record including an OTF_KeyValueList.
901  *
902  * @param list Initialized OTF_KeyValueList() instance or NULL.
903  *
904  * @see OTF_Writer_writeDefCreator()
905  * \ingroup writer
906  */
907 int OTF_Writer_writeDefCreatorKV( OTF_Writer* writer, uint32_t stream,
908  const char* creator,
909  OTF_KeyValueList* list );
910 
911 
912 
913 
914 /**
915  * Write a file definition record
916  *
917  * @param writer Initialized OTF_Writer instance.
918  * @param stream Target stream identifier with
919  * 0 < stream <= number of streams as defined in
920  * OTF_Writer_open().
921  * @param token Arbitrary, unique identifier for the file.
922  * Has to be > 0.
923  * @param name Name of the file.
924  * @param group File group identifier or 0 for no group.
925  *
926  * @return 1 on success, 0 if an error occurs.
927  *
928  * \ingroup writer
929  */
931  uint32_t stream,
932  uint32_t token,
933  const char* name,
934  uint32_t group );
935 
936 
937 /**
938  * Write a file definition record including an OTF_KeyValueList.
939  *
940  * @param list Initialized OTF_KeyValueList() instance or NULL.
941  *
942  * @see OTF_Writer_writeDefFile()
943  * \ingroup writer
944  */
946  uint32_t stream,
947  uint32_t token,
948  const char* name,
949  uint32_t group,
950  OTF_KeyValueList* list );
951 
952 
953 /**
954  * Write a file group definition record
955  *
956  * @param writer Initialized OTF_Writer instance.
957  * @param stream Target stream identifier with
958  * 0 < stream <= number of streams as defined in
959  * OTF_Writer_open().
960  * @param token Arbitrary, unique identifier for the file group.
961  * Has to be > 0.
962  * @param name Name of the file group.
963  *
964  * @return 1 on success, 0 if an error occurs.
965  *
966  * \ingroup writer
967  */
969  uint32_t stream,
970  uint32_t token,
971  const char* name );
972 
973 
974 /**
975  * Write a file group definition record including an OTF_KeyValueList.
976  *
977  * @param list Initialized OTF_KeyValueList() instance or NULL.
978  *
979  * @see OTF_Writer_writeDefFileGroup()
980  * \ingroup writer
981  */
983  uint32_t stream,
984  uint32_t token,
985  const char* name,
986  OTF_KeyValueList* list );
987 
988 
989 /**
990  * Write a key value definition record
991  *
992  * @param writer Initialized OTF_Writer instance.
993  * @param stream Target stream identifier with
994  * 0 < stream <= number of streams as defined in
995  * OTF_Writer_open().
996  * @param key Arbitrary, unique identifier for the key value pair.
997  * @param type Type of the key.
998  * @param name Name of the key value pair.
999  * @param description Description of the key value pair.
1000  *
1001  * @return 1 on success, 0 if an error occurs.
1002  *
1003  * \ingroup writer
1004  */
1006  uint32_t stream,
1007  uint32_t key,
1008  OTF_Type type,
1009  const char* name,
1010  const char* description );
1011 
1012 
1013 /**
1014  * Write a key value definition record including an OTF_KeyValueList.
1015  *
1016  * @param list Initialized OTF_KeyValueList() instance or NULL.
1017  *
1018  * @see OTF_Writer_writeDefKeyValue()
1019  * \ingroup writer
1020  */
1022  uint32_t stream,
1023  uint32_t key,
1024  OTF_Type type,
1025  const char* name,
1026  const char* description,
1027  OTF_KeyValueList* list );
1028 
1029 
1030 /**
1031  * Writes a TimeRange definition
1032  *
1033  * @param userData Pointer to user data which can be set with
1034  * OTF_HandlerArray_setFirstHandlerArg().
1035  * @param streamid Identifies the stream to which this definition
1036  * belongs to. stream = 0 represents a global
1037  * definition.
1038  *
1039  * @param minTime The smallest timestamp of the events in this @a streamid.
1040  *
1041  * @param maxTime The greates timestamp of the events in this @a streamid (inclusive).
1042  *
1043  * @param list Pointer to an OTF_KeyValueList() that contains individual data.
1044  *
1045  * @return 1 on success, 0 if an error occurs.
1046  *
1047  * \ingroup writer
1048  */
1050  uint32_t streamid,
1051  uint64_t minTime,
1052  uint64_t maxTime,
1053  OTF_KeyValueList* list );
1054 
1055 /**
1056  * Writes a CounterAssignments definition
1057  *
1058  * @param userData Pointer to user data which can be set with
1059  * OTF_HandlerArray_setFirstHandlerArg().
1060  * @param streamid Identifies the stream to which this definition
1061  * belongs to. stream = 0 represents a global
1062  * definition.
1063  *
1064  * @param counter_token Counter id.
1065  *
1066  * @param number_of_members Number of entries in @procs_or_groups array.
1067  *
1068  * @param procs_or_groups The processes or process groups which have recorded
1069  * counter data for counter @counter_token.
1070  *
1071  * @param list Pointer to an OTF_KeyValueList() that contains individual data.
1072  *
1073  * @return 1 on success, 0 if an error occurs.
1074  *
1075  * \ingroup writer
1076  */
1078  uint32_t streamid,
1079  uint32_t counter_token,
1080  uint32_t number_of_members,
1081  const uint32_t* procs_or_groups,
1082  OTF_KeyValueList* list );
1083 
1084 
1085 /**
1086  * Writes a ProcessSubstitutes definition record
1087  *
1088  * @param userData Pointer to user data which can be set with
1089  * OTF_HandlerArray_setFirstHandlerArg().
1090  * @param streamid Identifies the stream to which this definition
1091  * belongs to. stream = 0 represents a global
1092  * definition.
1093  *
1094  * @param representative Process ID of the process that represents several others.
1095  *
1096  * @param numberOfProcs Number of entries in @procs array.
1097  *
1098  * @param procs The processes which are represented by
1099  * @representative. It may or may not include
1100  * @representative itself.
1101  *
1102  * @param list Pointer to an OTF_KeyValueList() that contains individual data.
1103  *
1104  * @return 1 on success, 0 if an error occurs.
1105  *
1106  * \ingroup writer
1107  */
1109  uint32_t streamid,
1110  uint32_t representative,
1111  uint32_t numberOfProcs,
1112  const uint32_t* procs,
1113  OTF_KeyValueList* list );
1114 
1115 
1116 /**
1117  * Write a no-operation record. This can be used to write an OTF_KeyValueList
1118  * that is not attached to a special event record.
1119  *
1120  * @param writer Initialized OTF_Writer instance.
1121  * @param time The time when the NoOp event took place.
1122  * @param process Process where action took place.
1123  * @param list Initialized OTF_KeyValueList() instance or NULL.
1124  *
1125  * @return 1 on success, 0 if an error occurs.
1126  *
1127  * \ingroup writer
1128  */
1129 int OTF_Writer_writeNoOpKV( OTF_Writer* writer,
1130  uint64_t time,
1131  uint32_t process,
1132  OTF_KeyValueList* list );
1133 
1134 
1135 /**
1136  * Write a function entry record.
1137  *
1138  * @param writer Initialized OTF_Writer instance.
1139  * @param time The time when the function entry took place.
1140  * @param function Function to be entered as defined with
1141  * OTF_Writer_defFunction.
1142  * @param process Process where action took place.
1143  * @param source Optional reference to source code.
1144  *
1145  * @return 1 on success, 0 if an error occurs.
1146  *
1147  * \ingroup writer
1148  */
1149 int OTF_Writer_writeEnter( OTF_Writer* writer,
1150  uint64_t time,
1151  uint32_t function,
1152  uint32_t process,
1153  uint32_t source );
1154 
1155 
1156 /**
1157  * Write a function entry record including an OTF_KeyValueList.
1158  *
1159  * @param list Initialized OTF_KeyValueList() instance or NULL.
1160  *
1161  * @see OTF_Writer_writeEnter()
1162  * \ingroup writer
1163  */
1164 int OTF_Writer_writeEnterKV( OTF_Writer* writer,
1165  uint64_t time,
1166  uint32_t function,
1167  uint32_t process,
1168  uint32_t source,
1169  OTF_KeyValueList* list );
1170 
1171 
1172 /**
1173  * Write a function leave record.
1174  *
1175  * @param writer Initialized OTF_Writer instance.
1176  * @param time The time when the function leave took place.
1177  * @param function Function which was left or 0 if stack integrety checking
1178  * is not needed.
1179  * @param process Process where action took place.
1180  * @param source Explicit source code location or 0.
1181  *
1182  * @return 1 on success, 0 if an error occurs.
1183  *
1184  * \ingroup writer
1185  */
1186 int OTF_Writer_writeLeave( OTF_Writer* writer,
1187  uint64_t time,
1188  uint32_t function,
1189  uint32_t process,
1190  uint32_t source );
1191 
1192 
1193 /**
1194  * Write a function leave record including an OTF_KeyValueList.
1195  *
1196  * @param list Initialized OTF_KeyValueList() instance or NULL.
1197  *
1198  * @see OTF_Writer_writeLeave()
1199  * \ingroup writer
1200  */
1201 int OTF_Writer_writeLeaveKV( OTF_Writer* writer,
1202  uint64_t time,
1203  uint32_t function,
1204  uint32_t process,
1205  uint32_t source,
1206  OTF_KeyValueList* list );
1207 
1208 
1209 /**
1210  * Write a message retrieval record.
1211  *
1212  * @param writer Initialized OTF_Writer instance.
1213  * @param time The time when the message was received.
1214  * @param receiver Identifier of receiving process.
1215  * @param sender Identifier of sending process.
1216  * @param procGroup Optional process-group sender and receiver belong to,
1217  * '0' for no group.
1218  * @param tag Optional message type information.
1219  * @param length Optional message length information.
1220  * @param source Optional reference to source code.
1221  *
1222  * @return 1 on success, 0 if an error occurs.
1223  *
1224  * \ingroup writer
1225  */
1226 int OTF_Writer_writeRecvMsg( OTF_Writer* writer,
1227  uint64_t time,
1228  uint32_t receiver,
1229  uint32_t sender,
1230  uint32_t procGroup,
1231  uint32_t tag,
1232  uint32_t length,
1233  uint32_t source );
1234 
1235 
1236 /**
1237  * Write a message retrieval record including an OTF_KeyValueList.
1238  *
1239  * @param list Initialized OTF_KeyValueList() instance or NULL.
1240  *
1241  * @see OTF_Writer_writeRecvMsg()
1242  * \ingroup writer
1243  */
1245  uint64_t time,
1246  uint32_t receiver,
1247  uint32_t sender,
1248  uint32_t procGroup,
1249  uint32_t tag,
1250  uint32_t length,
1251  uint32_t source,
1252  OTF_KeyValueList* list );
1253 
1254 
1255 /**
1256  * Write a message send record.
1257  *
1258  * @param writer Initialized OTF_Writer instance.
1259  * @param time The time when the message was send.
1260  * @param sender Sender of the message.
1261  * @param receiver Receiver of the message.
1262  * @param procGroup Optional process-group sender and receiver belong to,
1263  * '0' for no group.
1264  * @param tag Optional message type information.
1265  * @param length Optional message length information.
1266  * @param source Optional reference to source code.
1267  *
1268  * @return 1 on success, 0 if an error occurs.
1269  *
1270  * \ingroup writer
1271  */
1272 int OTF_Writer_writeSendMsg( OTF_Writer* writer,
1273  uint64_t time,
1274  uint32_t sender,
1275  uint32_t receiver,
1276  uint32_t procGroup,
1277  uint32_t tag,
1278  uint32_t length,
1279  uint32_t source );
1280 
1281 
1282 /**
1283  * Write a message send record including an OTF_KeyValueList.
1284  *
1285  * @param list Initialized OTF_KeyValueList() instance or NULL.
1286  *
1287  * @see OTF_Writer_writeSendMsg()
1288  * \ingroup writer
1289  */
1291  uint64_t time,
1292  uint32_t sender,
1293  uint32_t receiver,
1294  uint32_t procGroup,
1295  uint32_t tag,
1296  uint32_t length,
1297  uint32_t source,
1298  OTF_KeyValueList* list );
1299 
1300 
1301 /**
1302  * Write a counter measurement record.
1303  *
1304  * @param writer Initialized OTF_Writer instance.
1305  * @param time Time when counter was measured.
1306  * @param process Process where counter measurment took place.
1307  * @param counter Counter which was measured.
1308  * @param value Counter value.
1309  *
1310  * @return 1 on success, 0 if an error occurs.
1311  *
1312  * \ingroup writer
1313  */
1314 int OTF_Writer_writeCounter( OTF_Writer* writer,
1315  uint64_t time,
1316  uint32_t process,
1317  uint32_t counter,
1318  uint64_t value );
1319 
1320 
1321 /**
1322  * Write a counter measurement record including an OTF_KeyValueList.
1323  *
1324  * @param list Initialized OTF_KeyValueList() instance or NULL.
1325  *
1326  * @see OTF_Writer_writeCounter()
1327  * \ingroup writer
1328  */
1330  uint64_t time,
1331  uint32_t process,
1332  uint32_t counter,
1333  uint64_t value,
1334  OTF_KeyValueList* list );
1335 
1336 
1337 /**
1338  * Write a collective operation member record.
1339  * @deprecated This event record has been deprecated due to usage constraints.
1340  * Please use OTF_Writer_writeBeginCollectiveOperation() and
1341  * OTF_Writer_writeEndCollectiveOperation(), repectively.
1342  *
1343  * @param writer Initialized OTF_Writer instance.
1344  * @param time Time when collective operation was entered by member.
1345  * @param process Process identifier i.e. collective member.
1346  * @param collective Collective identifier to be defined with
1347  * OTF_Writer_writeDefCollectiveOperation().
1348  * @param procGroup Group of processes participating in this collective.
1349  * @param rootProc Root process if != 0.
1350  * @param sent Data volume sent by member or 0.
1351  * @param received Data volumd received by member or 0.
1352  * @param duration Time spent in collective operation.
1353  * @param source Explicit source code location or 0.
1354  *
1355  * @return 1 on success, 0 if an error occurs.
1356  *
1357  * \ingroup writer
1358  */
1360  uint64_t time,
1361  uint32_t process,
1362  uint32_t collective,
1363  uint32_t procGroup,
1364  uint32_t rootProc,
1365  uint32_t sent,
1366  uint32_t received,
1367  uint64_t duration,
1368  uint32_t source );
1369 
1370 
1371 /**
1372  * Write a collective operation member record including an OTF_KeyValueList.
1373  * @deprecated This event record has been deprecated due to usage constraints.
1374  * Please use OTF_Writer_writeBeginCollectiveOperationEV() and
1375  * OTF_Writer_writeEndCollectiveOperationEV(), repectively.
1376  *
1377  * @param list Initialized OTF_KeyValueList() instance or NULL.
1378  *
1379  * @see OTF_Writer_writeCollectiveOperation()
1380  * \ingroup writer
1381  */
1383  uint64_t time,
1384  uint32_t process,
1385  uint32_t collective,
1386  uint32_t procGroup,
1387  uint32_t rootProc,
1388  uint32_t sent,
1389  uint32_t received,
1390  uint64_t duration,
1391  uint32_t source,
1392  OTF_KeyValueList* list );
1393 
1394 
1395 /**
1396  * Write a begin collective operation member record.
1397  *
1398  * @param writer Initialized OTF_Writer instance.
1399  * @param time Time when collective operation was entered by member.
1400  * @param process Process identifier i.e. collective member.
1401  * @param collOp Collective identifier to be defined with
1402  * OTF_Writer_writeDefCollectiveOperation().
1403  * @param matchingId Identifier for finding the associated end collective event
1404  * record. It must be unique within this procGroup.
1405  * @param procGroup Group of processes participating in this collective.
1406  * @param rootProc Root process if != 0.
1407  * @param sent Data volume sent by member or 0.
1408  * @param received Data volume received by member or 0.
1409  * @param scltoken Explicit source code location or 0.
1410  *
1411  * @return 1 on success, 0 if an error occurs.
1412  *
1413  * \ingroup writer
1414  */
1416  uint64_t time,
1417  uint32_t process,
1418  uint32_t collOp,
1419  uint64_t matchingId,
1420  uint32_t procGroup,
1421  uint32_t rootProc,
1422  uint64_t sent,
1423  uint64_t received,
1424  uint32_t scltoken );
1425 
1426 
1427 /**
1428  * Write a begin collective operation member record including an OTF_KeyValueList.
1429  *
1430  * @param list Initialized OTF_KeyValueList() instance or NULL.
1431  *
1432  * @see OTF_Writer_writeBeginCollectiveOperation()
1433  * \ingroup writer
1434  */
1436  uint64_t time,
1437  uint32_t process,
1438  uint32_t collOp,
1439  uint64_t matchingId,
1440  uint32_t procGroup,
1441  uint32_t rootProc,
1442  uint64_t sent,
1443  uint64_t received,
1444  uint32_t scltoken,
1445  OTF_KeyValueList* list );
1446 
1447 
1448 /**
1449  * Write an end collective operation member record.
1450  *
1451  * @param writer Initialized OTF_Writer instance.
1452  * @param time Time when collective operation was entered by member.
1453  * @param process Process identifier i.e. collective member.
1454  * @param matchingId Matching identifier, must match a previous start
1455  * collective operation.
1456  *
1457  * @return 1 on success, 0 if an error occurs.
1458  *
1459  * \ingroup writer
1460  */
1462  uint64_t time,
1463  uint32_t process,
1464  uint64_t matchingId );
1465 
1466 
1467 /**
1468  * Write an end collective operation member record including an OTF_KeyValueList.
1469  *
1470  * @param list Initialized OTF_KeyValueList() instance or NULL.
1471  *
1472  * @see OTF_Writer_writeEndCollectiveOperation()
1473  * \ingroup writer
1474  */
1476  uint64_t time,
1477  uint32_t process,
1478  uint64_t matchingId,
1479  OTF_KeyValueList* list );
1480 
1481 
1482 /**
1483  * Write a comment record.
1484  *
1485  * @param writer Initialized OTF_Writer instance.
1486  * @param time Comments need a timestamp for a proper positioning in the
1487  * trace.
1488  * @param process Comments also need a process identifier for a proper
1489  * positioning in the trace.
1490  * @param comment Arbitrary comment string.
1491  *
1492  * @return 1 on success, 0 if an error occurs.
1493  *
1494  * \ingroup writer
1495  */
1496 
1498  uint64_t time,
1499  uint32_t process,
1500  const char* comment );
1501 
1502 
1503 /**
1504  * Write a comment record including an OTF_KeyValueList.
1505  *
1506  * @param list Initialized OTF_KeyValueList() instance or NULL.
1507  *
1508  * @see OTF_Writer_writeEventComment()
1509  * \ingroup writer
1510  */
1512  uint64_t time,
1513  uint32_t process,
1514  const char* comment,
1515  OTF_KeyValueList* list );
1516 
1517 
1518 /**
1519  * Write a begin process record
1520  *
1521  * @param writer Initialized OTF_Writer instance.
1522  * @param time Time when process was referenced for the first time.
1523  * @param process Process identifier > 0.
1524  *
1525  * @return 1 on success, 0 if an error occurs.
1526  *
1527  * \ingroup writer
1528  */
1529 
1531  uint64_t time,
1532  uint32_t process );
1533 
1534 
1535 /**
1536  * Write a begin process record including an OTF_KeyValueList.
1537  *
1538  * @param list Initialized OTF_KeyValueList() instance or NULL.
1539  *
1540  * @see OTF_Writer_writeBeginProcess()
1541  * \ingroup writer
1542  */
1544  uint64_t time,
1545  uint32_t process,
1546  OTF_KeyValueList* list );
1547 
1548 
1549 /**
1550  * Write a end process record
1551  *
1552  * @param writer Initialized OTF_Writer instance.
1553  * @param time Time when process was referenced for the last time.
1554  * @param process Process identifier > 0.
1555  *
1556  * @return 1 on success, 0 if an error occurs.
1557  *
1558  * \ingroup writer
1559  */
1560 
1562  uint64_t time,
1563  uint32_t process );
1564 
1565 
1566 /**
1567  * Write a end process record including an OTF_KeyValueList.
1568  *
1569  * @param list Initialized OTF_KeyValueList() instance or NULL.
1570  *
1571  * @see OTF_Writer_writeEndProcess()
1572  * \ingroup writer
1573  */
1575  uint64_t time,
1576  uint32_t process,
1577  OTF_KeyValueList* list );
1578 
1579 
1580 /**
1581  * Write a file operation record
1582  * @deprecated This event record has been deprecated due to usage constraints.
1583  * Please use OTF_Writer_writeBeginFileOperation() and
1584  * OTF_Writer_writeEndFileOperation(), respectively.
1585  *
1586  * @param writer Initialized OTF_Writer instance.
1587  * @param time Start time of the file operation.
1588  * @param fileid File identifier > 0.
1589  * @param handleid File open identifier.
1590  * @param process Process identifier > 0.
1591  * @param operation Type of file operation @see OTF_Handler_FileOperation()
1592  * @param bytes Depends on operation @see OTF_Handler_FileOperation()
1593  * @param duration time spent in the file operation
1594  *
1595  * @return 1 on success, 0 if an error occurs.
1596  *
1597  * \ingroup writer
1598  */
1600  uint64_t time,
1601  uint32_t fileid,
1602  uint32_t process,
1603  uint64_t handleid,
1604  uint32_t operation,
1605  uint64_t bytes,
1606  uint64_t duration,
1607  uint32_t source );
1608 
1609 
1610 /**
1611  * Write a file operation record including an OTF_KeyValueList.
1612  * @deprecated This event record has been deprecated due to usage constraints.
1613  * Please use OTF_Writer_writeBeginFileOperationKV() and
1614  * OTF_Writer_writeEndFileOperationKV(), respectively.
1615  *
1616  * @param list Initialized OTF_KeyValueList() instance or NULL.
1617  *
1618  * @see OTF_Writer_writeFileOperation()
1619  * \ingroup writer
1620  */
1622  uint64_t time,
1623  uint32_t fileid,
1624  uint32_t process,
1625  uint64_t handleid,
1626  uint32_t operation,
1627  uint64_t bytes,
1628  uint64_t duration,
1629  uint32_t source,
1630  OTF_KeyValueList* list );
1631 
1632 
1633 /**
1634  * Write a begin file operation record
1635  *
1636  * @param writer Initialized OTF_Writer instance.
1637  * @param time Start time of file operation.
1638  * @param process Process identifier > 0.
1639  * @param matchingId Operation identifier, used for finding the associated end
1640  * file operation event record.
1641  * @param scltoken Optional reference to source code.
1642  *
1643  * @return 1 on success, 0 if an error occurs.
1644  *
1645  * \ingroup writer
1646  */
1648  uint64_t time,
1649  uint32_t process,
1650  uint64_t matchingId,
1651  uint32_t scltoken );
1652 
1653 
1654 /**
1655  * Write a begin file operation record including an OTF_KeyValueList.
1656  *
1657  * @param list Initialized OTF_KeyValueList() instance or NULL.
1658  *
1659  * @see OTF_Writer_writeBeginFileOperation()
1660  * \ingroup writer
1661  */
1663  uint64_t time,
1664  uint32_t process,
1665  uint64_t matchingId,
1666  uint32_t scltoken,
1667  OTF_KeyValueList* list );
1668 
1669 
1670 /**
1671  * Write an end file operation record
1672  *
1673  * @param writer Initialized OTF_Writer instance.
1674  * @param time End time of file operation.
1675  * @param process Process identifier > 0.
1676  * @param fileid File identifier > 0.
1677  * @param matchingId Operation identifier, must match a previous start file
1678  * operation event record.
1679  * @param handleId Unique file open identifier.
1680  * @param operation Type of file operation @see OTF_Handler_FileOperation()
1681  * @param bytes Depends on operation @see OTF_Handler_FileOperation()
1682  * @param scltoken Optional reference to source code.
1683  *
1684  * @return 1 on success, 0 if an error occurs.
1685  *
1686  * \ingroup writer
1687  */
1689  uint64_t time,
1690  uint32_t process,
1691  uint32_t fileid,
1692  uint64_t matchingId,
1693  uint64_t handleId,
1694  uint32_t operation,
1695  uint64_t bytes,
1696  uint32_t scltoken );
1697 
1698 
1699 /**
1700  * Write an end file operation record including an OTF_KeyValueList.
1701  *
1702  * @param list Initialized OTF_KeyValueList() instance or NULL.
1703  *
1704  * @see OTF_Writer_writeEndFileOperation()
1705  * \ingroup writer
1706  */
1708  uint64_t time,
1709  uint32_t process,
1710  uint32_t fileid,
1711  uint64_t matchingId,
1712  uint64_t handleId,
1713  uint32_t operation,
1714  uint64_t bytes,
1715  uint32_t scltoken,
1716  OTF_KeyValueList* list );
1717 
1718 
1719 /**
1720  * Write a RMA put record - local end record.
1721  * The end of this transfer is marked by the NEXT end record on this <process>
1722  * with the same communicator/tag pair.
1723  *
1724  * @param writer Initialized OTF_Writer instance.
1725  * @param time Time when process was referenced for the last time.
1726  * @param process Process initiating the transfer.
1727  * @param origin If >0, Process whose memory will be transferred, instead
1728  of this <process>.
1729  * @param target Process whose memory will be written.
1730  * @param communicator Together with tag, it is used to identify the
1731  * corresponding RMA end record.
1732  * @param tag Together with communicator, it is used to identify the
1733  * corresponding RMA end record.
1734  * @param bytes How many bytes have been transfered by this call.
1735  * @param source Explicit source code location or 0.
1736  *
1737  * @return 1 on success, 0 if an error occurs.
1738  *
1739  * \ingroup writer
1740  */
1741 int OTF_Writer_writeRMAPut( OTF_Writer* writer,
1742  uint64_t time,
1743  uint32_t process,
1744  uint32_t origin,
1745  uint32_t target,
1746  uint32_t communicator,
1747  uint32_t tag,
1748  uint64_t bytes,
1749  uint32_t scltoken );
1750 
1751 
1752 /**
1753  * Write a RMA put record - local end record including an OTF_KeyValueList.
1754  *
1755  * @param list Initialized OTF_KeyValueList() instance or NULL.
1756  *
1757  * @see OTF_Writer_writeRMAPut()
1758  * \ingroup writer
1759  */
1761  uint64_t time,
1762  uint32_t process,
1763  uint32_t origin,
1764  uint32_t target,
1765  uint32_t communicator,
1766  uint32_t tag,
1767  uint64_t bytes,
1768  uint32_t scltoken,
1769  OTF_KeyValueList* list );
1770 
1771 
1772 /**
1773  * Write a RMA put record - remote end record.
1774  * The end of this transfer is marked by the NEXT end record on process <target>
1775  * with the same communicator/tag pair.
1776  *
1777  * @param writer Initialized OTF_Writer instance.
1778  * @param time Time when process was referenced for the last time.
1779  * @param process Process initiating the transfer.
1780  * @param origin If >0, Process whose memory will be transferred, instead
1781  of this <process>.
1782  * @param target Process whose memory will be written and where the end
1783  * record is located.
1784  * @param communicator Together with tag, it is used to identify the
1785  * corresponding RMA end record.
1786  * @param tag Together with communicator, it is used to identify the
1787  * corresponding RMA end record.
1788  * @param bytes How many bytes have been transfered by this call.
1789  * @param source Explicit source code location or 0.
1790  *
1791  * @return 1 on success, 0 if an error occurs.
1792  *
1793  * \ingroup writer
1794  */
1796  uint64_t time,
1797  uint32_t process,
1798  uint32_t origin,
1799  uint32_t target,
1800  uint32_t communicator,
1801  uint32_t tag,
1802  uint64_t bytes,
1803  uint32_t scltoken );
1804 
1805 
1806 /**
1807  * Write a RMA put record - remote end record including an OTF_KeyValueList.
1808  *
1809  * @param list Initialized OTF_KeyValueList() instance or NULL.
1810  *
1811  * @see OTF_Writer_writeRMAPutRemoteEnd()
1812  * \ingroup writer
1813  */
1815  uint64_t time,
1816  uint32_t process,
1817  uint32_t origin,
1818  uint32_t target,
1819  uint32_t communicator,
1820  uint32_t tag,
1821  uint64_t bytes,
1822  uint32_t scltoken,
1823  OTF_KeyValueList* list );
1824 
1825 
1826 /**
1827  * Write a RMA get record.
1828  * The end of this transfer is marked by the NEXT end record on this <process>
1829  * with the same communicator/tag pair.
1830  *
1831  * @param writer Initialized OTF_Writer instance.
1832  * @param time Time when process was referenced for the last time.
1833  * @param process Process initiating the transfer.
1834  * @param origin If >0, Process where data will be transferred to (instead
1835  of this <process>).
1836  * @param target Process whose memory will be read.
1837  * @param communicator Together with tag, it is used to identify the
1838  * corresponding RMA end record.
1839  * @param tag Together with communicator, it is used to identify the
1840  * corresponding RMA end record.
1841  * @param bytes How many bytes have been transfered by this call.
1842  * @param source Explicit source code location or 0.
1843  *
1844  * @return 1 on success, 0 if an error occurs.
1845  *
1846  * \ingroup writer
1847  */
1848 int OTF_Writer_writeRMAGet( OTF_Writer* writer,
1849  uint64_t time,
1850  uint32_t process,
1851  uint32_t origin,
1852  uint32_t target,
1853  uint32_t communicator,
1854  uint32_t tag,
1855  uint64_t bytes,
1856  uint32_t scltoken );
1857 
1858 
1859 /**
1860  * Write a RMA get record including an OTF_KeyValueList.
1861  *
1862  * @param list Initialized OTF_KeyValueList() instance or NULL.
1863  *
1864  * @see OTF_Writer_writeRMAGet()
1865  * \ingroup writer
1866  */
1868  uint64_t time,
1869  uint32_t process,
1870  uint32_t origin,
1871  uint32_t target,
1872  uint32_t communicator,
1873  uint32_t tag,
1874  uint64_t bytes,
1875  uint32_t scltoken,
1876  OTF_KeyValueList* list );
1877 
1878 
1879 /**
1880  * Write a RMA end record.
1881  * The end record marks the finalization of all put and get operations with the
1882  * same communicator/tag pair that occured so far for this <process>.
1883  *
1884  * @param writer Initialized OTF_Writer instance.
1885  * @param time Time when process was referenced for the last time.
1886  * @param process Process identifier > 0.
1887  * @param remote If >0, ends RMA transfers on Process <remote>, instead of
1888  this <process>.
1889  [remote!=0 is really weird crap and would never be used by
1890  sane programmers ;-) -- nevertheless, the IBM Cell could
1891  be programmed like this.]
1892  * @param communicator Together with tag, it is used to identify the
1893  * related RMA put/get records.
1894  * @param tag Together with communicator, it is used to identify the
1895  * related RMA put/get records.
1896  * @param source Explicit source code location or 0.
1897  *
1898  * @return 1 on success, 0 if an error occurs.
1899  *
1900  * \ingroup writer
1901  */
1902 int OTF_Writer_writeRMAEnd( OTF_Writer* writer,
1903  uint64_t time,
1904  uint32_t process,
1905  uint32_t remote,
1906  uint32_t communicator,
1907  uint32_t tag,
1908  uint32_t scltoken );
1909 
1910 
1911 /**
1912  * Write a RMA end record including an OTF_KeyValueList.
1913  *
1914  * @param list Initialized OTF_KeyValueList() instance or NULL.
1915  *
1916  * @see OTF_Writer_writeRMAEnd()
1917  * \ingroup writer
1918  */
1920  uint64_t time,
1921  uint32_t process,
1922  uint32_t remote,
1923  uint32_t communicator,
1924  uint32_t tag,
1925  uint32_t scltoken,
1926  OTF_KeyValueList* list );
1927 
1928 
1929 /* *** public snapshot record write handlers *** */
1930 
1931 /**
1932  * Write a snapshot comment record.
1933  *
1934  * @param writer Initialized OTF_Writer instance.
1935  * @param time Comments need a timestamp for a proper positioning in the
1936  * trace.
1937  * @param process Comments also need a process identifier for a proper
1938  * positioning in the trace.
1939  * @param comment Arbitrary comment string.
1940  *
1941  * @return 1 on success, 0 if an error occurs.
1942  *
1943  * \ingroup writer
1944  */
1945 
1947  uint64_t time,
1948  uint32_t process,
1949  const char* comment );
1950 
1951 
1952 /**
1953  * Write a snapshot comment record including an OTF_KeyValueList.
1954  *
1955  * @param list Initialized OTF_KeyValueList() instance or NULL.
1956  *
1957  * @see OTF_Writer_writeSnapshotComment()
1958  * \ingroup writer
1959  */
1961  uint64_t time,
1962  uint32_t process,
1963  const char* comment,
1964  OTF_KeyValueList* list );
1965 
1966 
1967 /**
1968  * Write an enter snapshot which provides information about a past
1969  * function call
1970  *
1971  * @param writer Initialized OTF_Writer instance.
1972  * @param time Time when the snapshot was written(current time).
1973  * @param originaltime Time when the according enter record was entered.
1974  * This call is still on the stack.(It has not been left
1975  * yet)
1976  * @param function Function that the has been entered
1977  * OTF_Writer_defFunction.
1978  * @param process Process where action took place.
1979  * @param source Optional reference to source code.
1980  *
1981  * @return 1 on success, 0 if an error occurs.
1982  *
1983  * \ingroup writer
1984  */
1986  uint64_t time,
1987  uint64_t originaltime,
1988  uint32_t function,
1989  uint32_t process,
1990  uint32_t source );
1991 
1992 
1993 /**
1994  * Write an enter snapshot including an OTF_KeyValueList.
1995  *
1996  * @param list Initialized OTF_KeyValueList() instance or NULL.
1997  *
1998  * @see OTF_Writer_writeEnterSnapshot()
1999  * \ingroup writer
2000  */
2002  uint64_t time,
2003  uint64_t originaltime,
2004  uint32_t function,
2005  uint32_t process,
2006  uint32_t source,
2007  OTF_KeyValueList* list );
2008 
2009 
2010 /**
2011  * Write a send snapshot which provides information about a past
2012  * message send operation that is still pending, i.e. not yet received
2013  *
2014  * @param writer Initialized OTF_Writer instance.
2015  * @param time Time when the snapshot was written(current time).
2016  * @param originaltime Time when the message was sent
2017  * @param sender Sender of the message.
2018  * @param receiver Receiver of the message.
2019  * @param procGroup Optional process-group sender and receiver belong to,
2020  * '0' for no group.
2021  * @param tag Optional message type information.
2022  * @param length Optional message length information.
2023  * @param source Optional reference to source code.
2024  *
2025  * @return 1 on success, 0 if an error occurs.
2026  *
2027  * \ingroup writer
2028  */
2030  uint64_t time,
2031  uint64_t originaltime,
2032  uint32_t sender,
2033  uint32_t receiver,
2034  uint32_t procGroup,
2035  uint32_t tag,
2036  uint32_t length,
2037  uint32_t source );
2038 
2039 
2040 /**
2041  * Write a send snapshot including an OTF_KeyValueList.
2042  *
2043  * @param list Initialized OTF_KeyValueList() instance or NULL.
2044  *
2045  * @see OTF_Writer_writeSendSnapshot()
2046  * \ingroup writer
2047  */
2049  uint64_t time,
2050  uint64_t originaltime,
2051  uint32_t sender,
2052  uint32_t receiver,
2053  uint32_t procGroup,
2054  uint32_t tag,
2055  uint32_t length,
2056  uint32_t source,
2057  OTF_KeyValueList* list );
2058 
2059 
2060 /**
2061  * Write a snapshot record for an open (and not yet closed) file
2062  *
2063  * @param writer Initialized OTF_Writer instance.
2064  * @param time Time when the snapshot was written(current time).
2065  * @param originaltime Time when the message was sent.
2066  * @param fileid File identifier.
2067  * @param process Process where the file was opened.
2068  * @param handleid Unique file open identifier. @see OTF_Handler_FileOperation()
2069  * @param source Optional reference to source code.
2070  *
2071  * @return 1 on success, 0 if an error occurs.
2072  *
2073  * \ingroup writer
2074  */
2076  uint64_t time,
2077  uint64_t originaltime,
2078  uint32_t fileid,
2079  uint32_t process,
2080  uint64_t handleid,
2081  uint32_t source );
2082 
2083 
2084 /**
2085  * Write a snapshot record including an OTF_KeyValueList.
2086  *
2087  * @param list Initialized OTF_KeyValueList() instance or NULL.
2088  *
2089  * @see OTF_Writer_writeOpenFileSnapshot()
2090  * \ingroup writer
2091  */
2093  uint64_t time,
2094  uint64_t originaltime,
2095  uint32_t fileid,
2096  uint32_t process,
2097  uint64_t handleid,
2098  uint32_t source,
2099  OTF_KeyValueList* list );
2100 
2101 
2102 /**
2103  * Write a snapshot record for an unfinished collective operation.
2104  *
2105  * @param writer Initialized OTF_Writer instance.
2106  * @param time Time when the snapshot was written(current time).
2107  * @param originaltime Time when the collective operation began.
2108  * @param process Process identifier i.e. collective member.
2109  * @param collOp Collective identifier to be defined with
2110  * OTF_Writer_writeDefCollectiveOperation().
2111  * @param matchingId Identifier for finding the associated end collective event
2112  * record. It must be unique within this procGroup.
2113  * @param procGroup Group of processes participating in this collective.
2114  * @param rootProc Root process if != 0.
2115  * @param sent Data volume sent by member or 0.
2116  * @param received Data volume received by member or 0.
2117  * @param scltoken Explicit source code location or 0.
2118  *
2119  * @return 1 on success, 0 if an error occurs.
2120  *
2121  * \ingroup writer
2122  */
2124  uint64_t time,
2125  uint64_t originaltime,
2126  uint32_t process,
2127  uint32_t collOp,
2128  uint64_t matchingId,
2129  uint32_t procGroup,
2130  uint32_t rootProc,
2131  uint64_t sent,
2132  uint64_t received,
2133  uint32_t scltoken );
2134 
2135 
2136 /**
2137  * Write a snapshot record for an unfinished collective operation including an OTF_KeyValueList.
2138  *
2139  * @param list Initialized OTF_KeyValueList() instance or NULL.
2140  *
2141  * @see OTF_Writer_writeBeginCollopSnapshot()
2142  * \ingroup writer
2143  */
2145  uint64_t time,
2146  uint64_t originaltime,
2147  uint32_t process,
2148  uint32_t collOp,
2149  uint64_t matchingId,
2150  uint32_t procGroup,
2151  uint32_t rootProc,
2152  uint64_t sent,
2153  uint64_t received,
2154  uint32_t scltoken,
2155  OTF_KeyValueList* list );
2156 
2157 
2158 /**
2159  * Write a snapshot for an unfinished file operation.
2160  *
2161  * @param writer Initialized OTF_Writer instance.
2162  * @param time Time when the snapshot was written(current time).
2163  * @param originaltime Time when the operation began.
2164  * @param process Process identifier > 0.
2165  * @param matchingId Operation identifier, used for finding the associated end
2166  * file operation event record.
2167  * @param scltoken Optional reference to source code.
2168  *
2169  * @return 1 on success, 0 if an error occurs.
2170  *
2171  * \ingroup writer
2172  */
2174  uint64_t time,
2175  uint64_t originaltime,
2176  uint32_t process,
2177  uint64_t matchingId,
2178  uint32_t scltoken );
2179 
2180 
2181 /**
2182  * Write a snapshot for an unfinished file operation including an OTF_KeyValueList.
2183  *
2184  * @param list Initialized OTF_KeyValueList() instance or NULL.
2185  *
2186  * @see OTF_Writer_writeBeginFileOperation()
2187  * \ingroup writer
2188  */
2190  uint64_t time,
2191  uint64_t originaltime,
2192  uint32_t process,
2193  uint64_t matchingId,
2194  uint32_t scltoken,
2195  OTF_KeyValueList* list );
2196 
2197 /* *** public statistics record write handlers *** */
2198 
2199 
2200 /**
2201  * Write a summary comment record.
2202  *
2203  * @param writer Initialized OTF_Writer instance.
2204  * @param time Comments need a timestamp for a proper positioning in the
2205  * trace.
2206  * @param process Comments also need a process identifier for a proper
2207  * positioning in the trace.
2208  * @param comment Arbitrary comment string.
2209  *
2210  * @return 1 on success, 0 if an error occurs.
2211  *
2212  * \ingroup writer
2213  */
2214 
2216  uint64_t time,
2217  uint32_t process,
2218  const char* comment );
2219 
2220 
2221 /**
2222  * Write a summary comment record including an OTF_KeyValueList.
2223  *
2224  * @param list Initialized OTF_KeyValueList() instance or NULL.
2225  *
2226  * @see OTF_Writer_writeSummaryComment()
2227  * \ingroup writer
2228  */
2230  uint64_t time,
2231  uint32_t process,
2232  const char* comment,
2233  OTF_KeyValueList* list );
2234 
2235 
2236 /**
2237  * Write a function summary record.
2238  *
2239  * @param writer Initialized OTF_Writer instance.
2240  * @param time Time when summary was computed.
2241  * @param function Function as defined with
2242  * OTF_Handler_DefFunction.
2243  * @param process Process of the given function.
2244  * @param count Number of invocations.
2245  * @param excltime Time spent exclusively in the given function.
2246  * @param incltime Time spent in the given function including all
2247  * sub-routine calls.
2248  *
2249  * @return 1 on success, 0 if an error occurs.
2250  *
2251  * \ingroup writer
2252  */
2253 
2255  uint64_t time, uint32_t function, uint32_t process,
2256  uint64_t count, uint64_t excltime, uint64_t incltime );
2257 
2258 
2259 /**
2260  * Write a function summary record including an OTF_KeyValueList.
2261  *
2262  * @param list Initialized OTF_KeyValueList() instance or NULL.
2263  *
2264  * @see OTF_Writer_writeFunctionSummary()
2265  * \ingroup writer
2266  */
2268  uint64_t time, uint32_t function, uint32_t process,
2269  uint64_t count, uint64_t excltime, uint64_t incltime,
2270  OTF_KeyValueList* list );
2271 
2272 
2273 /**
2274  * Write a functiongroup summary record.
2275  *
2276  * @param writer Initialized OTF_Writer instance.
2277  * @param time Time when summary was computed.
2278  * @param functiongroup Function group as defined with
2279  * OTF_Handler_DefFunctionGroup.
2280  * @param process Process of the given function group.
2281  * @param count Number of invocations.
2282  * @param excltime Time spent exclusively in the given function group.
2283  * @param incltime Time spent in the given function group including all
2284  * sub-routine calls.
2285  *
2286  * @return 1 on success, 0 if an error occurs.
2287  *
2288  * \ingroup writer
2289  */
2290 
2292  uint64_t time, uint32_t functiongroup, uint32_t process,
2293  uint64_t count, uint64_t excltime, uint64_t incltime );
2294 
2295 
2296 /**
2297  * Write a functiongroup summary record including an OTF_KeyValueList.
2298  *
2299  * @param list Initialized OTF_KeyValueList() instance or NULL.
2300  *
2301  * @see OTF_Writer_writeFunctionGroupSummary()
2302  * \ingroup writer
2303  */
2305  uint64_t time, uint32_t functiongroup, uint32_t process,
2306  uint64_t count, uint64_t excltime, uint64_t incltime,
2307  OTF_KeyValueList* list );
2308 
2309 
2310 /**
2311  * Write a message summary record.
2312  *
2313  * @param writer Initialized OTF_Writer instance.
2314  * @param time Time when summary was computed.
2315  * @param process Process where messages originated.
2316  * @param peer Process where the message is sent to
2317  * @param comm Communicator of message summary
2318  * @param tag Message type/tag.
2319  * @param number_sent The number of messages sent.
2320  * @param number_recved The number of messages received.
2321  * @param bytes_sent The number of bytes sent via messages of the given
2322  * type.
2323  * @param bytes_recved The number of bytes received through messages of the
2324  * given type.
2325  *
2326  * @return 1 on success, 0 if an error occurs.
2327  *
2328  * \ingroup writer
2329  */
2330 
2332  uint64_t time, uint32_t process, uint32_t peer,
2333  uint32_t comm, uint32_t tag, uint64_t number_sent,
2334  uint64_t number_recved, uint64_t bytes_sent, uint64_t bytes_recved );
2335 
2336 
2337 /**
2338  * Write a message summary record including an OTF_KeyValueList.
2339  *
2340  * @param list Initialized OTF_KeyValueList() instance or NULL.
2341  *
2342  * @see OTF_Writer_writeMessageSummary()
2343  * \ingroup writer
2344  */
2346  uint64_t time, uint32_t process, uint32_t peer,
2347  uint32_t comm, uint32_t tag, uint64_t number_sent,
2348  uint64_t number_recved, uint64_t bytes_sent, uint64_t bytes_recved,
2349  OTF_KeyValueList* list );
2350 
2351 
2352 /**
2353  * Write a summary record of collective operations.
2354  *
2355  * @param writer Initialized OTF_Writer instance.
2356  * @param time Time when summary was computed.
2357  * @param process Process identifier i.e. collective member.
2358  * @param comm Communicator of collective operation summary.
2359  * @param collective Collective identifier to be defined with
2360  * OTF_Writer_writeDefCollectiveOperation().
2361  * @param number_sent The number of messages sent by member or 0.
2362  * @param number_recved The number of messages received by member or 0.
2363  * @param bytes_sent The number of bytes sent by member or 0.
2364  * @param bytes_recved The number of bytes received by member or 0.
2365  *
2366  * @return 1 on success, 0 if an error occurs.
2367  *
2368  * \ingroup writer
2369  */
2370 
2372  uint64_t time, uint32_t process, uint32_t comm, uint32_t collective,
2373  uint64_t number_sent, uint64_t number_recved, uint64_t bytes_sent, uint64_t bytes_recved );
2374 
2375 
2376 /**
2377  * Write a summary record of collective operations including an OTF_KeyValueList.
2378  *
2379  * @param list Initialized OTF_KeyValueList() instance or NULL.
2380  *
2381  * @see OTF_Writer_writeCollopSummary()
2382  * \ingroup writer
2383  */
2385  uint64_t time, uint32_t process, uint32_t comm, uint32_t collective,
2386  uint64_t number_sent, uint64_t number_recved, uint64_t bytes_sent, uint64_t bytes_recved,
2387  OTF_KeyValueList* list );
2388 
2389 /**
2390  * Writes a file operation summary record.
2391  *
2392  * @param writer Initialized OTF_Writer instance.
2393  * @param time Time when summary was computed.
2394  * @param fileid File identifier or 0 for all files.
2395  * @param process Process where file operations occured.
2396  * @param nopen Number of files opened.
2397  * @param nclose Number of files closed.
2398  * @param nread Number of read events.
2399  * @param nwrite Number of write events.
2400  * @param nseek Number of seek events.
2401  * @param bytesread Number of bytes read.
2402  * @param byteswrite Number of bytes written.
2403  *
2404  * @return 1 on success, 0 if an error occurs.
2405  *
2406  * \ingroup writer
2407  */
2408 int OTF_Writer_writeFileOperationSummary( OTF_Writer* writer, uint64_t time,
2409  uint32_t fileid, uint32_t process, uint64_t nopen, uint64_t nclose,
2410  uint64_t nread, uint64_t nwrite, uint64_t nseek, uint64_t bytesread,
2411  uint64_t byteswrite );
2412 
2413 
2414 /**
2415  * Writes a file operation summary record including an OTF_KeyValueList.
2416  *
2417  * @param list Initialized OTF_KeyValueList() instance or NULL.
2418  *
2419  * @see OTF_Writer_writeFileOperationSummary()
2420  * \ingroup writer
2421  */
2422 int OTF_Writer_writeFileOperationSummaryKV( OTF_Writer* writer, uint64_t time,
2423  uint32_t fileid, uint32_t process, uint64_t nopen, uint64_t nclose,
2424  uint64_t nread, uint64_t nwrite, uint64_t nseek, uint64_t bytesread,
2425  uint64_t byteswrite, OTF_KeyValueList* list );
2426 
2427 
2428 /**
2429  * Writes a file group operation summary record.
2430  *
2431  * @param writer Initialized OTF_Writer instance.
2432  * @param time Time when summary was computed.
2433  * @param groupid File group identifier or 0 for all files/groups.
2434  * @param process Process where file operations occured.
2435  * @param nopen Number of files opened.
2436  * @param nclose Number of files closed.
2437  * @param nread Number of read events.
2438  * @param nwrite Number of write events.
2439  * @param nseek Number of seek events.
2440  * @param bytesread Number of bytes read.
2441  * @param byteswrite Number of bytes written.
2442  *
2443  * @return 1 on success, 0 if an error occurs.
2444  *
2445  * \ingroup writer
2446  */
2447 int OTF_Writer_writeFileGroupOperationSummary( OTF_Writer* writer, uint64_t time,
2448  uint32_t groupid, uint32_t process, uint64_t nopen, uint64_t nclose,
2449  uint64_t nread, uint64_t nwrite, uint64_t nseek, uint64_t bytesread,
2450  uint64_t byteswrite );
2451 
2452 
2453 /**
2454  * Writes a file group operation summary record including an OTF_KeyValueList.
2455  *
2456  * @param list Initialized OTF_KeyValueList() instance or NULL.
2457  *
2458  * @see OTF_Writer_writeFileGroupOperationSummary()
2459  * \ingroup writer
2460  */
2461 int OTF_Writer_writeFileGroupOperationSummaryKV( OTF_Writer* writer, uint64_t time,
2462  uint32_t groupid, uint32_t process, uint64_t nopen, uint64_t nclose,
2463  uint64_t nread, uint64_t nwrite, uint64_t nseek, uint64_t bytesread,
2464  uint64_t byteswrite, OTF_KeyValueList* list );
2465 /* *** private member functions *** */
2466 
2467 
2468 /* *** marker record types *** */
2469 
2470 
2471 /**
2472  * Writes a def marker record.
2473  *
2474  * @param writer Initialized OTF_Writer instance.
2475  * qparam streamID stream identifier that must be 0, any other value is ignored
2476  * @param token The newly defined marker token.
2477  * @param name Its name
2478  * @param type Marker type, one of OTF_MARKER_TYPE_xxx
2479  * *
2480  * @return 1 on success, 0 if an error occurs.
2481  *
2482  * \ingroup writer
2483  */
2485  uint32_t streamID,
2486  uint32_t token,
2487  const char* name,
2488  uint32_t type );
2489 
2490 
2491 /**
2492  * Writes a def marker record including an OTF_KeyValueList.
2493  *
2494  * @param list Initialized OTF_KeyValueList() instance or NULL.
2495  *
2496  * @see OTF_Writer_writeDefMarker()
2497  * \ingroup writer
2498  */
2500  uint32_t streamID,
2501  uint32_t token,
2502  const char* name,
2503  uint32_t type,
2504  OTF_KeyValueList* list );
2505 
2506 /**
2507  * Writes a marker record.
2508  *
2509  * @param writer Initialized OTF_Writer instance.
2510  * @param time Time stamp of the marker record. Note that marker records are
2511  * not sorted according to time stamps!
2512  * @param process The process or process group of the marker.
2513  * @param token A marker token defined by 'DefMarker' before.
2514  * @param text Descriptive text. *
2515  * @return 1 on success, 0 if an error occurs.
2516  *
2517  * \ingroup writer
2518  */
2519 int OTF_Writer_writeMarker( OTF_Writer* writer,
2520  uint64_t time,
2521  uint32_t process,
2522  uint32_t token,
2523  const char* text );
2524 
2525 
2526 /**
2527  * Writes a marker record including an OTF_KeyValueList.
2528  *
2529  * @param list Initialized OTF_KeyValueList() instance or NULL.
2530  *
2531  * @see OTF_Writer_writeMarker()
2532  * \ingroup writer
2533  */
2534 int OTF_Writer_writeMarkerKV( OTF_Writer* writer,
2535  uint64_t time,
2536  uint32_t process,
2537  uint32_t token,
2538  const char* text,
2539  OTF_KeyValueList* list );
2540 
2541 #ifdef __cplusplus
2542 }
2543 #endif /* __cplusplus */
2544 
2545 #endif /* OTF_WRITER_H */
2546 
int OTF_Writer_writeOpenFileSnapshot(OTF_Writer *writer, uint64_t time, uint64_t originaltime, uint32_t fileid, uint32_t process, uint64_t handleid, uint32_t source)
Write a snapshot record for an open (and not yet closed) file.
Definition: OTF_Writer.c:1716
int OTF_Writer_writeDefFunctionGroupKV(OTF_Writer *writer, uint32_t stream, uint32_t funcGroup, const char *name, OTF_KeyValueList *list)
Write a function group definition record including an OTF_KeyValueList.
Definition: OTF_Writer.c:825
int OTF_Writer_writeFunctionSummaryKV(OTF_Writer *writer, uint64_t time, uint32_t function, uint32_t process, uint64_t count, uint64_t excltime, uint64_t incltime, OTF_KeyValueList *list)
Write a function summary record including an OTF_KeyValueList.
Definition: OTF_Writer.c:1839
OTF_WStream * OTF_Writer_getStream(OTF_Writer *writer, uint32_t stream)
Return the stream with the given stream id.
Definition: OTF_Writer.c:375
int OTF_Writer_writeBeginFileOpSnapshotKV(OTF_Writer *writer, uint64_t time, uint64_t originaltime, uint32_t process, uint64_t matchingId, uint32_t scltoken, OTF_KeyValueList *list)
Write a snapshot for an unfinished file operation including an OTF_KeyValueList.
Definition: OTF_Writer.c:1783
int OTF_Writer_writeDefCounterAssignments(OTF_Writer *writer, uint32_t streamid, uint32_t counter_token, uint32_t number_of_members, const uint32_t *procs_or_groups, OTF_KeyValueList *list)
Writes a CounterAssignments definition.
Definition: OTF_Writer.c:1134
int OTF_Writer_writeBeginProcess(OTF_Writer *writer, uint64_t time, uint32_t process)
Write a begin process record.
Definition: OTF_Writer.c:1422
int OTF_Writer_writeEndFileOperationKV(OTF_Writer *writer, uint64_t time, uint32_t process, uint32_t fileid, uint64_t matchingId, uint64_t handleId, uint32_t operation, uint64_t bytes, uint32_t scltoken, OTF_KeyValueList *list)
Write an end file operation record including an OTF_KeyValueList.
Definition: OTF_Writer.c:1523
int OTF_Writer_writeOtfVersion(OTF_Writer *writer, uint32_t stream)
depricated.
Definition: OTF_Writer.c:1001
Provides access to process-stream-mapping, which are located in .otf files.
int OTF_Writer_writeDefProcessOrGroupAttributes(OTF_Writer *writer, uint32_t stream, uint32_t proc_token, uint32_t attr_token)
Write a process or group attributes definition record.
Definition: OTF_Writer.c:746
int OTF_Writer_writeSendMsg(OTF_Writer *writer, uint64_t time, uint32_t sender, uint32_t receiver, uint32_t procGroup, uint32_t tag, uint32_t length, uint32_t source)
Write a message send record.
Definition: OTF_Writer.c:1245
int OTF_Writer_writeDefCreator(OTF_Writer *writer, uint32_t stream, const char *creator)
Write a creator record.
Definition: OTF_Writer.c:1012
int OTF_Writer_writeSummaryCommentKV(OTF_Writer *writer, uint64_t time, uint32_t process, const char *comment, OTF_KeyValueList *list)
Write a summary comment record including an OTF_KeyValueList.
Definition: OTF_Writer.c:1814
int OTF_Writer_writeBeginCollectiveOperationKV(OTF_Writer *writer, uint64_t time, uint32_t process, uint32_t collOp, uint64_t matchingId, uint32_t procGroup, uint32_t rootProc, uint64_t sent, uint64_t received, uint32_t scltoken, OTF_KeyValueList *list)
Write a begin collective operation member record including an OTF_KeyValueList.
Definition: OTF_Writer.c:1362
int OTF_Writer_writeDefAttributeList(OTF_Writer *writer, uint32_t stream, uint32_t attr_token, uint32_t num, OTF_ATTR_TYPE *array)
Write an attribute list definition record.
Definition: OTF_Writer.c:715
int OTF_Writer_writeCollopSummary(OTF_Writer *writer, uint64_t time, uint32_t process, uint32_t comm, uint32_t collective, uint64_t number_sent, uint64_t number_recved, uint64_t bytes_sent, uint64_t bytes_recved)
Write a summary record of collective operations.
Definition: OTF_Writer.c:1906
int OTF_Writer_writeDefFunction(OTF_Writer *writer, uint32_t stream, uint32_t func, const char *name, uint32_t funcGroup, uint32_t source)
Write a function definition record.
Definition: OTF_Writer.c:777
int OTF_Writer_writeSummaryComment(OTF_Writer *writer, uint64_t time, uint32_t process, const char *comment)
Write a summary comment record.
Definition: OTF_Writer.c:1802
int OTF_Writer_writeDefCounter(OTF_Writer *writer, uint32_t stream, uint32_t counter, const char *name, uint32_t properties, uint32_t counterGroup, const char *unit)
Write a counter definition record.
Definition: OTF_Writer.c:872
int OTF_Writer_writeSendSnapshotKV(OTF_Writer *writer, uint64_t time, uint64_t originaltime, uint32_t sender, uint32_t receiver, uint32_t procGroup, uint32_t tag, uint32_t length, uint32_t source, OTF_KeyValueList *list)
Write a send snapshot including an OTF_KeyValueList.
Definition: OTF_Writer.c:1702
int OTF_Writer_writeDefTimeRange(OTF_Writer *writer, uint32_t streamid, uint64_t minTime, uint64_t maxTime, OTF_KeyValueList *list)
Writes a TimeRange definition.
Definition: OTF_Writer.c:1112
OTF_MasterControl * OTF_Writer_getMasterControl(OTF_Writer *writer)
Get a pointer to the master control object of the given writer instance.
Definition: OTF_Writer.c:568
int OTF_Writer_writeFileGroupOperationSummary(OTF_Writer *writer, uint64_t time, uint32_t groupid, uint32_t process, uint64_t nopen, uint64_t nclose, uint64_t nread, uint64_t nwrite, uint64_t nseek, uint64_t bytesread, uint64_t byteswrite)
Writes a file group operation summary record.
Definition: OTF_Writer.c:1962
int OTF_Writer_writeDefKeyValueKV(OTF_Writer *writer, uint32_t stream, uint32_t key, OTF_Type type, const char *name, const char *description, OTF_KeyValueList *list)
Write a key value definition record including an OTF_KeyValueList.
Definition: OTF_Writer.c:1096
int OTF_Writer_writeDefCollectiveOperation(OTF_Writer *writer, uint32_t stream, uint32_t collOp, const char *name, uint32_t type)
Write a collective operation definition record.
Definition: OTF_Writer.c:841
int OTF_Writer_writeEndCollectiveOperation(OTF_Writer *writer, uint64_t time, uint32_t process, uint64_t matchingId)
Write an end collective operation member record.
Definition: OTF_Writer.c:1376
int OTF_Writer_writeDefTimerResolution(OTF_Writer *writer, uint32_t stream, uint64_t ticksPerSecond)
Write the timer resolution definition record.
Definition: OTF_Writer.c:618
Data structure that collects the information about which stream contains which parts of a multi-file ...
Definition: OTF_MasterControl.h:166
int OTF_Writer_close(OTF_Writer *writer)
Close an OTF_Writer instance and all its related files.
Definition: OTF_Writer.c:199
int OTF_Writer_writeEnterSnapshotKV(OTF_Writer *writer, uint64_t time, uint64_t originaltime, uint32_t function, uint32_t process, uint32_t source, OTF_KeyValueList *list)
Write an enter snapshot including an OTF_KeyValueList.
Definition: OTF_Writer.c:1677
int OTF_Writer_writeDefTimerResolutionKV(OTF_Writer *writer, uint32_t stream, uint64_t ticksPerSecond, OTF_KeyValueList *list)
Write the timer resolution definition record including an OTF_KeyValueList.
Definition: OTF_Writer.c:633
int OTF_Writer_writeFunctionGroupSummaryKV(OTF_Writer *writer, uint64_t time, uint32_t functiongroup, uint32_t process, uint64_t count, uint64_t excltime, uint64_t incltime, OTF_KeyValueList *list)
Write a functiongroup summary record including an OTF_KeyValueList.
Definition: OTF_Writer.c:1864
int OTF_Writer_writeEnterKV(OTF_Writer *writer, uint64_t time, uint32_t function, uint32_t process, uint32_t source, OTF_KeyValueList *list)
Write a function entry record including an OTF_KeyValueList.
Definition: OTF_Writer.c:1203
int OTF_Writer_writeDefinitionComment(OTF_Writer *writer, uint32_t stream, const char *comment)
Write a comment record.
Definition: OTF_Writer.c:587
uint32_t OTF_Writer_assignProcess(OTF_Writer *writer, uint32_t process, uint32_t stream)
Explicitly assign a given process to a specific stream.
Definition: OTF_Writer.c:471
int OTF_Writer_writeFileOperationSummary(OTF_Writer *writer, uint64_t time, uint32_t fileid, uint32_t process, uint64_t nopen, uint64_t nclose, uint64_t nread, uint64_t nwrite, uint64_t nseek, uint64_t bytesread, uint64_t byteswrite)
Writes a file operation summary record.
Definition: OTF_Writer.c:1933
int OTF_Writer_writeDefinitionCommentKV(OTF_Writer *writer, uint32_t stream, const char *comment, OTF_KeyValueList *list)
Write a comment record including an OTF_KeyValueList.
Definition: OTF_Writer.c:602
int OTF_Writer_writeDefFileGroupKV(OTF_Writer *writer, uint32_t stream, uint32_t token, const char *name, OTF_KeyValueList *list)
Write a file group definition record including an OTF_KeyValueList.
Definition: OTF_Writer.c:1071
int OTF_Writer_writeEndProcessKV(OTF_Writer *writer, uint64_t time, uint32_t process, OTF_KeyValueList *list)
Write a end process record including an OTF_KeyValueList.
Definition: OTF_Writer.c:1453
int OTF_Writer_writeFileOperationKV(OTF_Writer *writer, uint64_t time, uint32_t fileid, uint32_t process, uint64_t handleid, uint32_t operation, uint64_t bytes, uint64_t duration, uint32_t source, OTF_KeyValueList *list)
Write a file operation record including an OTF_KeyValueList.
Definition: OTF_Writer.c:1476
int OTF_Writer_writeMessageSummaryKV(OTF_Writer *writer, uint64_t time, uint32_t process, uint32_t peer, uint32_t comm, uint32_t tag, uint64_t number_sent, uint64_t number_recved, uint64_t bytes_sent, uint64_t bytes_recved, OTF_KeyValueList *list)
Write a message summary record including an OTF_KeyValueList.
Definition: OTF_Writer.c:1891
int OTF_Writer_writeEndFileOperation(OTF_Writer *writer, uint64_t time, uint32_t process, uint32_t fileid, uint64_t matchingId, uint64_t handleId, uint32_t operation, uint64_t bytes, uint32_t scltoken)
Write an end file operation record.
Definition: OTF_Writer.c:1511
OTF_FileCompression OTF_Writer_getCompression(OTF_Writer *writer)
Return the standard compression method for all buffers managed by this writer.
Definition: OTF_Writer.c:263
int OTF_Writer_writeFileOperation(OTF_Writer *writer, uint64_t time, uint32_t fileid, uint32_t process, uint64_t handleid, uint32_t operation, uint64_t bytes, uint64_t duration, uint32_t source)
Write a file operation record.
Definition: OTF_Writer.c:1464
int OTF_Writer_writeDefMarkerKV(OTF_Writer *writer, uint32_t streamID, uint32_t token, const char *name, uint32_t type, OTF_KeyValueList *list)
Writes a def marker record including an OTF_KeyValueList.
Definition: OTF_Writer.c:2008
void OTF_Writer_setMasterControl(OTF_Writer *writer, OTF_MasterControl *mc)
Set an alternative master control object.
Definition: OTF_Writer.c:575
int OTF_Writer_writeCounter(OTF_Writer *writer, uint64_t time, uint32_t process, uint32_t counter, uint64_t value)
Write a counter measurement record.
Definition: OTF_Writer.c:1295
void OTF_Writer_setBufferSizes(OTF_Writer *writer, uint32_t size)
Set the default buffer size for all buffers managed by this Writer.
Definition: OTF_Writer.c:274
int OTF_Writer_writeMessageSummary(OTF_Writer *writer, uint64_t time, uint32_t process, uint32_t peer, uint32_t comm, uint32_t tag, uint64_t number_sent, uint64_t number_recved, uint64_t bytes_sent, uint64_t bytes_recved)
Write a message summary record.
Definition: OTF_Writer.c:1877
int OTF_Writer_writeMarkerKV(OTF_Writer *writer, uint64_t time, uint32_t process, uint32_t token, const char *text, OTF_KeyValueList *list)
Writes a marker record including an OTF_KeyValueList.
Definition: OTF_Writer.c:2034
int OTF_Writer_writeEndCollectiveOperationKV(OTF_Writer *writer, uint64_t time, uint32_t process, uint64_t matchingId, OTF_KeyValueList *list)
Write an end collective operation member record including an OTF_KeyValueList.
Definition: OTF_Writer.c:1386
int OTF_Writer_writeRMAPutKV(OTF_Writer *writer, uint64_t time, uint32_t process, uint32_t origin, uint32_t target, uint32_t communicator, uint32_t tag, uint64_t bytes, uint32_t scltoken, OTF_KeyValueList *list)
Write a RMA put record - local end record including an OTF_KeyValueList.
Definition: OTF_Writer.c:1548
int OTF_Writer_writeRecvMsgKV(OTF_Writer *writer, uint64_t time, uint32_t receiver, uint32_t sender, uint32_t procGroup, uint32_t tag, uint32_t length, uint32_t source, OTF_KeyValueList *list)
Write a message retrieval record including an OTF_KeyValueList.
Definition: OTF_Writer.c:1230
int OTF_Writer_writeRMAGetKV(OTF_Writer *writer, uint64_t time, uint32_t process, uint32_t origin, uint32_t target, uint32_t communicator, uint32_t tag, uint64_t bytes, uint32_t scltoken, OTF_KeyValueList *list)
Write a RMA get record including an OTF_KeyValueList.
Definition: OTF_Writer.c:1598
int OTF_Writer_writeRMAPutRemoteEnd(OTF_Writer *writer, uint64_t time, uint32_t process, uint32_t origin, uint32_t target, uint32_t communicator, uint32_t tag, uint64_t bytes, uint32_t scltoken)
Write a RMA put record - remote end record.
Definition: OTF_Writer.c:1561
int OTF_Writer_writeDefCounterGroupKV(OTF_Writer *writer, uint32_t stream, uint32_t counterGroup, const char *name, OTF_KeyValueList *list)
Write a counter group definition record including an OTF_KeyValueList.
Definition: OTF_Writer.c:922
int OTF_Writer_writeFunctionSummary(OTF_Writer *writer, uint64_t time, uint32_t function, uint32_t process, uint64_t count, uint64_t excltime, uint64_t incltime)
Write a function summary record.
Definition: OTF_Writer.c:1827
int OTF_Writer_writeLeaveKV(OTF_Writer *writer, uint64_t time, uint32_t function, uint32_t process, uint32_t source, OTF_KeyValueList *list)
Write a function leave record including an OTF_KeyValueList.
Definition: OTF_Writer.c:1283
int OTF_Writer_writeCollectiveOperation(OTF_Writer *writer, uint64_t time, uint32_t process, uint32_t collective, uint32_t procGroup, uint32_t rootProc, uint32_t sent, uint32_t received, uint64_t duration, uint32_t source)
Write a collective operation member record.
Definition: OTF_Writer.c:1318
int OTF_Writer_writeFileGroupOperationSummaryKV(OTF_Writer *writer, uint64_t time, uint32_t groupid, uint32_t process, uint64_t nopen, uint64_t nclose, uint64_t nread, uint64_t nwrite, uint64_t nseek, uint64_t bytesread, uint64_t byteswrite, OTF_KeyValueList *list)
Writes a file group operation summary record including an OTF_KeyValueList.
Definition: OTF_Writer.c:1976
int OTF_Writer_writeDefKeyValue(OTF_Writer *writer, uint32_t stream, uint32_t key, OTF_Type type, const char *name, const char *description)
Write a key value definition record.
Definition: OTF_Writer.c:1081
uint32_t OTF_Writer_getZBufferSizes(OTF_Writer *writer)
Get the default zbuffer size.
Definition: OTF_Writer.c:342
int OTF_Writer_writeDefSclKV(OTF_Writer *writer, uint32_t stream, uint32_t source, uint32_t sourceFile, uint32_t line, OTF_KeyValueList *list)
Write a source code location (SCL) record including an OTF_KeyValueList.
Definition: OTF_Writer.c:953
enum OTF_ATTR_TYPE_enum OTF_ATTR_TYPE
An enum which holds all values that are possible to set with datatype OTF_ATTR_TYPE().
int OTF_Writer_writeFileOperationSummaryKV(OTF_Writer *writer, uint64_t time, uint32_t fileid, uint32_t process, uint64_t nopen, uint64_t nclose, uint64_t nread, uint64_t nwrite, uint64_t nseek, uint64_t bytesread, uint64_t byteswrite, OTF_KeyValueList *list)
Writes a file operation summary record including an OTF_KeyValueList.
Definition: OTF_Writer.c:1947
int OTF_Writer_writeDefSclFile(OTF_Writer *writer, uint32_t stream, uint32_t sourceFile, const char *name)
Write a source code location (SCL) file record.
Definition: OTF_Writer.c:969
int OTF_Writer_writeDefFunctionGroup(OTF_Writer *writer, uint32_t stream, uint32_t funcGroup, const char *name)
Write a function group definition record.
Definition: OTF_Writer.c:810
Manages file handles.
int OTF_Writer_writeEnterSnapshot(OTF_Writer *writer, uint64_t time, uint64_t originaltime, uint32_t function, uint32_t process, uint32_t source)
Write an enter snapshot which provides information about a past function call.
Definition: OTF_Writer.c:1665
int OTF_Writer_writeRMAPutRemoteEndKV(OTF_Writer *writer, uint64_t time, uint32_t process, uint32_t origin, uint32_t target, uint32_t communicator, uint32_t tag, uint64_t bytes, uint32_t scltoken, OTF_KeyValueList *list)
Write a RMA put record - remote end record including an OTF_KeyValueList.
Definition: OTF_Writer.c:1573
int OTF_Writer_writeEnter(OTF_Writer *writer, uint64_t time, uint32_t function, uint32_t process, uint32_t source)
Write a function entry record.
Definition: OTF_Writer.c:1191
enum OTF_Type_enum OTF_Type
An enum which holds all OTF datatypes that are relevant for OTF_KeyValueList.
void OTF_Writer_setZBufferSizes(OTF_Writer *writer, uint32_t size)
Set the default zbuffer size for all buffers managed by this Reader.
Definition: OTF_Writer.c:309
int OTF_Writer_writeBeginFileOpSnapshot(OTF_Writer *writer, uint64_t time, uint64_t originaltime, uint32_t process, uint64_t matchingId, uint32_t scltoken)
Write a snapshot for an unfinished file operation.
Definition: OTF_Writer.c:1770
int OTF_Writer_writeDefCounterGroup(OTF_Writer *writer, uint32_t stream, uint32_t counterGroup, const char *name)
Write a counter group definition record.
Definition: OTF_Writer.c:907
int OTF_Writer_writeDefScl(OTF_Writer *writer, uint32_t stream, uint32_t source, uint32_t sourceFile, uint32_t line)
Write a source code location (SCL) record.
Definition: OTF_Writer.c:938
int OTF_Writer_writeDefFile(OTF_Writer *writer, uint32_t stream, uint32_t token, const char *name, uint32_t group)
Write a file definition record.
Definition: OTF_Writer.c:1043
int OTF_Writer_writeDefProcessKV(OTF_Writer *writer, uint32_t stream, uint32_t process, const char *name, uint32_t parent, OTF_KeyValueList *list)
Write a process definition record including an OTF_KeyValueList.
Definition: OTF_Writer.c:664
int OTF_Writer_writeRecvMsg(OTF_Writer *writer, uint64_t time, uint32_t receiver, uint32_t sender, uint32_t procGroup, uint32_t tag, uint32_t length, uint32_t source)
Write a message retrieval record.
Definition: OTF_Writer.c:1217
Provides write access to trace buffers.
int OTF_Writer_writeBeginFileOperationKV(OTF_Writer *writer, uint64_t time, uint32_t process, uint64_t matchingId, uint32_t scltoken, OTF_KeyValueList *list)
Write a begin file operation record including an OTF_KeyValueList.
Definition: OTF_Writer.c:1499
int OTF_Writer_writeDefMarker(OTF_Writer *writer, uint32_t streamID, uint32_t token, const char *name, uint32_t type)
Writes a def marker record.
Definition: OTF_Writer.c:1991
int OTF_Writer_writeBeginProcessKV(OTF_Writer *writer, uint64_t time, uint32_t process, OTF_KeyValueList *list)
Write a begin process record including an OTF_KeyValueList.
Definition: OTF_Writer.c:1432
int OTF_Writer_writeDefCreatorKV(OTF_Writer *writer, uint32_t stream, const char *creator, OTF_KeyValueList *list)
Write a creator record including an OTF_KeyValueList.
Definition: OTF_Writer.c:1027
int OTF_Writer_writeEventCommentKV(OTF_Writer *writer, uint64_t time, uint32_t process, const char *comment, OTF_KeyValueList *list)
Write a comment record including an OTF_KeyValueList.
Definition: OTF_Writer.c:1409
int OTF_Writer_writeCounterKV(OTF_Writer *writer, uint64_t time, uint32_t process, uint32_t counter, uint64_t value, OTF_KeyValueList *list)
Write a counter measurement record including an OTF_KeyValueList.
Definition: OTF_Writer.c:1306
int OTF_Writer_writeDefAttributeListKV(OTF_Writer *writer, uint32_t stream, uint32_t attr_token, uint32_t num, OTF_ATTR_TYPE *array, OTF_KeyValueList *list)
Write an attribute list definition record including an OTF_KeyValueList.
Definition: OTF_Writer.c:730
int OTF_Writer_writeDefProcessGroup(OTF_Writer *writer, uint32_t stream, uint32_t procGroup, const char *name, uint32_t numberOfProcs, const uint32_t *procs)
Write a process group definition record.
Definition: OTF_Writer.c:680
int OTF_Writer_writeBeginFileOperation(OTF_Writer *writer, uint64_t time, uint32_t process, uint64_t matchingId, uint32_t scltoken)
Write a begin file operation record.
Definition: OTF_Writer.c:1489
int OTF_Writer_writeDefFileKV(OTF_Writer *writer, uint32_t stream, uint32_t token, const char *name, uint32_t group, OTF_KeyValueList *list)
Write a file definition record including an OTF_KeyValueList.
Definition: OTF_Writer.c:1052
int OTF_Writer_writeBeginCollectiveOperation(OTF_Writer *writer, uint64_t time, uint32_t process, uint32_t collOp, uint64_t matchingId, uint32_t procGroup, uint32_t rootProc, uint64_t sent, uint64_t received, uint32_t scltoken)
Write a begin collective operation member record.
Definition: OTF_Writer.c:1349
int OTF_Writer_writeRMAEnd(OTF_Writer *writer, uint64_t time, uint32_t process, uint32_t remote, uint32_t communicator, uint32_t tag, uint32_t scltoken)
Write a RMA end record.
Definition: OTF_Writer.c:1612
int OTF_Writer_writeSendMsgKV(OTF_Writer *writer, uint64_t time, uint32_t sender, uint32_t receiver, uint32_t procGroup, uint32_t tag, uint32_t length, uint32_t source, OTF_KeyValueList *list)
Write a message send record including an OTF_KeyValueList.
Definition: OTF_Writer.c:1258
Provides write access to trace streams, which consist of multiple buffers.
int OTF_Writer_writeCollectiveOperationKV(OTF_Writer *writer, uint64_t time, uint32_t process, uint32_t collective, uint32_t procGroup, uint32_t rootProc, uint32_t sent, uint32_t received, uint64_t duration, uint32_t source, OTF_KeyValueList *list)
Write a collective operation member record including an OTF_KeyValueList.
Definition: OTF_Writer.c:1333
int OTF_Writer_writeFunctionGroupSummary(OTF_Writer *writer, uint64_t time, uint32_t functiongroup, uint32_t process, uint64_t count, uint64_t excltime, uint64_t incltime)
Write a functiongroup summary record.
Definition: OTF_Writer.c:1852
int OTF_Writer_writeCollopSummaryKV(OTF_Writer *writer, uint64_t time, uint32_t process, uint32_t comm, uint32_t collective, uint64_t number_sent, uint64_t number_recved, uint64_t bytes_sent, uint64_t bytes_recved, OTF_KeyValueList *list)
Write a summary record of collective operations including an OTF_KeyValueList.
Definition: OTF_Writer.c:1919
int OTF_Writer_writeDefProcessOrGroupAttributesKV(OTF_Writer *writer, uint32_t stream, uint32_t proc_token, uint32_t attr_token, OTF_KeyValueList *list)
Write a process or group attributes definition record including an OTF_KeyValueList.
Definition: OTF_Writer.c:761
int OTF_Writer_writeEventComment(OTF_Writer *writer, uint64_t time, uint32_t process, const char *comment)
Write a comment record.
Definition: OTF_Writer.c:1397
int OTF_Writer_writeSendSnapshot(OTF_Writer *writer, uint64_t time, uint64_t originaltime, uint32_t sender, uint32_t receiver, uint32_t procGroup, uint32_t tag, uint32_t length, uint32_t source)
Write a send snapshot which provides information about a past message send operation that is still pe...
Definition: OTF_Writer.c:1690
int OTF_Writer_writeOpenFileSnapshotKV(OTF_Writer *writer, uint64_t time, uint64_t originaltime, uint32_t fileid, uint32_t process, uint64_t handleid, uint32_t source, OTF_KeyValueList *list)
Write a snapshot record including an OTF_KeyValueList.
Definition: OTF_Writer.c:1728
int OTF_Writer_writeMarker(OTF_Writer *writer, uint64_t time, uint32_t process, uint32_t token, const char *text)
Writes a marker record.
Definition: OTF_Writer.c:2026
int OTF_Writer_writeNoOpKV(OTF_Writer *writer, uint64_t time, uint32_t process, OTF_KeyValueList *list)
Write a no-operation record.
Definition: OTF_Writer.c:1179
int OTF_Writer_writeDefFileGroup(OTF_Writer *writer, uint32_t stream, uint32_t token, const char *name)
Write a file group definition record.
Definition: OTF_Writer.c:1062
int OTF_Writer_writeRMAEndKV(OTF_Writer *writer, uint64_t time, uint32_t process, uint32_t remote, uint32_t communicator, uint32_t tag, uint32_t scltoken, OTF_KeyValueList *list)
Write a RMA end record including an OTF_KeyValueList.
Definition: OTF_Writer.c:1624
Definition: OTF_WStream.h:95
int OTF_Writer_writeBeginCollopSnapshotKV(OTF_Writer *writer, uint64_t time, uint64_t originaltime, uint32_t process, uint32_t collOp, uint64_t matchingId, uint32_t procGroup, uint32_t rootProc, uint64_t sent, uint64_t received, uint32_t scltoken, OTF_KeyValueList *list)
Write a snapshot record for an unfinished collective operation including an OTF_KeyValueList.
Definition: OTF_Writer.c:1755
int OTF_Writer_writeDefFunctionKV(OTF_Writer *writer, uint32_t stream, uint32_t func, const char *name, uint32_t funcGroup, uint32_t source, OTF_KeyValueList *list)
Write a function definition record including an OTF_KeyValueList.
Definition: OTF_Writer.c:793
int OTF_Writer_writeDefCollectiveOperationKV(OTF_Writer *writer, uint32_t stream, uint32_t collOp, const char *name, uint32_t type, OTF_KeyValueList *list)
Write a collective operation definition record including an OTF_KeyValueList.
Definition: OTF_Writer.c:856
int OTF_Writer_setCompression(OTF_Writer *writer, OTF_FileCompression compression)
Set the standard compression method for all buffers managed by this writer.
Definition: OTF_Writer.c:229
struct OTF_KeyValueList_struct OTF_KeyValueList
Object type which holds a key-value list.
Definition: OTF_KeyValue.h:242
void OTF_Writer_setFormat(OTF_Writer *writer, uint32_t format)
Set the default ouput format.
Definition: OTF_Writer.c:353
Holds the data objects needed for global trace creation.
Definition: OTF_Writer.c:21
uint32_t OTF_Writer_getBufferSizes(OTF_Writer *writer)
Get the default buffer size for all buffers managed by this Writer.
Definition: OTF_Writer.c:302
int OTF_Writer_writeDefSclFileKV(OTF_Writer *writer, uint32_t stream, uint32_t sourceFile, const char *name, OTF_KeyValueList *list)
Write a source code location (SCL) file record including an OTF_KeyValueList.
Definition: OTF_Writer.c:984
int OTF_Writer_writeRMAGet(OTF_Writer *writer, uint64_t time, uint32_t process, uint32_t origin, uint32_t target, uint32_t communicator, uint32_t tag, uint64_t bytes, uint32_t scltoken)
Write a RMA get record.
Definition: OTF_Writer.c:1586
int OTF_Writer_writeSnapshotCommentKV(OTF_Writer *writer, uint64_t time, uint32_t process, const char *comment, OTF_KeyValueList *list)
Write a snapshot comment record including an OTF_KeyValueList.
Definition: OTF_Writer.c:1652
int OTF_Writer_writeDefProcessGroupKV(OTF_Writer *writer, uint32_t stream, uint32_t procGroup, const char *name, uint32_t numberOfProcs, const uint32_t *procs, OTF_KeyValueList *list)
Write a process group definition record including an OTF_KeyValueList.
Definition: OTF_Writer.c:697
int OTF_Writer_writeDefCounterKV(OTF_Writer *writer, uint32_t stream, uint32_t counter, const char *name, uint32_t properties, uint32_t counterGroup, const char *unit, OTF_KeyValueList *list)
Write a counter definition record including an OTF_KeyValueList.
Definition: OTF_Writer.c:889
file handles management structure
Definition: OTF_FileManager.c:32
int OTF_Writer_writeDefProcess(OTF_Writer *writer, uint32_t stream, uint32_t process, const char *name, uint32_t parent)
Write a process definition record.
Definition: OTF_Writer.c:649
int OTF_Writer_writeBeginCollopSnapshot(OTF_Writer *writer, uint64_t time, uint64_t originaltime, uint32_t process, uint32_t collOp, uint64_t matchingId, uint32_t procGroup, uint32_t rootProc, uint64_t sent, uint64_t received, uint32_t scltoken)
Write a snapshot record for an unfinished collective operation.
Definition: OTF_Writer.c:1740
uint32_t OTF_Writer_getFormat(OTF_Writer *writer)
Get the default output format of all streams managed by this writer.
Definition: OTF_Writer.c:368
uint32_t format
Default output format.
Definition: OTF_Writer.c:51
int OTF_Writer_writeDefProcessSubstitutes(OTF_Writer *writer, uint32_t streamid, uint32_t representative, uint32_t numberOfProcs, const uint32_t *procs, OTF_KeyValueList *list)
Writes a ProcessSubstitutes definition record.
Definition: OTF_Writer.c:1158
int OTF_Writer_closeAllStreams(OTF_Writer *writer)
Close all streams that are open in this writer instance.
Definition: OTF_Writer.c:2043
int OTF_Writer_writeSnapshotComment(OTF_Writer *writer, uint64_t time, uint32_t process, const char *comment)
Write a snapshot comment record.
Definition: OTF_Writer.c:1640
int OTF_Writer_writeLeave(OTF_Writer *writer, uint64_t time, uint32_t function, uint32_t process, uint32_t source)
Write a function leave record.
Definition: OTF_Writer.c:1272
uint32_t OTF_Writer_mapProcess(OTF_Writer *writer, uint32_t processId)
For a process with id 'processId' return a stream id of the stream the data is to be written to...
Definition: OTF_Writer.c:497
int OTF_Writer_writeRMAPut(OTF_Writer *writer, uint64_t time, uint32_t process, uint32_t origin, uint32_t target, uint32_t communicator, uint32_t tag, uint64_t bytes, uint32_t scltoken)
Write a RMA put record - local end record.
Definition: OTF_Writer.c:1536
OTF_Writer * OTF_Writer_open(const char *fileNamePrefix, uint32_t numberOfStreams, OTF_FileManager *fileManager)
Create a new OTF_Writer instance with a given number of automatic streams.
Definition: OTF_Writer.c:148
int OTF_Writer_writeEndProcess(OTF_Writer *writer, uint64_t time, uint32_t process)
Write a end process record.
Definition: OTF_Writer.c:1443
OTF_MasterControl * mc
Master control structure.
Definition: OTF_Writer.c:45