From: Alexandre Montplaisir Date: Mon, 25 Jan 2016 20:26:04 +0000 (-0500) Subject: lttng: Handle compat_syscall_exit_* events correctly X-Git-Url: http://git.efficios.com/?a=commitdiff_plain;h=01f2a5074ceebbc1ceaf2643c1aff5168a61ed4b;p=deliverable%2Ftracecompass.git lttng: Handle compat_syscall_exit_* events correctly The compatibility layer syscall entry events were handled correctly, but not the corresponding exit ones. Bug: 486351 Change-Id: I2709a406eec805a8410651972fac618dcaf27dc4 Signed-off-by: Alexandre Montplaisir Reviewed-on: https://git.eclipse.org/r/65134 Reviewed-by: Matthew Khouzam Reviewed-by: Hudson CI --- diff --git a/analysis/org.eclipse.tracecompass.analysis.os.linux.core/src/org/eclipse/tracecompass/analysis/os/linux/core/trace/DefaultEventLayout.java b/analysis/org.eclipse.tracecompass.analysis.os.linux.core/src/org/eclipse/tracecompass/analysis/os/linux/core/trace/DefaultEventLayout.java index 7a59d87e07..87da71bbfd 100644 --- a/analysis/org.eclipse.tracecompass.analysis.os.linux.core/src/org/eclipse/tracecompass/analysis/os/linux/core/trace/DefaultEventLayout.java +++ b/analysis/org.eclipse.tracecompass.analysis.os.linux.core/src/org/eclipse/tracecompass/analysis/os/linux/core/trace/DefaultEventLayout.java @@ -181,6 +181,12 @@ public class DefaultEventLayout implements IKernelAnalysisEventLayout{ return SYSCALL_EXIT_PREFIX; } + /** @since 2.0 */ + @Override + public String eventCompatSyscallExitPrefix() { + return SYSCALL_EXIT_PREFIX; + } + // ------------------------------------------------------------------------ // Event field names // ------------------------------------------------------------------------ diff --git a/analysis/org.eclipse.tracecompass.analysis.os.linux.core/src/org/eclipse/tracecompass/analysis/os/linux/core/trace/IKernelAnalysisEventLayout.java b/analysis/org.eclipse.tracecompass.analysis.os.linux.core/src/org/eclipse/tracecompass/analysis/os/linux/core/trace/IKernelAnalysisEventLayout.java index 0d7e59b854..75e43fa7c8 100644 --- a/analysis/org.eclipse.tracecompass.analysis.os.linux.core/src/org/eclipse/tracecompass/analysis/os/linux/core/trace/IKernelAnalysisEventLayout.java +++ b/analysis/org.eclipse.tracecompass.analysis.os.linux.core/src/org/eclipse/tracecompass/analysis/os/linux/core/trace/IKernelAnalysisEventLayout.java @@ -184,6 +184,15 @@ public interface IKernelAnalysisEventLayout { */ String eventSyscallExitPrefix(); + /** + * System call compatibility layer exit prefix, something like + * "compat_syscall_exit". + * + * @return the event name + * @since 2.0 + */ + String eventCompatSyscallExitPrefix(); + /** * The scheduler replaced the current process image with a new one. The * process should also be renamed at this point. In windows, this is part of diff --git a/analysis/org.eclipse.tracecompass.analysis.os.linux.core/src/org/eclipse/tracecompass/internal/analysis/os/linux/core/kernel/KernelStateProvider.java b/analysis/org.eclipse.tracecompass.analysis.os.linux.core/src/org/eclipse/tracecompass/internal/analysis/os/linux/core/kernel/KernelStateProvider.java index 9474d0a2db..279e0db21c 100644 --- a/analysis/org.eclipse.tracecompass.analysis.os.linux.core/src/org/eclipse/tracecompass/internal/analysis/os/linux/core/kernel/KernelStateProvider.java +++ b/analysis/org.eclipse.tracecompass.analysis.os.linux.core/src/org/eclipse/tracecompass/internal/analysis/os/linux/core/kernel/KernelStateProvider.java @@ -61,7 +61,7 @@ public class KernelStateProvider extends AbstractTmfStateProvider { * Version number of this state provider. Please bump this if you modify the * contents of the generated state history in some way. */ - private static final int VERSION = 10; + private static final int VERSION = 11; // ------------------------------------------------------------------------ // Fields @@ -195,7 +195,8 @@ public class KernelStateProvider extends AbstractTmfStateProvider { } private boolean isSyscallExit(String eventName) { - return (eventName.startsWith(fLayout.eventSyscallExitPrefix())); + return (eventName.startsWith(fLayout.eventSyscallExitPrefix()) || + eventName.startsWith(fLayout.eventCompatSyscallExitPrefix())); } } diff --git a/lttng/org.eclipse.tracecompass.lttng2.kernel.core/src/org/eclipse/tracecompass/internal/lttng2/kernel/core/trace/layout/Lttng26EventLayout.java b/lttng/org.eclipse.tracecompass.lttng2.kernel.core/src/org/eclipse/tracecompass/internal/lttng2/kernel/core/trace/layout/Lttng26EventLayout.java index 34284ceda1..606699a8f6 100644 --- a/lttng/org.eclipse.tracecompass.lttng2.kernel.core/src/org/eclipse/tracecompass/internal/lttng2/kernel/core/trace/layout/Lttng26EventLayout.java +++ b/lttng/org.eclipse.tracecompass.lttng2.kernel.core/src/org/eclipse/tracecompass/internal/lttng2/kernel/core/trace/layout/Lttng26EventLayout.java @@ -49,4 +49,9 @@ public class Lttng26EventLayout extends LttngEventLayout { public String eventSyscallExitPrefix() { return "syscall_exit_"; //$NON-NLS-1$ } + + @Override + public String eventCompatSyscallExitPrefix() { + return "compat_syscall_exit_"; //$NON-NLS-1$ + } } diff --git a/lttng/org.eclipse.tracecompass.lttng2.kernel.core/src/org/eclipse/tracecompass/internal/lttng2/kernel/core/trace/layout/LttngEventLayout.java b/lttng/org.eclipse.tracecompass.lttng2.kernel.core/src/org/eclipse/tracecompass/internal/lttng2/kernel/core/trace/layout/LttngEventLayout.java index d0454610b1..80dcf265e9 100644 --- a/lttng/org.eclipse.tracecompass.lttng2.kernel.core/src/org/eclipse/tracecompass/internal/lttng2/kernel/core/trace/layout/LttngEventLayout.java +++ b/lttng/org.eclipse.tracecompass.lttng2.kernel.core/src/org/eclipse/tracecompass/internal/lttng2/kernel/core/trace/layout/LttngEventLayout.java @@ -185,6 +185,15 @@ public class LttngEventLayout implements IKernelAnalysisEventLayout { return SYSCALL_EXIT_PREFIX; } + @Override + public String eventCompatSyscallExitPrefix() { + /* + * In LTTng < 2.6, the same generic event name is used for both standard + * and compat syscalls. + */ + return SYSCALL_EXIT_PREFIX; + } + // ------------------------------------------------------------------------ // Event field names // ------------------------------------------------------------------------ diff --git a/lttng/org.eclipse.tracecompass.lttng2.kernel.core/src/org/eclipse/tracecompass/internal/lttng2/kernel/core/trace/layout/PerfEventLayout.java b/lttng/org.eclipse.tracecompass.lttng2.kernel.core/src/org/eclipse/tracecompass/internal/lttng2/kernel/core/trace/layout/PerfEventLayout.java index ad164dc28d..1b927c4c82 100644 --- a/lttng/org.eclipse.tracecompass.lttng2.kernel.core/src/org/eclipse/tracecompass/internal/lttng2/kernel/core/trace/layout/PerfEventLayout.java +++ b/lttng/org.eclipse.tracecompass.lttng2.kernel.core/src/org/eclipse/tracecompass/internal/lttng2/kernel/core/trace/layout/PerfEventLayout.java @@ -124,6 +124,11 @@ public class PerfEventLayout implements IKernelAnalysisEventLayout { return "raw_syscalls:sys_exit"; //$NON-NLS-1$ } + @Override + public String eventCompatSyscallExitPrefix() { + return eventSyscallExitPrefix(); + } + @Override public String eventSchedProcessExec() { return "sched:sched_process_exec"; //$NON-NLS-1$