lib/sys/src/process/tracing/root.zig
daab053ee43316e1809a84551d573ddd1e5bf3d2
1 //! A recorder that wants every file a program opens has to stop that program at
2 //! each syscall, attached from the start as the process that receives its
3 //! stops, the *tracer*. This namespace holds the Linux primitives for that:
4 //! launching a child held at a gate, attaching to it, waiting for its stops,
5 //! continuing it, and reading the syscall it stopped on.
6 //!
7 //! Attaching carries the fork, vfork, clone, exec, and exit-kill options, so
8 //! the tracer sees new descendants and the tracees die with it. One tracer owns
9 //! the wait domain, because the wait drains every child status change in the
10 //! calling process, so a second waiter in that process takes stops meant for
11 //! the tracer.
12 pub const launch = @import("launch.zig");
13 pub const operations = @import("operations.zig");
14 pub const start = launch.start;
15 pub const attach = operations.attach;
16 pub const wait = operations.wait;
17 pub const continueTask = operations.continueTask;
18 pub const listen = operations.listen;
19 pub const message = operations.message;
20 pub const terminate = operations.terminate;
21 pub const Event = operations.Event;
22 pub const Observation = operations.Observation;
23 pub const syscall = @import("syscall.zig");