1 /*******************************************************************************
2 * Copyright (c) 2009 Ericsson
4 * All rights reserved. This program and the accompanying materials are
5 * made available under the terms of the Eclipse Public License v1.0 which
6 * accompanies this distribution, and is available at
7 * http://www.eclipse.org/legal/epl-v10.html
10 * Alvaro Sanchez-Leon (alvsan09@gmail.com) - Initial API and implementation
11 * Daniel U. Thibault (daniel.thibault@drdc-rddc.gc.ca) - 2011-06-21 Fixes
12 *******************************************************************************/
13 package org
.eclipse
.linuxtools
.lttng
.state
;
15 import java
.util
.HashMap
;
16 import java
.util
.HashSet
;
20 * Establishes relationships of state-related strings. Since the strings and
21 * relations are fixed, the elements are final i.e. just for reading.
26 @SuppressWarnings("nls")
27 public class StateStrings
{
29 // ========================================================================
31 // =======================================================================
32 public static final String LTTV_STATE_UNBRANDED
= "";
33 private static StateStrings instance
= null;
34 private final HashMap
<String
, Events
> eventStrMap
= new HashMap
<String
, Events
>();
35 private final HashMap
<String
, Events
> stateTransEventMap
= new HashMap
<String
, Events
>();
36 private final String
[] syscall_names
= new String
[256];
37 private final String
[] trap_names
= new String
[256];
38 private final String
[] irq_names
= new String
[256];
39 private final String
[] soft_irq_names
= new String
[32];
41 private StateStrings() {
42 // Build a Hash map from string name to actual event structure
43 for (Events event
: Events
.values()) {
44 eventStrMap
.put(event
.inName
, event
);
45 if (event
.isStateTransition()) {
46 stateTransEventMap
.put(event
.inName
, event
);
50 // Build system call names
51 for (int i
= 0; i
< 256; i
++) {
52 syscall_names
[i
] = "syscall " + i
;
56 for (int i
= 0; i
< 256; i
++) {
57 trap_names
[i
] = "trap " + i
;
61 for (int i
= 0; i
< 256; i
++) {
62 irq_names
[i
] = "irq " + i
;
65 // Build softirq names
66 for (int i
= 0; i
< 32; i
++) {
67 soft_irq_names
[i
] = "softirq " + i
;
71 public static StateStrings
getInstance() {
72 // Create singleton instance if not already done
73 if (instance
== null) {
74 instance
= new StateStrings();
79 public enum Channels
{
80 LTT_CHANNEL_FD_STATE("fd_state"), /* file descriptor state events */
81 LTT_CHANNEL_GLOBAL_STATE("global_state"), /* system state dump events */
82 LTT_CHANNEL_IRQ_STATE("irq_state"), /* interrupt request (IRQ) events */
83 LTT_CHANNEL_MODULE_STATE("module_state"), /* modules state events (list of modules) */
84 LTT_CHANNEL_NETIF_STATE("netif_state"), /* network interface events */
85 LTT_CHANNEL_SOFTIRQ_STATE("softirq_state"), /* soft IRQs state events (soft IRQ vector table) */
86 LTT_CHANNEL_SWAP_STATE("swap_state"), /* swap state events */
87 LTT_CHANNEL_SYSCALL_STATE("syscall_state"), /* system calls state events (system call table) */
88 LTT_CHANNEL_TASK_STATE("task_state"), /* process state events */
89 LTT_CHANNEL_VM_STATE("vm_state"), /* virtual memory events (virtual memory table) */
90 LTT_CHANNEL_KPROBE_STATE("kprobe_state"), /* kprobe events (kprobe table) */
91 LTT_CHANNEL_FS("fs"), /* file system events */
92 LTT_CHANNEL_KERNEL("kernel"), /* kernel events */
93 LTT_CHANNEL_MM("mm"), /* memory management events */
94 LTT_CHANNEL_USERSPACE("userspace"), /* user space tracing events */
95 LTT_CHANNEL_BLOCK("block"); /* block devices events */
96 /* remaining channels: */
97 /* LTT_CHANNEL_DEFAULT("default"), /* null (i.e. no default) */
98 /* LTT_CHANNEL_INPUT("input"), /* LTT control command inputs */
99 /* LTT_CHANNEL_IPC("ipc"), /* Inter Process Communication (IPC) events */
100 /* LTT_CHANNEL_JBD2("jbd2"), /* Journaling Block Device (JBD) events (JBD2 fork for ext4 file system) */
101 /* LTT_CHANNEL_METADATA("metadata"), /* trace meta data */
102 /* LTT_CHANNEL_NET("net"), /* networking events */
103 /* LTT_CHANNEL_PM("pm"), /* power management events */
104 /* LTT_CHANNEL_RCU("rcu"), /* Read-Copy-Update (RCU) events */
106 private final String inName
;
108 private Channels(String name
) {
112 public String
getInName() {
119 LTT_EVENT_SYSCALL_ENTRY("syscall_entry"), /* */
120 LTT_EVENT_SYSCALL_EXIT("syscall_exit"), /* */
121 LTT_EVENT_TRAP_ENTRY("trap_entry"), /* */
122 LTT_EVENT_TRAP_EXIT("trap_exit"), /* */
123 LTT_EVENT_PAGE_FAULT_ENTRY("page_fault_entry"), /* */
124 LTT_EVENT_PAGE_FAULT_EXIT("page_fault_exit"), /* */
125 LTT_EVENT_PAGE_FAULT_NOSEM_ENTRY("page_fault_nosem_entry"), /* */
126 LTT_EVENT_PAGE_FAULT_NOSEM_EXIT("page_fault_nosem_exit"), /* */
127 LTT_EVENT_IRQ_ENTRY("irq_entry"), /* */
128 LTT_EVENT_IRQ_EXIT("irq_exit"), /* */
129 LTT_EVENT_SOFT_IRQ_RAISE("softirq_raise"), /* */
130 LTT_EVENT_SOFT_IRQ_ENTRY("softirq_entry"), /* */
131 LTT_EVENT_SOFT_IRQ_EXIT("softirq_exit"), /* */
132 LTT_EVENT_SCHED_SCHEDULE("sched_schedule"), /* */
133 LTT_EVENT_PROCESS_FORK("process_fork"), /* */
134 LTT_EVENT_KTHREAD_CREATE("kthread_create"), /* */
135 LTT_EVENT_PROCESS_EXIT("process_exit"), /* */
136 LTT_EVENT_PROCESS_FREE("process_free"), /* */
137 LTT_EVENT_EXEC("exec"), /* */
138 LTT_EVENT_PROCESS_STATE("process_state"), /* */
139 LTT_EVENT_STATEDUMP_END("statedump_end"), /* */
140 LTT_EVENT_FUNCTION_ENTRY("function_entry"), /* */
141 LTT_EVENT_FUNCTION_EXIT("function_exit"), /* */
142 LTT_EVENT_THREAD_BRAND("thread_brand"), /* */
143 LTT_EVENT_REQUEST_ISSUE("_blk_request_issue"), /* */
144 LTT_EVENT_REQUEST_COMPLETE("_blk_request_complete"), /* */
145 LTT_EVENT_LIST_INTERRUPT("interrupt"), /* */
146 LTT_EVENT_SYS_CALL_TABLE("sys_call_table"), /* */
147 LTT_EVENT_SOFTIRQ_VEC("softirq_vec"), /* */
148 LTT_EVENT_KPROBE_TABLE("kprobe_table"), /* */
149 LTT_EVENT_KPROBE("kprobe"); /* */
151 private final String inName
;
152 private final HashSet
<Fields
> children
= new HashSet
<Fields
>();
153 private Channels parent
= null;
154 // Default value for the "expected to cause a state transition?" flag
155 // Although most events do cause a state transition, the default is kept
156 // false to make this important property explicit in the static initializer
157 private boolean stateTransition
= false;
163 private Events(String name
) {
167 public String
getInName() {
171 public Channels
getParent() {
175 public void setParent(Channels parent
) {
176 this.parent
= parent
;
179 public HashSet
<Fields
> getChildren() {
183 public boolean isStateTransition() {
184 return stateTransition
;
187 private static void associate() {
188 // SYSCALL_ENTRY can receive ip (?), syscall_id
189 LTT_EVENT_SYSCALL_ENTRY
.setParent(Channels
.LTT_CHANNEL_KERNEL
);
190 LTT_EVENT_SYSCALL_ENTRY
.stateTransition
= true;
191 LTT_EVENT_SYSCALL_ENTRY
.getChildren().add(Fields
.LTT_FIELD_SYSCALL_ID
);
194 LTT_EVENT_SYSCALL_EXIT
.setParent(Channels
.LTT_CHANNEL_KERNEL
);
195 LTT_EVENT_SYSCALL_EXIT
.stateTransition
= true;
198 LTT_EVENT_TRAP_ENTRY
.setParent(Channels
.LTT_CHANNEL_KERNEL
);
199 LTT_EVENT_TRAP_ENTRY
.getChildren().add(Fields
.LTT_FIELD_TRAP_ID
);
200 LTT_EVENT_TRAP_ENTRY
.stateTransition
= true;
203 LTT_EVENT_TRAP_EXIT
.setParent(Channels
.LTT_CHANNEL_KERNEL
);
204 LTT_EVENT_TRAP_EXIT
.stateTransition
= true;
207 LTT_EVENT_PAGE_FAULT_ENTRY
.setParent(Channels
.LTT_CHANNEL_KERNEL
);
208 LTT_EVENT_PAGE_FAULT_ENTRY
.getChildren().add(Fields
.LTT_FIELD_TRAP_ID
);
209 LTT_EVENT_PAGE_FAULT_ENTRY
.stateTransition
= true;
212 LTT_EVENT_PAGE_FAULT_EXIT
.setParent(Channels
.LTT_CHANNEL_KERNEL
);
213 LTT_EVENT_PAGE_FAULT_EXIT
.stateTransition
= true;
215 // PAGE_FAULT_NOSEM_ENTRY
216 LTT_EVENT_PAGE_FAULT_NOSEM_ENTRY
.setParent(Channels
.LTT_CHANNEL_KERNEL
);
217 LTT_EVENT_PAGE_FAULT_NOSEM_ENTRY
.getChildren().add(Fields
.LTT_FIELD_TRAP_ID
);
218 LTT_EVENT_PAGE_FAULT_NOSEM_ENTRY
.stateTransition
= true;
220 // PAGE_FAULT_NOSEM_EXIT
221 LTT_EVENT_PAGE_FAULT_NOSEM_EXIT
.setParent(Channels
.LTT_CHANNEL_KERNEL
);
222 LTT_EVENT_PAGE_FAULT_NOSEM_EXIT
.getChildren().add(Fields
.LTT_FIELD_TRAP_ID
);
223 LTT_EVENT_PAGE_FAULT_NOSEM_EXIT
.stateTransition
= true;
225 // IRQ_ENTRY also receives fields kernel_mode, ip and handler (??)
226 LTT_EVENT_IRQ_ENTRY
.setParent(Channels
.LTT_CHANNEL_KERNEL
);
227 LTT_EVENT_IRQ_ENTRY
.getChildren().add(Fields
.LTT_FIELD_IRQ_ID
);
228 LTT_EVENT_IRQ_ENTRY
.stateTransition
= true;
231 LTT_EVENT_IRQ_EXIT
.setParent(Channels
.LTT_CHANNEL_KERNEL
);
232 LTT_EVENT_IRQ_EXIT
.stateTransition
= true;
235 LTT_EVENT_SOFT_IRQ_RAISE
.setParent(Channels
.LTT_CHANNEL_KERNEL
);
236 LTT_EVENT_SOFT_IRQ_RAISE
.getChildren().add(Fields
.LTT_FIELD_SOFT_IRQ_ID
);
237 LTT_EVENT_SOFT_IRQ_RAISE
.stateTransition
= true;
240 LTT_EVENT_SOFT_IRQ_ENTRY
.setParent(Channels
.LTT_CHANNEL_KERNEL
);
241 LTT_EVENT_SOFT_IRQ_ENTRY
.getChildren().add(Fields
.LTT_FIELD_SOFT_IRQ_ID
);
242 LTT_EVENT_SOFT_IRQ_ENTRY
.stateTransition
= true;
245 LTT_EVENT_SOFT_IRQ_EXIT
.setParent(Channels
.LTT_CHANNEL_KERNEL
);
246 LTT_EVENT_SOFT_IRQ_EXIT
.stateTransition
= true;
249 LTT_EVENT_SCHED_SCHEDULE
.setParent(Channels
.LTT_CHANNEL_KERNEL
);
250 LTT_EVENT_SCHED_SCHEDULE
.getChildren().add(Fields
.LTT_FIELD_PREV_PID
);
251 LTT_EVENT_SCHED_SCHEDULE
.getChildren().add(Fields
.LTT_FIELD_NEXT_PID
);
252 LTT_EVENT_SCHED_SCHEDULE
.getChildren().add(Fields
.LTT_FIELD_PREV_STATE
);
253 LTT_EVENT_SCHED_SCHEDULE
.stateTransition
= true;
256 LTT_EVENT_PROCESS_FORK
.setParent(Channels
.LTT_CHANNEL_KERNEL
);
257 LTT_EVENT_PROCESS_FORK
.getChildren().add(Fields
.LTT_FIELD_PARENT_PID
);
258 LTT_EVENT_PROCESS_FORK
.getChildren().add(Fields
.LTT_FIELD_CHILD_PID
);
259 LTT_EVENT_PROCESS_FORK
.getChildren().add(Fields
.LTT_FIELD_CHILD_TGID
);
260 LTT_EVENT_PROCESS_FORK
.stateTransition
= true;
263 LTT_EVENT_KTHREAD_CREATE
.setParent(Channels
.LTT_CHANNEL_KERNEL
);
264 LTT_EVENT_KTHREAD_CREATE
.getChildren().add(Fields
.LTT_FIELD_PID
);
265 LTT_EVENT_KTHREAD_CREATE
.stateTransition
= true;
268 LTT_EVENT_PROCESS_EXIT
.setParent(Channels
.LTT_CHANNEL_KERNEL
);
269 LTT_EVENT_PROCESS_EXIT
.getChildren().add(Fields
.LTT_FIELD_PID
);
270 LTT_EVENT_PROCESS_EXIT
.stateTransition
= true;
273 LTT_EVENT_PROCESS_FREE
.setParent(Channels
.LTT_CHANNEL_KERNEL
);
274 LTT_EVENT_PROCESS_FREE
.getChildren().add(Fields
.LTT_FIELD_PID
);
275 LTT_EVENT_PROCESS_FREE
.stateTransition
= true;
278 LTT_EVENT_EXEC
.setParent(Channels
.LTT_CHANNEL_FS
);
279 LTT_EVENT_EXEC
.getChildren().add(Fields
.LTT_FIELD_FILENAME
);
280 LTT_EVENT_EXEC
.stateTransition
= true;
282 // EVENT_PROCESS_STATE
283 LTT_EVENT_PROCESS_STATE
.setParent(Channels
.LTT_CHANNEL_TASK_STATE
);
284 LTT_EVENT_PROCESS_STATE
.getChildren().add(Fields
.LTT_FIELD_PID
);
285 LTT_EVENT_PROCESS_STATE
.getChildren().add(Fields
.LTT_FIELD_PARENT_PID
);
286 LTT_EVENT_PROCESS_STATE
.getChildren().add(Fields
.LTT_FIELD_NAME
);
287 LTT_EVENT_PROCESS_STATE
.getChildren().add(Fields
.LTT_FIELD_TYPE
);
288 LTT_EVENT_PROCESS_STATE
.getChildren().add(Fields
.LTT_FIELD_MODE
);
289 LTT_EVENT_PROCESS_STATE
.getChildren().add(Fields
.LTT_FIELD_SUBMODE
);
290 LTT_EVENT_PROCESS_STATE
.getChildren().add(Fields
.LTT_FIELD_STATUS
);
291 LTT_EVENT_PROCESS_STATE
.getChildren().add(Fields
.LTT_FIELD_TGID
);
292 LTT_EVENT_PROCESS_STATE
.stateTransition
= true;
295 LTT_EVENT_STATEDUMP_END
.setParent(Channels
.LTT_CHANNEL_GLOBAL_STATE
);
296 LTT_EVENT_STATEDUMP_END
.stateTransition
= true;
299 LTT_EVENT_FUNCTION_ENTRY
.setParent(Channels
.LTT_CHANNEL_USERSPACE
);
300 LTT_EVENT_FUNCTION_ENTRY
.getChildren().add(Fields
.LTT_FIELD_THIS_FN
);
301 LTT_EVENT_FUNCTION_ENTRY
.getChildren().add(Fields
.LTT_FIELD_CALL_SITE
);
302 LTT_EVENT_FUNCTION_ENTRY
.stateTransition
= true;
305 LTT_EVENT_FUNCTION_EXIT
.setParent(Channels
.LTT_CHANNEL_USERSPACE
);
306 LTT_EVENT_FUNCTION_EXIT
.getChildren().add(Fields
.LTT_FIELD_THIS_FN
);
307 LTT_EVENT_FUNCTION_EXIT
.getChildren().add(Fields
.LTT_FIELD_CALL_SITE
);
308 LTT_EVENT_FUNCTION_EXIT
.stateTransition
= true;
311 LTT_EVENT_THREAD_BRAND
.setParent(Channels
.LTT_CHANNEL_USERSPACE
);
312 LTT_EVENT_THREAD_BRAND
.getChildren().add(Fields
.LTT_FIELD_NAME
);
313 LTT_EVENT_THREAD_BRAND
.stateTransition
= true;
316 LTT_EVENT_REQUEST_ISSUE
.setParent(Channels
.LTT_CHANNEL_BLOCK
);
317 LTT_EVENT_REQUEST_ISSUE
.getChildren().add(Fields
.LTT_FIELD_MAJOR
);
318 LTT_EVENT_REQUEST_ISSUE
.getChildren().add(Fields
.LTT_FIELD_MINOR
);
319 LTT_EVENT_REQUEST_ISSUE
.getChildren().add(Fields
.LTT_FIELD_OPERATION
);
320 LTT_EVENT_REQUEST_ISSUE
.stateTransition
= true;
323 LTT_EVENT_REQUEST_COMPLETE
.setParent(Channels
.LTT_CHANNEL_BLOCK
);
324 LTT_EVENT_REQUEST_COMPLETE
.getChildren().add(Fields
.LTT_FIELD_MAJOR
);
325 LTT_EVENT_REQUEST_COMPLETE
.getChildren().add(Fields
.LTT_FIELD_MINOR
);
326 LTT_EVENT_REQUEST_COMPLETE
.getChildren().add(Fields
.LTT_FIELD_OPERATION
);
327 LTT_EVENT_REQUEST_COMPLETE
.stateTransition
= true;
330 LTT_EVENT_LIST_INTERRUPT
.setParent(Channels
.LTT_CHANNEL_IRQ_STATE
);
331 LTT_EVENT_LIST_INTERRUPT
.getChildren().add(Fields
.LTT_FIELD_ACTION
);
332 LTT_EVENT_LIST_INTERRUPT
.getChildren().add(Fields
.LTT_FIELD_IRQ_ID
);
333 LTT_EVENT_LIST_INTERRUPT
.stateTransition
= true;
336 LTT_EVENT_SYS_CALL_TABLE
.setParent(Channels
.LTT_CHANNEL_SYSCALL_STATE
);
337 LTT_EVENT_SYS_CALL_TABLE
.getChildren().add(Fields
.LTT_FIELD_ID
);
338 LTT_EVENT_SYS_CALL_TABLE
.getChildren().add(Fields
.LTT_FIELD_ADDRESS
);
339 LTT_EVENT_SYS_CALL_TABLE
.getChildren().add(Fields
.LTT_FIELD_SYMBOL
);
340 LTT_EVENT_SYS_CALL_TABLE
.stateTransition
= true;
343 LTT_EVENT_SOFTIRQ_VEC
.setParent(Channels
.LTT_CHANNEL_SOFTIRQ_STATE
);
344 LTT_EVENT_SOFTIRQ_VEC
.getChildren().add(Fields
.LTT_FIELD_ID
);
345 LTT_EVENT_SOFTIRQ_VEC
.getChildren().add(Fields
.LTT_FIELD_ADDRESS
);
346 LTT_EVENT_SOFTIRQ_VEC
.getChildren().add(Fields
.LTT_FIELD_SYMBOL
);
347 LTT_EVENT_SOFTIRQ_VEC
.stateTransition
= true;
350 LTT_EVENT_KPROBE_TABLE
.setParent(Channels
.LTT_CHANNEL_KPROBE_STATE
);
351 LTT_EVENT_KPROBE_TABLE
.getChildren().add(Fields
.LTT_FIELD_IP
);
352 LTT_EVENT_KPROBE_TABLE
.getChildren().add(Fields
.LTT_FIELD_SYMBOL
);
353 LTT_EVENT_KPROBE_TABLE
.stateTransition
= true;
356 LTT_EVENT_KPROBE
.setParent(Channels
.LTT_CHANNEL_KERNEL
);
357 LTT_EVENT_KPROBE
.getChildren().add(Fields
.LTT_FIELD_IP
);
358 // LTT_EVENT_KPROBE.getChildren().add(Fields.LTT_FIELD_SYMBOL);
359 LTT_EVENT_KPROBE
.stateTransition
= true;
365 LTT_FIELD_SYSCALL_ID("syscall_id"), /* */
366 LTT_FIELD_TRAP_ID("trap_id"), /* */
367 LTT_FIELD_IRQ_ID("irq_id"), /* */
368 LTT_FIELD_SOFT_IRQ_ID("softirq_id"), /* */
369 LTT_FIELD_PREV_PID("prev_pid"), /* */
370 LTT_FIELD_NEXT_PID("next_pid"), /* */
371 LTT_FIELD_PREV_STATE("prev_state"), /* */
372 LTT_FIELD_PARENT_PID("parent_pid"), /* */
373 LTT_FIELD_CHILD_PID("child_pid"), /* */
374 LTT_FIELD_PID("pid"), /* */
375 LTT_FIELD_TGID("tgid"), /* */
376 LTT_FIELD_CHILD_TGID("child_tgid"), /* */
377 LTT_FIELD_FILENAME("filename"), /* */
378 LTT_FIELD_NAME("name"), /* */
379 LTT_FIELD_TYPE("type"), /* */
380 LTT_FIELD_MODE("mode"), /* */
381 LTT_FIELD_SUBMODE("submode"), /* */
382 LTT_FIELD_STATUS("status"), /* */
383 LTT_FIELD_THIS_FN("this_fn"), /* */
384 LTT_FIELD_CALL_SITE("call_site"), /* */
385 LTT_FIELD_MAJOR("major"), /* */
386 LTT_FIELD_MINOR("minor"), /* */
387 LTT_FIELD_OPERATION("direction"), /* */
388 LTT_FIELD_ACTION("action"), /* */
389 LTT_FIELD_ID("id"), /* */
390 LTT_FIELD_ADDRESS("address"), /* */
391 LTT_FIELD_SYMBOL("symbol"), /* */
392 LTT_FIELD_IP("ip"); /* */
394 private final String inName
;
396 private Fields(String name
) {
400 public String
getInName() {
406 public enum CpuMode
{
407 LTTV_CPU_UNKNOWN("unknown"), /* */
408 LTTV_CPU_IDLE("idle"), /* */
409 LTTV_CPU_BUSY("busy"), /* */
410 LTTV_CPU_IRQ("irq"), /* */
411 LTTV_CPU_SOFT_IRQ("softirq"), /* */
412 LTTV_CPU_TRAP("trap"); /* */
414 private final String inName
;
416 private CpuMode(String name
) {
420 public String
getInName() {
426 public enum IRQMode
{
427 LTTV_IRQ_UNKNOWN("unknown"), /* */
428 LTTV_IRQ_IDLE("idle"), /* */
429 LTTV_IRQ_BUSY("busy"); /* */
431 private final String inName
;
433 private IRQMode(String name
) {
437 public String
getInName() {
443 public enum SoftIRQMode
{
444 LTTV_SOFT_IRQ_UNKNOWN("unknown"), /* */
445 LTTV_SOFT_IRQ_IDLE("idle"), /* */
446 LTTV_SOFT_IRQ_PENDING("pending"), /* */
447 LTTV_SOFT_IRQ_BUSY("busy"); /* */
449 private final String inName
;
451 private SoftIRQMode(String name
) {
455 public String
getInName() {
461 public enum BdevMode
{
462 LTTV_BDEV_UNKNOWN("unknown"), /* */
463 LTTV_BDEV_IDLE("idle"), /* */
464 LTTV_BDEV_BUSY_READING("busy_reading"), /* */
465 LTTV_BDEV_BUSY_WRITING("busy_writing"); /* */
467 private final String inName
;
469 private BdevMode(String name
) {
473 public String
getInName() {
479 public enum TrapMode
{
480 LTTV_TRAP_UNKNOWN("unknown"), /* */
481 LTTV_TRAP_IDLE("idle"), /* */
482 LTTV_TRAP_BUSY("busy"); /* */
484 private final String inName
;
486 private TrapMode(String name
) {
490 public String
getInName() {
496 public enum ProcessType
{
497 LTTV_STATE_USER_THREAD("USER_THREAD"), /* */
498 LTTV_STATE_KERNEL_THREAD("KERNEL_THREAD"); /* */
500 private final String inName
;
502 private ProcessType(String name
) {
506 public String
getInName() {
512 public enum ProcessStatus
{
513 LTTV_STATE_UNNAMED("UNNAMED"), /* */
514 LTTV_STATE_WAIT_FORK("WAIT_FORK"), /* */
515 LTTV_STATE_WAIT_CPU("WAIT_CPU"), /* */
516 LTTV_STATE_EXIT("EXIT"), /* */
517 LTTV_STATE_ZOMBIE("ZOMBIE"), /* */
518 LTTV_STATE_WAIT("WAIT"), /* */
519 LTTV_STATE_RUN("RUN"), /* */
520 LTTV_STATE_DEAD("DEAD"); /* */
522 private final String inName
;
524 private ProcessStatus(String name
) {
528 public String
getInName() {
534 public enum ExecutionSubMode
{
535 LTTV_STATE_SUBMODE_UNKNOWN("UNKNOWN"), /* */
536 LTTV_STATE_SUBMODE_NONE("NONE"); /* */
538 private final String inName
;
540 private ExecutionSubMode(String name
) {
544 public String
getInName() {
550 public enum ExecutionMode
{
551 LTTV_STATE_MODE_UNKNOWN("MODE_UNKNOWN"), /* */
552 LTTV_STATE_USER_MODE("USER_MODE"), /* */
553 LTTV_STATE_SYSCALL("SYSCALL"), /* */
554 LTTV_STATE_TRAP("TRAP"), /* */
555 LTTV_STATE_IRQ("IRQ"), /* */
556 LTTV_STATE_SOFT_IRQ("SOFTIRQ"); /* */
558 private final String inName
;
560 private ExecutionMode(String name
) {
564 public String
getInName() {
570 public enum GenStates
{
571 LTTV_STATE_TRACEFILES("tracefiles"), /* */
572 LTTV_STATE_PROCESSES("processes"), /* */
573 LTTV_STATE_PROCESS("process"), /* */
574 LTTV_STATE_RUNNING_PROCESS("running_process"), /* */
575 LTTV_STATE_EVENT("event"), /* */
576 LTTV_STATE_SAVED_STATES("saved states"), /* */
577 LTTV_STATE_SAVED_STATES_TIME("saved states time"), /* */
578 LTTV_STATE_TIME("time"), /* */
579 LTTV_STATE_HOOKS("saved state hooks"), /* */
580 LTTV_STATE_NAME_TABLES("name tables"), /* */
581 LTTV_STATE_TRACE_STATE_USE_COUNT("trace_state_use_count"), /* */
582 LTTV_STATE_RESOURCE_CPUS("cpu count"), /* */
583 LTTV_STATE_RESOURCE_IRQS("irq resource states"), /* */
584 LTTV_STATE_RESOURCE_SOFT_IRQS("soft irq resource states"), /* */
585 LTTV_STATE_RESOURCE_TRAPS("trap resource states"), /* */
586 LTTV_STATE_RESOURCE_BLKDEVS("blkdevs resource states"); /* */
588 private final String inName
;
590 private GenStates(String name
) {
594 public String
getInName() {
600 // ========================================================================
602 // =======================================================================
605 * Return the map from event name strings to Events instances
607 * @return the eventstrmap
609 public HashMap
<String
, Events
> getEventStrmap() {
614 * Return the map from state transition event name strings to Events instances
615 * State transition events are the subset of events that have the attribute stateTransition == True.
617 * @return the stateTransEventMap
619 public HashMap
<String
, Events
> getStateTransEventMap() {
620 return stateTransEventMap
;
624 * @return the mapping from int (0..255) to system call names
626 public String
[] getSyscallNames() {
627 return syscall_names
;
631 * @return the mapping from int (0..255) to trap names
633 public String
[] getTrapNames() {
638 * @return the mapping from int (0..255) to IRQ names
640 public String
[] getIrqNames() {
645 * @return the mapping from int (0..31) to soft IRQ names
647 public String
[] getSoftIrqNames() {
648 return soft_irq_names
;