1 /*******************************************************************************
2 * Copyright (c) 2015 Ericsson, École Polytechnique de Montréal
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 * Sebastien Lorrain - Initial API and implementation
11 ******************************************************************************/
13 package org
.lttng
.scope
.lttng
.kernel
.core
.trace
.layout
.internal
;
15 import java
.util
.Collection
;
16 import java
.util
.Collections
;
18 import org
.eclipse
.jdt
.annotation
.NonNull
;
20 import com
.google
.common
.collect
.ImmutableSet
;
23 * This file defines all the known event and field names for LTTng kernel
24 * traces, for versions of lttng-modules 2.7 and above.
26 * @author Sebastien Lorrain
28 @SuppressWarnings("javadoc")
29 public class Lttng27EventLayout
extends Lttng26EventLayout
{
31 private static final String X86_IRQ_VECTORS_LOCAL_TIMER_ENTRY
= "x86_irq_vectors_local_timer_entry"; //$NON-NLS-1$
32 private static final String X86_IRQ_VECTORS_LOCAL_TIMER_EXIT
= "x86_irq_vectors_local_timer_exit"; //$NON-NLS-1$
33 private static final String X86_IRQ_VECTORS_RESCHEDULE_ENTRY
= "x86_irq_vectors_reschedule_entry"; //$NON-NLS-1$
34 private static final String X86_IRQ_VECTORS_RESCHEDULE_EXIT
= "x86_irq_vectors_reschedule_exit"; //$NON-NLS-1$
35 private static final String X86_IRQ_VECTORS_SPURIOUS_ENTRY
= "x86_irq_vectors_spurious_apic_entry"; //$NON-NLS-1$
36 private static final String X86_IRQ_VECTORS_SPURIOUS_EXIT
= "x86_irq_vectors_spurious_apic_exit"; //$NON-NLS-1$
37 private static final String X86_IRQ_VECTORS_ERROR_APIC_ENTRY
= "x86_irq_vectors_error_apic_entry"; //$NON-NLS-1$
38 private static final String X86_IRQ_VECTORS_ERROR_APIC_EXIT
= "x86_irq_vectors_error_apic_exit"; //$NON-NLS-1$
39 private static final String X86_IRQ_VECTORS_IPI_ENTRY
= "x86_irq_vectors_ipi_entry"; //$NON-NLS-1$
40 private static final String X86_IRQ_VECTORS_IPI_EXIT
= "x86_irq_vectors_ipi_exit"; //$NON-NLS-1$
41 private static final String X86_IRQ_VECTORS_IRQ_WORK_ENTRY
= "x86_irq_vectors_irq_work_entry"; //$NON-NLS-1$
42 private static final String X86_IRQ_VECTORS_IRQ_WORK_EXIT
= "x86_irq_vectors_irq_work_exit"; //$NON-NLS-1$
43 private static final String X86_IRQ_VECTORS_CALL_FUNCTION_ENTRY
= "x86_irq_vectors_call_function_entry"; //$NON-NLS-1$
44 private static final String X86_IRQ_VECTORS_CALL_FUNCTION_EXIT
= "x86_irq_vectors_call_function_exit"; //$NON-NLS-1$
45 private static final String X86_IRQ_VECTORS_CALL_FUNCTION_SINGLE_ENTRY
= "x86_irq_vectors_call_function_single_entry"; //$NON-NLS-1$
46 private static final String X86_IRQ_VECTORS_CALL_FUNCTION_SINGLE_EXIT
= "x86_irq_vectors_call_function_single_exit"; //$NON-NLS-1$
47 private static final String X86_IRQ_VECTORS_THRESHOLD_APIC_ENTRY
= "x86_irq_vectors_threshold_apic_entry"; //$NON-NLS-1$
48 private static final String X86_IRQ_VECTORS_THRESHOLD_APIC_EXIT
= "x86_irq_vectors_threshold_apic_exit"; //$NON-NLS-1$
49 private static final String X86_IRQ_VECTORS_DEFERRED_ERROR_APIC_ENTRY
= "x86_irq_vectors_deferred_error_apic_entry"; //$NON-NLS-1$
50 private static final String X86_IRQ_VECTORS_DEFERRED_ERROR_APIC_EXIT
= "x86_irq_vectors_deferred_error_apic_exit"; //$NON-NLS-1$
51 private static final String X86_IRQ_VECTORS_THERMAL_APIC_ENTRY
= "x86_irq_vectors_thermal_apic_entry"; //$NON-NLS-1$
52 private static final String X86_IRQ_VECTORS_THERMAL_APIC_EXIT
= "x86_irq_vectors_thermal_apic_exit"; //$NON-NLS-1$
54 private static final Collection
<String
> EVENTS_NETWORK_RECEIVE
= Collections
.singleton("net_if_receive_skb"); //$NON-NLS-1$
56 private static final Collection
<String
> KVM_ENTRY_EVENTS
= Collections
.singleton("kvm_x86_entry"); //$NON-NLS-1$
57 private static final Collection
<String
> KVM_EXIT_EVENTS
= Collections
.singleton("kvm_x86_exit"); //$NON-NLS-1$
59 private static final Collection
<String
> IPI_ENTRY_SET
= ImmutableSet
.of(
60 X86_IRQ_VECTORS_LOCAL_TIMER_ENTRY
,
61 X86_IRQ_VECTORS_RESCHEDULE_ENTRY
,
62 X86_IRQ_VECTORS_SPURIOUS_ENTRY
,
63 X86_IRQ_VECTORS_ERROR_APIC_ENTRY
,
64 X86_IRQ_VECTORS_IPI_ENTRY
,
65 X86_IRQ_VECTORS_IRQ_WORK_ENTRY
,
66 X86_IRQ_VECTORS_CALL_FUNCTION_ENTRY
,
67 X86_IRQ_VECTORS_CALL_FUNCTION_SINGLE_ENTRY
,
68 X86_IRQ_VECTORS_THRESHOLD_APIC_ENTRY
,
69 X86_IRQ_VECTORS_DEFERRED_ERROR_APIC_ENTRY
,
70 X86_IRQ_VECTORS_THERMAL_APIC_ENTRY
);
72 private static final Collection
<String
> IPI_EXIT_SET
= ImmutableSet
.of(
73 X86_IRQ_VECTORS_LOCAL_TIMER_EXIT
,
74 X86_IRQ_VECTORS_RESCHEDULE_EXIT
,
75 X86_IRQ_VECTORS_SPURIOUS_EXIT
,
76 X86_IRQ_VECTORS_ERROR_APIC_EXIT
,
77 X86_IRQ_VECTORS_IPI_EXIT
,
78 X86_IRQ_VECTORS_IRQ_WORK_EXIT
,
79 X86_IRQ_VECTORS_CALL_FUNCTION_EXIT
,
80 X86_IRQ_VECTORS_CALL_FUNCTION_SINGLE_EXIT
,
81 X86_IRQ_VECTORS_THRESHOLD_APIC_EXIT
,
82 X86_IRQ_VECTORS_DEFERRED_ERROR_APIC_EXIT
,
83 X86_IRQ_VECTORS_THERMAL_APIC_EXIT
);
88 protected Lttng27EventLayout() {}
90 private static final Lttng27EventLayout INSTANCE
= new Lttng27EventLayout();
92 public static Lttng27EventLayout
getInstance() {
96 // ------------------------------------------------------------------------
97 // New event definition in LTTng 2.7
98 // ------------------------------------------------------------------------
101 public String
eventHRTimerStart() {
102 return "timer_hrtimer_start"; //$NON-NLS-1$
106 public String
eventHRTimerCancel() {
107 return "timer_hrtimer_cancel"; //$NON-NLS-1$
111 public String
eventHRTimerExpireEntry() {
112 return "timer_hrtimer_expire_entry"; //$NON-NLS-1$
116 public String
eventHRTimerExpireExit() {
117 return "timer_hrtimer_expire_exit"; //$NON-NLS-1$
121 public String
eventSoftIrqRaise() {
122 return "irq_softirq_raise"; //$NON-NLS-1$
126 public String
eventSoftIrqEntry() {
127 return "irq_softirq_entry"; //$NON-NLS-1$
131 public String
eventSoftIrqExit() {
132 return "irq_softirq_exit"; //$NON-NLS-1$
136 public String
eventKmemPageAlloc() {
137 return "kmem_mm_page_alloc"; //$NON-NLS-1$
141 public String
eventKmemPageFree() {
142 return "kmem_mm_page_free"; //$NON-NLS-1$
145 public String
x86IrqVectorsLocalTimerEntry() {
146 return X86_IRQ_VECTORS_LOCAL_TIMER_ENTRY
;
149 public String
x86IrqVectorsLocalTimerExit() {
150 return X86_IRQ_VECTORS_LOCAL_TIMER_EXIT
;
153 public String
x86IrqVectorsRescheduleEntry() {
154 return X86_IRQ_VECTORS_RESCHEDULE_ENTRY
;
157 public String
x86IrqVectorsRescheduleExit() {
158 return X86_IRQ_VECTORS_RESCHEDULE_EXIT
;
161 public String
x86IrqVectorsSpuriousApicEntry() {
162 return X86_IRQ_VECTORS_SPURIOUS_ENTRY
;
165 public String
x86IrqVectorsSpuriousApicExit() {
166 return X86_IRQ_VECTORS_SPURIOUS_EXIT
;
169 public String
x86IrqVectorsErrorApicEntry() {
170 return X86_IRQ_VECTORS_ERROR_APIC_ENTRY
;
173 public String
x86IrqVectorsErrorApicExit() {
174 return X86_IRQ_VECTORS_ERROR_APIC_EXIT
;
177 public String
x86IrqVectorsIpiEntry() {
178 return X86_IRQ_VECTORS_IPI_ENTRY
;
181 public String
x86IrqVectorsIpiExit() {
182 return X86_IRQ_VECTORS_IPI_EXIT
;
185 public String
x86IrqVectorsIrqWorkEntry() {
186 return X86_IRQ_VECTORS_IRQ_WORK_ENTRY
;
189 public String
x86IrqVectorsIrqWorkExit() {
190 return X86_IRQ_VECTORS_IRQ_WORK_EXIT
;
193 public String
x86IrqVectorsCallFunctionEntry() {
194 return X86_IRQ_VECTORS_CALL_FUNCTION_ENTRY
;
197 public String
x86IrqVectorsCallFunctionExit() {
198 return X86_IRQ_VECTORS_CALL_FUNCTION_EXIT
;
201 public String
x86IrqVectorsCallFunctionSingleEntry() {
202 return X86_IRQ_VECTORS_CALL_FUNCTION_SINGLE_ENTRY
;
205 public String
x86IrqVectorsCallFunctionSingleExit() {
206 return X86_IRQ_VECTORS_CALL_FUNCTION_SINGLE_EXIT
;
209 public String
x86IrqVectorsThresholdApicEntry() {
210 return X86_IRQ_VECTORS_THRESHOLD_APIC_ENTRY
;
213 public String
x86IrqVectorsThresholdApicExit() {
214 return X86_IRQ_VECTORS_THRESHOLD_APIC_EXIT
;
217 public String
x86IrqVectorsDeferredErrorApicEntry() {
218 return X86_IRQ_VECTORS_DEFERRED_ERROR_APIC_ENTRY
;
221 public String
x86IrqVectorsDeferredErrorApicExit() {
222 return X86_IRQ_VECTORS_DEFERRED_ERROR_APIC_EXIT
;
225 public String
x86IrqVectorsThermalApicEntry() {
226 return X86_IRQ_VECTORS_THERMAL_APIC_ENTRY
;
229 public String
x86IrqVectorsThermalApicExit() {
230 return X86_IRQ_VECTORS_THERMAL_APIC_EXIT
;
234 public @NonNull Collection
<@NonNull String
> eventsKVMEntry() {
235 return KVM_ENTRY_EVENTS
;
239 public @NonNull Collection
<@NonNull String
> eventsKVMExit() {
240 return KVM_EXIT_EVENTS
;
244 public @NonNull Collection
<@NonNull String
> getIPIIrqVectorsEntries() {
245 return IPI_ENTRY_SET
;
249 public @NonNull Collection
<@NonNull String
> getIPIIrqVectorsExits() {
253 // ------------------------------------------------------------------------
254 // New field definitions in LTTng 2.7
255 // ------------------------------------------------------------------------
257 public String
fieldParentNSInum() {
258 return "parent_ns_inum"; //$NON-NLS-1$
261 public String
fieldChildNSInum() {
262 return "child_ns_inum"; //$NON-NLS-1$
265 public String
fieldChildVTids() {
266 return "vtids"; //$NON-NLS-1$
269 public String
fieldNSInum() {
270 return "ns_inum"; //$NON-NLS-1$
273 public String
fieldVTid() {
274 return "vtid"; //$NON-NLS-1$
277 public String
fieldPPid() {
278 return "ppid"; //$NON-NLS-1$
281 public String
fieldNSLevel() {
282 return "ns_level"; //$NON-NLS-1$
286 public Collection
<String
> eventsNetworkReceive() {
287 return EVENTS_NETWORK_RECEIVE
;