1 /* Note, automatically generated from Fiasco binary */
2 #pragma once
3 
4 enum L4_ktrace_tbuf_entry_fixed
5 {
6   l4_ktrace_tbuf_unused = 0,
7   l4_ktrace_tbuf_pf = 1,
8   l4_ktrace_tbuf_ipc = 2,
9   l4_ktrace_tbuf_ipc_res = 3,
10   l4_ktrace_tbuf_ipc_trace = 4,
11   l4_ktrace_tbuf_ke = 5,
12   l4_ktrace_tbuf_ke_reg = 6,
13   l4_ktrace_tbuf_breakpoint = 7,
14   l4_ktrace_tbuf_ke_bin = 8,
15   l4_ktrace_tbuf_dynentries = 9,
16   l4_ktrace_tbuf_max = 128,
17   l4_ktrace_tbuf_hidden = 128,
18 };
19 
20 typedef unsigned long L4_ktrace_t__Address;
21 typedef unsigned long L4_ktrace_t__Cap_index;
22 typedef void L4_ktrace_t__Context;
23 typedef void L4_ktrace_t__Context__Drq;
24 typedef unsigned L4_ktrace_t__Context__Drq_log__Type;
25 typedef unsigned L4_ktrace_t__Cpu_number;
26 typedef void L4_ktrace_t__Irq_base;
27 typedef void L4_ktrace_t__Irq_chip;
28 typedef void L4_ktrace_t__Kobject;
29 typedef unsigned long L4_ktrace_t__L4_error;
30 typedef unsigned long L4_ktrace_t__L4_msg_tag;
31 typedef unsigned long L4_ktrace_t__L4_obj_ref;
32 typedef unsigned L4_ktrace_t__L4_timeout_pair;
33 typedef unsigned long L4_ktrace_t__Mword;
34 typedef void L4_ktrace_t__Rcu_item;
35 typedef void L4_ktrace_t__Sched_context;
36 typedef long L4_ktrace_t__Smword;
37 typedef void L4_ktrace_t__Space;
38 typedef unsigned int L4_ktrace_t__Unsigned32;
39 typedef unsigned long long L4_ktrace_t__Unsigned64;
40 typedef unsigned char L4_ktrace_t__Unsigned8;
41 typedef void L4_ktrace_t__cxx__Type_info;
42 
43 #ifdef __mips64
44 typedef struct __attribute__((packed))
45 {
46   L4_ktrace_t__Mword _number; /* 0+8 */
47   L4_ktrace_t__Address _ip; /* 8+8 */
48   L4_ktrace_t__Unsigned64 _tsc; /* 16+8 */
49   L4_ktrace_t__Context *_ctx; /* 24+8 */
50   L4_ktrace_t__Unsigned32 _pmc1; /* 32+4 */
51   L4_ktrace_t__Unsigned32 _pmc2; /* 36+4 */
52   L4_ktrace_t__Unsigned32 _kclock; /* 40+4 */
53   L4_ktrace_t__Unsigned8 _type; /* 44+1 */
54   L4_ktrace_t__Unsigned8 _cpu; /* 45+1 */
55   union __attribute__((__packed__))
56   {
57     struct __attribute__((__packed__))
58     {
59       char __pre_pad[2];
60       void *func; /* 48+8 */
61       L4_ktrace_t__Context *thread; /* 56+8 */
62       L4_ktrace_t__Context__Drq *rq; /* 64+8 */
63       L4_ktrace_t__Cpu_number target_cpu; /* 72+4 */
64       L4_ktrace_t__Context__Drq_log__Type type; /* 76+4 */
65       char wait; /* 80+1 */
66     } drq; /* 88 */
67     struct __attribute__((__packed__))
68     {
69       char __pre_pad[2];
70       L4_ktrace_t__Mword state; /* 48+8 */
71       L4_ktrace_t__Mword ip; /* 56+8 */
72       L4_ktrace_t__Mword sp; /* 64+8 */
73       L4_ktrace_t__Mword space; /* 72+8 */
74       L4_ktrace_t__Mword err; /* 80+8 */
75       unsigned char type; /* 88+1 */
76       unsigned char trap; /* 89+1 */
77     } vcpu; /* 96 */
78     struct __attribute__((__packed__))
79     {
80       char __pre_pad[2];
81       L4_ktrace_t__Smword op; /* 48+8 */
82       L4_ktrace_t__Cap_index buffer; /* 56+8 */
83       L4_ktrace_t__Mword id; /* 64+8 */
84       L4_ktrace_t__Mword ram; /* 72+8 */
85       L4_ktrace_t__Mword newo; /* 80+8 */
86     } factory; /* 88 */
87     struct __attribute__((__packed__))
88     {
89       char __pre_pad[2];
90       L4_ktrace_t__Mword gate_dbg_id; /* 48+8 */
91       L4_ktrace_t__Mword thread_dbg_id; /* 56+8 */
92       L4_ktrace_t__Mword label; /* 64+8 */
93     } gate; /* 72 */
94     struct __attribute__((__packed__))
95     {
96       char __pre_pad[2];
97       L4_ktrace_t__Irq_base *obj; /* 48+8 */
98       L4_ktrace_t__Irq_chip *chip; /* 56+8 */
99       L4_ktrace_t__Mword pin; /* 64+8 */
100     } irq; /* 72 */
101     struct __attribute__((__packed__))
102     {
103       char __pre_pad[2];
104       L4_ktrace_t__Kobject *obj; /* 48+8 */
105       L4_ktrace_t__Mword id; /* 56+8 */
106       L4_ktrace_t__cxx__Type_info *type; /* 64+8 */
107       L4_ktrace_t__Mword ram; /* 72+8 */
108     } destroy; /* 80 */
109     struct __attribute__((__packed__))
110     {
111       char __pre_pad[2];
112       L4_ktrace_t__Cpu_number cpu; /* 48+4 */
113       char __pad_1[4];
114       L4_ktrace_t__Rcu_item *item; /* 56+8 */
115       void *cb; /* 64+8 */
116       unsigned char event; /* 72+1 */
117     } rcu; /* 80 */
118     struct __attribute__((__packed__))
119     {
120       char __pre_pad[2];
121       L4_ktrace_t__Mword id; /* 48+8 */
122       L4_ktrace_t__Mword mask; /* 56+8 */
123       L4_ktrace_t__Mword fpage; /* 64+8 */
124       char map; /* 72+1 */
125     } tmap; /* 80 */
126     struct __attribute__((__packed__))
127     {
128       char __pre_pad[2];
129       L4_ktrace_t__Address _address; /* 48+8 */
130       int _len; /* 56+4 */
131       char __pad_1[4];
132       L4_ktrace_t__Mword _value; /* 64+8 */
133       int _mode; /* 72+4 */
134     } bp; /* 80 */
135     struct __attribute__((__packed__))
136     {
137       char __pre_pad[2];
138       L4_ktrace_t__Context *dst; /* 48+8 */
139       L4_ktrace_t__Context *dst_orig; /* 56+8 */
140       L4_ktrace_t__Address kernel_ip; /* 64+8 */
141       L4_ktrace_t__Mword lock_cnt; /* 72+8 */
142       L4_ktrace_t__Space *from_space; /* 80+8 */
143       L4_ktrace_t__Sched_context *from_sched; /* 88+8 */
144       L4_ktrace_t__Mword from_prio; /* 96+8 */
145     } context_switch; /* 104 */
146     struct __attribute__((__packed__))
147     {
148     } empty; /* 48 */
149     struct __attribute__((__packed__))
150     {
151       char __pre_pad[2];
152       L4_ktrace_t__L4_msg_tag _tag; /* 48+8 */
153       L4_ktrace_t__Mword _dword[2]; /* 56+16 */
154       L4_ktrace_t__L4_obj_ref _dst; /* 72+8 */
155       L4_ktrace_t__Mword _dbg_id; /* 80+8 */
156       L4_ktrace_t__Mword _label; /* 88+8 */
157       L4_ktrace_t__L4_timeout_pair _timeout; /* 96+4 */
158     } ipc; /* 104 */
159     struct __attribute__((__packed__))
160     {
161       char __pre_pad[2];
162       L4_ktrace_t__L4_msg_tag _tag; /* 48+8 */
163       L4_ktrace_t__Mword _dword[2]; /* 56+16 */
164       L4_ktrace_t__L4_error _result; /* 72+8 */
165       L4_ktrace_t__Mword _from; /* 80+8 */
166       L4_ktrace_t__Mword _pair_event; /* 88+8 */
167       L4_ktrace_t__Unsigned8 _have_snd; /* 96+1 */
168       L4_ktrace_t__Unsigned8 _is_np; /* 97+1 */
169     } ipc_res; /* 104 */
170     struct __attribute__((__packed__))
171     {
172       char __pre_pad[2];
173       L4_ktrace_t__Unsigned64 _snd_tsc; /* 48+8 */
174       L4_ktrace_t__L4_msg_tag _result; /* 56+8 */
175       L4_ktrace_t__L4_obj_ref _snd_dst; /* 64+8 */
176       L4_ktrace_t__Mword _rcv_dst; /* 72+8 */
177       L4_ktrace_t__Unsigned8 _snd_desc; /* 80+1 */
178       L4_ktrace_t__Unsigned8 _rcv_desc; /* 81+1 */
179     } ipc_trace; /* 88 */
180     struct __attribute__((__packed__))
181     {
182       char __pre_pad[2];
183       union __attribute__((__packed__)) {
184         char msg[80]; /* 0+80 */
185         struct __attribute__((__packed__)) {
186           char tag[2]; /* 0+2 */
187           char __pad_1[6];
188           char *ptr; /* 8+8 */
189         } mptr; /* 0+16 */
190       } msg; /* 48+80 */
191     } ke; /* 128 */
192     struct __attribute__((__packed__))
193     {
194       char _msg[80]; /* 46+80 */
195     } ke_bin; /* 128 */
196     struct __attribute__((__packed__))
197     {
198       char __pre_pad[2];
199       L4_ktrace_t__Mword v[3]; /* 48+24 */
200       union __attribute__((__packed__)) {
201         char msg[56]; /* 0+56 */
202         struct __attribute__((__packed__)) {
203           char tag[2]; /* 0+2 */
204           char __pad_1[6];
205           char *ptr; /* 8+8 */
206         } mptr; /* 0+16 */
207       } msg; /* 72+56 */
208     } ke_reg; /* 128 */
209     struct __attribute__((__packed__))
210     {
211       char __pre_pad[2];
212       L4_ktrace_t__Address _pfa; /* 48+8 */
213       L4_ktrace_t__Mword _error; /* 56+8 */
214       L4_ktrace_t__Space *_space; /* 64+8 */
215     } pf; /* 72 */
216     struct __attribute__((__packed__))
217     {
218       unsigned short mode; /* 46+2 */
219       L4_ktrace_t__Context *owner; /* 48+8 */
220       unsigned short id; /* 56+2 */
221       unsigned short prio; /* 58+2 */
222       long left; /* 60+8 */
223       unsigned long quantum; /* 68+8 */
224     } sched; /* 80 */
225     struct __attribute__((__packed__))
226     {
227       char __pre_pad[2];
228       L4_ktrace_t__Unsigned32 _cause; /* 48+4 */
229       L4_ktrace_t__Unsigned32 _status; /* 52+4 */
230       L4_ktrace_t__Mword _sp; /* 56+8 */
231     } trap; /* 64 */
232     struct __attribute__((__packed__))
233     {
234       char _padding[80]; /* 46+80 */
235       char __post_pad[2]; /* 126+2 */
236     } fullsize; /* 128 */
237     struct __attribute__((__packed__))
238     {
239       char __pre_pad[2];
240       L4_ktrace_t__Cap_index cap_idx; /* 48+8 */
241     } ieh; /* 56 */
242     struct __attribute__((__packed__))
243     {
244       char __pre_pad[2];
245       L4_ktrace_t__Mword pfa; /* 48+8 */
246       L4_ktrace_t__Cap_index cap_idx; /* 56+8 */
247       L4_ktrace_t__Mword err; /* 64+8 */
248     } ipfh; /* 72 */
249     struct __attribute__((__packed__))
250     {
251       char __pre_pad[2];
252       L4_ktrace_t__Mword id; /* 48+8 */
253       L4_ktrace_t__Mword ip; /* 56+8 */
254       L4_ktrace_t__Mword sp; /* 64+8 */
255       L4_ktrace_t__Mword op; /* 72+8 */
256     } exregs; /* 80 */
257     struct __attribute__((__packed__))
258     {
259       char __pre_pad[2];
260       L4_ktrace_t__Mword state; /* 48+8 */
261       L4_ktrace_t__Address user_ip; /* 56+8 */
262       L4_ktrace_t__Cpu_number src_cpu; /* 64+4 */
263       L4_ktrace_t__Cpu_number target_cpu; /* 68+4 */
264     } migration; /* 72 */
265     struct __attribute__((__packed__))
266     {
267       char __pre_pad[2];
268       L4_ktrace_t__Irq_base *obj; /* 48+8 */
269       L4_ktrace_t__Address user_ip; /* 56+8 */
270     } timer; /* 64 */
271   } m;
272 } l4_tracebuffer_entry_t;
273 #else
274 typedef struct __attribute__((packed))
275 {
276   L4_ktrace_t__Mword _number; /* 0+4 */
277   L4_ktrace_t__Address _ip; /* 4+4 */
278   L4_ktrace_t__Unsigned64 _tsc; /* 8+8 */
279   L4_ktrace_t__Context *_ctx; /* 16+4 */
280   L4_ktrace_t__Unsigned32 _pmc1; /* 20+4 */
281   L4_ktrace_t__Unsigned32 _pmc2; /* 24+4 */
282   L4_ktrace_t__Unsigned32 _kclock; /* 28+4 */
283   L4_ktrace_t__Unsigned8 _type; /* 32+1 */
284   L4_ktrace_t__Unsigned8 _cpu; /* 33+1 */
285   union __attribute__((__packed__))
286   {
287     struct __attribute__((__packed__))
288     {
289       char __pre_pad[2];
290       void *func; /* 36+4 */
291       L4_ktrace_t__Context *thread; /* 40+4 */
292       L4_ktrace_t__Context__Drq *rq; /* 44+4 */
293       L4_ktrace_t__Cpu_number target_cpu; /* 48+4 */
294       L4_ktrace_t__Context__Drq_log__Type type; /* 52+4 */
295       char wait; /* 56+1 */
296     } drq; /* 64 */
297     struct __attribute__((__packed__))
298     {
299       char __pre_pad[2];
300       L4_ktrace_t__Mword state; /* 36+4 */
301       L4_ktrace_t__Mword ip; /* 40+4 */
302       L4_ktrace_t__Mword sp; /* 44+4 */
303       L4_ktrace_t__Mword space; /* 48+4 */
304       L4_ktrace_t__Mword err; /* 52+4 */
305       unsigned char type; /* 56+1 */
306       unsigned char trap; /* 57+1 */
307     } vcpu; /* 64 */
308     struct __attribute__((__packed__))
309     {
310       char __pre_pad[2];
311       L4_ktrace_t__Smword op; /* 36+4 */
312       L4_ktrace_t__Cap_index buffer; /* 40+4 */
313       L4_ktrace_t__Mword id; /* 44+4 */
314       L4_ktrace_t__Mword ram; /* 48+4 */
315       L4_ktrace_t__Mword newo; /* 52+4 */
316     } factory; /* 56 */
317     struct __attribute__((__packed__))
318     {
319       char __pre_pad[2];
320       L4_ktrace_t__Mword gate_dbg_id; /* 36+4 */
321       L4_ktrace_t__Mword thread_dbg_id; /* 40+4 */
322       L4_ktrace_t__Mword label; /* 44+4 */
323     } gate; /* 48 */
324     struct __attribute__((__packed__))
325     {
326       char __pre_pad[2];
327       L4_ktrace_t__Irq_base *obj; /* 36+4 */
328       L4_ktrace_t__Irq_chip *chip; /* 40+4 */
329       L4_ktrace_t__Mword pin; /* 44+4 */
330     } irq; /* 48 */
331     struct __attribute__((__packed__))
332     {
333       char __pre_pad[2];
334       L4_ktrace_t__Kobject *obj; /* 36+4 */
335       L4_ktrace_t__Mword id; /* 40+4 */
336       L4_ktrace_t__cxx__Type_info *type; /* 44+4 */
337       L4_ktrace_t__Mword ram; /* 48+4 */
338     } destroy; /* 56 */
339     struct __attribute__((__packed__))
340     {
341       char __pre_pad[2];
342       L4_ktrace_t__Cpu_number cpu; /* 36+4 */
343       L4_ktrace_t__Rcu_item *item; /* 40+4 */
344       void *cb; /* 44+4 */
345       unsigned char event; /* 48+1 */
346     } rcu; /* 56 */
347     struct __attribute__((__packed__))
348     {
349       char __pre_pad[2];
350       L4_ktrace_t__Mword id; /* 36+4 */
351       L4_ktrace_t__Mword mask; /* 40+4 */
352       L4_ktrace_t__Mword fpage; /* 44+4 */
353       char map; /* 48+1 */
354     } tmap; /* 56 */
355     struct __attribute__((__packed__))
356     {
357       char __pre_pad[2];
358       L4_ktrace_t__Address _address; /* 36+4 */
359       int _len; /* 40+4 */
360       L4_ktrace_t__Mword _value; /* 44+4 */
361       int _mode; /* 48+4 */
362     } bp; /* 56 */
363     struct __attribute__((__packed__))
364     {
365       char __pre_pad[2];
366       L4_ktrace_t__Context *dst; /* 36+4 */
367       L4_ktrace_t__Context *dst_orig; /* 40+4 */
368       L4_ktrace_t__Address kernel_ip; /* 44+4 */
369       L4_ktrace_t__Mword lock_cnt; /* 48+4 */
370       L4_ktrace_t__Space *from_space; /* 52+4 */
371       L4_ktrace_t__Sched_context *from_sched; /* 56+4 */
372       L4_ktrace_t__Mword from_prio; /* 60+4 */
373     } context_switch; /* 64 */
374     struct __attribute__((__packed__))
375     {
376     } empty; /* 40 */
377     struct __attribute__((__packed__))
378     {
379       char __pre_pad[2];
380       L4_ktrace_t__L4_msg_tag _tag; /* 36+4 */
381       L4_ktrace_t__Mword _dword[2]; /* 40+8 */
382       L4_ktrace_t__L4_obj_ref _dst; /* 48+4 */
383       L4_ktrace_t__Mword _dbg_id; /* 52+4 */
384       L4_ktrace_t__Mword _label; /* 56+4 */
385       L4_ktrace_t__L4_timeout_pair _timeout; /* 60+4 */
386     } ipc; /* 64 */
387     struct __attribute__((__packed__))
388     {
389       char __pre_pad[2];
390       L4_ktrace_t__L4_msg_tag _tag; /* 36+4 */
391       L4_ktrace_t__Mword _dword[2]; /* 40+8 */
392       L4_ktrace_t__L4_error _result; /* 48+4 */
393       L4_ktrace_t__Mword _from; /* 52+4 */
394       L4_ktrace_t__Mword _pair_event; /* 56+4 */
395       L4_ktrace_t__Unsigned8 _have_snd; /* 60+1 */
396       L4_ktrace_t__Unsigned8 _is_np; /* 61+1 */
397     } ipc_res; /* 64 */
398     struct __attribute__((__packed__))
399     {
400       char __pre_pad[6];
401       L4_ktrace_t__Unsigned64 _snd_tsc; /* 40+8 */
402       L4_ktrace_t__L4_msg_tag _result; /* 48+4 */
403       L4_ktrace_t__L4_obj_ref _snd_dst; /* 52+4 */
404       L4_ktrace_t__Mword _rcv_dst; /* 56+4 */
405       L4_ktrace_t__Unsigned8 _snd_desc; /* 60+1 */
406       L4_ktrace_t__Unsigned8 _rcv_desc; /* 61+1 */
407     } ipc_trace; /* 64 */
408     struct __attribute__((__packed__))
409     {
410       char __pre_pad[2];
411       union __attribute__((__packed__)) {
412         char msg[24]; /* 0+24 */
413         struct __attribute__((__packed__)) {
414           char tag[2]; /* 0+2 */
415           char __pad_1[2];
416           char *ptr; /* 4+4 */
417         } mptr; /* 0+8 */
418       } msg; /* 36+24 */
419     } ke; /* 64 */
420     struct __attribute__((__packed__))
421     {
422       char _msg[24]; /* 34+24 */
423     } ke_bin; /* 64 */
424     struct __attribute__((__packed__))
425     {
426       char __pre_pad[2];
427       L4_ktrace_t__Mword v[3]; /* 36+12 */
428       union __attribute__((__packed__)) {
429         char msg[12]; /* 0+12 */
430         struct __attribute__((__packed__)) {
431           char tag[2]; /* 0+2 */
432           char __pad_1[2];
433           char *ptr; /* 4+4 */
434         } mptr; /* 0+8 */
435       } msg; /* 48+12 */
436     } ke_reg; /* 64 */
437     struct __attribute__((__packed__))
438     {
439       char __pre_pad[2];
440       L4_ktrace_t__Address _pfa; /* 36+4 */
441       L4_ktrace_t__Mword _error; /* 40+4 */
442       L4_ktrace_t__Space *_space; /* 44+4 */
443     } pf; /* 48 */
444     struct __attribute__((__packed__))
445     {
446       unsigned short mode; /* 34+2 */
447       L4_ktrace_t__Context *owner; /* 36+4 */
448       unsigned short id; /* 40+2 */
449       unsigned short prio; /* 42+2 */
450       long left; /* 44+4 */
451       unsigned long quantum; /* 48+4 */
452     } sched; /* 56 */
453     struct __attribute__((__packed__))
454     {
455       char __pre_pad[2];
456       L4_ktrace_t__Unsigned32 _cause; /* 36+4 */
457       L4_ktrace_t__Unsigned32 _status; /* 40+4 */
458       L4_ktrace_t__Mword _sp; /* 44+4 */
459     } trap; /* 48 */
460     struct __attribute__((__packed__))
461     {
462       char _padding[24]; /* 34+24 */
463       char __post_pad[6]; /* 58+6 */
464     } fullsize; /* 64 */
465     struct __attribute__((__packed__))
466     {
467       char __pre_pad[2];
468       L4_ktrace_t__Cap_index cap_idx; /* 36+4 */
469     } ieh; /* 40 */
470     struct __attribute__((__packed__))
471     {
472       char __pre_pad[2];
473       L4_ktrace_t__Mword pfa; /* 36+4 */
474       L4_ktrace_t__Cap_index cap_idx; /* 40+4 */
475       L4_ktrace_t__Mword err; /* 44+4 */
476     } ipfh; /* 48 */
477     struct __attribute__((__packed__))
478     {
479       char __pre_pad[2];
480       L4_ktrace_t__Mword id; /* 36+4 */
481       L4_ktrace_t__Mword ip; /* 40+4 */
482       L4_ktrace_t__Mword sp; /* 44+4 */
483       L4_ktrace_t__Mword op; /* 48+4 */
484     } exregs; /* 56 */
485     struct __attribute__((__packed__))
486     {
487       char __pre_pad[2];
488       L4_ktrace_t__Mword state; /* 36+4 */
489       L4_ktrace_t__Address user_ip; /* 40+4 */
490       L4_ktrace_t__Cpu_number src_cpu; /* 44+4 */
491       L4_ktrace_t__Cpu_number target_cpu; /* 48+4 */
492     } migration; /* 56 */
493     struct __attribute__((__packed__))
494     {
495       char __pre_pad[2];
496       L4_ktrace_t__Irq_base *obj; /* 36+4 */
497       L4_ktrace_t__Address user_ip; /* 40+4 */
498     } timer; /* 48 */
499   } m;
500 } l4_tracebuffer_entry_t;
501 #endif
502