1 /*******************************************************************************
2 * Copyright (c) 2012 Ericsson
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 * Patrick Tasse - Initial API and implementation
11 *******************************************************************************/
13 package org
.eclipse
.linuxtools
.internal
.lttng2
.kernel
.ui
.views
.controlflow
;
15 import java
.util
.ArrayList
;
16 import java
.util
.Iterator
;
17 import java
.util
.List
;
19 import org
.eclipse
.linuxtools
.internal
.lttng2
.kernel
.ui
.views
.common
.EventIterator
;
20 import org
.eclipse
.linuxtools
.lttng2
.kernel
.core
.trace
.CtfKernelTrace
;
21 import org
.eclipse
.linuxtools
.tmf
.ui
.widgets
.timegraph
.model
.ITimeEvent
;
22 import org
.eclipse
.linuxtools
.tmf
.ui
.widgets
.timegraph
.model
.ITimeGraphEntry
;
25 * An entry in the Control Flow view
27 public class ControlFlowEntry
implements ITimeGraphEntry
{
28 private final int fThreadQuark
;
29 private final CtfKernelTrace fTrace
;
30 private ControlFlowEntry fParent
= null;
31 private final ArrayList
<ControlFlowEntry
> fChildren
= new ArrayList
<ControlFlowEntry
>();
32 private final String fName
;
33 private final int fThreadId
;
34 private final int fParentThreadId
;
35 private long fBirthTime
= -1;
36 private long fStartTime
= -1;
37 private long fEndTime
= -1;
38 private List
<ITimeEvent
> fEventList
= new ArrayList
<ITimeEvent
>();
39 private List
<ITimeEvent
> fZoomedEventList
= null;
45 * The attribute quark matching the thread
47 * The trace on which we are working
49 * The exec_name of this entry
51 * The TID of the thread
52 * @param parentThreadId
53 * the Parent_TID of this thread
55 * The birth time of this entry (this allows separating different
56 * process that could have the same TID)
58 * The start time of this process's lifetime
60 * The end time of this process
62 public ControlFlowEntry(int threadQuark
, CtfKernelTrace trace
, String execName
, int threadId
, int parentThreadId
, long birthTime
, long startTime
, long endTime
) {
63 fThreadQuark
= threadQuark
;
67 fParentThreadId
= parentThreadId
;
68 fBirthTime
= birthTime
;
69 fStartTime
= startTime
;
74 public ITimeGraphEntry
getParent() {
79 public boolean hasChildren() {
80 return fChildren
!= null && fChildren
.size() > 0;
84 public List
<ControlFlowEntry
> getChildren() {
89 public String
getName() {
94 public long getStartTime() {
99 public long getEndTime() {
104 public boolean hasTimeEvents() {
109 public Iterator
<ITimeEvent
> getTimeEventsIterator() {
110 return new EventIterator(fEventList
, fZoomedEventList
);
114 public Iterator
<ITimeEvent
> getTimeEventsIterator(long startTime
, long stopTime
, long visibleDuration
) {
115 return new EventIterator(fEventList
, fZoomedEventList
, startTime
, stopTime
);
119 * Get the quark of the attribute matching this thread's TID
123 public int getThreadQuark() {
128 * Get the CTF trace object
132 public CtfKernelTrace
getTrace() {
137 * Get this entry's thread ID
141 public int getThreadId() {
146 * Get this thread's parent TID
150 public int getParentThreadId() {
151 return fParentThreadId
;
155 * Get the birth time of this entry/process
157 * @return The birth time
159 public long getBirthTime() {
164 * Add an event to this process's timeline
169 public void addEvent(ITimeEvent event
) {
170 long start
= event
.getTime();
171 long end
= start
+ event
.getDuration();
172 synchronized (fEventList
) {
173 fEventList
.add(event
);
174 if (fStartTime
== -1 || start
< fStartTime
) {
177 if (fEndTime
== -1 || end
> fEndTime
) {
184 * Set the general event list of this entry
187 * The list of time events
189 public void setEventList(List
<ITimeEvent
> eventList
) {
190 fEventList
= eventList
;
194 * Set the zoomed event list of this entry
197 * The list of time events
199 public void setZoomedEventList(List
<ITimeEvent
> eventList
) {
200 fZoomedEventList
= eventList
;
204 * Add a child entry to this one (to show relationships between processes as
210 public void addChild(ControlFlowEntry child
) {
211 child
.fParent
= this;
212 fChildren
.add(child
);
This page took 0.036115 seconds and 6 git commands to generate.