2011-06-28 Joel Sherrill <joel.sherrill@oarcorp.com>

PR 1826/cpukit
	* libmisc/cpuuse/cpuusagereport.c, rtems/Makefile.am,
	rtems/preinstall.am, rtems/include/rtems.h: Add SMP Helper methods to
	Classic API.
	* rtems/include/rtems/rtems/smp.h: New file.
This commit is contained in:
Joel Sherrill
2011-06-28 20:39:39 +00:00
parent c5a4332700
commit 2f96c1ebef
6 changed files with 104 additions and 1 deletions

View File

@@ -1,3 +1,11 @@
2011-06-28 Joel Sherrill <joel.sherrill@oarcorp.com>
PR 1826/cpukit
* libmisc/cpuuse/cpuusagereport.c, rtems/Makefile.am,
rtems/preinstall.am, rtems/include/rtems.h: Add SMP Helper methods to
Classic API.
* rtems/include/rtems/rtems/smp.h: New file.
2011-06-28 Joel Sherrill <joel.sherrill@oarcorp.com>
* score/Makefile.am, score/include/rtems/score/schedulersimplesmp.h,

View File

@@ -49,7 +49,7 @@
}
#else
int cpu;
for ( cpu=0 ; cpu < _SMP_Processor_count ; cpu++ ) {
for ( cpu=0 ; cpu < rtems_smp_get_number_of_processors() ; cpu++ ) {
Per_CPU_Control *p = &_Per_CPU_Information[cpu];
if ( p->executing->Object.id == the_thread->Object.id ) {
*time_of_context_switch = p->time_of_last_context_switch;

View File

@@ -57,6 +57,10 @@ include_rtems_rtems_HEADERS += include/rtems/rtems/signalmp.h
include_rtems_rtems_HEADERS += include/rtems/rtems/taskmp.h
endif
if HAS_SMP
include_rtems_rtems_HEADERS += include/rtems/rtems/smp.h
endif
include_rtems_rtems_HEADERS += inline/rtems/rtems/asr.inl
include_rtems_rtems_HEADERS += inline/rtems/rtems/attr.inl
include_rtems_rtems_HEADERS += inline/rtems/rtems/barrier.inl

View File

@@ -74,6 +74,10 @@ extern "C" {
#if defined(RTEMS_MULTIPROCESSING)
#include <rtems/rtems/mp.h>
#endif
#if defined(RTEMS_SMP)
#include <rtems/rtems/smp.h>
#endif
#include <rtems/rtems/support.h>
#include <rtems/score/sysstate.h>

View File

@@ -0,0 +1,82 @@
/**
* @file rtems/rtems/smp.h
*
* This include file provides the application interface
* to SMP information and services.
*
* Most of the SMP interface is hidden from the application
* and exists between the BSP and RTEMS.
*/
/* COPYRIGHT (c) 1989-2011.
* On-Line Applications Research Corporation (OAR).
*
* The license and distribution terms for this file may be
* found in the file LICENSE in this distribution or at
* http://www.rtems.com/license/LICENSE.
*
* $Id$
*/
#ifndef _RTEMS_RTEMS_SMP_H
#define _RTEMS_RTEMS_SMP_H
#ifdef __cplusplus
extern "C" {
#endif
#include <rtems/score/smp.h>
/**
* @defgroup ClassicSMP Classic API SMP Services
*
* @ingroup ClassicRTEMS
*
* This encapsulates functionality which is useful for SMP applications.
*/
/**@{*/
extern uint32_t rtems_configuration_smp_maximum_processors;
/**
* @brief Obtain Number of Cores in System
*
* This method returns the number of CPU cores that are currently in
* the system. This will always be less than or equal to the number
* of maximum number of cores which were configured.
*
* @return This method returns the number of cores in this system.
*/
#define rtems_smp_get_number_of_processors() \
(_SMP_Processor_count)
/**
* @brief Obtain Maximum Cores Configured
*
* This method returns the number of CPU cores that were configured
* in the system. The actual number of cores will always be less than
* or equal to the number of maximum number of cores which were configured.
*
* @return This method returns the number of cores configured.
*/
#define rtems_configuration_get_smp_maximum_processors() \
(rtems_configuration_smp_maximum_processors)
/**
* @brief Obtain Current Core Number
*
* This method returns the id of the current CPU core.
*
* @return This method returns the id of the current CPU core.
*/
#define rtems_smp_get_current_processor() \
bsp_smp_processor_id()
/**@}*/
#ifdef __cplusplus
}
#endif
#endif
/* end of include file */

View File

@@ -164,6 +164,11 @@ $(PROJECT_INCLUDE)/rtems/rtems/taskmp.h: include/rtems/rtems/taskmp.h $(PROJECT_
$(INSTALL_DATA) $< $(PROJECT_INCLUDE)/rtems/rtems/taskmp.h
PREINSTALL_FILES += $(PROJECT_INCLUDE)/rtems/rtems/taskmp.h
endif
if HAS_SMP
$(PROJECT_INCLUDE)/rtems/rtems/smp.h: include/rtems/rtems/smp.h $(PROJECT_INCLUDE)/rtems/rtems/$(dirstamp)
$(INSTALL_DATA) $< $(PROJECT_INCLUDE)/rtems/rtems/smp.h
PREINSTALL_FILES += $(PROJECT_INCLUDE)/rtems/rtems/smp.h
endif
$(PROJECT_INCLUDE)/rtems/rtems/asr.inl: inline/rtems/rtems/asr.inl $(PROJECT_INCLUDE)/rtems/rtems/$(dirstamp)
$(INSTALL_DATA) $< $(PROJECT_INCLUDE)/rtems/rtems/asr.inl
PREINSTALL_FILES += $(PROJECT_INCLUDE)/rtems/rtems/asr.inl