forked from Imagelibrary/rtems
score: Add _Thread_Get_maximum_internal_threads()
This commit is contained in:
@@ -23,7 +23,9 @@
|
|||||||
#include <rtems/score/isr.h>
|
#include <rtems/score/isr.h>
|
||||||
#include <rtems/score/objectimpl.h>
|
#include <rtems/score/objectimpl.h>
|
||||||
#include <rtems/score/statesimpl.h>
|
#include <rtems/score/statesimpl.h>
|
||||||
|
#include <rtems/score/sysstate.h>
|
||||||
#include <rtems/score/todimpl.h>
|
#include <rtems/score/todimpl.h>
|
||||||
|
#include <rtems/config.h>
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
extern "C" {
|
extern "C" {
|
||||||
@@ -592,6 +594,23 @@ RTEMS_INLINE_ROUTINE bool _Thread_Is_proxy_blocking (
|
|||||||
return (code == THREAD_STATUS_PROXY_BLOCKING);
|
return (code == THREAD_STATUS_PROXY_BLOCKING);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
RTEMS_INLINE_ROUTINE uint32_t _Thread_Get_maximum_internal_threads(void)
|
||||||
|
{
|
||||||
|
uint32_t maximum_internal_threads = 0;
|
||||||
|
|
||||||
|
/* Idle threads */
|
||||||
|
maximum_internal_threads += rtems_configuration_get_maximum_processors();
|
||||||
|
|
||||||
|
/* MPCI thread */
|
||||||
|
#if defined(RTEMS_MULTIPROCESSING)
|
||||||
|
if ( _System_state_Is_multiprocessing ) {
|
||||||
|
++maximum_internal_threads;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
return maximum_internal_threads;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This routine allocates an internal thread.
|
* This routine allocates an internal thread.
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -20,8 +20,6 @@
|
|||||||
|
|
||||||
#include <rtems/score/threadimpl.h>
|
#include <rtems/score/threadimpl.h>
|
||||||
#include <rtems/score/interr.h>
|
#include <rtems/score/interr.h>
|
||||||
#include <rtems/score/sysstate.h>
|
|
||||||
#include <rtems/config.h>
|
|
||||||
|
|
||||||
void _Thread_Handler_initialization(void)
|
void _Thread_Handler_initialization(void)
|
||||||
{
|
{
|
||||||
@@ -31,7 +29,6 @@ void _Thread_Handler_initialization(void)
|
|||||||
rtems_configuration_get_maximum_extensions();
|
rtems_configuration_get_maximum_extensions();
|
||||||
rtems_stack_allocate_init_hook stack_allocate_init_hook =
|
rtems_stack_allocate_init_hook stack_allocate_init_hook =
|
||||||
rtems_configuration_get_stack_allocate_init_hook();
|
rtems_configuration_get_stack_allocate_init_hook();
|
||||||
uint32_t maximum_internal_threads;
|
|
||||||
#if defined(RTEMS_MULTIPROCESSING)
|
#if defined(RTEMS_MULTIPROCESSING)
|
||||||
uint32_t maximum_proxies =
|
uint32_t maximum_proxies =
|
||||||
_Configuration_MP_table->maximum_proxies;
|
_Configuration_MP_table->maximum_proxies;
|
||||||
@@ -68,18 +65,11 @@ void _Thread_Handler_initialization(void)
|
|||||||
* per CPU in an SMP system. In addition, if this is a loosely
|
* per CPU in an SMP system. In addition, if this is a loosely
|
||||||
* coupled multiprocessing system, account for the MPCI Server Thread.
|
* coupled multiprocessing system, account for the MPCI Server Thread.
|
||||||
*/
|
*/
|
||||||
maximum_internal_threads = rtems_configuration_get_maximum_processors();
|
|
||||||
|
|
||||||
#if defined(RTEMS_MULTIPROCESSING)
|
|
||||||
if ( _System_state_Is_multiprocessing )
|
|
||||||
maximum_internal_threads += 1;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
_Objects_Initialize_information(
|
_Objects_Initialize_information(
|
||||||
&_Thread_Internal_information,
|
&_Thread_Internal_information,
|
||||||
OBJECTS_INTERNAL_API,
|
OBJECTS_INTERNAL_API,
|
||||||
OBJECTS_INTERNAL_THREADS,
|
OBJECTS_INTERNAL_THREADS,
|
||||||
maximum_internal_threads,
|
_Thread_Get_maximum_internal_threads(),
|
||||||
sizeof( Thread_Control ),
|
sizeof( Thread_Control ),
|
||||||
/* size of this object's control block */
|
/* size of this object's control block */
|
||||||
false, /* true if names for this object are strings */
|
false, /* true if names for this object are strings */
|
||||||
|
|||||||
Reference in New Issue
Block a user