+++ /dev/null
-/*******************************************************************************
- * Copyright (c) 2012, 2015 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.tracecompass.analysis.os.linux.ui.views.resources;
-
-import java.util.Iterator;
-
-import org.eclipse.jdt.annotation.NonNull;
-import org.eclipse.tracecompass.internal.analysis.os.linux.ui.views.resources.SoftIrqLabelProvider;
-import org.eclipse.tracecompass.tmf.core.trace.ITmfTrace;
-import org.eclipse.tracecompass.tmf.ui.widgets.timegraph.model.ITimeEvent;
-import org.eclipse.tracecompass.tmf.ui.widgets.timegraph.model.ITimeGraphEntry;
-import org.eclipse.tracecompass.tmf.ui.widgets.timegraph.model.TimeGraphEntry;
-
-/**
- * An entry, or row, in the resource view
- *
- * @author Patrick Tasse
- */
-public class ResourcesEntry extends TimeGraphEntry implements Comparable<ITimeGraphEntry> {
-
- /** Type of resource */
- public static enum Type {
- /** Null resources (filler rows, etc.) */
- NULL,
- /** Entries for CPUs */
- CPU,
- /** Entries for IRQs */
- IRQ,
- /** Entries for Soft IRQ */
- SOFT_IRQ
- }
-
- private final int fId;
- private final @NonNull ITmfTrace fTrace;
- private final Type fType;
- private final int fQuark;
-
- /**
- * Constructor
- *
- * @param quark
- * The attribute quark matching the entry
- * @param trace
- * The trace on which we are working
- * @param name
- * The exec_name of this entry
- * @param startTime
- * The start time of this entry lifetime
- * @param endTime
- * The end time of this entry
- * @param type
- * The type of this entry
- * @param id
- * The id of this entry
- */
- public ResourcesEntry(int quark, @NonNull ITmfTrace trace, String name,
- long startTime, long endTime, Type type, int id) {
- super(name, startTime, endTime);
- fId = id;
- fTrace = trace;
- fType = type;
- fQuark = quark;
- }
-
- /**
- * Constructor
- *
- * @param trace
- * The trace on which we are working
- * @param name
- * The exec_name of this entry
- * @param startTime
- * The start time of this entry lifetime
- * @param endTime
- * The end time of this entry
- * @param id
- * The id of this entry
- */
- public ResourcesEntry(@NonNull ITmfTrace trace, String name,
- long startTime, long endTime, int id) {
- this(-1, trace, name, startTime, endTime, Type.NULL, id);
- }
-
- /**
- * Constructor
- *
- * @param quark
- * The attribute quark matching the entry
- * @param trace
- * The trace on which we are working
- * @param startTime
- * The start time of this entry lifetime
- * @param endTime
- * The end time of this entry
- * @param type
- * The type of this entry
- * @param id
- * The id of this entry
- */
- public ResourcesEntry(int quark, @NonNull ITmfTrace trace,
- long startTime, long endTime, Type type, int id) {
- this(quark, trace, computeEntryName(type, id), startTime, endTime, type, id);
- }
-
- private static String computeEntryName(Type type, int id) {
- if (Type.SOFT_IRQ.equals(type)) {
- return type.toString() + ' ' + id + ' ' + SoftIrqLabelProvider.getSoftIrq(id);
- }
- return type.toString() + ' ' + id;
- }
-
- /**
- * Get the entry's id
- *
- * @return the entry's id
- */
- public int getId() {
- return fId;
- }
-
- /**
- * Get the entry's trace
- *
- * @return the entry's trace
- */
- public @NonNull ITmfTrace getTrace() {
- return fTrace;
- }
-
- /**
- * Get the entry Type of this entry. Uses the inner Type enum.
- *
- * @return The entry type
- */
- public Type getType() {
- return fType;
- }
-
- /**
- * Retrieve the attribute quark that's represented by this entry.
- *
- * @return The integer quark The attribute quark matching the entry
- */
- public int getQuark() {
- return fQuark;
- }
-
- @Override
- public boolean hasTimeEvents() {
- if (fType == Type.NULL) {
- return false;
- }
- return true;
- }
-
- @Override
- public int compareTo(ITimeGraphEntry other) {
- if (!(other instanceof ResourcesEntry)) {
- /*
- * Should not happen, but if it does, put those entries at the end
- */
- return -1;
- }
- ResourcesEntry o = (ResourcesEntry) other;
-
- /*
- * Resources entry names should all be of type "ABC 123"
- *
- * We want to filter on the Type first (the "ABC" part), then on the ID
- * ("123") in numerical order (so we get 1,2,10 and not 1,10,2).
- */
- int ret = this.getType().compareTo(o.getType());
- if (ret != 0) {
- return ret;
- }
- return Integer.compare(this.getId(), o.getId());
- }
-
- @Override
- public Iterator<@NonNull ITimeEvent> getTimeEventsIterator() {
- return super.getTimeEventsIterator();
- }
-
-}