forked from Imagelibrary/rtems
config: Remove CONFIGURE_POSIX_HAS_OWN_INIT_THREAD_TABLE
The CONFIGURE_HAS_OWN_INIT_TASK_TABLE and CONFIGURE_POSIX_HAS_OWN_INIT_THREAD_TABLE are the last *_HAS_OWN_* configuration options. These two options are probably unused, see also: * https://lists.rtems.org/pipermail/users/2019-April/033129.html * https://lists.rtems.org/pipermail/users/2019-April/033130.html Removing them simplifies the configuration. If there is a real user need which shows up after the removal, we can resurrect them on demand. Using CONFIGURE_POSIX_HAS_OWN_INIT_THREAD_TABLE would have required the use of the undocumented CONFIGURE_POSIX_INIT_THREAD_TABLE_NAME and CONFIGURE_POSIX_INIT_THREAD_TABLE_SIZE configuration options. Update #3874.
This commit is contained in:
@@ -189,7 +189,6 @@ include_rtems_debugger_HEADERS += include/rtems/debugger/rtems-debugger-server.h
|
|||||||
include_rtems_posix_HEADERS += include/rtems/posix/aio_misc.h
|
include_rtems_posix_HEADERS += include/rtems/posix/aio_misc.h
|
||||||
include_rtems_posix_HEADERS += include/rtems/posix/barrierimpl.h
|
include_rtems_posix_HEADERS += include/rtems/posix/barrierimpl.h
|
||||||
include_rtems_posix_HEADERS += include/rtems/posix/condimpl.h
|
include_rtems_posix_HEADERS += include/rtems/posix/condimpl.h
|
||||||
include_rtems_posix_HEADERS += include/rtems/posix/config.h
|
|
||||||
include_rtems_posix_HEADERS += include/rtems/posix/key.h
|
include_rtems_posix_HEADERS += include/rtems/posix/key.h
|
||||||
include_rtems_posix_HEADERS += include/rtems/posix/keyimpl.h
|
include_rtems_posix_HEADERS += include/rtems/posix/keyimpl.h
|
||||||
include_rtems_posix_HEADERS += include/rtems/posix/mmanimpl.h
|
include_rtems_posix_HEADERS += include/rtems/posix/mmanimpl.h
|
||||||
|
|||||||
@@ -2155,7 +2155,6 @@ struct _reent *__getreent(void)
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef CONFIGURE_POSIX_INIT_THREAD_TABLE
|
#ifdef CONFIGURE_POSIX_INIT_THREAD_TABLE
|
||||||
#ifndef CONFIGURE_POSIX_HAS_OWN_INIT_THREAD_TABLE
|
|
||||||
#ifndef CONFIGURE_POSIX_INIT_THREAD_ENTRY_POINT
|
#ifndef CONFIGURE_POSIX_INIT_THREAD_ENTRY_POINT
|
||||||
#define CONFIGURE_POSIX_INIT_THREAD_ENTRY_POINT POSIX_Init
|
#define CONFIGURE_POSIX_INIT_THREAD_ENTRY_POINT POSIX_Init
|
||||||
#endif
|
#endif
|
||||||
@@ -2164,23 +2163,6 @@ struct _reent *__getreent(void)
|
|||||||
#define CONFIGURE_POSIX_INIT_THREAD_STACK_SIZE \
|
#define CONFIGURE_POSIX_INIT_THREAD_STACK_SIZE \
|
||||||
CONFIGURE_MINIMUM_POSIX_THREAD_STACK_SIZE
|
CONFIGURE_MINIMUM_POSIX_THREAD_STACK_SIZE
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef CONFIGURE_INIT
|
|
||||||
posix_initialization_threads_table POSIX_Initialization_threads[] = {
|
|
||||||
{ CONFIGURE_POSIX_INIT_THREAD_ENTRY_POINT,
|
|
||||||
CONFIGURE_POSIX_INIT_THREAD_STACK_SIZE }
|
|
||||||
};
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#define CONFIGURE_POSIX_INIT_THREAD_TABLE_NAME \
|
|
||||||
POSIX_Initialization_threads
|
|
||||||
|
|
||||||
#define CONFIGURE_POSIX_INIT_THREAD_TABLE_SIZE \
|
|
||||||
RTEMS_ARRAY_SIZE(CONFIGURE_POSIX_INIT_THREAD_TABLE_NAME)
|
|
||||||
#endif /* !CONFIGURE_POSIX_HAS_OWN_INIT_TASK_TABLE */
|
|
||||||
#else /* !CONFIGURE_POSIX_INIT_THREAD_TABLE */
|
|
||||||
#define CONFIGURE_POSIX_INIT_THREAD_TABLE_NAME NULL
|
|
||||||
#define CONFIGURE_POSIX_INIT_THREAD_TABLE_SIZE 0
|
|
||||||
#endif /* CONFIGURE_POSIX_INIT_THREAD_TABLE */
|
#endif /* CONFIGURE_POSIX_INIT_THREAD_TABLE */
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -2755,17 +2737,14 @@ struct _reent *__getreent(void)
|
|||||||
* then we need to install the code that runs that loop.
|
* then we need to install the code that runs that loop.
|
||||||
*/
|
*/
|
||||||
#ifdef CONFIGURE_INIT
|
#ifdef CONFIGURE_INIT
|
||||||
#if defined(CONFIGURE_POSIX_INIT_THREAD_TABLE) || \
|
#if defined(CONFIGURE_POSIX_INIT_THREAD_TABLE)
|
||||||
defined(CONFIGURE_POSIX_HAS_OWN_INIT_THREAD_TABLE)
|
const posix_initialization_threads_table _POSIX_Threads_User_thread_table = {
|
||||||
posix_initialization_threads_table * const
|
CONFIGURE_POSIX_INIT_THREAD_ENTRY_POINT,
|
||||||
_Configuration_POSIX_Initialization_threads =
|
CONFIGURE_POSIX_INIT_THREAD_STACK_SIZE
|
||||||
CONFIGURE_POSIX_INIT_THREAD_TABLE_NAME;
|
};
|
||||||
|
|
||||||
const size_t _Configuration_POSIX_Initialization_thread_count =
|
|
||||||
CONFIGURE_POSIX_INIT_THREAD_TABLE_SIZE;
|
|
||||||
|
|
||||||
RTEMS_SYSINIT_ITEM(
|
RTEMS_SYSINIT_ITEM(
|
||||||
_POSIX_Threads_Initialize_user_threads_body,
|
_POSIX_Threads_Initialize_user_thread,
|
||||||
RTEMS_SYSINIT_POSIX_USER_THREADS,
|
RTEMS_SYSINIT_POSIX_USER_THREADS,
|
||||||
RTEMS_SYSINIT_ORDER_MIDDLE
|
RTEMS_SYSINIT_ORDER_MIDDLE
|
||||||
);
|
);
|
||||||
@@ -2990,6 +2969,10 @@ struct _reent *__getreent(void)
|
|||||||
#warning "The CONFIGURE_MAXIMUM_PTYS configuration option is obsolete since RTEMS 5.1"
|
#warning "The CONFIGURE_MAXIMUM_PTYS configuration option is obsolete since RTEMS 5.1"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifdef CONFIGURE_POSIX_HAS_OWN_INIT_THREAD_TABLE
|
||||||
|
#warning "The CONFIGURE_POSIX_HAS_OWN_INIT_THREAD_TABLE configuration option is obsolete since RTEMS 5.1"
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifdef CONFIGURE_TERMIOS_DISABLED
|
#ifdef CONFIGURE_TERMIOS_DISABLED
|
||||||
#warning "The CONFIGURE_TERMIOS_DISABLED configuration option is obsolete since RTEMS 5.1"
|
#warning "The CONFIGURE_TERMIOS_DISABLED configuration option is obsolete since RTEMS 5.1"
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -34,7 +34,6 @@
|
|||||||
#include <rtems/score/userextdata.h>
|
#include <rtems/score/userextdata.h>
|
||||||
#include <rtems/score/watchdogticks.h>
|
#include <rtems/score/watchdogticks.h>
|
||||||
#include <rtems/rtems/config.h>
|
#include <rtems/rtems/config.h>
|
||||||
#include <rtems/posix/config.h>
|
|
||||||
#include <rtems/extension.h>
|
#include <rtems/extension.h>
|
||||||
#if defined(RTEMS_MULTIPROCESSING)
|
#if defined(RTEMS_MULTIPROCESSING)
|
||||||
#include <rtems/rtems/types.h>
|
#include <rtems/rtems/types.h>
|
||||||
|
|||||||
@@ -1,60 +0,0 @@
|
|||||||
/**
|
|
||||||
* @file
|
|
||||||
*
|
|
||||||
* @brief User Defined Configuration Parameters Specific For The POSIX API
|
|
||||||
*
|
|
||||||
* This include file contains the table of user defined configuration
|
|
||||||
* parameters specific for the POSIX API.
|
|
||||||
*/
|
|
||||||
|
|
||||||
/*
|
|
||||||
* COPYRIGHT (c) 1989-2014.
|
|
||||||
* 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.org/license/LICENSE.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifndef _RTEMS_POSIX_CONFIG_H
|
|
||||||
#define _RTEMS_POSIX_CONFIG_H
|
|
||||||
|
|
||||||
#include <stdint.h>
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
|
||||||
extern "C" {
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @defgroup PosixConfig Configuration
|
|
||||||
*
|
|
||||||
* @ingroup POSIXAPI
|
|
||||||
*
|
|
||||||
* This encapsulates functionality related to the application's configuration
|
|
||||||
* of the Classic API including the maximum number of each class of objects.
|
|
||||||
*/
|
|
||||||
/**@{*/
|
|
||||||
|
|
||||||
/**
|
|
||||||
* For now, we are only allowing the user to specify the entry point
|
|
||||||
* and stack size for POSIX initialization threads.
|
|
||||||
*/
|
|
||||||
typedef struct {
|
|
||||||
/** This is the entry point for a POSIX initialization thread. */
|
|
||||||
void *(*thread_entry)(void *);
|
|
||||||
/** This is the stack size for a POSIX initialization thread. */
|
|
||||||
int stack_size;
|
|
||||||
} posix_initialization_threads_table;
|
|
||||||
|
|
||||||
extern posix_initialization_threads_table * const
|
|
||||||
_Configuration_POSIX_Initialization_threads;
|
|
||||||
|
|
||||||
extern const size_t _Configuration_POSIX_Initialization_thread_count;
|
|
||||||
|
|
||||||
/**@}*/
|
|
||||||
#ifdef __cplusplus
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#endif
|
|
||||||
/* end of include file */
|
|
||||||
@@ -36,15 +36,32 @@ extern "C" {
|
|||||||
*/
|
*/
|
||||||
/**@{**/
|
/**@{**/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* For now, we are only allowing the user to specify the entry point
|
||||||
|
* and stack size for POSIX initialization threads.
|
||||||
|
*/
|
||||||
|
typedef struct {
|
||||||
|
/** This is the entry point for a POSIX initialization thread. */
|
||||||
|
void *(*thread_entry)(void *);
|
||||||
|
/** This is the stack size for a POSIX initialization thread. */
|
||||||
|
int stack_size;
|
||||||
|
} posix_initialization_threads_table;
|
||||||
|
|
||||||
extern const size_t _POSIX_Threads_Minimum_stack_size;
|
extern const size_t _POSIX_Threads_Minimum_stack_size;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief POSIX threads initialize user threads body.
|
* @brief Initialization table for the first user POSIX thread.
|
||||||
*
|
*
|
||||||
* This routine creates and starts all configured user
|
* This table is used by _POSIX_Threads_Initialize_user_thread() and
|
||||||
* initialization threads.
|
* initialized via <rtems/confdefs.h>.
|
||||||
*/
|
*/
|
||||||
extern void _POSIX_Threads_Initialize_user_threads_body(void);
|
extern const posix_initialization_threads_table
|
||||||
|
_POSIX_Threads_User_thread_table;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief System initialization handler to create the first user POSIX thread.
|
||||||
|
*/
|
||||||
|
extern void _POSIX_Threads_Initialize_user_thread( void );
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The following defines the information control block used to manage
|
* The following defines the information control block used to manage
|
||||||
|
|||||||
@@ -20,7 +20,6 @@
|
|||||||
#define _RTEMS_POSIX_PTHREADIMPL_H
|
#define _RTEMS_POSIX_PTHREADIMPL_H
|
||||||
|
|
||||||
#include <rtems/posix/pthread.h>
|
#include <rtems/posix/pthread.h>
|
||||||
#include <rtems/posix/config.h>
|
|
||||||
#include <rtems/posix/threadsup.h>
|
#include <rtems/posix/threadsup.h>
|
||||||
#include <rtems/score/assert.h>
|
#include <rtems/score/assert.h>
|
||||||
#include <rtems/score/objectimpl.h>
|
#include <rtems/score/objectimpl.h>
|
||||||
|
|||||||
@@ -18,33 +18,22 @@
|
|||||||
#include "config.h"
|
#include "config.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include <errno.h>
|
#include <rtems/posix/pthread.h>
|
||||||
|
|
||||||
#include <pthread.h>
|
#include <pthread.h>
|
||||||
#include <limits.h>
|
|
||||||
|
|
||||||
#include <rtems/config.h>
|
#include <rtems/score/assert.h>
|
||||||
#include <rtems/score/stack.h>
|
#include <rtems/score/threadimpl.h>
|
||||||
#include <rtems/score/thread.h>
|
#include <rtems/score/interr.h>
|
||||||
#include <rtems/score/wkspace.h>
|
|
||||||
#include <rtems/posix/posixapi.h>
|
|
||||||
#include <rtems/posix/pthreadimpl.h>
|
|
||||||
#include <rtems/posix/priorityimpl.h>
|
|
||||||
#include <rtems/posix/config.h>
|
|
||||||
|
|
||||||
void _POSIX_Threads_Initialize_user_threads_body(void)
|
void _POSIX_Threads_Initialize_user_thread( void )
|
||||||
{
|
{
|
||||||
int eno;
|
int eno;
|
||||||
uint32_t index;
|
const posix_initialization_threads_table *user_thread;
|
||||||
uint32_t maximum;
|
|
||||||
posix_initialization_threads_table *user_threads;
|
|
||||||
pthread_t thread_id;
|
pthread_t thread_id;
|
||||||
pthread_attr_t attr;
|
pthread_attr_t attr;
|
||||||
|
|
||||||
user_threads = _Configuration_POSIX_Initialization_threads;
|
user_thread = &_POSIX_Threads_User_thread_table;
|
||||||
maximum = _Configuration_POSIX_Initialization_thread_count;
|
|
||||||
|
|
||||||
if ( !user_threads )
|
|
||||||
return;
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Be careful .. if the default attribute set changes, this may need to.
|
* Be careful .. if the default attribute set changes, this may need to.
|
||||||
@@ -53,7 +42,6 @@ void _POSIX_Threads_Initialize_user_threads_body(void)
|
|||||||
* to inherit the idle tasks attributes.
|
* to inherit the idle tasks attributes.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
for ( index=0 ; index < maximum ; index++ ) {
|
|
||||||
/*
|
/*
|
||||||
* There is no way for these calls to fail in this situation.
|
* There is no way for these calls to fail in this situation.
|
||||||
*/
|
*/
|
||||||
@@ -61,13 +49,13 @@ void _POSIX_Threads_Initialize_user_threads_body(void)
|
|||||||
_Assert( eno == 0 );
|
_Assert( eno == 0 );
|
||||||
eno = pthread_attr_setinheritsched( &attr, PTHREAD_EXPLICIT_SCHED );
|
eno = pthread_attr_setinheritsched( &attr, PTHREAD_EXPLICIT_SCHED );
|
||||||
_Assert( eno == 0 );
|
_Assert( eno == 0 );
|
||||||
eno = pthread_attr_setstacksize(&attr, user_threads[ index ].stack_size);
|
eno = pthread_attr_setstacksize( &attr, user_thread->stack_size );
|
||||||
_Assert( eno == 0 );
|
_Assert( eno == 0 );
|
||||||
|
|
||||||
eno = pthread_create(
|
eno = pthread_create(
|
||||||
&thread_id,
|
&thread_id,
|
||||||
&attr,
|
&attr,
|
||||||
user_threads[ index ].thread_entry,
|
user_thread->thread_entry,
|
||||||
NULL
|
NULL
|
||||||
);
|
);
|
||||||
if ( eno != 0 ) {
|
if ( eno != 0 ) {
|
||||||
@@ -78,4 +66,3 @@ void _POSIX_Threads_Initialize_user_threads_body(void)
|
|||||||
_Thread_Global_constructor = thread_id;
|
_Thread_Global_constructor = thread_id;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|||||||
@@ -8,27 +8,7 @@
|
|||||||
* Classic API Init task create failure
|
* Classic API Init task create failure
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <errno.h>
|
#define CONFIGURE_POSIX_INIT_THREAD_ENTRY_POINT NULL
|
||||||
|
|
||||||
#include <rtems/posix/posixapi.h>
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Way too much stack space. Should generate a fatal error
|
|
||||||
* on the init task create.
|
|
||||||
*/
|
|
||||||
#define CONFIGURE_POSIX_HAS_OWN_INIT_THREAD_TABLE
|
|
||||||
#define CONFIGURE_POSIX_INIT_THREAD_STACK_SIZE 0
|
|
||||||
posix_initialization_threads_table POSIX_Initialization_threads[] = {
|
|
||||||
{ NULL, /* bad thread entry */
|
|
||||||
0
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
#define CONFIGURE_POSIX_INIT_THREAD_TABLE_NAME POSIX_Initialization_threads
|
|
||||||
|
|
||||||
#define CONFIGURE_POSIX_INIT_THREAD_TABLE_SIZE \
|
|
||||||
sizeof(CONFIGURE_POSIX_INIT_THREAD_TABLE_NAME) / \
|
|
||||||
sizeof(posix_initialization_threads_table)
|
|
||||||
|
|
||||||
#define FATAL_ERROR_TEST_NAME "1"
|
#define FATAL_ERROR_TEST_NAME "1"
|
||||||
#define FATAL_ERROR_DESCRIPTION \
|
#define FATAL_ERROR_DESCRIPTION \
|
||||||
|
|||||||
@@ -8,39 +8,25 @@
|
|||||||
* Classic API Init task create failure
|
* Classic API Init task create failure
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <errno.h>
|
|
||||||
#include <limits.h>
|
|
||||||
|
|
||||||
#include <rtems/posix/posixapi.h>
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Way too much stack space. Should generate a fatal error
|
|
||||||
* on the init task create.
|
|
||||||
*/
|
|
||||||
#define CONFIGURE_POSIX_HAS_OWN_INIT_THREAD_TABLE
|
|
||||||
#define CONFIGURE_POSIX_INIT_THREAD_STACK_SIZE 0
|
|
||||||
posix_initialization_threads_table POSIX_Initialization_threads[] = {
|
|
||||||
{ POSIX_Init,
|
|
||||||
#if INT_MAX < (12 * 1024 * 1024)
|
|
||||||
INT_MAX
|
|
||||||
#else
|
|
||||||
12 * 1024 * 1024 /* too much stack */
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
#define CONFIGURE_POSIX_INIT_THREAD_TABLE_NAME POSIX_Initialization_threads
|
|
||||||
|
|
||||||
#define CONFIGURE_POSIX_INIT_THREAD_TABLE_SIZE \
|
|
||||||
sizeof(CONFIGURE_POSIX_INIT_THREAD_TABLE_NAME) / \
|
|
||||||
sizeof(posix_initialization_threads_table)
|
|
||||||
|
|
||||||
#define FATAL_ERROR_TEST_NAME "2"
|
#define FATAL_ERROR_TEST_NAME "2"
|
||||||
#define FATAL_ERROR_DESCRIPTION \
|
#define FATAL_ERROR_DESCRIPTION \
|
||||||
"POSIX API Init thread create failure -- no memory for stack"
|
"POSIX API Init thread create failure -- no memory for stack"
|
||||||
#define FATAL_ERROR_EXPECTED_SOURCE INTERNAL_ERROR_CORE
|
#define FATAL_ERROR_EXPECTED_SOURCE INTERNAL_ERROR_CORE
|
||||||
#define FATAL_ERROR_EXPECTED_ERROR INTERNAL_ERROR_POSIX_INIT_THREAD_CREATE_FAILED
|
#define FATAL_ERROR_EXPECTED_ERROR INTERNAL_ERROR_POSIX_INIT_THREAD_CREATE_FAILED
|
||||||
|
|
||||||
|
static void *stack_allocator(size_t unused)
|
||||||
|
{
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void stack_deallocator(void *unused)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
#define CONFIGURE_TASK_STACK_ALLOCATOR stack_allocator
|
||||||
|
|
||||||
|
#define CONFIGURE_TASK_STACK_DEALLOCATOR stack_deallocator
|
||||||
|
|
||||||
static void force_error(void)
|
static void force_error(void)
|
||||||
{
|
{
|
||||||
/* we will not run this far */
|
/* we will not run this far */
|
||||||
|
|||||||
Reference in New Issue
Block a user