[PATCH] CONFIGURE_MINIMUM_POSIX_THREAD_STACK_SIZE

Joel Sherrill joel at rtems.org
Tue Aug 7 15:21:45 UTC 2018


This seems reasonable.


On Tue, Aug 7, 2018 at 1:00 AM, Sebastian Huber <
sebastian.huber at embedded-brains.de> wrote:

> Make CONFIGURE_MINIMUM_POSIX_THREAD_STACK_SIZE configurable by the user.
>
> Update #3434.
> ---
>  cpukit/include/rtems/confdefs.h          |  5 +++++
>  cpukit/include/rtems/posix/pthread.h     |  2 ++
>  cpukit/include/rtems/posix/pthreadimpl.h |  2 +-
>  testsuites/psxtests/psxconfig01/init.c   | 17 +++++++++++++++++
>  4 files changed, 25 insertions(+), 1 deletion(-)
>
> diff --git a/cpukit/include/rtems/confdefs.h b/cpukit/include/rtems/
> confdefs.h
> index 6e7bcdf570..8119436e7c 100644
> --- a/cpukit/include/rtems/confdefs.h
> +++ b/cpukit/include/rtems/confdefs.h
> @@ -1165,8 +1165,10 @@ extern rtems_initialization_tasks_table
> Initialization_tasks[];
>   * This specifies the default POSIX thread stack size. By default, it is
>   * twice that recommended for the port.
>   */
> +#ifndef CONFIGURE_MINIMUM_POSIX_THREAD_STACK_SIZE
>  #define CONFIGURE_MINIMUM_POSIX_THREAD_STACK_SIZE \
>    (2 * CONFIGURE_MINIMUM_TASK_STACK_SIZE)
> +#endif
>
>  /**
>   * @brief Idle task stack size configuration.
> @@ -3050,6 +3052,9 @@ extern rtems_initialization_tasks_table
> Initialization_tasks[];
>        CONFIGURE_POSIX_INIT_THREAD_TABLE_SIZE,
>        CONFIGURE_POSIX_INIT_THREAD_TABLE_NAME
>      };
> +
> +    size_t _Configuration_POSIX_Minimum_stack_size =
> +      CONFIGURE_MINIMUM_POSIX_THREAD_STACK_SIZE;
>    #endif
>
>    /**
> diff --git a/cpukit/include/rtems/posix/pthread.h
> b/cpukit/include/rtems/posix/pthread.h
> index 05783ff4ad..818d0f89d0 100644
> --- a/cpukit/include/rtems/posix/pthread.h
> +++ b/cpukit/include/rtems/posix/pthread.h
> @@ -37,6 +37,8 @@ extern "C" {
>   */
>  /**@{**/
>
> +extern size_t _Configuration_POSIX_Minimum_stack_size;
> +
>  /**
>   * @brief POSIX threads initialize user threads body.
>   *
> diff --git a/cpukit/include/rtems/posix/pthreadimpl.h
> b/cpukit/include/rtems/posix/pthreadimpl.h
> index e6ed1b8990..d900207fbd 100644
> --- a/cpukit/include/rtems/posix/pthreadimpl.h
> +++ b/cpukit/include/rtems/posix/pthreadimpl.h
> @@ -40,7 +40,7 @@ extern "C" {
>  /**
>   * The following sets the minimum stack size for POSIX threads.
>   */
> -#define PTHREAD_MINIMUM_STACK_SIZE (_Stack_Minimum() * 2)
> +#define PTHREAD_MINIMUM_STACK_SIZE _Configuration_POSIX_Minimum_
> stack_size
>
>  /**
>   * The following defines the information control block used to manage
> diff --git a/testsuites/psxtests/psxconfig01/init.c b/testsuites/psxtests/
> psxconfig01/init.c
> index 910932a997..70e489823b 100644
> --- a/testsuites/psxtests/psxconfig01/init.c
> +++ b/testsuites/psxtests/psxconfig01/init.c
> @@ -25,6 +25,8 @@
>    #include "config.h"
>  #endif
>
> +#define _GNU_SOURCE
> +
>  #include <rtems/test.h>
>  #include <tmacros.h>
>
> @@ -65,6 +67,8 @@ const char rtems_test_name[] = "PSXCONFIG 1";
>  #define CONFIGURE_MAXIMUM_POSIX_SEMAPHORES 41
>  #define CONFIGURE_INITIAL_EXTENSIONS RTEMS_TEST_INITIAL_EXTENSION
>
> +#define CONFIGURE_MINIMUM_POSIX_THREAD_STACK_SIZE CPU_STACK_MINIMUM_SIZE
> +
>  #define CONFIGURE_MAXIMUM_POSIX_THREADS 3
>  #define CONFIGURE_MAXIMUM_POSIX_TIMERS 47
>
> @@ -462,8 +466,21 @@ static rtems_task Init(rtems_task_argument argument)
>  #ifdef CONFIGURE_MAXIMUM_POSIX_THREADS
>    for (i = 0; i < CONFIGURE_MAXIMUM_POSIX_THREADS; ++i) {
>      pthread_t thread;
> +    pthread_attr_t attr;
> +    size_t stack_size;
> +
>      eno = pthread_create(&thread, NULL, posix_thread, NULL);
>      rtems_test_assert(eno == 0);
> +
> +    eno = pthread_getattr_np(thread, &attr);
> +    rtems_test_assert(eno == 0);
> +
> +    eno = pthread_attr_getstacksize(&attr, &stack_size);
> +    rtems_test_assert(eno == 0);
> +    rtems_test_assert(stack_size == CPU_STACK_MINIMUM_SIZE);
> +
> +    eno = pthread_attr_destroy(&attr);
> +    rtems_test_assert(eno == 0);
>    }
>    rtems_resource_snapshot_take(&snapshot);
>    rtems_test_assert(
> --
> 2.13.7
>
> _______________________________________________
> devel mailing list
> devel at rtems.org
> http://lists.rtems.org/mailman/listinfo/devel
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.rtems.org/pipermail/devel/attachments/20180807/53af6194/attachment.html>


More information about the devel mailing list