blob: ddfa314a99392db96a1d6f259b48c4140d54ba8c [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2012 Ericsson 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:
* Marc Khouzam (Ericsson) - Initial API and implementation
*******************************************************************************/
package org.eclipse.cdt.dsf.gdb.service;
import org.eclipse.cdt.dsf.concurrent.DataRequestMonitor;
import org.eclipse.cdt.dsf.datamodel.IDMContext;
import org.eclipse.cdt.dsf.datamodel.IDMData;
import org.eclipse.cdt.dsf.service.IDsfService;
/**
* <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.
*
* The IGDBHardware service provides access to information about the target
* hardware, such as the number of cores.
*
* @since 4.1
*/
public interface IGDBHardwareAndOS extends IDsfService {
/**
* The physical target that has CPUs and Cores.
*/
public interface IHardwareTargetDMContext extends IDMContext {
}
/**
* A physical container of cores.
*/
public interface ICPUDMContext extends IDMContext {
String getId();
}
/**
* A logical core. Without SMT (Simultaneous Multi-Threading),
* a logical core is a physical core. However, with SMT, each
* physical core will have two logical cores.
* This context represents each logical core.
*/
public interface ICoreDMContext extends IDMContext {
String getId();
}
/**
* Model data interface corresponding to ICPUDMContext.
*/
public interface ICPUDMData extends IDMData {
/** Number of cores contained in this CPU */
int getNumCores();
}
/**
* Model data interface corresponding to ICoreDMContext.
*/
public interface ICoreDMData extends IDMData {
/**
* The physical id of the core. Multiple cores can have
* the same physical id in the case of Simultaneous Multi-Threading.
*/
String getPhysicalId();
}
//
// Events, e.g., a core halting, starting, etc
//
/**
* Returns an array of CPUs, based on the specified context.
*
* @param context The context to which this method applies.
*/
public void getCPUs(IHardwareTargetDMContext context, DataRequestMonitor<ICPUDMContext[]> rm);
/**
* Returns an array of cores, based on the specified context.
*
* @param context The context to which this method applies.
* For an IHardwareTargetDMContext, all cores will be returned;
* for an ICPUDMContext, the cores on that CPU will be returned.
*/
public void getCores(IDMContext context, DataRequestMonitor<ICoreDMContext[]> rm);
/**
* Retrieves data for a given ICPUDMContext or ICoreDMContext context.
*/
public void getExecutionData(IDMContext dmc, DataRequestMonitor<IDMData> rm);
/**
* Create a CPU context.
*
* @param targetDmc The parent context of this context
* @param CPUId The id of the CPU
*/
public ICPUDMContext createCPUContext(IHardwareTargetDMContext targetDmc, String CPUId);
/**
* Create a core context.
*
* @param cpuDmc The parent CPU context of this context
* @param coreId The id of the core
*/
public ICoreDMContext createCoreContext(ICPUDMContext cpuDmc, String coreId);
}