armv8: Improve readability of register restoration code
[barrelfish] / trace_definitions / trace_defs.pleco
1 /*
2  * Copyright (c) 2012-2013, ETH Zurich.
3  * All rights reserved.
4  *
5  * This file is distributed under the terms in the attached LICENSE file.
6  * If you do not find this file, copies can be found by writing to:
7  * ETH Zurich D-INFK, Universitaetstrasse 6, CH-8092 Zurich. Attn: Systems Group.
8 */
9 /*
10  * \brief Subsystem and Event definitions of the tracing framework.
11  *
12  * Events do always belong to their subsystem. Make sure that you only
13  * call trace_event() with matching subsystems, in order to be able to
14  * make reasonable use of Aquarium 2.
15  *
16  * Note: If you don't specify a verbose description of the event, the
17  * description will default to the name of the event.
18  *
19  * Example:
20  *
21  * The subystem:
22  *
23  * subsystem mysubsystem {
24  *              event myevent "",
25  * }
26  *
27  * will be compiled into the following two C macros:
28  *
29  * #define TRACE_SUBSYSTEM_MYSUBSYSTEM 1
30  * #define TRACE_EVENT_MYSUBSYSTEM_MYEVENT 1
31  *
32  * The pattern is that every subsystem is mapped to the concatentation of
33  * TRACE_SUBSYSTEM_ and its name in uppercase, and each event is mapped to
34  * the concatenation of TRACE_EVENT_ and the subsystem name in upper case,
35  * followed by a _ and the name of the event.
36  *
37 */
38
39 subsystem kernel {
40
41     // Do not change CSWITCH name without changing Aquarium EventFactory.java!
42         event CSWITCH                           "Context Switch",
43         event BZERO                             "Buffer zeroing",
44         event TIMER                             "",
45         event TIMER_SYNC                        "",
46
47         event SCHED_MAKE_RUNNABLE       "",
48         event SCHED_REMOVE                      "",
49         event SCHED_YIELD                       "",
50         event SCHED_SCHEDULE            "",
51         event SCHED_CURRENT             "",
52
53     event CORE_START_REQUEST      "Requested start of a new core.",
54     event CORE_START_REQUEST_DONE "Request is sent, waiting for core to come up.",
55     event CORE_START_REQUEST_ACK  "Core is online.",
56
57     /* Syscalls */
58     event SC_PRINT            "Syscall PRINT",
59     event SC_DISP_SETUP       "Syscall DISPATCHER ",
60     event SC_DISP_PROPS       "Syscall DISPATCHER_PROPS",
61     event SC_RETYPE           "Syscall RETYPE",
62     event SC_CREATE           "Syscall CREATE",
63     event SC_COPY_OR_MINT     "Syscall COPY_OR_MINT",
64     event SC_CTE_FOR_CAP      "Syscall CTE_FOR_CAP",
65     event SC_MAP              "Syscall MAP",
66     event SC_UNMAP            "Syscall UNMAP",
67     event SC_DELETE           "Syscall DELETE",
68     event SC_REVOKE           "Syscall REVOKE",
69     event SC_MONITOR_REGISTER "Syscall MONITOR_REGISTER",
70     event SC_IDENTIFY_CAP     "Syscall IDENTIFY_CAP",
71     event SC_NULLIFY_CAP      "Syscall NULLIFY_CAP",
72     event SC_DOMAIN_ID        "Syscall DOMAIN_ID",
73     event SC_YIELD            "Syscall YIELD",
74     event SC_SUSPEND          "Syscall SUSPEND",
75     event SC_IDCAP_IDENTIFY   "Syscall IDCAP_IDENTIFY",
76     event SC_SPAWN_CORE       "Syscall SPAWN_CORE",
77
78     event CAP_LOOKUP_SLOT          "Cap Slot lookup",
79     event CAP_LOOKUP_CAP           "Cap Lookup",
80     event CAP_CREATE_FROM_EXISTING "Cap Create from existing",
81     event CAP_CREATE_NEW           "Cap Create new",
82     event CAP_RETYPE               "Cap Retype",
83 };
84
85 // We make a different kernel subsys for capops tracing, so we can choose to
86 // not see the regular kernel events.
87 subsystem kernel_capops {
88     event DELETE_ENTER          "Entering caps_delete()",
89     event DELETE_DONE           "Exiting caps_delete()",
90     event TRY_DELETE            "Entering caps_try_delete()",
91     event CLEANUP_COPY          "Entering cleanup_copy()",
92     event CLEANUP_LAST          "Entering cleanup_last()",
93     event CREATE_RAM            "cleanup_last: creating RAM cap in provided slot",
94     event CREATE_RAM_LMP        "cleanup_last: putting RAM cap in monitorEP",
95     event UNMAP_CAPABILITY      "Entering unmap_capability()",
96     event MDB_REMOVE            "Calling mdb_remove()",
97     event HAS_COPIES            "Calling has_copies()",
98
99     event RETYPE_ENTER          "Entering caps_retype()",
100     event RETYPE_IS_RETYPEABLE  "Checking retypeability",
101     event RETYPE_IS_RETYPEABLE_DONE     "Checking retypeability done",
102     event RETYPE_RANGE_CHECK    "Checking retypeability with range query",
103     event RETYPE_RANGE_CHECK_DONE       "Range query done",
104     event RETYPE_CREATE_CAPS    "Create new capabilities",
105     event RETYPE_CREATE_CAPS_DONE       "Create new capabilities done",
106     event RETYPE_MDB_INSERT     "Calling mdb_insert() for new capabilities",
107     event RETYPE_MDB_INSERT_DONE        "mdb_insert() for new capabilities done",
108     event RETYPE_DONE           "Exiting caps_retype()",
109
110     event ZERO_OBJECTS          "Zeroing capabilities",
111     event ZERO_OBJECTS_DONE     "Zeroing capabilities done",
112 };
113
114 subsystem threads {
115
116     event BARRIER_ENTER                         "",
117     event BARRIER_LEAVE                         "",
118
119     event MUTEX_LOCK_ENTER                      "",
120     event MUTEX_LOCK_LEAVE                      "",
121     event MUTEX_LOCK_NESTED_ENTER       "",
122     event MUTEX_LOCK_NESTED_LEAVE       "",
123     event MUTEX_TRYLOCK                         "",
124     event MUTEX_UNLOCK                          "",
125
126     event COND_WAIT_ENTER                       "",
127     event COND_WAIT_LEAVE                       "",
128     event COND_SIGNAL                           "",
129     event COND_BROADCAST                        "",
130
131     event SEM_WAIT_ENTER                        "",
132     event SEM_WAIT_LEAVE                        "",
133     event SEM_TRYWAIT                           "",
134     event SEM_POST                              "",
135     event SYS_YIELD                             "Calling sys_yield for co-op scheduling",
136     event C_DISP_SAVE                           "calling disp_save",
137 };
138
139 subsystem memserv {
140
141     event ALLOC "",
142
143         event PERCORE_INIT                              "",
144         event PERCORE_ALLOC                     "",
145         event PERCORE_ALLOC_COMPLETE    "",
146 };
147
148 subsystem memtest {
149
150         event START                                     "",
151         event STOP                                      "",
152         event STARTED                           "",
153         event WAIT                                      "",
154         event RUN                                       "",
155         event DONE                                      "",
156         event ALLOC                             "",
157         event MASTER                            "",
158         event WORKER                            "",
159
160 };
161
162
163 subsystem monitor {
164     event SPAN0                                 "",
165     event SPAN1                                 "",
166     event SPAN                                          "",
167     event PCREQ                                 "",
168     event PCREP                                 "",
169     event PCREQ_INTER                           "",
170     event PCREPLY_INTER                 "",
171     event URPC_BLOCK                            "",
172     event URPC_UNBLOCK                          "",
173     event POLLING                                       "",
174     event BIND_MONITOR_REPLY "Bind monitor reply",
175     event BIND_MONITOR_REQUEST "Request to setup connection with new monitor",
176     event BOOT_CORE_REQUEST "Received request from (user -> monitor) [in monitor].",
177     event BOOT_INITIALIZE_REQUEST "Monitor got boot initialize request",
178     event INVOKE_SPAWN "Monitor requests boot-up from kernel (monitor -> kernel).",
179 };
180
181 subsystem capops {
182     event START                         "Start capops tracing",
183     event STOP                          "Stop capops tracing",
184
185     event DELETE_CALL_RX                "Directly call result RX handler",
186     event DELETE_DONE                   "Exit point for distributed delete",
187     event DELETE_DO_WORK                "Initiate delete work",
188     event DELETE_ENTER                  "Entry point to distributed delete",
189     event DELETE_FIND_CORE_CONT         "Callback from find_core broadcast",
190     event DELETE_FIND_NEW_OWNER         "Do broadcast to find new owner",
191     event DELETE_LAST                   "Delete last copy",
192     event DELETE_LOCK                   "Delete needs agreement/serialzation",
193     event DELETE_MOVE_RESULT_CONT       "Callback from capops_move() call",
194     event DELETE_QUEUE_FIN              "Cap is in delete queue, wait for done",
195     event DELETE_QUEUE_RETRY            "Cap is locked, queue for retry",
196     event DELETE_REMOTE_ENQ             "Enqueue remote deletes for non-moveable",
197     event DELETE_REMOTE_RX              "RX handler for remote delete",
198     event DELETE_REMOTE_RESULT_RX       "RX handler for remote delete result",
199     event USER_DELETE_CALL              "Before call to cap_delete() in user code",
200     event USER_DELETE_RESP              "After call to cap_delete() in user code",
201     event USER_DELETE_RPC               "Libbf RPC call to monitor",
202     event USER_DELETE_RPC_DONE          "Libbf RPC call to monitor done",
203     event MONITOR_DELETE_ENTER          "Entering monitor delete code",
204     event MONITOR_DELETE_REPLY          "Exiting monitor delete code",
205
206     event USER_REVOKE_CALL              "Before call to cap_revoke() in user code",
207     event USER_REVOKE_RESP              "After call to cap_revoke() in user code",
208     event USER_REVOKE_RPC               "Libbf RPC call to monitor",
209     event USER_REVOKE_RPC_DONE          "Libbf RPC call to monitor done",
210     event MONITOR_REVOKE_ENTER          "Entering monitor revoke code",
211     event MONITOR_REVOKE_REPLY          "Exiting monitor revoke code",
212     event REVOKE_START                  "Starting revocation",
213     event REVOKE_RETRIEVE               "Revoke: getting ownership",
214     event REVOKE_RETRIEVE_RX            "Revoke: got ownership",
215     event REVOKE_NO_REMOTE              "Revoke w/o remote operations",
216     event REVOKE_LOCAL                  "Revoke owned cap",
217     event REVOKE_DO_MARK                "Revoke: start mark phase",
218     event REVOKE_MARK_SEND              "Revoke: send mark msg",
219     event REVOKE_READY_RX               "Revoke: node reply in mark phase",
220     event REVOKE_DO_COMMIT              "Revoke: start commit phase",
221     event REVOKE_COMMIT_SEND            "Revoke: send commit msg",
222     event REVOKE_DONE_RX                "Revoke: node reply in commit phase",
223     event REVOKE_MASTER_STEPS_FIN       "Revoke: master node steps done",
224     event REVOKE_RESULT_RX              "Revoke: operation done",
225     event REVOKE_CALL_RESULT            "Revoke: calling result handler",
226
227     event REVOKE_MARK_RX                "Revoke slave: mark request RX",
228     event REVOKE_READY_SEND             "Revoke slave: mark done",
229     event REVOKE_COMMIT_RX              "Revoke slave: commit request RX",
230     event REVOKE_SLAVE_STEPS_FIN        "Revoke slave: node steps done",
231
232     event DELSTEPS_TRIGGER              "Trigger delete stepping",
233     event DELSTEPS_PAUSE                "Pause delete stepping",
234     event DELSTEPS_RESUME               "Resume delete stepping",
235     event DELSTEPS_STEP                 "Execute a delete step",
236     event DELSTEPS_STEP_DONE            "Execution of a delete step done",
237     event DELSTEPS_CLEAR                "Execute a clear step",
238
239     event USER_RETYPE_CALL              "Before call to cap_retype() in user code",
240     event USER_RETYPE_RESP              "After call to cap_retype() in user code",
241     event USER_RETYPE_RPC               "Libbf RPC call to monitor",
242     event USER_RETYPE_RPC_DONE          "Libbf RPC call to monitor done",
243     event MONITOR_RETYPE_ENTER          "Entering monitor revoke code",
244     event MONITOR_RETYPE_REPLY          "Exiting monitor revoke code",
245     event RETYPE_START                  "Starting retype",
246     event RETYPE_REQUEST_ENQ            "Retype: enqueue request to owner",
247     event RETYPE_REQUEST_SEND           "Retype: send request to owner",
248     event RETYPE_REQUEST_RX             "Retype: request RX on owner",
249     event RETYPE_CHECK_ENQ              "Retype: enqueue global check",
250     event CAPSEND_CHECK_RETYPEABLE      "Retype: do broadcast",
251     event CAPSEND_CHECK_RETYPEABLE_RX   "Retype: non-owner check RX",
252     event CAPSEND_CHECK_RETYPEABLE_RESULT_RX    "Retype: node reply",
253     event RETYPE_CHECK_RETYPEABLE_RX    "Retype: broadcast reply",
254     event RETYPE_CHECK_RX               "Retype: merge node replies",
255     event RETYPE_RESPONSE_RX            "Retype: original node got check reply",
256     event MONITOR_RETYPE_CREATE_CAPS    "Retype: monitor_create_caps()",
257     event MONITOR_RETYPE_CREATE_CAPS_DONE       "Retype: monitor_create_caps() done",
258     event RETYPE_CALL_RESULT            "Retype: calling result handler",
259
260     event RETYPE_LOCAL_CHECK_RX         "Retype: check continuation (local path)",
261     event RETYPE_RESULT_RX              "Retype: handle error result (?)",
262
263     event RETYPE_RESULT_ENQ             "Retype: enqueue check result",
264     event RETYPE_RESULT_SEND            "Retype: send check result",
265
266     event RETYPE_DEL_TMPCAP             "Retype: delete temporary copy",
267     event RETYPE_DEL_TMPCAP_DONE        "Retype: delete temporary copy done",
268 };
269
270 subsystem chips {
271
272  event LISTENCB                                 "",
273
274 };
275
276 subsystem bflib {
277
278         // XXX: Empty subsystems are not allowed
279         event dummy                             "",
280
281 };
282
283
284 subsystem tweed {
285
286  event START                            "",
287  event END                                      "",
288  event STEAL                            "",
289  event STEAL_END                        "",
290  event WAIT                                     "",
291  event WAIT_END                         "",
292  event LOCKING                          "",
293  event LOCKING_END                      "",
294
295 };
296
297 subsystem route {
298
299  event BCAST_WITH_CCAST_SEND            "",
300  event BCAST_WITH_CCAST                         "",
301  event RECV_BCAST_WITH_CCAST            "",
302  event RECV_CCAST                                       "",
303  event BENCH_START                                      "",
304  event BENCH_STOP                                       "",
305  event SEND_PING                                        "",
306  event SEND_PONG                                        "",
307  event RECV_PING                                        "",
308  event RECV_PONG                                        "",
309  event POLL                                                     "",
310
311 };
312
313 // Generic Benchmarking events
314 subsystem bench {
315
316  event START                "Start the benchmark/tracing",
317  event STOP                 "End of the benchmark/tracing",
318
319  event ROUND_START          "",
320  event ROUND_END            "",
321
322  event PCBENCH                          "",
323  event RXPING                           "",
324  event RXPONG                           "",
325
326
327 };
328
329 subsystem bomp {
330
331  event START                            "",
332  event STOP                                     "",
333  event ITER                                     "",
334
335 };
336
337 subsystem barriers {
338
339  event START                            "",
340  event STOP                                     "",
341  event BARRIER_WAIT                     "",
342  event CENTRAL_REQ                      "",
343  event CENTRAL_REP                      "",
344  event TREE_REQ                         "",
345  event TREE_REP                         "",
346  event DIST                                     "",
347  event SEND                                     "",
348  event POLL1                            "",
349  event POLL2                            "",
350  event HEAP_REQ                         "",
351  event HEAP_REP                         "",
352  event SEQ_BCAST_REQ            "",
353  event SEQ_BCAST_RECV           "",
354  event TREE_BCAST_REQ           "",
355  event TREE_BCAST_RECV          "",
356
357 };
358
359 /* Following constans are used for profiling modified stack */
360 subsystem nnet {
361
362  event START               "",
363  event STOP                "",
364  event RXESVAPPFDONE       "Ethersrv app filtered",
365
366  event RXDRVSEE            "Driver saw pkg (RX)",
367  event RXESVSEE            "Ethersrv saw pkg",
368  event RXESVFRGDONE        "Ethersrv checked frag",
369  event LWIPTX              "LWIP idc_send_packet_to_network_driver",
370  event SCHED_REMOVE        "Process marked non-runnable",
371  event IRQ                 "interrupt in kernelspace",
372  event UIRQ                "interrupt in kernelspace for userspace",
373  event NO_S                "e1000 packet send",
374  event NI_I                "e1000 interrupt arrived",
375
376  event YIELD               "process yielded",
377
378  event LWIPPBF2            "LWIP pbuf freed",
379  event LWIPPBA2            "LWIP pbuf Allocated",
380
381  event NI_PKT_CPY          "Queue manager packet copy",
382 event DRV_POLL             "e1000 polling",
383  event DRV_SEE             "handled packet",
384  event DRVTXDONE           "TX buffer reclamation",
385  event DRVRX               "checking for new packets",
386  event WEBEVENTLOOP        "Webserver event loop",
387
388
389  event RXESVAPPCSTART      "Ethersrv app c2u started",
390  event RXESVCOPIED         "Ethersrv copied pkg",
391  event RXESVSPPDONE        "Ethersrv spp produce done",
392  event RXESVAPPNOTIF       "Ethersrv app notify",
393  event RXLWIINCOM          "LWIP handle_incoming_",
394  event RXLWIRECH           "LWIP call rec_handler",
395  event RXAPPRCV            "APP received",
396  event LWIPRX              "LWIP handle incoming",
397
398  event TXAPPSNT            "APP sent",
399  event TXLWISEE            "LWIP idc_send_packet",
400  event TXLWIBFFENCE        "LWIP before mfence",
401  event TXLWIAFFENCE        "LWIP after mfence",
402  event TXLWIFLUSHED        "LWIP payload flushed",
403  event TXLWIBDESC          "LWIP bufferdesc fetched",
404  event TXLWISPPSND         "LWIP spp produced",
405  event TXLWISPPIDX         "LWIP update spp index",
406  event TXLWITXWORK         "LWIP pending TX work",
407  event TXLWINOTIF          "LWIP notify driver",
408  event TXESVNOTIF          "Ethersrv notify recieved",
409  event TXESVSPOW           "Ethersrv send_pkt_on_w..",
410  event TXESVSSPOW          "Ethersrv send_sng_pkt..",
411  event TXDRVADD            "Driver add pkg (TX)",
412  event TXDRVSEE            "Driver saw pkg done (TX)",
413  event TX_TCP_WRITE        "tcp_write done",
414  event TX_TCP_OUTPUT       "tcp_output done",
415  event TX_TCP_RECV         "tcp_recved done",
416  event TX_TCP_FREE         "tx pbuf freed",
417  event TX_MEMP             "tx pbuf memp start",
418  event TX_MEMP_D           "tx pbuf memp done",
419
420
421
422 };
423
424
425
426 subsystem multihop {
427
428  event BENCH_START               "",
429  event BENCH_STOP                "",
430  event MESSAGE_SEND              "",
431  event MESSAGE_RECEIVE           "",
432
433 };
434
435
436 /* The example subsystem is used to demonstrate how the tracing framework
437  * works. It is used by the program in "examples/xmpl-trace". */
438 subsystem xmpl {
439
440         event START                             "",
441         event STOP                              "",
442         event EV1                               "",
443         event EV2                               "",
444
445 };
446
447 subsystem acpi {
448     event APIC_ADDED     "ACPI added fact about new core to SKB",
449 };
450
451 // Use to trace the core booting system
452 subsystem cores {
453     event USER_REQUEST     "Kaluga requests boot-up of new CPU user -> monitor.",
454     event ALL_UP           "Everything has booted",
455     event BOOT_INITIALIZE_USER "User sends boot initialize to monitor",
456 };
457
458 // Trace events for libbf memory subsystem and adjacent stuff
459 subsystem memory {
460     event DETADDR           "pmap->f.determine_addr()",
461     event DO_MAP            "pmap: do_map()",
462     event UNMAP             "pmap->f.unmap()",
463     event MODIFY            "pmap->f.modify_flags()",
464     event LOOKUP            "pmap->f.lookup()",
465 };