linux.core: Support IPIs in kernel analysis (Bug 498215)
[deliverable/tracecompass.git] / lttng / org.eclipse.tracecompass.lttng2.kernel.core / src / org / eclipse / tracecompass / internal / lttng2 / kernel / core / trace / layout / Lttng27EventLayout.java
CommitLineData
ff5e31e0
SL
1/*******************************************************************************
2 * Copyright (c) 2015 Ericsson, École Polytechnique de Montréal
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 * Sebastien Lorrain - Initial API and implementation
11 ******************************************************************************/
12
13package org.eclipse.tracecompass.internal.lttng2.kernel.core.trace.layout;
14
e8e92916
FG
15import java.util.Collection;
16
051db42f
MK
17import org.eclipse.jdt.annotation.NonNull;
18
e8e92916
FG
19import com.google.common.collect.ImmutableSet;
20
ff5e31e0
SL
21/**
22 * This file defines all the known event and field names for LTTng kernel
23 * traces, for versions of lttng-modules 2.7 and above.
24 *
25 * @author Sebastien Lorrain
26 */
27@SuppressWarnings("javadoc")
28public class Lttng27EventLayout extends Lttng26EventLayout {
29
e8e92916
FG
30 private static final String X86_IRQ_VECTORS_LOCAL_TIMER_ENTRY = "x86_irq_vectors_local_timer_entry"; //$NON-NLS-1$
31 private static final String X86_IRQ_VECTORS_LOCAL_TIMER_EXIT = "x86_irq_vectors_local_timer_exit"; //$NON-NLS-1$
32 private static final String X86_IRQ_VECTORS_RESCHEDULE_ENTRY = "x86_irq_vectors_reschedule_entry"; //$NON-NLS-1$
33 private static final String X86_IRQ_VECTORS_RESCHEDULE_EXIT = "x86_irq_vectors_reschedule_exit"; //$NON-NLS-1$
34 private static final String X86_IRQ_VECTORS_SPURIOUS_ENTRY = "x86_irq_vectors_spurious_apic_entry"; //$NON-NLS-1$
35 private static final String X86_IRQ_VECTORS_SPURIOUS_EXIT = "x86_irq_vectors_spurious_apic_exit"; //$NON-NLS-1$
36 private static final String X86_IRQ_VECTORS_ERROR_APIC_ENTRY = "x86_irq_vectors_error_apic_entry"; //$NON-NLS-1$
37 private static final String X86_IRQ_VECTORS_ERROR_APIC_EXIT = "x86_irq_vectors_error_apic_exit"; //$NON-NLS-1$
38 private static final String X86_IRQ_VECTORS_IPI_ENTRY = "x86_irq_vectors_ipi_entry"; //$NON-NLS-1$
39 private static final String X86_IRQ_VECTORS_IPI_EXIT = "x86_irq_vectors_ipi_exit"; //$NON-NLS-1$
40 private static final String X86_IRQ_VECTORS_IRQ_WORK_ENTRY = "x86_irq_vectors_irq_work_entry"; //$NON-NLS-1$
41 private static final String X86_IRQ_VECTORS_IRQ_WORK_EXIT = "x86_irq_vectors_irq_work_exit"; //$NON-NLS-1$
42 private static final String X86_IRQ_VECTORS_CALL_FUNCTION_ENTRY = "x86_irq_vectors_call_function_entry"; //$NON-NLS-1$
43 private static final String X86_IRQ_VECTORS_CALL_FUNCTION_EXIT = "x86_irq_vectors_call_function_exit"; //$NON-NLS-1$
44 private static final String X86_IRQ_VECTORS_CALL_FUNCTION_SINGLE_ENTRY = "x86_irq_vectors_call_function_single_entry"; //$NON-NLS-1$
45 private static final String X86_IRQ_VECTORS_CALL_FUNCTION_SINGLE_EXIT = "x86_irq_vectors_call_function_single_exit"; //$NON-NLS-1$
46 private static final String X86_IRQ_VECTORS_THRESHOLD_APIC_ENTRY = "x86_irq_vectors_threshold_apic_entry"; //$NON-NLS-1$
47 private static final String X86_IRQ_VECTORS_THRESHOLD_APIC_EXIT = "x86_irq_vectors_threshold_apic_exit"; //$NON-NLS-1$
48 private static final String X86_IRQ_VECTORS_DEFERRED_ERROR_APIC_ENTRY = "x86_irq_vectors_deferred_error_apic_entry"; //$NON-NLS-1$
49 private static final String X86_IRQ_VECTORS_DEFERRED_ERROR_APIC_EXIT = "x86_irq_vectors_deferred_error_apic_exit"; //$NON-NLS-1$
50 private static final String X86_IRQ_VECTORS_THERMAL_APIC_ENTRY = "x86_irq_vectors_thermal_apic_entry"; //$NON-NLS-1$
51 private static final String X86_IRQ_VECTORS_THERMAL_APIC_EXIT = "x86_irq_vectors_thermal_apic_exit"; //$NON-NLS-1$
52
53 private static final Collection<String> IPI_ENTRY_SET = ImmutableSet.of(
54 X86_IRQ_VECTORS_LOCAL_TIMER_ENTRY,
55 X86_IRQ_VECTORS_RESCHEDULE_ENTRY,
56 X86_IRQ_VECTORS_SPURIOUS_ENTRY,
57 X86_IRQ_VECTORS_ERROR_APIC_ENTRY,
58 X86_IRQ_VECTORS_IPI_ENTRY,
59 X86_IRQ_VECTORS_IRQ_WORK_ENTRY,
60 X86_IRQ_VECTORS_CALL_FUNCTION_ENTRY,
61 X86_IRQ_VECTORS_CALL_FUNCTION_SINGLE_ENTRY,
62 X86_IRQ_VECTORS_THRESHOLD_APIC_ENTRY,
63 X86_IRQ_VECTORS_DEFERRED_ERROR_APIC_ENTRY,
64 X86_IRQ_VECTORS_THERMAL_APIC_ENTRY);
65
66 private static final Collection<String> IPI_EXIT_SET = ImmutableSet.of(
67 X86_IRQ_VECTORS_LOCAL_TIMER_EXIT,
68 X86_IRQ_VECTORS_RESCHEDULE_EXIT,
69 X86_IRQ_VECTORS_SPURIOUS_EXIT,
70 X86_IRQ_VECTORS_ERROR_APIC_EXIT,
71 X86_IRQ_VECTORS_IPI_EXIT,
72 X86_IRQ_VECTORS_IRQ_WORK_EXIT,
73 X86_IRQ_VECTORS_CALL_FUNCTION_EXIT,
74 X86_IRQ_VECTORS_CALL_FUNCTION_SINGLE_EXIT,
75 X86_IRQ_VECTORS_THRESHOLD_APIC_EXIT,
76 X86_IRQ_VECTORS_DEFERRED_ERROR_APIC_EXIT,
77 X86_IRQ_VECTORS_THERMAL_APIC_EXIT);
78
ff5e31e0
SL
79 /**
80 * Constructor
81 */
82 protected Lttng27EventLayout() {}
83
e8e92916
FG
84 private static final Lttng27EventLayout INSTANCE = new Lttng27EventLayout();
85
86 public static Lttng27EventLayout getInstance() {
87 return INSTANCE;
88 }
ff5e31e0
SL
89
90 // ------------------------------------------------------------------------
a8b8de05
BH
91 // New event definition in LTTng 2.7
92 // ------------------------------------------------------------------------
93
94 @Override
95 public String eventHRTimerStart() {
80986a7e 96 return "timer_hrtimer_start"; //$NON-NLS-1$
a8b8de05
BH
97 }
98
99 @Override
100 public String eventHRTimerCancel() {
80986a7e 101 return "timer_hrtimer_cancel"; //$NON-NLS-1$
a8b8de05
BH
102 }
103
104 @Override
105 public String eventHRTimerExpireEntry() {
80986a7e 106 return "timer_hrtimer_expire_entry"; //$NON-NLS-1$
a8b8de05
BH
107 }
108
109 @Override
110 public String eventHRTimerExpireExit() {
80986a7e 111 return "timer_hrtimer_expire_exit"; //$NON-NLS-1$
a8b8de05
BH
112 }
113
f8292c94
MK
114 @Override
115 public String eventSoftIrqRaise() {
116 return "irq_softirq_raise"; //$NON-NLS-1$
117 }
118
e8e92916
FG
119 @Override
120 public String eventSoftIrqEntry() {
121 return "irq_softirq_entry"; //$NON-NLS-1$
122 }
123
124 @Override
125 public String eventSoftIrqExit() {
126 return "irq_softirq_exit"; //$NON-NLS-1$
127 }
128
aa19e48b
NA
129 @Override
130 public String eventKmemPageAlloc() {
131 return "kmem_mm_page_alloc"; //$NON-NLS-1$
132 }
133
134 @Override
135 public String eventKmemPageFree() {
136 return "kmem_mm_page_free"; //$NON-NLS-1$
137 }
138
e8e92916
FG
139 public String x86IrqVectorsLocalTimerEntry() {
140 return X86_IRQ_VECTORS_LOCAL_TIMER_ENTRY;
141 }
142
143 public String x86IrqVectorsLocalTimerExit() {
144 return X86_IRQ_VECTORS_LOCAL_TIMER_EXIT;
145 }
146
147 public String x86IrqVectorsRescheduleEntry() {
148 return X86_IRQ_VECTORS_RESCHEDULE_ENTRY;
149 }
150
151 public String x86IrqVectorsRescheduleExit() {
152 return X86_IRQ_VECTORS_RESCHEDULE_EXIT;
153 }
154
155 public String x86IrqVectorsSpuriousApicEntry() {
156 return X86_IRQ_VECTORS_SPURIOUS_ENTRY;
157 }
158
159 public String x86IrqVectorsSpuriousApicExit() {
160 return X86_IRQ_VECTORS_SPURIOUS_EXIT;
161 }
162
163 public String x86IrqVectorsErrorApicEntry() {
164 return X86_IRQ_VECTORS_ERROR_APIC_ENTRY;
165 }
166
167 public String x86IrqVectorsErrorApicExit() {
168 return X86_IRQ_VECTORS_ERROR_APIC_EXIT;
169 }
170
171 public String x86IrqVectorsIpiEntry() {
172 return X86_IRQ_VECTORS_IPI_ENTRY;
173 }
174
175 public String x86IrqVectorsIpiExit() {
176 return X86_IRQ_VECTORS_IPI_EXIT;
177 }
178
179 public String x86IrqVectorsIrqWorkEntry() {
180 return X86_IRQ_VECTORS_IRQ_WORK_ENTRY;
181 }
182
183 public String x86IrqVectorsIrqWorkExit() {
184 return X86_IRQ_VECTORS_IRQ_WORK_EXIT;
185 }
186
187 public String x86IrqVectorsCallFunctionEntry() {
188 return X86_IRQ_VECTORS_CALL_FUNCTION_ENTRY;
189 }
190
191 public String x86IrqVectorsCallFunctionExit() {
192 return X86_IRQ_VECTORS_CALL_FUNCTION_EXIT;
193 }
194
195 public String x86IrqVectorsCallFunctionSingleEntry() {
196 return X86_IRQ_VECTORS_CALL_FUNCTION_SINGLE_ENTRY;
197 }
198
199 public String x86IrqVectorsCallFunctionSingleExit() {
200 return X86_IRQ_VECTORS_CALL_FUNCTION_SINGLE_EXIT;
201 }
202
203 public String x86IrqVectorsThresholdApicEntry() {
204 return X86_IRQ_VECTORS_THRESHOLD_APIC_ENTRY;
205 }
206
207 public String x86IrqVectorsThresholdApicExit() {
208 return X86_IRQ_VECTORS_THRESHOLD_APIC_EXIT;
209 }
210
211 public String x86IrqVectorsDeferredErrorApicEntry() {
212 return X86_IRQ_VECTORS_DEFERRED_ERROR_APIC_ENTRY;
213 }
214
215 public String x86IrqVectorsDeferredErrorApicExit() {
216 return X86_IRQ_VECTORS_DEFERRED_ERROR_APIC_EXIT;
217 }
218
219 public String x86IrqVectorsThermalApicEntry() {
220 return X86_IRQ_VECTORS_THERMAL_APIC_ENTRY;
221 }
222
223 public String x86IrqVectorsThermalApicExit() {
224 return X86_IRQ_VECTORS_THERMAL_APIC_EXIT;
225 }
226
227 public Collection<String> getX86IrqVectorsEntry() {
228 return IPI_ENTRY_SET;
229 }
230
231 public Collection<String> getX86IrqVectorsExit() {
232 return IPI_EXIT_SET;
233 }
234
051db42f
MK
235 @Override
236 public @NonNull Collection<@NonNull String> getIPIIrqVectorsEntries() {
237 return getX86IrqVectorsEntry();
238 }
239
240 @Override
241 public @NonNull Collection<@NonNull String> getIPIIrqVectorsExits() {
242 return getX86IrqVectorsExit();
243 }
244
a8b8de05
BH
245 // ------------------------------------------------------------------------
246 // New field definitions in LTTng 2.7
ff5e31e0
SL
247 // ------------------------------------------------------------------------
248
249 public String fieldParentNSInum() {
250 return "parent_ns_inum"; //$NON-NLS-1$
251 }
252
253 public String fieldChildNSInum() {
254 return "child_ns_inum"; //$NON-NLS-1$
255 }
256
257 public String fieldChildVTids() {
258 return "vtids"; //$NON-NLS-1$
259 }
260
261 public String fieldNSInum() {
262 return "ns_inum"; //$NON-NLS-1$
263 }
264
265 public String fieldVTid() {
266 return "vtid"; //$NON-NLS-1$
267 }
268
269 public String fieldPPid() {
270 return "ppid"; //$NON-NLS-1$
271 }
272
273 public String fieldNSLevel() {
274 return "ns_level"; //$NON-NLS-1$
275 }
276
ff5e31e0 277}
This page took 0.050319 seconds and 5 git commands to generate.