Lines Matching refs:event

43 static Event event;
57 enque_event(Event * event)
59 debug(DEBUG_FUNCTION, "%d: queuing event %d for later",
60 event->proc->pid, event->type);
63 fprintf(stderr, "event will be missed: %s\n", strerror(errno));
67 *ne = *event;
83 Event * event;
84 for (event = prev; event != NULL; ) {
85 switch ((*pred)(event, data)) {
87 prev = event;
88 event = event->next;
92 debug(DEBUG_FUNCTION, "dequeuing event %d for %d",
93 event->type,
94 event->proc != NULL ? event->proc->pid : -1);
96 printf("dequeuing event %d for %d\n", event->type,
97 event->proc != NULL ? event->proc->pid : -1) ;
99 if (end_delayed_events == event)
101 if (delayed_events == event)
102 delayed_events = event->next;
104 prev->next = event->next;
110 return event;
118 event_process_not_reenabling(Event * event, void * data)
120 if (event->proc == NULL
121 || event->proc->leader == NULL
122 || event->proc->leader->event_handler == NULL)
147 event = *ev;
149 return &event;
153 debug(DEBUG_EVENT, "event: No more traced programs: exiting");
163 debug(DEBUG_EVENT, "event: No more traced programs: exiting");
166 debug(DEBUG_EVENT, "event: none (wait received EINTR?)");
167 event.type = EVENT_NONE;
168 return &event;
173 event.proc = pid2proc(pid);
174 if (!event.proc || event.proc->state == STATE_BEING_CREATED) {
176 * where we are seeing a waitpid event even though the
195 event.type = EVENT_NEW;
196 event.e_un.newpid = pid;
197 debug(DEBUG_EVENT, "event: NEW: pid=%d", pid);
198 return &event;
201 get_arch_dep(event.proc);
202 debug(3, "event from pid %u", pid);
203 struct process *leader = event.proc->leader;
212 * suppress the event, and let the event loop collect the
222 event.type = EVENT_NONE; \
223 continue_process(event.proc->pid); \
224 return &event; \
229 event.proc->instruction_pointer = (void *)(uintptr_t)-1;
233 * the event that we are processing. */
235 event.type = EVENT_EXIT_SIGNAL;
236 event.e_un.signum = WTERMSIG(status);
237 debug(DEBUG_EVENT, "event: EXIT_SIGNAL: pid=%d, signum=%d", pid, event.e_un.signum);
238 return &event;
241 event.type = EVENT_EXIT;
242 event.e_un.ret_val = WEXITSTATUS(status);
243 debug(DEBUG_EVENT, "event: EXIT: pid=%d, status=%d", pid, event.e_un.ret_val);
244 return &event;
247 event.proc->instruction_pointer = get_instruction_pointer(event.proc);
248 if (event.proc->instruction_pointer == (void *)(uintptr_t)-1) {
254 switch (syscall_p(event.proc, status, &tmp)) {
256 event.type = EVENT_SYSCALL;
257 event.e_un.sysnum = tmp;
258 debug(DEBUG_EVENT, "event: SYSCALL: pid=%d, sysnum=%d", pid, tmp);
259 return &event;
261 event.type = EVENT_SYSRET;
262 event.e_un.sysnum = tmp;
263 debug(DEBUG_EVENT, "event: SYSRET: pid=%d, sysnum=%d", pid, tmp);
264 return &event;
266 event.type = EVENT_ARCH_SYSCALL;
267 event.e_un.sysnum = tmp;
268 debug(DEBUG_EVENT, "event: ARCH_SYSCALL: pid=%d, sysnum=%d", pid, tmp);
269 return &event;
271 event.type = EVENT_ARCH_SYSRET;
272 event.e_un.sysnum = tmp;
273 debug(DEBUG_EVENT, "event: ARCH_SYSRET: pid=%d, sysnum=%d", pid, tmp);
274 return &event;
286 event.type = what == PTRACE_EVENT_VFORK
289 event.e_un.newpid = data;
290 debug(DEBUG_EVENT, "event: CLONE: pid=%d, newpid=%d",
292 return &event;
296 event.type = EVENT_EXEC;
297 debug(DEBUG_EVENT, "event: EXEC: pid=%d", pid);
298 return &event;
302 event.type = EVENT_NONE;
303 debug(DEBUG_EVENT, "event: NONE: pid=%d (wait error?)", pid);
304 return &event;
318 = event.proc->instruction_pointer - DECR_PC_AFTER_BREAK;
324 if (stop_signal != (SIGTRAP | event.proc->tracesysgood)
326 event.type = EVENT_SIGNAL;
327 event.e_un.signum = stop_signal;
328 debug(DEBUG_EVENT, "event: SIGNAL: pid=%d, signum=%d", pid, stop_signal);
329 return &event;
333 event.type = EVENT_BREAKPOINT;
335 event.e_un.brk_addr = break_address;
336 debug(DEBUG_EVENT, "event: BREAKPOINT: pid=%d, addr=%p", pid, event.e_un.brk_addr);
338 return &event;
342 event_for_proc(struct Event *event, void *data)
344 if (event->proc == data)
353 struct Event *event;
354 while ((event = each_qd_event(&event_for_proc, proc)) != NULL)
355 free(event);