blob: 1f3831c9f2f47a85e731348b93e7d6ae23593f1a (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
|
/*
* CDDL HEADER START
*
* The contents of this file are subject to the terms of the
* Common Development and Distribution License, Version 1.0 only
* (the "License"). You may not use this file except in compliance
* with the License.
*
* You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
* or http://www.opensolaris.org/os/licensing.
* See the License for the specific language governing permissions
* and limitations under the License.
*
* When distributing Covered Code, include this CDDL HEADER in each
* file and include the License file at usr/src/OPENSOLARIS.LICENSE.
* If applicable, add the following below this CDDL HEADER, with the
* fields enclosed by brackets "[]" replaced with your own identifying
* information: Portions Copyright [yyyy] [name of copyright owner]
*
* CDDL HEADER END
*/
/*
* Copyright (c) 1998 by Sun Microsystems, Inc.
* All rights reserved.
*/
#ifndef _MONV_H
#define _MONV_H
#pragma ident "%Z%%M% %I% %E% SMI"
/*
* Versioned monitor file
*
* Since this is not really a *shared* file between the compilers and OS
* (each hold a separate copy), care must be taken to see that it is in
* in sync with the compiler version.
*/
#ifdef __cplusplus
extern "C" {
#endif
/*
* General object structure
*/
#ifndef PROF_TYPES_PREDEFINED
typedef unsigned long long Index;
typedef unsigned long long Address;
typedef unsigned long long Size;
#endif
typedef struct _prof_object {
unsigned int type;
unsigned int version;
Size size;
} ProfObject;
#define PROF_MAGIC 0x50524F46 /* "PROF" */
#define PROF_MAJOR_VERSION 1
#define PROF_MINOR_VERSION 0
typedef struct _prof_header {
unsigned int h_magic;
unsigned short h_major_ver;
unsigned short h_minor_ver;
Size size;
} ProfHeader;
/*
* Object types
*/
#define PROF_DUMMY_T -1 /* to be ignored by gprof */
#define PROF_BUFFER_T 1
#define PROF_CALLGRAPH_T 2
#define PROF_MODULES_T 3
/*
* Object version numbers
*/
#define PROF_BUFFER_VER 1
#define PROF_CALLGRAPH_VER 1
#define PROF_MODULES_VER 1
/*
* Actual number of pcsample elements that can be held in 1Mb with
* the size of (Address) equal to 8
*/
#define PROF_BUFFER_SIZE 131072 /* 1 Mb */
typedef struct _prof_buffer {
unsigned int type; /* PROF_BUFFER_T */
unsigned int version; /* 1 */
Size size;
Index buffer;
Size bufsize;
} ProfBuffer;
typedef struct _prof_call_graph {
unsigned int type; /* PROF_CALLGRAPH_T */
unsigned int version; /* 1 */
Size size;
Index functions;
} ProfCallGraph;
typedef struct _prof_module_list {
unsigned int type; /* PROF_MODULES_T */
unsigned int version; /* 1 */
Size size;
Index modules;
} ProfModuleList;
typedef struct _prof_module {
Index next;
Index path;
Address startaddr;
Address endaddr;
} ProfModule;
typedef struct _prof_function {
Index next_to;
Index next_from;
Address frompc;
Address topc;
unsigned long long count;
Index next_hash;
} ProfFunction;
#ifdef __cplusplus
}
#endif
#endif /* _MONV_H */
|