Stackdb
Stackdb is a stackable, multi-target and -level source debugger and memory forensics library.
Main Page
Related Pages
Namespaces
Data Structures
Files
File List
Globals
All
Data Structures
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Macros
Pages
target
target_event.h
Go to the documentation of this file.
1
/*
2
* Copyright (c) 2014 The University of Utah
3
*
4
* This program is free software; you can redistribute it and/or
5
* modify it under the terms of the GNU General Public License as
6
* published by the Free Software Foundation; either version 2 of
7
* the License, or (at your option) any later version.
8
*
9
* This program is distributed in the hope that it will be useful,
10
* but WITHOUT ANY WARRANTY; without even the implied warranty of
11
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12
* GNU General Public License for more details.
13
*
14
* You should have received a copy of the GNU General Public License
15
* along with this program; if not, write to the Free Software
16
* Foundation, 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.
17
*/
18
19
#ifndef __TARGET_EVENT_H__
20
#define __TARGET_EVENT_H__
21
22
#include "
common.h
"
23
28
typedef
enum
{
29
T_EVENT_EXITED
= 1,
30
T_EVENT_EXITING
,
31
T_EVENT_ERROR
,
32
33
/*
34
T_EVENT_THREAD_CREATED,
35
T_EVENT_THREAD_EXITED,
36
T_EVENT_THREAD_EXITING,
37
38
T_EVENT_SPACE_NEW,
39
T_EVENT_SPACE_MOD,
40
T_EVENT_SPACE_DEL,
41
42
T_EVENT_REGION_NEW,
43
T_EVENT_REGION_MOD,
44
T_EVENT_REGION_DEL,
45
46
T_EVENT_RANGE_NEW,
47
T_EVENT_RANGE_MOD,
48
T_EVENT_RANGE_DEL,
49
*/
50
51
T_EVENT_OS_THREAD_CREATED
,
52
T_EVENT_OS_THREAD_EXITED
,
53
T_EVENT_OS_THREAD_EXITING
,
54
T_EVENT_OS_SPACE_NEW
,
55
T_EVENT_OS_SPACE_MOD
,
56
T_EVENT_OS_SPACE_DEL
,
57
T_EVENT_OS_REGION_NEW
,
58
T_EVENT_OS_REGION_MOD
,
59
T_EVENT_OS_REGION_DEL
,
60
T_EVENT_OS_RANGE_NEW
,
61
T_EVENT_OS_RANGE_MOD
,
62
T_EVENT_OS_RANGE_DEL
,
63
64
T_EVENT_OS_PROCESS_THREAD_CREATED
,
65
T_EVENT_OS_PROCESS_THREAD_EXITED
,
66
T_EVENT_OS_PROCESS_THREAD_EXITING
,
67
T_EVENT_OS_PROCESS_SPACE_NEW
,
68
T_EVENT_OS_PROCESS_SPACE_MOD
,
69
T_EVENT_OS_PROCESS_SPACE_DEL
,
70
T_EVENT_OS_PROCESS_REGION_NEW
,
71
T_EVENT_OS_PROCESS_REGION_MOD
,
72
T_EVENT_OS_PROCESS_REGION_DEL
,
73
T_EVENT_OS_PROCESS_RANGE_NEW
,
74
T_EVENT_OS_PROCESS_RANGE_MOD
,
75
T_EVENT_OS_PROCESS_RANGE_DEL
,
76
77
T_EVENT_PROCESS_THREAD_CREATED
,
78
T_EVENT_PROCESS_THREAD_EXITED
,
79
T_EVENT_PROCESS_THREAD_EXITING
,
80
T_EVENT_PROCESS_SPACE_NEW
,
81
T_EVENT_PROCESS_SPACE_MOD
,
82
T_EVENT_PROCESS_SPACE_DEL
,
83
T_EVENT_PROCESS_REGION_NEW
,
84
T_EVENT_PROCESS_REGION_MOD
,
85
T_EVENT_PROCESS_REGION_DEL
,
86
T_EVENT_PROCESS_RANGE_NEW
,
87
T_EVENT_PROCESS_RANGE_MOD
,
88
T_EVENT_PROCESS_RANGE_DEL
,
89
}
target_event_t
;
90
91
#define T_EVENT_IS_OS(event) \
92
((event)->type >= T_EVENT_OS_THREAD_CREATED \
93
&& (event)->type <= T_EVENT_OS_RANGE_DEL)
94
#define T_EVENT_IS_OS_PROCESS(event) \
95
((event)->type >= T_EVENT_OS_PROCESS_THREAD_CREATED \
96
&& (event)->type <= T_EVENT_OS_PROCESS_RANGE_DEL)
97
#define T_EVENT_IS_PROCESS(event) \
98
((event)->type >= T_EVENT_PROCESS_THREAD_CREATED \
99
&& (event)->type <= T_EVENT_PROCESS_RANGE_DEL)
100
#define T_EVENT_IS_SPACE(event,ttype) \
101
((event)->type >= T_EVENT_ ## ttype ## _SPACE_NEW \
102
&& (event)->type <= T_EVENT_ ## ttype ## _SPACE_DEL)
103
#define T_EVENT_IS_REGION(event,ttype) \
104
((event)->type >= T_EVENT_ ## ttype ## _REGION_NEW \
105
&& (event)->type <= T_EVENT_ ## ttype ## _REGION_DEL)
106
#define T_EVENT_IS_RANGE(event,ttype) \
107
((event)->type >= T_EVENT_ ## ttype ## _RANGE_NEW \
108
&& (event)->type <= T_EVENT_ ## ttype ## _RANGE_DEL)
109
110
static
inline
char
*TARGET_EVENT_NAME(
target_event_t
type) {
111
switch
(type) {
112
case
T_EVENT_EXITED
:
return
"EXITED"
;
113
case
T_EVENT_EXITING
:
return
"EXITING"
;
114
case
T_EVENT_ERROR
:
return
"ERROR"
;
115
/*
116
case T_EVENT_THREAD_CREATED: return "THREAD_CREATED";
117
case T_EVENT_THREAD_EXITED: return "THREAD_EXITED";
118
case T_EVENT_THREAD_EXITING: return "THREAD_EXITING";
119
120
case T_EVENT_SPACE_NEW: return "SPACE_NEW";
121
case T_EVENT_SPACE_MOD: return "SPACE_MOD";
122
case T_EVENT_SPACE_DEL: return "SPACE_DEL";
123
124
case T_EVENT_REGION_NEW: return "REGION_NEW";
125
case T_EVENT_REGION_MOD: return "REGION_MOD";
126
case T_EVENT_REGION_DEL: return "REGION_DEL";
127
128
case T_EVENT_RANGE_NEW: return "RANGE_NEW";
129
case T_EVENT_RANGE_MOD: return "RANGE_MOD";
130
case T_EVENT_RANGE_DEL: return "RANGE_DEL";
131
*/
132
case
T_EVENT_OS_THREAD_CREATED
:
return
"OS_THREAD_CREATED"
;
133
case
T_EVENT_OS_THREAD_EXITED
:
return
"OS_THREAD_EXITED"
;
134
case
T_EVENT_OS_THREAD_EXITING
:
return
"OS_THREAD_EXITING"
;
135
case
T_EVENT_OS_SPACE_NEW
:
return
"OS_SPACE_NEW"
;
136
case
T_EVENT_OS_SPACE_MOD
:
return
"OS_SPACE_MOD"
;
137
case
T_EVENT_OS_SPACE_DEL
:
return
"OS_SPACE_DEL"
;
138
case
T_EVENT_OS_REGION_NEW
:
return
"OS_REGION_NEW"
;
139
case
T_EVENT_OS_REGION_MOD
:
return
"OS_REGION_MOD"
;
140
case
T_EVENT_OS_REGION_DEL
:
return
"OS_REGION_DEL"
;
141
case
T_EVENT_OS_RANGE_NEW
:
return
"OS_RANGE_NEW"
;
142
case
T_EVENT_OS_RANGE_MOD
:
return
"OS_RANGE_MOD"
;
143
case
T_EVENT_OS_RANGE_DEL
:
return
"OS_RANGE_DEL"
;
144
145
case
T_EVENT_OS_PROCESS_THREAD_CREATED
:
return
"OS_PROCESS_THREAD_CREATED"
;
146
case
T_EVENT_OS_PROCESS_THREAD_EXITED
:
return
"OS_PROCESS_THREAD_EXITED"
;
147
case
T_EVENT_OS_PROCESS_THREAD_EXITING
:
return
"OS_PROCESS_THREAD_EXITING"
;
148
case
T_EVENT_OS_PROCESS_SPACE_NEW
:
return
"OS_PROCESS_SPACE_NEW"
;
149
case
T_EVENT_OS_PROCESS_SPACE_MOD
:
return
"OS_PROCESS_SPACE_MOD"
;
150
case
T_EVENT_OS_PROCESS_SPACE_DEL
:
return
"OS_PROCESS_SPACE_DEL"
;
151
case
T_EVENT_OS_PROCESS_REGION_NEW
:
return
"OS_PROCESS_REGION_NEW"
;
152
case
T_EVENT_OS_PROCESS_REGION_MOD
:
return
"OS_PROCESS_REGION_MOD"
;
153
case
T_EVENT_OS_PROCESS_REGION_DEL
:
return
"OS_PROCESS_REGION_DEL"
;
154
case
T_EVENT_OS_PROCESS_RANGE_NEW
:
return
"OS_PROCESS_RANGE_NEW"
;
155
case
T_EVENT_OS_PROCESS_RANGE_MOD
:
return
"OS_PROCESS_RANGE_MOD"
;
156
case
T_EVENT_OS_PROCESS_RANGE_DEL
:
return
"OS_PROCESS_RANGE_DEL"
;
157
158
case
T_EVENT_PROCESS_THREAD_CREATED
:
return
"PROCESS_THREAD_CREATED"
;
159
case
T_EVENT_PROCESS_THREAD_EXITED
:
return
"PROCESS_THREAD_EXITED"
;
160
case
T_EVENT_PROCESS_THREAD_EXITING
:
return
"PROCESS_THREAD_EXITING"
;
161
case
T_EVENT_PROCESS_SPACE_NEW
:
return
"PROCESS_SPACE_NEW"
;
162
case
T_EVENT_PROCESS_SPACE_MOD
:
return
"PROCESS_SPACE_MOD"
;
163
case
T_EVENT_PROCESS_SPACE_DEL
:
return
"PROCESS_SPACE_DEL"
;
164
case
T_EVENT_PROCESS_REGION_NEW
:
return
"PROCESS_REGION_NEW"
;
165
case
T_EVENT_PROCESS_REGION_MOD
:
return
"PROCESS_REGION_MOD"
;
166
case
T_EVENT_PROCESS_REGION_DEL
:
return
"PROCESS_REGION_DEL"
;
167
case
T_EVENT_PROCESS_RANGE_NEW
:
return
"PROCESS_RANGE_NEW"
;
168
case
T_EVENT_PROCESS_RANGE_MOD
:
return
"PROCESS_RANGE_MOD"
;
169
case
T_EVENT_PROCESS_RANGE_DEL
:
return
"PROCESS_RANGE_DEL"
;
170
171
default
:
return
NULL;
172
}
173
}
174
175
struct
target
;
176
struct
target_thread
;
177
189
struct
target_event
{
190
target_event_t
type
;
191
/*
192
* We copy the target id and thread id in case we have to NULL out
193
* target/thread after creating the event, because the objects got
194
* deleted.
195
*/
196
int
id
;
197
tid_t
tid
;
198
struct
target
*
target
;
199
struct
target_thread
*
thread
;
200
void
*
priv
;
201
void
*
priv2
;
202
};
203
204
/*
205
* Creates an event.
206
*/
207
struct
target_event
*
target_create_event
(
struct
target
*
target
,
208
struct
target_thread
*
thread
,
209
target_event_t
event,
void
*
priv
);
210
211
struct
target_event
*
target_create_event_2
(
struct
target
*
target
,
212
struct
target_thread
*
thread
,
213
target_event_t
event,
214
void
*
priv
,
void
*
priv2
);
215
/*
216
* Broadcasts an @event on @target (and target_queue_event iff @target
217
* == @event->target). If @target == @event->target, @target itself
218
* will not be notified. If @target->base, the base target will be
219
* notified. If @event->thread->tid is a member of one of
220
* @target->overlays, the corresponding overlay will be notified too.
221
*/
222
void
target_broadcast_event
(
struct
target
*
target
,
struct
target_event
*event);
223
224
#endif
/* __TARGET_EVENT_H__ */
target_create_event_2
struct target_event * target_create_event_2(struct target *target, struct target_thread *thread, target_event_t event, void *priv, void *priv2)
Definition:
target_event.c:47
T_EVENT_OS_THREAD_CREATED
Definition:
target_event.h:51
target_event_t
target_event_t
Definition:
target_event.h:28
T_EVENT_OS_PROCESS_SPACE_MOD
Definition:
target_event.h:68
T_EVENT_OS_REGION_NEW
Definition:
target_event.h:57
tid_t
int32_t tid_t
Definition:
common.h:36
T_EVENT_OS_THREAD_EXITED
Definition:
target_event.h:52
T_EVENT_OS_REGION_DEL
Definition:
target_event.h:59
T_EVENT_OS_PROCESS_THREAD_EXITED
Definition:
target_event.h:65
T_EVENT_PROCESS_SPACE_DEL
Definition:
target_event.h:82
target_create_event
struct target_event * target_create_event(struct target *target, struct target_thread *thread, target_event_t event, void *priv)
Definition:
target_event.c:26
T_EVENT_PROCESS_RANGE_DEL
Definition:
target_event.h:88
T_EVENT_OS_PROCESS_REGION_MOD
Definition:
target_event.h:71
T_EVENT_OS_SPACE_NEW
Definition:
target_event.h:54
target_event::target
struct target * target
Definition:
target_event.h:198
T_EVENT_PROCESS_RANGE_MOD
Definition:
target_event.h:87
T_EVENT_PROCESS_THREAD_EXITING
Definition:
target_event.h:79
target_event::tid
tid_t tid
Definition:
target_event.h:197
T_EVENT_OS_PROCESS_SPACE_DEL
Definition:
target_event.h:69
T_EVENT_EXITED
Definition:
target_event.h:29
target_event
Definition:
target_event.h:189
T_EVENT_OS_PROCESS_RANGE_NEW
Definition:
target_event.h:73
T_EVENT_OS_SPACE_DEL
Definition:
target_event.h:56
T_EVENT_PROCESS_REGION_DEL
Definition:
target_event.h:85
T_EVENT_PROCESS_REGION_NEW
Definition:
target_event.h:83
T_EVENT_OS_PROCESS_THREAD_EXITING
Definition:
target_event.h:66
target_event::priv
void * priv
Definition:
target_event.h:200
T_EVENT_OS_PROCESS_RANGE_DEL
Definition:
target_event.h:75
T_EVENT_PROCESS_REGION_MOD
Definition:
target_event.h:84
T_EVENT_OS_PROCESS_REGION_NEW
Definition:
target_event.h:70
target_event::id
int id
Definition:
target_event.h:196
T_EVENT_PROCESS_RANGE_NEW
Definition:
target_event.h:86
target_thread
Definition:
target_api.h:2077
T_EVENT_OS_PROCESS_SPACE_NEW
Definition:
target_event.h:67
T_EVENT_OS_RANGE_MOD
Definition:
target_event.h:61
target_event::priv2
void * priv2
Definition:
target_event.h:201
target_broadcast_event
void target_broadcast_event(struct target *target, struct target_event *event)
Definition:
target_event.c:56
T_EVENT_PROCESS_THREAD_CREATED
Definition:
target_event.h:77
T_EVENT_OS_RANGE_NEW
Definition:
target_event.h:60
target_event::thread
struct target_thread * thread
Definition:
target_event.h:199
T_EVENT_EXITING
Definition:
target_event.h:30
T_EVENT_ERROR
Definition:
target_event.h:31
T_EVENT_PROCESS_SPACE_NEW
Definition:
target_event.h:80
T_EVENT_OS_THREAD_EXITING
Definition:
target_event.h:53
T_EVENT_OS_RANGE_DEL
Definition:
target_event.h:62
target_event::type
target_event_t type
Definition:
target_event.h:190
common.h
T_EVENT_OS_PROCESS_RANGE_MOD
Definition:
target_event.h:74
T_EVENT_OS_SPACE_MOD
Definition:
target_event.h:55
T_EVENT_OS_PROCESS_THREAD_CREATED
Definition:
target_event.h:64
T_EVENT_OS_REGION_MOD
Definition:
target_event.h:58
T_EVENT_PROCESS_THREAD_EXITED
Definition:
target_event.h:78
T_EVENT_PROCESS_SPACE_MOD
Definition:
target_event.h:81
target
Definition:
target_api.h:2460
T_EVENT_OS_PROCESS_REGION_DEL
Definition:
target_event.h:72
Generated on Thu Jul 27 2017 20:47:31 for Stackdb by
1.8.8