1 /*******************************************************************************
2 * Copyright (c) 2015 Ericsson
4 * All rights reserved. This program and the accompanying materials are made
5 * 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 * Bernd Hufmann - Initial API and implementation
11 *******************************************************************************/
12 package org
.eclipse
.tracecompass
.internal
.analysis
.os
.linux
.ui
.views
.latency
.statistics
;
14 import static org
.eclipse
.tracecompass
.common
.core
.NonNullUtils
.checkNotNull
;
16 import java
.util
.List
;
18 import java
.util
.Map
.Entry
;
20 import org
.eclipse
.jdt
.annotation
.Nullable
;
21 import org
.eclipse
.swt
.widgets
.Composite
;
22 import org
.eclipse
.tracecompass
.internal
.analysis
.os
.linux
.core
.latency
.statistics
.SystemCallLatencyStatisticsAnalysisModule
;
23 import org
.eclipse
.tracecompass
.internal
.analysis
.timing
.core
.segmentstore
.statistics
.SegmentStoreStatistics
;
24 import org
.eclipse
.tracecompass
.internal
.analysis
.timing
.ui
.views
.segmentstore
.statistics
.AbstractSegmentStoreStatisticsViewer
;
25 import org
.eclipse
.tracecompass
.tmf
.core
.analysis
.TmfAbstractAnalysisModule
;
26 import org
.eclipse
.tracecompass
.tmf
.ui
.viewers
.tree
.ITmfTreeViewerEntry
;
27 import org
.eclipse
.tracecompass
.tmf
.ui
.viewers
.tree
.TmfTreeViewerEntry
;
30 * A tree viewer implementation for displaying latency statistics
32 * @author Bernd Hufmann
35 public class SystemCallLatencyStatisticsViewer
extends AbstractSegmentStoreStatisticsViewer
{
37 private static final String SYSCALL_LEVEL
= checkNotNull(Messages
.LatencyStatistics_SyscallLevelName
);
43 * the parent composite
45 public SystemCallLatencyStatisticsViewer(Composite parent
) {
50 * Gets the statistics analysis module
52 * @return the statistics analysis module
55 protected @Nullable TmfAbstractAnalysisModule
createStatisticsAnalysiModule() {
56 SystemCallLatencyStatisticsAnalysisModule module
= new SystemCallLatencyStatisticsAnalysisModule();
61 protected @Nullable ITmfTreeViewerEntry
updateElements(long start
, long end
, boolean isSelection
) {
62 if (isSelection
|| (start
== end
)) {
66 TmfAbstractAnalysisModule analysisModule
= getStatisticsAnalysisModule();
68 if (getTrace() == null || !(analysisModule
instanceof SystemCallLatencyStatisticsAnalysisModule
)) {
72 SystemCallLatencyStatisticsAnalysisModule module
= (SystemCallLatencyStatisticsAnalysisModule
) analysisModule
;
74 module
.waitForCompletion();
76 TmfTreeViewerEntry root
= new TmfTreeViewerEntry(""); //$NON-NLS-1$
77 final SegmentStoreStatistics entry
= module
.getTotalStats();
80 List
<ITmfTreeViewerEntry
> entryList
= root
.getChildren();
82 TmfTreeViewerEntry child
= new SegmentStoreStatisticsEntry(checkNotNull(Messages
.LatencyStatistics_TotalLabel
), entry
);
84 HiddenTreeViewerEntry syscalls
= new HiddenTreeViewerEntry(SYSCALL_LEVEL
);
85 child
.addChild(syscalls
);
87 Map
<String
, SegmentStoreStatistics
> perSyscallStats
= module
.getPerSegmentTypeStats();
88 if (perSyscallStats
!= null) {
89 for (Entry
<String
, SegmentStoreStatistics
> statsEntry
: perSyscallStats
.entrySet()) {
90 syscalls
.addChild(new SegmentStoreStatisticsEntry(statsEntry
.getKey(), statsEntry
.getValue()));