X-Git-Url: http://drtracing.org/?a=blobdiff_plain;f=org.eclipse.linuxtools.lttng2.kernel.ui%2Fsrc%2Forg%2Feclipse%2Flinuxtools%2Finternal%2Flttng2%2Fkernel%2Fui%2Fviews%2Fcontrolflow%2FControlFlowEntry.java;h=598deee1c145dcbb75b4fec8f1962dcc8f791b68;hb=bcec0116448fab84a99a822ea9912cabb5c983f4;hp=1597439619ea6aad367dd21b2d6864793ec85ae2;hpb=140ad82d78490fdabcebedca1a7563bd7b4302d3;p=deliverable%2Ftracecompass.git diff --git a/org.eclipse.linuxtools.lttng2.kernel.ui/src/org/eclipse/linuxtools/internal/lttng2/kernel/ui/views/controlflow/ControlFlowEntry.java b/org.eclipse.linuxtools.lttng2.kernel.ui/src/org/eclipse/linuxtools/internal/lttng2/kernel/ui/views/controlflow/ControlFlowEntry.java index 1597439619..598deee1c1 100644 --- a/org.eclipse.linuxtools.lttng2.kernel.ui/src/org/eclipse/linuxtools/internal/lttng2/kernel/ui/views/controlflow/ControlFlowEntry.java +++ b/org.eclipse.linuxtools.lttng2.kernel.ui/src/org/eclipse/linuxtools/internal/lttng2/kernel/ui/views/controlflow/ControlFlowEntry.java @@ -1,144 +1,95 @@ -/******************************************************************************* - * Copyright (c) 2012 Ericsson - * - * 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 - * - * Contributors: - * Patrick Tasse - Initial API and implementation - *******************************************************************************/ - -package org.eclipse.linuxtools.internal.lttng2.kernel.ui.views.controlflow; - -import java.util.ArrayList; -import java.util.Iterator; -import java.util.List; - -import org.eclipse.linuxtools.internal.lttng2.kernel.ui.views.common.EventIterator; -import org.eclipse.linuxtools.lttng2.kernel.core.trace.CtfKernelTrace; -import org.eclipse.linuxtools.tmf.ui.widgets.timegraph.model.ITimeEvent; -import org.eclipse.linuxtools.tmf.ui.widgets.timegraph.model.ITimeGraphEntry; - -public class ControlFlowEntry implements ITimeGraphEntry, Comparable { - private int fThreadQuark; - private CtfKernelTrace fTrace; - private ControlFlowEntry fParent = null; - private ArrayList fChildren = new ArrayList(); - private String fName; - private int fThreadId; - private int fPpid; - private long fBirthTime = -1; - private long fStartTime = -1; - private long fEndTime = -1; - private List fEventList = new ArrayList(); - private List fZoomedEventList = null; - - public ControlFlowEntry(int threadQuark, CtfKernelTrace trace, String execName, int threadId, int ppid, long birthTime, long startTime, long endTime) { - fThreadQuark = threadQuark; - fTrace = trace; - fName = execName; - fThreadId = threadId; - fPpid = ppid; - fBirthTime = birthTime; - fStartTime = startTime; - fEndTime = endTime; - } - - @Override - public ITimeGraphEntry getParent() { - return fParent; - } - - @Override - public boolean hasChildren() { - return fChildren != null && fChildren.size() > 0; - } - - @Override - public ControlFlowEntry[] getChildren() { - return fChildren.toArray(new ControlFlowEntry[0]); - } - - @Override - public String getName() { - return fName; - } - - @Override - public long getStartTime() { - return fStartTime; - } - - @Override - public long getEndTime() { - return fEndTime; - } - - @Override - public Iterator getTimeEventsIterator() { - return new EventIterator(fEventList, fZoomedEventList); - } - - @Override - public Iterator getTimeEventsIterator(long startTime, long stopTime, long visibleDuration) { - return new EventIterator(fEventList, fZoomedEventList, startTime, stopTime); - } - - @Override - public int compareTo(ControlFlowEntry other) { - int result = this.fThreadId < other.fThreadId ? -1 : this.fThreadId > other.fThreadId ? 1 : 0; - if (result == 0) { - result = this.fStartTime < other.fStartTime ? -1 : this.fStartTime > other.fStartTime ? 1 : 0; - } - return result; - } - - public int getThreadQuark() { - return fThreadQuark; - } - - public CtfKernelTrace getTrace() { - return fTrace; - } - - public int getThreadId() { - return fThreadId; - } - - public int getPPID() { - return fPpid; - } - - public long getBirthTime() { - return fBirthTime; - } - - public void addEvent(ITimeEvent event) { - long start = event.getTime(); - long end = start + event.getDuration(); - synchronized (fEventList) { - fEventList.add(event); - if (fStartTime == -1 || start < fStartTime) { - fStartTime = start; - } - if (fEndTime == -1 || end > fEndTime) { - fEndTime = end; - } - } - } - - public void setEventList(List eventList) { - fEventList = eventList; - } - - public void setZoomedEventList(List eventList) { - fZoomedEventList = eventList; - } - - public void addChild(ControlFlowEntry child) { - child.fParent = this; - fChildren.add(child); - } -} +/******************************************************************************* + * Copyright (c) 2012, 2014 Ericsson, É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 + * + * Contributors: + * Patrick Tasse - Initial API and implementation + * Geneviève Bastien - Move code to provide base classes for time graph view + *******************************************************************************/ + +package org.eclipse.linuxtools.internal.lttng2.kernel.ui.views.controlflow; + +import org.eclipse.linuxtools.tmf.core.trace.ITmfTrace; +import org.eclipse.linuxtools.tmf.ui.widgets.timegraph.model.TimeGraphEntry; + +/** + * An entry in the Control Flow view + */ +public class ControlFlowEntry extends TimeGraphEntry { + + private final ITmfTrace fTrace; + private final int fThreadId; + private final int fParentThreadId; + private final int fThreadQuark; + + /** + * Constructor + * + * @param quark + * The attribute quark matching the thread + * @param trace + * The trace on which we are working + * @param execName + * The exec_name of this entry + * @param threadId + * The TID of the thread + * @param parentThreadId + * the Parent_TID of this thread + * @param startTime + * The start time of this process's lifetime + * @param endTime + * The end time of this process + */ + public ControlFlowEntry(int quark, ITmfTrace trace, String execName, int threadId, int parentThreadId, long startTime, long endTime) { + super(execName, startTime, endTime); + fTrace = trace; + fThreadId = threadId; + fParentThreadId = parentThreadId; + fThreadQuark = quark; + } + + /** + * Get this entry's thread ID + * + * @return The TID + */ + public int getThreadId() { + return fThreadId; + } + + /** + * Get the entry's trace + * + * @return the entry's trace + */ + public ITmfTrace getTrace() { + return fTrace; + } + + /** + * Get this thread's parent TID + * + * @return The "PTID" + */ + public int getParentThreadId() { + return fParentThreadId; + } + + /** + * Get the quark of the attribute matching this thread's TID + * + * @return The quark + */ + public int getThreadQuark() { + return fThreadQuark; + } + + @Override + public String toString() { + return getClass().getSimpleName() + '(' + getName() + '[' + fThreadId + "])"; //$NON-NLS-1$ + } +}