import org.eclipse.jdt.annotation.NonNull;
+import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableSet;
/**
return "ns_level"; //$NON-NLS-1$
}
+ @Override
+ public @NonNull Collection<@NonNull String> eventNetworkReceive() {
+ return ImmutableList.of("netif_receive_skb", "net_if_receive_skb"); //$NON-NLS-1$ //$NON-NLS-2$
+ }
+
}
--- /dev/null
+/*******************************************************************************
+ * Copyright (c) 2016 École Polytechnique de Montréal
+ *
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v1.0 which
+ * accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *******************************************************************************/
+
+package org.eclipse.tracecompass.internal.lttng2.kernel.core.trace.layout;
+
+import org.eclipse.jdt.annotation.NonNull;
+import org.eclipse.tracecompass.tmf.ctf.core.event.CtfTmfEventField;
+
+/**
+ * This file defines all the known event and field names for LTTng kernel
+ * traces, for versions of lttng-modules 2.9 and above.
+ *
+ * @author Geneviève Bastien
+ */
+public class Lttng29EventLayout extends Lttng28EventLayout {
+
+ private static final String[] TCP_SEQ_FIELD = { "network_header", CtfTmfEventField.FIELD_VARIANT_SELECTED, "transport_header", "tcp", "seq" }; //$NON-NLS-1$//$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
+ private static final String[] TCP_ACK_FIELD = { "network_header", CtfTmfEventField.FIELD_VARIANT_SELECTED, "transport_header", "tcp", "ack_seq" }; //$NON-NLS-1$//$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
+ private static final String[] TCP_FLAGS_FIELD = { "network_header", CtfTmfEventField.FIELD_VARIANT_SELECTED, "transport_header", "tcp", "flags" }; //$NON-NLS-1$//$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
+
+ /**
+ * Constructor
+ */
+ protected Lttng29EventLayout() {
+ }
+
+ private static final Lttng29EventLayout INSTANCE = new Lttng29EventLayout();
+
+ public static Lttng29EventLayout getInstance() {
+ return INSTANCE;
+ }
+
+ @Override
+ public String @NonNull [] fieldPathTcpSeq() {
+ return TCP_SEQ_FIELD;
+ }
+
+ @Override
+ public String @NonNull [] fieldPathTcpAckSeq() {
+ return TCP_ACK_FIELD;
+ }
+
+ @Override
+ public String @NonNull [] fieldPathTcpFlags() {
+ return TCP_FLAGS_FIELD;
+ }
+
+}
package org.eclipse.tracecompass.internal.lttng2.kernel.core.trace.layout;
import java.util.Collection;
+import java.util.Collections;
import org.eclipse.jdt.annotation.NonNull;
import org.eclipse.tracecompass.analysis.os.linux.core.trace.IKernelAnalysisEventLayout;
private static final String RQ_SECTOR= "rq_sector";
private static final String NEXTRQ_SECTOR= "nextrq_sector";
+ /* Network events and field names */
+ private static final String EVENT_NETWORK_SEND = "net_dev_queue";
+ private static final String EVENT_NETWORK_RECEIVE = "netif_receive_skb";
+ private static final String[] TCP_SEQ_FIELD = { "transport_fields", "thtype_tcp", "seq" };
+ private static final String[] TCP_ACK_FIELD = { "transport_fields", "thtype_tcp", "ack_seq" };
+ private static final String[] TCP_FLAGS_FIELD = { "transport_fields", "thtype_tcp", "flags" };
+
/** All instances are the same. Only provide a static instance getter */
protected LttngEventLayout() {
}
return DISKNAME;
}
+ @Override
+ public @NonNull String eventNetworkSend() {
+ return EVENT_NETWORK_SEND;
+ }
+
+ @Override
+ public @NonNull Collection<@NonNull String> eventNetworkReceive() {
+ return Collections.singleton(EVENT_NETWORK_RECEIVE);
+ }
+
+ @Override
+ public String @NonNull [] fieldPathTcpSeq() {
+ return TCP_SEQ_FIELD;
+ }
+
+ @Override
+ public String @NonNull [] fieldPathTcpAckSeq() {
+ return TCP_ACK_FIELD;
+ }
+
+ @Override
+ public String @NonNull [] fieldPathTcpFlags() {
+ return TCP_FLAGS_FIELD;
+ }
+
}
import org.eclipse.tracecompass.internal.lttng2.kernel.core.trace.layout.Lttng26EventLayout;
import org.eclipse.tracecompass.internal.lttng2.kernel.core.trace.layout.Lttng27EventLayout;
import org.eclipse.tracecompass.internal.lttng2.kernel.core.trace.layout.Lttng28EventLayout;
+import org.eclipse.tracecompass.internal.lttng2.kernel.core.trace.layout.Lttng29EventLayout;
import org.eclipse.tracecompass.internal.lttng2.kernel.core.trace.layout.LttngEventLayout;
import org.eclipse.tracecompass.internal.lttng2.kernel.core.trace.layout.PerfEventLayout;
import org.eclipse.tracecompass.tmf.core.event.ITmfEvent;
LTTNG26(Lttng26EventLayout.getInstance()),
LTTNG27(Lttng27EventLayout.getInstance()),
LTTNG28(Lttng28EventLayout.getInstance()),
+ LTTNG29(Lttng29EventLayout.getInstance()),
PERF(PerfEventLayout.getInstance());
private final @NonNull IKernelAnalysisEventLayout fLayout;
} else if ("lttng-modules".equals(tracerName)) { //$NON-NLS-1$
/* Look for specific versions of LTTng */
if (tracerMajor >= 2) {
- if (tracerMinor >= 8) {
+ if (tracerMinor >= 9) {
+ return OriginTracer.LTTNG29;
+ } else if (tracerMinor >= 8) {
return OriginTracer.LTTNG28;
} else if (tracerMinor >= 7) {
return OriginTracer.LTTNG27;