blob: 801ff69f7aecc5ed9ce72ca77144c3953abb9a41 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2011, 2013 Mentor Graphics and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
* which accompanies this distribution, and is available at
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
*
* Contributors:
* Vladimir Prus (Mentor Graphics) - initial API and implementation
* Marc Dumais (Ericsson) - Add CPU/core load information to the multicore visualizer (Bug 396268)
*******************************************************************************/
package org.eclipse.cdt.dsf.gdb.service;
import java.util.Map;
import org.eclipse.cdt.dsf.concurrent.DataRequestMonitor;
import org.eclipse.cdt.dsf.datamodel.IDMContext;
/**
* Interface for accessing information about OS resources.
*
* <strong>EXPERIMENTAL</strong>. This class or interface has been added as part
* of a work in progress. There is no guarantee that this API will work or that
* it will remain the same.
*
* @since 4.2
*/
public interface IGDBHardwareAndOS2 extends IGDBHardwareAndOS {
/** Returns true if information returned by the other methods is available.
* If false is returned, it means that session initialization is in progress,
* and further request should be made after DataModelInitializedEvent is fired.
*/
public boolean isAvailable();
/** Information about OS resource class. */
public interface IResourceClass {
/** The id of this resource class, used in GDB requests. */
public String getId();
/** Human-friendly description of this class, suitable for direct display in UI. */
public String getHumanDescription();
}
/**
* Return a list of OS resource classes GDB knows about
*/
public void getResourceClasses(IDMContext dmc, DataRequestMonitor<IResourceClass[]> rm);
/** Information about OS resources of specific resource class
* This is conceptually a table. GDB provides column headers, and
* data rows, but does not provide any additional information about
* the meaning
*/
public interface IResourcesInformation {
/** Return the names of the columns in resource table. */
public String[] getColumnNames();
/** Returns rows of the resource table. Each element is an array
* of the size equal to getColumnNames().length
*/
public String[][] getContent();
}
/**
* Return table describing resources of specified class.
*/
void getResourcesInformation(IDMContext dmc, String resourceClassId, DataRequestMonitor<IResourcesInformation> rm);
/**
* Information about the CPU/core load for one given CPU or core
*/
public interface ILoadInfo {
/**
* A string representing the current load (between "0" and "100")
*/
public String getLoad();
/**
* Used to give more details about a CPU's/core's load. For instance
* the breakdown of the different load types and their proportion: system,
* user, I/O, interrupts, etc.
*/
public Map<String, String> getDetailedLoad();
}
/**
* Computes CPU/core load information according to context and
* asynchronously returns the result in a ILoadInfo object
*/
void getLoadInfo(IDMContext dmc, DataRequestMonitor<ILoadInfo> rm);
}