OpenMPI
0.1.1
Main Page
Related Pages
Modules
Data Structures
Files
File List
Globals
Treehash.h
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
#ifndef OTFTOVTF3_TREEHASH_H
7
#define OTFTOVTF3_TREEHASH_H
8
9
#ifdef HAVE_CONFIG_H
10
#include "config.h"
11
#endif
12
13
14
#include <assert.h>
15
16
#include "
OTF_inttypes.h
"
17
#include "
OTF_Platform.h
"
18
19
20
#define STACK_ALLOC_WIDTH 10
21
22
23
/* *** queue of FileIOEnd records *********************/
24
typedef
struct
FileIOEndRecord_s
{
25
26
uint64_t time;
27
uint32_t process;
28
int
iotype;
29
int
fileid;
30
uint32_t bytes;
31
int
source;
32
33
struct
FileIOEndRecord_s
* next;
34
35
}
FileIOEndRecord
;
36
37
38
/* *** tree structure *******************************/
39
typedef
struct
nodeS
40
{
41
uint32_t process;
/* cpu token of otf */
42
uint32_t processi;
/* index of cpu for vtf3 */
43
char
*name;
/* process name */
44
int
childrensize;
/* sizeof children vector */
45
struct
nodeS
**p_children;
/* vector of children */
46
47
/* function stack */
48
uint32_t *stack;
49
uint32_t stackc;
50
uint32_t stacks;
51
52
}
nodeT
;
53
54
/* *** hash structures *******************************/
55
typedef
struct
entryvecS
56
{
57
nodeT
*p_node;
/* pointer to the treenode */
58
}
entryvecT
;
59
60
typedef
struct
hashtabS
61
{
62
nodeT
*p_node;
63
64
int
entryvecsize;
65
entryvecT
* p_entryvec;
66
}
hashtabT
;
67
68
typedef
struct
{
69
70
void
*fcb;
71
hashtabT
*p_hashtab;
72
FileIOEndRecord
* FileIOQueue;
73
74
}
fcbT
;
75
76
/* *** FileIOEndQueue functions *************************/
77
/* init */
78
FileIOEndRecord
* FileIOEndQueue_init(
void
);
79
80
81
void
FileIOEndQueue_finish(
FileIOEndRecord
** queue );
82
83
/* check if there are events matching the current timestamp */
84
void
FileIOEndQueue_check(
FileIOEndRecord
** queue, uint64_t time,
void
* fha );
85
86
/* add an element at the end */
87
void
FileIOEndQueue_push(
FileIOEndRecord
** queue,
FileIOEndRecord
* append );
88
89
90
/* *** treehash functions *******************************/
91
92
/* initialize the tree and the hash */
93
void
treehash_init(
nodeT
**pp_root,
hashtabT
**pp_hashtab );
94
95
/* add a node to the tree and hash */
96
int
treehash_addnode(
hashtabT
*p_hashtab, uint32_t process,
const
char
* name, uint32_t parent );
97
98
/* search a node using the hash */
99
nodeT
*treehash_searchnode (
hashtabT
*p_hashtab, uint32_t process );
100
101
/* search the entryvector of a tree (binary search) -- only used intern -- */
102
nodeT
*treehash_searchvec (
entryvecT
* vec,
int
vecsize, uint32_t process );
103
104
/* create indices (treeform -> linear for vtf3 */
105
int
treehash_createindices (
int
index,
nodeT
*p_node );
106
107
/* free all memory ... */
108
void
treehash_deleteall (
hashtabT
*p_hashtab );
109
110
/* free a treenode */
111
void
treehash_deletenode (
nodeT
*p_node );
112
113
#endif
/* OTFTOVTF3_TREEHASH_H */
nodeS
Definition:
Treehash.h:39
FileIOEndRecord_s
Definition:
Treehash.h:24
fcbT
Definition:
Treehash.h:68
entryvecS
Definition:
Treehash.h:55
hashtabS
Definition:
Treehash.h:60
OTF_Platform.h
Deals with platform dependend issues.
OTF_inttypes.h
Deals with all data type related issues.
ompi
contrib
vt
vt
extlib
otf
tools
otf2vtf
Treehash.h
Generated on Wed Dec 24 2014 12:05:17 for OpenMPI by
1.8.8