forked from Imagelibrary/rtems
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:
@@ -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>
|
2011-06-28 Joel Sherrill <joel.sherrill@oarcorp.com>
|
||||||
|
|
||||||
* score/Makefile.am, score/include/rtems/score/schedulersimplesmp.h,
|
* score/Makefile.am, score/include/rtems/score/schedulersimplesmp.h,
|
||||||
|
|||||||
@@ -49,7 +49,7 @@
|
|||||||
}
|
}
|
||||||
#else
|
#else
|
||||||
int cpu;
|
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];
|
Per_CPU_Control *p = &_Per_CPU_Information[cpu];
|
||||||
if ( p->executing->Object.id == the_thread->Object.id ) {
|
if ( p->executing->Object.id == the_thread->Object.id ) {
|
||||||
*time_of_context_switch = p->time_of_last_context_switch;
|
*time_of_context_switch = p->time_of_last_context_switch;
|
||||||
|
|||||||
@@ -57,6 +57,10 @@ include_rtems_rtems_HEADERS += include/rtems/rtems/signalmp.h
|
|||||||
include_rtems_rtems_HEADERS += include/rtems/rtems/taskmp.h
|
include_rtems_rtems_HEADERS += include/rtems/rtems/taskmp.h
|
||||||
endif
|
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/asr.inl
|
||||||
include_rtems_rtems_HEADERS += inline/rtems/rtems/attr.inl
|
include_rtems_rtems_HEADERS += inline/rtems/rtems/attr.inl
|
||||||
include_rtems_rtems_HEADERS += inline/rtems/rtems/barrier.inl
|
include_rtems_rtems_HEADERS += inline/rtems/rtems/barrier.inl
|
||||||
|
|||||||
@@ -74,6 +74,10 @@ extern "C" {
|
|||||||
#if defined(RTEMS_MULTIPROCESSING)
|
#if defined(RTEMS_MULTIPROCESSING)
|
||||||
#include <rtems/rtems/mp.h>
|
#include <rtems/rtems/mp.h>
|
||||||
#endif
|
#endif
|
||||||
|
#if defined(RTEMS_SMP)
|
||||||
|
#include <rtems/rtems/smp.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
#include <rtems/rtems/support.h>
|
#include <rtems/rtems/support.h>
|
||||||
#include <rtems/score/sysstate.h>
|
#include <rtems/score/sysstate.h>
|
||||||
|
|||||||
82
cpukit/rtems/include/rtems/rtems/smp.h
Normal file
82
cpukit/rtems/include/rtems/rtems/smp.h
Normal 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 */
|
||||||
@@ -164,6 +164,11 @@ $(PROJECT_INCLUDE)/rtems/rtems/taskmp.h: include/rtems/rtems/taskmp.h $(PROJECT_
|
|||||||
$(INSTALL_DATA) $< $(PROJECT_INCLUDE)/rtems/rtems/taskmp.h
|
$(INSTALL_DATA) $< $(PROJECT_INCLUDE)/rtems/rtems/taskmp.h
|
||||||
PREINSTALL_FILES += $(PROJECT_INCLUDE)/rtems/rtems/taskmp.h
|
PREINSTALL_FILES += $(PROJECT_INCLUDE)/rtems/rtems/taskmp.h
|
||||||
endif
|
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)
|
$(PROJECT_INCLUDE)/rtems/rtems/asr.inl: inline/rtems/rtems/asr.inl $(PROJECT_INCLUDE)/rtems/rtems/$(dirstamp)
|
||||||
$(INSTALL_DATA) $< $(PROJECT_INCLUDE)/rtems/rtems/asr.inl
|
$(INSTALL_DATA) $< $(PROJECT_INCLUDE)/rtems/rtems/asr.inl
|
||||||
PREINSTALL_FILES += $(PROJECT_INCLUDE)/rtems/rtems/asr.inl
|
PREINSTALL_FILES += $(PROJECT_INCLUDE)/rtems/rtems/asr.inl
|
||||||
|
|||||||
Reference in New Issue
Block a user