tmf/ust: deprecate AbstractCallStackAnalysis and move the UST module to core
[deliverable/tracecompass.git] / lttng / org.eclipse.tracecompass.lttng2.ust.core / src / org / eclipse / tracecompass / internal / lttng2 / ust / core / callstack / LttngUstCallStackAnalysisRequirement.java
1 /*******************************************************************************
2 * Copyright (c) 2016 Ericsson
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 package org.eclipse.tracecompass.internal.lttng2.ust.core.callstack;
10
11 import static org.eclipse.tracecompass.common.core.NonNullUtils.nullToEmptyString;
12
13 import java.util.Collection;
14 import java.util.Set;
15
16 import org.eclipse.jdt.annotation.NonNull;
17 import org.eclipse.jdt.annotation.NonNullByDefault;
18 import org.eclipse.tracecompass.lttng2.ust.core.trace.layout.ILttngUstEventLayout;
19 import org.eclipse.tracecompass.tmf.core.analysis.requirements.TmfAbstractAnalysisRequirement;
20 import org.eclipse.tracecompass.tmf.core.analysis.requirements.TmfAnalysisEventFieldRequirement;
21 import org.eclipse.tracecompass.tmf.core.analysis.requirements.TmfCompositeAnalysisRequirement;
22
23 import com.google.common.collect.ImmutableSet;
24
25 /**
26 * Analysis requirement implementation for LTTng Call Stack Analysis.
27 *
28 * @author Bernd Hufmann
29 *
30 */
31 @NonNullByDefault
32 public class LttngUstCallStackAnalysisRequirement extends TmfCompositeAnalysisRequirement {
33
34 /**
35 * Constructor
36 *
37 * @param layout
38 * The event layout (non-null)
39 */
40 public LttngUstCallStackAnalysisRequirement(ILttngUstEventLayout layout) {
41 super(getSubRequirements(layout), PriorityLevel.AT_LEAST_ONE);
42
43 addInformation(nullToEmptyString(Messages.LttnUstCallStackAnalysisModule_EventsLoadingInformation));
44 }
45
46 private static Collection<TmfAbstractAnalysisRequirement> getSubRequirements(ILttngUstEventLayout layout) {
47 Set<@NonNull String> requiredEventsFields = ImmutableSet.of(
48 layout.contextProcname(),
49 layout.contextVtid());
50
51 // Requirement for the cyg_profile events
52 TmfAnalysisEventFieldRequirement entryReq = new TmfAnalysisEventFieldRequirement(
53 layout.eventCygProfileFuncEntry(),
54 requiredEventsFields,
55 PriorityLevel.MANDATORY);
56
57 TmfAbstractAnalysisRequirement exitReq = new TmfAnalysisEventFieldRequirement(
58 layout.eventCygProfileFuncExit(),
59 requiredEventsFields,
60 PriorityLevel.MANDATORY);
61
62 TmfAbstractAnalysisRequirement cygProfile = new TmfCompositeAnalysisRequirement(ImmutableSet.of(entryReq, exitReq), PriorityLevel.MANDATORY);
63
64 // Requirement for the cyg_profile_fast events
65 entryReq = new TmfAnalysisEventFieldRequirement(
66 layout.eventCygProfileFastFuncEntry(),
67 requiredEventsFields,
68 PriorityLevel.MANDATORY);
69
70 exitReq = new TmfAnalysisEventFieldRequirement(
71 layout.eventCygProfileFastFuncExit(),
72 requiredEventsFields,
73 PriorityLevel.MANDATORY);
74 TmfAbstractAnalysisRequirement cygProfileFast = new TmfCompositeAnalysisRequirement(ImmutableSet.of(entryReq, exitReq), PriorityLevel.MANDATORY);
75
76 return ImmutableSet.of(cygProfile, cygProfileFast);
77 }
78
79 }
This page took 0.034111 seconds and 5 git commands to generate.