2 * Copyright (c) 2012-2013, ETH Zurich.
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.
10 * \brief Subsystem and Event definitions of the tracing framework.
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.
16 * Note: If you don't specify a verbose description of the event, the
17 * description will default to the name of the event.
23 * subsystem mysubsystem {
27 * will be compiled into the following two C macros:
29 * #define TRACE_SUBSYSTEM_MYSUBSYSTEM 1
30 * #define TRACE_EVENT_MYSUBSYSTEM_MYEVENT 1
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.
41 // Do not change CSWITCH name without changing Aquarium EventFactory.java!
42 event CSWITCH "Context Switch",
43 event BZERO "Buffer zeroing",
47 event SCHED_MAKE_RUNNABLE "",
48 event SCHED_REMOVE "",
50 event SCHED_SCHEDULE "",
51 event SCHED_CURRENT "",
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.",
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",
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",
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()",
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()",
110 event ZERO_OBJECTS "Zeroing capabilities",
111 event ZERO_OBJECTS_DONE "Zeroing capabilities done",
116 event BARRIER_ENTER "",
117 event BARRIER_LEAVE "",
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 "",
126 event COND_WAIT_ENTER "",
127 event COND_WAIT_LEAVE "",
128 event COND_SIGNAL "",
129 event COND_BROADCAST "",
131 event SEM_WAIT_ENTER "",
132 event SEM_WAIT_LEAVE "",
133 event SEM_TRYWAIT "",
135 event SYS_YIELD "Calling sys_yield for co-op scheduling",
136 event C_DISP_SAVE "calling disp_save",
143 event PERCORE_INIT "",
144 event PERCORE_ALLOC "",
145 event PERCORE_ALLOC_COMPLETE "",
169 event PCREQ_INTER "",
170 event PCREPLY_INTER "",
172 event URPC_UNBLOCK "",
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).",
182 event START "Start capops tracing",
183 event STOP "Stop capops tracing",
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",
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",
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",
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",
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",
260 event RETYPE_LOCAL_CHECK_RX "Retype: check continuation (local path)",
261 event RETYPE_RESULT_RX "Retype: handle error result (?)",
263 event RETYPE_RESULT_ENQ "Retype: enqueue check result",
264 event RETYPE_RESULT_SEND "Retype: send check result",
266 event RETYPE_DEL_TMPCAP "Retype: delete temporary copy",
267 event RETYPE_DEL_TMPCAP_DONE "Retype: delete temporary copy done",
278 // XXX: Empty subsystems are not allowed
293 event LOCKING_END "",
299 event BCAST_WITH_CCAST_SEND "",
300 event BCAST_WITH_CCAST "",
301 event RECV_BCAST_WITH_CCAST "",
303 event BENCH_START "",
313 // Generic Benchmarking events
316 event START "Start the benchmark/tracing",
317 event STOP "End of the benchmark/tracing",
319 event ROUND_START "",
341 event BARRIER_WAIT "",
342 event CENTRAL_REQ "",
343 event CENTRAL_REP "",
352 event SEQ_BCAST_REQ "",
353 event SEQ_BCAST_RECV "",
354 event TREE_BCAST_REQ "",
355 event TREE_BCAST_RECV "",
359 /* Following constans are used for profiling modified stack */
364 event RXESVAPPFDONE "Ethersrv app filtered",
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",
376 event YIELD "process yielded",
378 event LWIPPBF2 "LWIP pbuf freed",
379 event LWIPPBA2 "LWIP pbuf Allocated",
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",
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",
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",
428 event BENCH_START "",
430 event MESSAGE_SEND "",
431 event MESSAGE_RECEIVE "",
436 /* The example subsystem is used to demonstrate how the tracing framework
437 * works. It is used by the program in "examples/xmpl-trace". */
448 event APIC_ADDED "ACPI added fact about new core to SKB",
451 // Use to trace the core booting system
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",
458 // Trace events for libbf memory subsystem and adjacent stuff
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()",