The Pedigree Project
0.1
src
modules
subsys
posix
trace-state.h
1
/* Copyright (c) 2026, Pedigree Developers. */
2
#ifndef PEDIGREE_POSIX_TRACE_STATE_H
3
#define PEDIGREE_POSIX_TRACE_STATE_H
4
#include "pedigree/kernel/process/SignalEvent.h"
5
#include "pedigree/kernel/processor/UserReturnFrame.h"
6
#include "pedigree/kernel/utilities/Pointers.h"
7
8
#include "trace-task-token.h"
9
10
class
Thread
;
11
class
Process
;
12
namespace
PosixWait {
13
struct
Report;
14
}
15
struct
TraceSignalInfo
{
16
uint64_t words[16]{};
17
};
18
static_assert
(
sizeof
(
TraceSignalInfo
) == 128,
"Linux siginfo size"
);
19
class
EXPORTED_PUBLIC
PosixTraceRelation
{
20
public
:
21
enum class
StopKind { Signal,
Group
, Exec };
22
struct
Resume
{
23
Resume
() =
default
;
24
Resume
(
int
value,
bool
detach,
bool
end) : signal(value), detached(detach), terminal(end) {}
25
int
signal = 0;
26
bool
detached =
false
;
27
bool
terminal =
false
;
28
int32_t pid = 0;
29
uint32_t uid = 0;
30
UniquePointer<SignalEvent>
prepared;
31
};
32
PosixTraceRelation
(
const
TraceTaskRef
& tracer,
const
TraceTaskRef
& tracee);
33
~PosixTraceRelation
();
34
bool
valid()
const
;
35
bool
activate();
36
void
taskClosed(
const
TraceTaskRef
& task);
37
const
TraceTaskRef
& tracer()
const
{
38
return
m_Tracer;
39
}
40
const
TraceTaskRef
& tracee()
const
{
41
return
m_Tracee;
42
}
43
TraceStatus snapshotRegisters(
Amd64UserRegisters
&)
const
;
44
TraceStatus snapshotSignalInfo(
TraceSignalInfo
&)
const
;
45
TraceStatus resume(
int
signal,
bool
detach);
46
bool
stopped()
const
;
47
bool
selectStop(
bool
stopped,
bool
continued,
bool
consume,
PosixWait::Report
&);
48
Resume stop(
Thread
&,
UserReturnFrame
&, StopKind,
int
signal,
const
TraceSignalInfo
&,
49
size_t
continuationEpoch = 0,
bool
ownsReservation =
false
);
50
void
continued(
Process
&);
51
void
imageCommitted();
52
bool
takeExecTrap();
53
54
private
:
55
PosixTraceRelation
(
const
PosixTraceRelation
&) =
delete
;
56
PosixTraceRelation
& operator=(
const
PosixTraceRelation
&) =
delete
;
57
void
unlink();
58
class
State;
59
const
TraceTaskRef
m_Tracer, m_Tracee;
60
UniquePointer<State>
m_State;
61
};
62
using
TraceRelationRef
=
SharedPointer<PosixTraceRelation>
;
63
EXPORTED_PUBLIC TraceStatus posix_trace_traceme();
64
EXPORTED_PUBLIC TraceStatus posix_trace_lookup(int32_t tid,
TraceRelationRef
& empty);
65
TraceStatus posix_trace_prepare_resume(
const
TraceTaskRef
&,
int
signal,
bool
inheritReservation,
66
int32_t pid, uint32_t uid,
UniquePointer<SignalEvent>
&);
67
#endif
Group
Definition
Group.h:32
PosixTraceRelation
Definition
trace-state.h:19
Process
Definition
Process.h:72
SharedPointer< TraceTaskToken >
Thread
Definition
Thread.h:75
UniquePointer
Definition
Pointers.h:79
UserReturnFrame
Definition
UserReturnFrame.h:31
Amd64UserRegisters
Definition
UserReturnFrame.h:11
PosixTraceRelation::Resume
Definition
trace-state.h:22
PosixWait::Report
Definition
wait-state.h:21
TraceSignalInfo
Definition
trace-state.h:15
Generated on Thu Sep 24 2026 06:23:59 for The Pedigree Project by
1.9.8