OpenADFortTk (including Open64 and OpenAnalysis references)
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
events.h
Go to the documentation of this file.
1 /*
2 
3  Copyright (C) 2000, 2001 Silicon Graphics, Inc. All Rights Reserved.
4 
5  This program is free software; you can redistribute it and/or modify it
6  under the terms of version 2 of the GNU General Public License as
7  published by the Free Software Foundation.
8 
9  This program is distributed in the hope that it would be useful, but
10  WITHOUT ANY WARRANTY; without even the implied warranty of
11  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
12 
13  Further, this software is distributed without any warranty that it is
14  free of the rightful claim of any third person regarding infringement
15  or the like. Any license provided herein, whether implied or
16  otherwise, applies only to this software file. Patent licenses, if
17  any, provided herein do not apply to combinations of this program with
18  other software, or any other product whatsoever.
19 
20  You should have received a copy of the GNU General Public License along
21  with this program; if not, write the Free Software Foundation, Inc., 59
22  Temple Place - Suite 330, Boston MA 02111-1307, USA.
23 
24  Contact information: Silicon Graphics, Inc., 1600 Amphitheatre Pky,
25  Mountain View, CA 94043, or:
26 
27  http://www.sgi.com
28 
29  For further information regarding this notice, see:
30 
31  http://oss.sgi.com/projects/GenInfo/NoticeExplan
32 
33 */
34 
35 
36 /*
37 
38  EVENTS.H
39 
40 */
41  /*
42  * This structure is used to gather
43  * information from an events section
44  * record. Since each record is variable
45  * length and is context dependent based
46  * on it's type, the fields for arg[1-3]
47  * are large.
48  *
49  * It is not expected that this structure
50  * would be used in a table or linked list
51  * thus size is less of a concern.
52  */
53 typedef struct {
54  __uint64_t fevnt_arg1; /* First argument
55  (Zero if no arguments
56  for this event)
57  */
58  __uint64_t fevnt_pre_arg1; /* Raw arg1 value.
59  Zero for leb128 values.
60  For other values, same
61  as the fevent_arg1 value
62  */
63  __uint64_t fevnt_arg2; /* Second argument
64  (Zero if one or 0 arguments).
65  */
66  __uint64_t fevnt_pre_arg2; /* Raw arg2 value.
67  Like fevnt_pre_arg1.
68  */
69  __uint64_t fevnt_arg3; /* Third argument
70  (zero if less than 3
71  arguments).
72  */
73  __uint64_t fevnt_pre_arg3; /* Raw arg3 value .
74  Like fevnt_pre_arg1.
75  */
76  __uint64_t fevnt_base; /* Section base address?
77  Not filled in or used
78  by
79  event_find_record() or
80  event_get_next_rec().
81  */
82  __uint32_t fevnt_type; /* Record type.
83  the EK_* value of this
84  event.
85  */
86  __uint32_t fevnt_offset; /* Section offset.
87  incremented by
88  event_get_next_rec()
89  by the length of the encoding
90  of the event described
91  by this Full_Events
92  record.
93  (for event_find_record() is
94  incremented by the net number
95  of events bytes.)
96  */
97  __uint32_t fevnt_index; /* text section index, not
98  filled in or used by
99  event_find_record() or
100  event_get_next_rec().
101  */
102 } Full_Events;
103 
104  /*******************************************************/
105  /*******************************************************/
106  /*
107  * Get information from the events section record
108  * pointed to by p_event and return a pointer
109  * to the next record.
110  */
111 char *event_get_next_rec(
112  char *, /* pointer into section */
113  __uint32_t , /* current offset into text section */
114  Full_Events *); /* information from record */
115 
116  /*******************************************************/
117  /*******************************************************/
118  /*
119  * starting at the given point in the section
120  * pointed to by p_event, find the next events
121  * section record of the given type.
122  *
123  * It is assumed that the current offset coming
124  * into this routine will be stored in p_full.
125  *
126  * Returns EK_NULL if type not found.
127  */
128 __uint32_t event_find_record(
129  char *, /* pointer into the events section */
130  Full_Events *, /* structure for events record info */
131  __uint32_t, /* event section type */
132  char *); /* end of the current events section */
133 
134  /*******************************************************/
135  /*******************************************************/
136  /*
137  * Return the name of the the kind based on the
138  * kind number. If I don't reccognize the the kind
139  * return the hex string for the number.
140  *
141  * The buffer for the string is statically allocated
142  * at compile time. If you want to manipulate the string
143  * or keep it around while making multiple calls to
144  * event_kind_string(), you need to copy it to another
145  * buffer.
146  *
147  */
148 char *event_kind_string(__uint32_t );
149 
150  /*******************************************************/
151  /*******************************************************/