aboutsummaryrefslogtreecommitdiffstats
path: root/include/sched_trace.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/sched_trace.h')
-rw-r--r--include/sched_trace.h112
1 files changed, 2 insertions, 110 deletions
diff --git a/include/sched_trace.h b/include/sched_trace.h
index 5d2ddb3..0e08c69 100644
--- a/include/sched_trace.h
+++ b/include/sched_trace.h
@@ -6,116 +6,8 @@
6typedef __u8 u8; 6typedef __u8 u8;
7typedef __u32 u32; 7typedef __u32 u32;
8typedef __u16 u16; 8typedef __u16 u16;
9typedef __u64 u64;
9 10
10typedef enum { 11#include <litmus/sched_trace.h>
11 ST_INVOCATION = 0,
12 ST_ARRIVAL = 1,
13 ST_DEPARTURE = 2,
14 ST_PREEMPTION = 3,
15 ST_SCHEDULED = 4,
16 ST_JOB_RELEASE = 5,
17 ST_JOB_COMPLETION = 6,
18 ST_CAPACITY_RELEASE = 7,
19 ST_CAPACITY_ALLOCATION = 8,
20 12
21 ST_MAX
22} trace_type_t;
23
24
25typedef struct {
26 trace_type_t trace:8;
27 unsigned int size:24;
28 unsigned long long timestamp;
29} trace_header_t;
30
31typedef struct {
32 unsigned int is_rt:1;
33 unsigned int is_server:1;
34 task_class_t class:4;
35 unsigned int budget:24;
36 u32 deadline;
37
38 pid_t pid;
39} task_info_t;
40
41typedef struct {
42 trace_header_t header;
43 unsigned long flags;
44} invocation_record_t;
45
46typedef struct {
47 trace_header_t header;
48 task_info_t task;
49} arrival_record_t;
50
51typedef struct {
52 trace_header_t header;
53 task_info_t task;
54} departure_record_t;
55
56typedef struct {
57 trace_header_t header;
58 task_info_t task;
59 task_info_t by;
60} preemption_record_t;
61
62typedef struct {
63 trace_header_t header;
64 task_info_t task;
65} scheduled_record_t;
66
67typedef struct {
68 trace_header_t header;
69 task_info_t task;
70 u16 period;
71 u16 wcet;
72} release_record_t;
73
74typedef struct {
75 trace_header_t header;
76 task_info_t task;
77 u16 period;
78 u16 wcet;
79 int tardiness;
80 unsigned int job_no;
81} completion_record_t;
82
83typedef struct {
84 trace_header_t header;
85 task_info_t task;
86} cap_release_record_t;
87
88typedef struct {
89 trace_header_t header;
90 task_info_t task;
91 u16 budget;
92 u32 deadline;
93 pid_t donor;
94} cap_allocation_record_t;
95
96
97
98
99
100enum {
101 INVALID_HEADER = 1
102};
103
104typedef int (*record_callback_fn)(trace_header_t* hdr);
105
106typedef struct {
107 record_callback_fn handler[ST_MAX];
108} record_callback_t;
109
110#define init_record_callback(a) memset(a, 0, sizeof(record_callback_t))
111#define set_callback(type, fn, a) do {(a)->handler[type] = fn; } while (0);
112
113int walk_sched_trace(void* start, void* end, record_callback_t *cb);
114int walk_sched_traces_ordered(void** start, void** end, unsigned int count,
115 record_callback_t *cb);
116
117int walk_sched_trace_file(const char* name, int keep_mapped,
118 record_callback_t *cb);
119int walk_sched_trace_files_ordered(const char** names, unsigned int count,
120 int keep_mapped, record_callback_t *cb);
121#endif 13#endif