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, Haldeneggsteig 4, 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 39subsystem 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 85subsystem threads { 86 87 event BARRIER_ENTER "", 88 event BARRIER_LEAVE "", 89 90 event MUTEX_LOCK_ENTER "", 91 event MUTEX_LOCK_LEAVE "", 92 event MUTEX_LOCK_NESTED_ENTER "", 93 event MUTEX_LOCK_NESTED_LEAVE "", 94 event MUTEX_TRYLOCK "", 95 event MUTEX_UNLOCK "", 96 97 event COND_WAIT_ENTER "", 98 event COND_WAIT_LEAVE "", 99 event COND_SIGNAL "", 100 event COND_BROADCAST "", 101 102 event SEM_WAIT_ENTER "", 103 event SEM_WAIT_LEAVE "", 104 event SEM_TRYWAIT "", 105 event SEM_POST "", 106 event SYS_YIELD "Calling sys_yield for co-op scheduling", 107 event C_DISP_SAVE "calling disp_save", 108}; 109 110subsystem memserv { 111 112 event ALLOC "", 113 114 event PERCORE_INIT "", 115 event PERCORE_ALLOC "", 116 event PERCORE_ALLOC_COMPLETE "", 117}; 118 119subsystem memtest { 120 121 event START "", 122 event STOP "", 123 event STARTED "", 124 event WAIT "", 125 event RUN "", 126 event DONE "", 127 event ALLOC "", 128 event MASTER "", 129 event WORKER "", 130 131}; 132 133 134subsystem monitor { 135 event SPAN0 "", 136 event SPAN1 "", 137 event SPAN "", 138 event PCREQ "", 139 event PCREP "", 140 event PCREQ_INTER "", 141 event PCREPLY_INTER "", 142 event URPC_BLOCK "", 143 event URPC_UNBLOCK "", 144 event REMOTE_CAP_RETYPE "", 145 event REMOTE_CAP_RETYPE_RETRY "", 146 event REMOTE_CAP_RETYPE_MSG "", 147 event REMOTE_CAP_RETYPE_END "", 148 event POLLING "", 149 event BIND_MONITOR_REPLY "Bind monitor reply", 150 event BIND_MONITOR_REQUEST "Request to setup connection with new monitor", 151 event BOOT_CORE_REQUEST "Received request from (user -> monitor) [in monitor].", 152 event BOOT_INITIALIZE_REQUEST "Monitor got boot initialize request", 153 event INVOKE_SPAWN "Monitor requests boot-up from kernel (monitor -> kernel).", 154}; 155 156subsystem chips { 157 158 event LISTENCB "", 159 160}; 161 162subsystem bflib { 163 164 // XXX: Empty subsystems are not allowed 165 event dummy "", 166 167}; 168 169 170subsystem tweed { 171 172 event START "", 173 event END "", 174 event STEAL "", 175 event STEAL_END "", 176 event WAIT "", 177 event WAIT_END "", 178 event LOCKING "", 179 event LOCKING_END "", 180 181}; 182 183subsystem route { 184 185 event BCAST_WITH_CCAST_SEND "", 186 event BCAST_WITH_CCAST "", 187 event RECV_BCAST_WITH_CCAST "", 188 event RECV_CCAST "", 189 event BENCH_START "", 190 event BENCH_STOP "", 191 event SEND_PING "", 192 event SEND_PONG "", 193 event RECV_PING "", 194 event RECV_PONG "", 195 event POLL "", 196 197}; 198 199// Generic Benchmarking events 200subsystem bench { 201 202 event START "Start the benchmark/tracing", 203 event STOP "End of the benchmark/tracing", 204 205 event ROUND_START "", 206 event ROUND_END "", 207 208 event PCBENCH "", 209 event RXPING "", 210 event RXPONG "", 211 212 213}; 214 215subsystem bomp { 216 217 event START "", 218 event STOP "", 219 event ITER "", 220 221}; 222 223subsystem barriers { 224 225 event START "", 226 event STOP "", 227 event BARRIER_WAIT "", 228 event CENTRAL_REQ "", 229 event CENTRAL_REP "", 230 event TREE_REQ "", 231 event TREE_REP "", 232 event DIST "", 233 event SEND "", 234 event POLL1 "", 235 event POLL2 "", 236 event HEAP_REQ "", 237 event HEAP_REP "", 238 event SEQ_BCAST_REQ "", 239 event SEQ_BCAST_RECV "", 240 event TREE_BCAST_REQ "", 241 event TREE_BCAST_RECV "", 242 243}; 244 245/* Following constans are used for profiling modified stack */ 246subsystem nnet { 247 248 event START "", 249 event STOP "", 250 event RXESVAPPFDONE "Ethersrv app filtered", 251 252 event RXDRVSEE "Driver saw pkg (RX)", 253 event RXESVSEE "Ethersrv saw pkg", 254 event RXESVFRGDONE "Ethersrv checked frag", 255 event LWIPTX "LWIP idc_send_packet_to_network_driver", 256 event SCHED_REMOVE "Process marked non-runnable", 257 event IRQ "interrupt in kernelspace", 258 event UIRQ "interrupt in kernelspace for userspace", 259 event NO_S "e1000 packet send", 260 event NI_I "e1000 interrupt arrived", 261 262 event YIELD "process yielded", 263 264 event LWIPPBF2 "LWIP pbuf freed", 265 event LWIPPBA2 "LWIP pbuf Allocated", 266 267 event NI_PKT_CPY "Queue manager packet copy", 268event DRV_POLL "e1000 polling", 269 event DRV_SEE "handled packet", 270 event DRVTXDONE "TX buffer reclamation", 271 event DRVRX "checking for new packets", 272 event WEBEVENTLOOP "Webserver event loop", 273 274 275 event RXESVAPPCSTART "Ethersrv app c2u started", 276 event RXESVCOPIED "Ethersrv copied pkg", 277 event RXESVSPPDONE "Ethersrv spp produce done", 278 event RXESVAPPNOTIF "Ethersrv app notify", 279 event RXLWIINCOM "LWIP handle_incoming_", 280 event RXLWIRECH "LWIP call rec_handler", 281 event RXAPPRCV "APP received", 282 event LWIPRX "LWIP handle incoming", 283 284 event TXAPPSNT "APP sent", 285 event TXLWISEE "LWIP idc_send_packet", 286 event TXLWIBFFENCE "LWIP before mfence", 287 event TXLWIAFFENCE "LWIP after mfence", 288 event TXLWIFLUSHED "LWIP payload flushed", 289 event TXLWIBDESC "LWIP bufferdesc fetched", 290 event TXLWISPPSND "LWIP spp produced", 291 event TXLWISPPIDX "LWIP update spp index", 292 event TXLWITXWORK "LWIP pending TX work", 293 event TXLWINOTIF "LWIP notify driver", 294 event TXESVNOTIF "Ethersrv notify recieved", 295 event TXESVSPOW "Ethersrv send_pkt_on_w..", 296 event TXESVSSPOW "Ethersrv send_sng_pkt..", 297 event TXDRVADD "Driver add pkg (TX)", 298 event TXDRVSEE "Driver saw pkg done (TX)", 299 event TX_TCP_WRITE "tcp_write done", 300 event TX_TCP_OUTPUT "tcp_output done", 301 event TX_TCP_RECV "tcp_recved done", 302 event TX_TCP_FREE "tx pbuf freed", 303 event TX_MEMP "tx pbuf memp start", 304 event TX_MEMP_D "tx pbuf memp done", 305 306 307 308}; 309 310 311 312subsystem multihop { 313 314 event BENCH_START "", 315 event BENCH_STOP "", 316 event MESSAGE_SEND "", 317 event MESSAGE_RECEIVE "", 318 319}; 320 321 322/* The example subsystem is used to demonstrate how the tracing framework 323 * works. It is used by the program in "examples/xmpl-trace". */ 324subsystem xmpl { 325 326 event START "", 327 event STOP "", 328 event EV1 "", 329 event EV2 "", 330 331}; 332 333subsystem acpi { 334 event APIC_ADDED "ACPI added fact about new core to SKB", 335}; 336 337// Use to trace the core booting system 338subsystem cores { 339 event USER_REQUEST "Kaluga requests boot-up of new CPU user -> monitor.", 340 event ALL_UP "Everything has booted", 341 event BOOT_INITIALIZE_USER "User sends boot initialize to monitor", 342}; 343