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