[219097] LTTng updates
[deliverable/tracecompass.git] / org.eclipse.linuxtools.lttng.ui / src / org / eclipse / linuxtools / lttng / ui / model / trange / TimeRangeViewerProvider.java
1 /*******************************************************************************
2 * Copyright (c) 2009 Ericsson
3 *
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
8 *
9 * Contributors:
10 * Alvaro Sanchez-Leon (alvsan09@gmail.com) - Initial API and implementation
11 *******************************************************************************/
12 package org.eclipse.linuxtools.lttng.ui.model.trange;
13
14 import java.util.HashMap;
15 import java.util.Map;
16
17 import org.eclipse.linuxtools.lttng.state.StateStrings.BdevMode;
18 import org.eclipse.linuxtools.lttng.state.StateStrings.CpuMode;
19 import org.eclipse.linuxtools.lttng.state.StateStrings.ExecutionMode;
20 import org.eclipse.linuxtools.lttng.state.StateStrings.IRQMode;
21 import org.eclipse.linuxtools.lttng.state.StateStrings.ProcessStatus;
22 import org.eclipse.linuxtools.lttng.state.StateStrings.SoftIRQMode;
23 import org.eclipse.linuxtools.lttng.state.StateStrings.TrapMode;
24 import org.eclipse.linuxtools.tmf.ui.viewers.timeAnalysis.TmfTimeAnalysisProvider;
25 import org.eclipse.linuxtools.tmf.ui.viewers.timeAnalysis.model.ITimeEvent;
26 import org.eclipse.linuxtools.tmf.ui.viewers.timeAnalysis.model.ITmfTimeAnalysisEntry;
27
28 public class TimeRangeViewerProvider extends TmfTimeAnalysisProvider {
29 // ========================================================================
30 // Data
31 // =======================================================================
32 Map<String, StateColor> procStateToColor = new HashMap<String, StateColor>(
33 16);
34 Map<String, StateColor> bdevStateToColor = new HashMap<String, StateColor>(
35 4);
36 Map<String, StateColor> softIrqStateToColor = new HashMap<String, StateColor>(
37 4);
38 Map<String, StateColor> trapStateToColor = new HashMap<String, StateColor>(
39 4);
40 Map<String, StateColor> irqStateToColor = new HashMap<String, StateColor>(4);
41 Map<String, StateColor> cpuStateToColor = new HashMap<String, StateColor>(8);
42
43 // ========================================================================
44 // Constructors
45 // =======================================================================
46 public TimeRangeViewerProvider() {
47 // Fill the statemode to color maps
48 fillProcessStateToColor();
49 fillBdevStateToColor();
50 fillSoftIRQStateToColor();
51 fillTrapStateToColor();
52 fillIrqStateToColor();
53 fillCpuStateToColor();
54 }
55
56 // ========================================================================
57 // Methods
58 // =======================================================================
59 @Override
60 public StateColor getEventColor(ITimeEvent event) {
61 StateColor retColor = null;
62
63 if (event instanceof TimeRangeEvent) {
64 TimeRangeEvent devent = (TimeRangeEvent) event;
65 String stateMode = devent.getStateMode();
66 switch (devent.getEventType()) {
67 case PROCESS_MODE:
68 retColor = procStateToColor.get(stateMode);
69 break;
70 case BDEV_MODE:
71 retColor = bdevStateToColor.get(stateMode);
72 break;
73 case IRQ_MODE:
74 retColor = irqStateToColor.get(stateMode);
75 break;
76 case SOFT_IRQ_MODE:
77 retColor = softIrqStateToColor.get(stateMode);
78 break;
79 case CPU_MODE:
80 retColor = cpuStateToColor.get(stateMode);
81 break;
82 case TRAP_MODE:
83 retColor = trapStateToColor.get(stateMode);
84 break;
85 }
86 }
87
88 if (retColor == null) {
89 return StateColor.MAGENTA3;
90 }
91 return retColor;
92 }
93
94 /* (non-Javadoc)
95 * @see org.eclipse.linuxtools.tmf.ui.widgets.timeAnalysis.api.TsfTmAbstractImplProvider#getStateName(org.eclipse.linuxtools.tmf.ui.widgets.timeAnalysis.api.TsfTmAbstractImplProvider.StateColor)
96 */
97 @Override
98 public String getStateName(StateColor color) {
99 //Override to multiple instances of the widget, the same color can have multiple meanings
100 return "Not mapped";
101 }
102
103 @Override
104 public Map<String, String> getEventHoverToolTipInfo(ITimeEvent revent) {
105 Map<String, String> toolTipEventMsgs = new HashMap<String, String>();
106 //if the selected resource is a Process, add the Process type to the tool tip
107 if (revent instanceof TimeRangeComponent) {
108 ITimeRangeComponent parent = ((TimeRangeComponent) revent)
109 .getEventParent();
110 if (parent != null && parent instanceof TimeRangeEventProcess) {
111 TimeRangeEventProcess localProcess = (TimeRangeEventProcess) parent;
112 toolTipEventMsgs.put("Process Type", localProcess
113 .getProcessType());
114 }
115 }
116
117 return toolTipEventMsgs;
118 }
119
120 @Override
121 public String getEventName(ITimeEvent event, boolean upper, boolean extInfo) {
122 String name = null;
123 //The relevant event name for the time range is the actual state mode
124 if (event instanceof TimeRangeEvent) {
125 TimeRangeEvent devent = (TimeRangeEvent) event;
126 StringBuilder sb = new StringBuilder(devent.getStateMode());
127 name = sb.toString();
128 }
129
130 if (name == null) {
131 return "Unknown";
132 }
133 return name;
134 }
135
136 @Override
137 public String getTraceClassName(ITmfTimeAnalysisEntry trace) {
138 String name = "";
139 if (trace instanceof TimeRangeComposite) {
140 TimeRangeComposite dTrace = (TimeRangeComposite) trace;
141 name = dTrace.getClassName();
142 }
143 return name;
144 }
145
146 private void fillCpuStateToColor() {
147 cpuStateToColor.put(CpuMode.LTTV_CPU_UNKNOWN.getInName(),
148 StateColor.BLACK);
149 cpuStateToColor.put(CpuMode.LTTV_CPU_IDLE.getInName(), StateColor.GRAY);
150 cpuStateToColor.put(CpuMode.LTTV_CPU_BUSY.getInName(),
151 StateColor.LIGHT_BLUE);
152 cpuStateToColor
153 .put(CpuMode.LTTV_CPU_IRQ.getInName(), StateColor.ORANGE);
154 cpuStateToColor.put(CpuMode.LTTV_CPU_SOFT_IRQ.getInName(),
155 StateColor.PURPLE1);
156 cpuStateToColor.put(CpuMode.LTTV_CPU_TRAP.getInName(), StateColor.GOLD);
157 }
158
159 private void fillIrqStateToColor() {
160 irqStateToColor.put(IRQMode.LTTV_IRQ_UNKNOWN.getInName(),
161 StateColor.BLACK);
162 irqStateToColor.put(IRQMode.LTTV_IRQ_IDLE.getInName(), StateColor.GRAY);
163 irqStateToColor.put(IRQMode.LTTV_IRQ_BUSY.getInName(),
164 StateColor.ORANGE);
165 }
166
167 private void fillTrapStateToColor() {
168 trapStateToColor.put(TrapMode.LTTV_TRAP_UNKNOWN.getInName(),
169 StateColor.BLACK);
170 trapStateToColor.put(TrapMode.LTTV_TRAP_IDLE.getInName(),
171 StateColor.BLACK);
172 trapStateToColor.put(TrapMode.LTTV_TRAP_BUSY.getInName(),
173 StateColor.GOLD);
174 }
175
176 private void fillSoftIRQStateToColor() {
177 softIrqStateToColor.put(SoftIRQMode.LTTV_SOFT_IRQ_UNKNOWN.getInName(),
178 StateColor.BLACK);
179 softIrqStateToColor.put(SoftIRQMode.LTTV_SOFT_IRQ_IDLE.getInName(),
180 StateColor.BLACK);
181 softIrqStateToColor.put(SoftIRQMode.LTTV_SOFT_IRQ_PENDING.getInName(),
182 StateColor.PINK1);
183 softIrqStateToColor.put(SoftIRQMode.LTTV_SOFT_IRQ_BUSY.getInName(),
184 StateColor.PURPLE1);
185 }
186
187 private void fillBdevStateToColor() {
188 softIrqStateToColor.put(BdevMode.LTTV_BDEV_UNKNOWN.getInName(),
189 StateColor.BLACK);
190 softIrqStateToColor.put(BdevMode.LTTV_BDEV_IDLE.getInName(),
191 StateColor.BLACK);
192 softIrqStateToColor.put(BdevMode.LTTV_BDEV_BUSY_READING.getInName(),
193 StateColor.DARK_BLUE);
194 softIrqStateToColor.put(BdevMode.LTTV_BDEV_BUSY_WRITING.getInName(),
195 StateColor.RED);
196 }
197
198 private void fillProcessStateToColor() {
199 // Process Status
200 procStateToColor.put(ProcessStatus.LTTV_STATE_UNNAMED.getInName(),
201 StateColor.GRAY);
202 procStateToColor.put(ProcessStatus.LTTV_STATE_DEAD.getInName(),
203 StateColor.BLACK);
204 procStateToColor.put(ProcessStatus.LTTV_STATE_WAIT_FORK.getInName(),
205 StateColor.DARK_GREEN);
206 procStateToColor.put(ProcessStatus.LTTV_STATE_WAIT_CPU.getInName(),
207 StateColor.DARK_YELLOW);
208 procStateToColor.put(ProcessStatus.LTTV_STATE_EXIT.getInName(),
209 StateColor.MAGENTA3);
210 procStateToColor.put(ProcessStatus.LTTV_STATE_ZOMBIE.getInName(),
211 StateColor.PURPLE1);
212 procStateToColor.put(ProcessStatus.LTTV_STATE_WAIT.getInName(),
213 StateColor.RED);
214
215 // Execution Mode
216 procStateToColor.put(ExecutionMode.LTTV_STATE_MODE_UNKNOWN.getInName(),
217 StateColor.BLACK);
218 procStateToColor.put(ExecutionMode.LTTV_STATE_USER_MODE.getInName(),
219 StateColor.GREEN);
220 procStateToColor.put(ExecutionMode.LTTV_STATE_SYSCALL.getInName(),
221 StateColor.DARK_BLUE);
222 procStateToColor.put(ExecutionMode.LTTV_STATE_TRAP.getInName(),
223 StateColor.GOLD);
224 procStateToColor.put(ExecutionMode.LTTV_STATE_IRQ.getInName(),
225 StateColor.ORANGE);
226 procStateToColor.put(ExecutionMode.LTTV_STATE_SOFT_IRQ.getInName(),
227 StateColor.PINK1);
228 }
229 }
This page took 0.037166 seconds and 5 git commands to generate.