Skip to content

Commit 0b786d6

Browse files
esyr-rhesyr
authored andcommitted
Move enum trace_event into a separate header
As it will have users outside strace.c in the future. * trace_event.h (enum trace_event): Move it from... * strace.c (enum trace_event): ...here. (#include "trace_event.h"): New header, for enum trace_event. * Makefile.am (strace_SOURCES): Add trace_event.h.
1 parent 576e2db commit 0b786d6

File tree

3 files changed

+93
-58
lines changed

3 files changed

+93
-58
lines changed

Makefile.am

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -306,6 +306,7 @@ strace_SOURCES = \
306306
term.c \
307307
time.c \
308308
times.c \
309+
trace_event.h \
309310
truncate.c \
310311
ubi.c \
311312
ucopy.c \

strace.c

Lines changed: 1 addition & 58 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,7 @@
5050
#include "scno.h"
5151
#include "ptrace.h"
5252
#include "printsiginfo.h"
53+
#include "trace_event.h"
5354

5455
/* In some libc, these aren't declared. Do it ourself: */
5556
extern char **environ;
@@ -2191,64 +2192,6 @@ print_event_exit(struct tcb *tcp)
21912192
line_ended();
21922193
}
21932194

2194-
enum trace_event {
2195-
/* Break the main loop. */
2196-
TE_BREAK,
2197-
2198-
/* Call next_event() again. */
2199-
TE_NEXT,
2200-
2201-
/* Restart the tracee with signal 0 and call next_event() again. */
2202-
TE_RESTART,
2203-
2204-
/*
2205-
* For all the events below, current_tcp is set to current tracee's
2206-
* tcb. All the suggested actions imply that you want to continue
2207-
* tracing of the current tracee; alternatively, you can detach it.
2208-
*/
2209-
2210-
/*
2211-
* Syscall entry or exit.
2212-
* Restart the tracee with signal 0, or with an injected signal number.
2213-
*/
2214-
TE_SYSCALL_STOP,
2215-
2216-
/*
2217-
* Tracee received signal with number WSTOPSIG(*pstatus); signal info
2218-
* is written to *si. Restart the tracee (with that signal number
2219-
* if you want to deliver it).
2220-
*/
2221-
TE_SIGNAL_DELIVERY_STOP,
2222-
2223-
/*
2224-
* Tracee was killed by a signal with number WTERMSIG(*pstatus).
2225-
*/
2226-
TE_SIGNALLED,
2227-
2228-
/*
2229-
* Tracee was stopped by a signal with number WSTOPSIG(*pstatus).
2230-
* Restart the tracee with that signal number.
2231-
*/
2232-
TE_GROUP_STOP,
2233-
2234-
/*
2235-
* Tracee exited with status WEXITSTATUS(*pstatus).
2236-
*/
2237-
TE_EXITED,
2238-
2239-
/*
2240-
* Tracee is going to perform execve().
2241-
* Restart the tracee with signal 0.
2242-
*/
2243-
TE_STOP_BEFORE_EXECVE,
2244-
2245-
/*
2246-
* Tracee is going to terminate.
2247-
* Restart the tracee with signal 0.
2248-
*/
2249-
TE_STOP_BEFORE_EXIT,
2250-
};
2251-
22522195
static enum trace_event
22532196
next_event(int *pstatus, siginfo_t *si)
22542197
{

trace_event.h

Lines changed: 91 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,91 @@
1+
/*
2+
* Copyright (c) 2017 The strace developers.
3+
* All rights reserved.
4+
*
5+
* Redistribution and use in source and binary forms, with or without
6+
* modification, are permitted provided that the following conditions
7+
* are met:
8+
* 1. Redistributions of source code must retain the above copyright
9+
* notice, this list of conditions and the following disclaimer.
10+
* 2. Redistributions in binary form must reproduce the above copyright
11+
* notice, this list of conditions and the following disclaimer in the
12+
* documentation and/or other materials provided with the distribution.
13+
* 3. The name of the author may not be used to endorse or promote products
14+
* derived from this software without specific prior written permission.
15+
*
16+
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
17+
* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
18+
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
19+
* IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
20+
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
21+
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
22+
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
23+
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24+
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
25+
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26+
*/
27+
28+
#ifndef STRACE_TRACE_EVENT_H
29+
#define STRACE_TRACE_EVENT_H
30+
31+
/* Possible trace event loop states. Returned by next_event() and dispatched by
32+
* dispatch_event(). */
33+
enum trace_event {
34+
/* Break the main loop. */
35+
TE_BREAK,
36+
37+
/* Call next_event() again. */
38+
TE_NEXT,
39+
40+
/* Restart the tracee with signal 0 and call next_event() again. */
41+
TE_RESTART,
42+
43+
/*
44+
* For all the events below, current_tcp is set to current tracee's
45+
* tcb. All the suggested actions imply that you want to continue
46+
* tracing of the current tracee; alternatively, you can detach it.
47+
*/
48+
49+
/*
50+
* Syscall entry or exit.
51+
* Restart the tracee with signal 0, or with an injected signal number.
52+
*/
53+
TE_SYSCALL_STOP,
54+
55+
/*
56+
* Tracee received signal with number WSTOPSIG(*pstatus); signal info
57+
* is written to *si. Restart the tracee (with that signal number
58+
* if you want to deliver it).
59+
*/
60+
TE_SIGNAL_DELIVERY_STOP,
61+
62+
/*
63+
* Tracee was killed by a signal with number WTERMSIG(*pstatus).
64+
*/
65+
TE_SIGNALLED,
66+
67+
/*
68+
* Tracee was stopped by a signal with number WSTOPSIG(*pstatus).
69+
* Restart the tracee with that signal number.
70+
*/
71+
TE_GROUP_STOP,
72+
73+
/*
74+
* Tracee exited with status WEXITSTATUS(*pstatus).
75+
*/
76+
TE_EXITED,
77+
78+
/*
79+
* Tracee is going to perform execve().
80+
* Restart the tracee with signal 0.
81+
*/
82+
TE_STOP_BEFORE_EXECVE,
83+
84+
/*
85+
* Tracee is going to terminate.
86+
* Restart the tracee with signal 0.
87+
*/
88+
TE_STOP_BEFORE_EXIT,
89+
};
90+
91+
#endif /* !STRACE_TRACE_EVENT_H */

0 commit comments

Comments
 (0)