Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

sched/tls: remove PTHREAD_CLEANUP from Kconfig #9527

Merged
merged 1 commit into from Jun 14, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
2 changes: 1 addition & 1 deletion Documentation/guides/pysimcoder.rst
Expand Up @@ -50,7 +50,7 @@ with NuttX. The list is the following:
``CONFIG_BOARDCTL_OS_SYMTAB=y`` ``CONFIG_NSH_READLINE=y``
``CONFIG_BUILTIN=y`` ``CONFIG_NSH_ROMFSETC=y``
``CONFIG_ELF=y`` ``CONFIG_PSEUDOTERM=y``
``CONFIG_FS_BINFS=y`` ``CONFIG_PTHREAD_CLEANUP=y``
``CONFIG_FS_BINFS=y`` ``CONFIG_PTHREAD_CLEANUP_STACKSIZE=1``
``CONFIG_FS_PROCFS=y`` ``CONFIG_PTHREAD_MUTEX_TYPES=y``
``CONFIG_FS_PROCFS_REGISTER=y`` ``CONFIG_PTHREAD_STACK_MIN=1024``
``CONFIG_FS_ROMFS=y`` ``CONFIG_LIBM=y``
Expand Down
2 changes: 1 addition & 1 deletion boards/arm/imxrt/teensy-4.x/configs/pikron-bb/defconfig
Expand Up @@ -134,7 +134,7 @@ CONFIG_NXFONTS_DISABLE_8BPP=y
CONFIG_PRIORITY_INHERITANCE=y
CONFIG_PSEUDOTERM=y
CONFIG_PTABLE_PARTITION=y
CONFIG_PTHREAD_CLEANUP=y
CONFIG_PTHREAD_CLEANUP_STACKSIZE=1
CONFIG_PTHREAD_MUTEX_DEFAULT_PRIO_INHERIT=y
CONFIG_PTHREAD_MUTEX_TYPES=y
CONFIG_PTHREAD_STACK_MIN=1024
Expand Down
2 changes: 1 addition & 1 deletion boards/arm/lpc17xx_40xx/lx_cpu/configs/nsh/defconfig
Expand Up @@ -131,7 +131,7 @@ CONFIG_PREALLOC_TIMERS=4
CONFIG_PRIORITY_INHERITANCE=y
CONFIG_PSEUDOTERM=y
CONFIG_PTABLE_PARTITION=y
CONFIG_PTHREAD_CLEANUP=y
CONFIG_PTHREAD_CLEANUP_STACKSIZE=1
CONFIG_PTHREAD_MUTEX_DEFAULT_PRIO_INHERIT=y
CONFIG_PTHREAD_MUTEX_TYPES=y
CONFIG_PTHREAD_STACK_MIN=1024
Expand Down
2 changes: 1 addition & 1 deletion boards/arm/samv7/same70-xplained/configs/pysim/defconfig
Expand Up @@ -102,7 +102,7 @@ CONFIG_NSH_ROMFSETC=y
CONFIG_POSIX_SPAWN_DEFAULT_STACKSIZE=2048
CONFIG_PREALLOC_TIMERS=4
CONFIG_PSEUDOTERM=y
CONFIG_PTHREAD_CLEANUP=y
CONFIG_PTHREAD_CLEANUP_STACKSIZE=1
CONFIG_PTHREAD_MUTEX_TYPES=y
CONFIG_PTHREAD_STACK_DEFAULT=2048
CONFIG_PTHREAD_STACK_MIN=1024
Expand Down
2 changes: 1 addition & 1 deletion boards/arm/stm32f7/nucleo-144/configs/f746-pysim/defconfig
Expand Up @@ -75,7 +75,7 @@ CONFIG_POSIX_SPAWN_DEFAULT_STACKSIZE=4098
CONFIG_PREALLOC_TIMERS=4
CONFIG_PRIORITY_INHERITANCE=y
CONFIG_PSEUDOTERM=y
CONFIG_PTHREAD_CLEANUP=y
CONFIG_PTHREAD_CLEANUP_STACKSIZE=1
CONFIG_PTHREAD_MUTEX_DEFAULT_PRIO_INHERIT=y
CONFIG_PTHREAD_MUTEX_TYPES=y
CONFIG_PTHREAD_STACK_DEFAULT=2048
Expand Down
2 changes: 1 addition & 1 deletion boards/arm/stm32h7/nucleo-h743zi2/configs/pysim/defconfig
Expand Up @@ -72,7 +72,7 @@ CONFIG_NSH_READLINE=y
CONFIG_POSIX_SPAWN_DEFAULT_STACKSIZE=2048
CONFIG_PREALLOC_TIMERS=4
CONFIG_PRIORITY_INHERITANCE=y
CONFIG_PTHREAD_CLEANUP=y
CONFIG_PTHREAD_CLEANUP_STACKSIZE=1
CONFIG_PTHREAD_MUTEX_TYPES=y
CONFIG_PTHREAD_STACK_DEFAULT=2048
CONFIG_PTHREAD_STACK_MIN=1024
Expand Down
2 changes: 1 addition & 1 deletion boards/sim/sim/sim/configs/asan/defconfig
Expand Up @@ -30,7 +30,7 @@ CONFIG_MM_CUSTOMIZE_MANAGER=y
CONFIG_NSH_ARCHINIT=y
CONFIG_NSH_BUILTIN_APPS=y
CONFIG_NSH_READLINE=y
CONFIG_PTHREAD_CLEANUP=y
CONFIG_PTHREAD_CLEANUP_STACKSIZE=1
CONFIG_PTHREAD_MUTEX_TYPES=y
CONFIG_PTHREAD_MUTEX_UNSAFE=y
CONFIG_READLINE_TABCOMPLETION=y
Expand Down
2 changes: 1 addition & 1 deletion boards/sim/sim/sim/configs/kasan/defconfig
Expand Up @@ -33,7 +33,7 @@ CONFIG_MM_UBSAN=y
CONFIG_NSH_ARCHINIT=y
CONFIG_NSH_BUILTIN_APPS=y
CONFIG_NSH_READLINE=y
CONFIG_PTHREAD_CLEANUP=y
CONFIG_PTHREAD_CLEANUP_STACKSIZE=1
CONFIG_PTHREAD_MUTEX_TYPES=y
CONFIG_PTHREAD_MUTEX_UNSAFE=y
CONFIG_READLINE_TABCOMPLETION=y
Expand Down
1 change: 0 additions & 1 deletion boards/sim/sim/sim/configs/ostest/defconfig
Expand Up @@ -24,7 +24,6 @@ CONFIG_MM_KASAN=y
CONFIG_MM_UBSAN=y
CONFIG_MM_UBSAN_TRAP_ON_ERROR=y
CONFIG_PRIORITY_INHERITANCE=y
CONFIG_PTHREAD_CLEANUP=y
CONFIG_PTHREAD_CLEANUP_STACKSIZE=3
CONFIG_PTHREAD_MUTEX_TYPES=y
CONFIG_RAM_START=0x00000000
Expand Down
1 change: 0 additions & 1 deletion boards/sim/sim/sim/configs/rtptools/defconfig
Expand Up @@ -87,7 +87,6 @@ CONFIG_NSH_READLINE=y
CONFIG_PREALLOC_TIMERS=4
CONFIG_PSEUDOFS_SOFTLINKS=y
CONFIG_PSEUDOTERM=y
CONFIG_PTHREAD_CLEANUP=y
CONFIG_PTHREAD_CLEANUP_STACKSIZE=2
CONFIG_PTHREAD_MUTEX_TYPES=y
CONFIG_RAMMTD=y
Expand Down
1 change: 0 additions & 1 deletion boards/sim/sim/sim/configs/tcpblaster/defconfig
Expand Up @@ -86,7 +86,6 @@ CONFIG_NSH_READLINE=y
CONFIG_PREALLOC_TIMERS=4
CONFIG_PSEUDOFS_SOFTLINKS=y
CONFIG_PSEUDOTERM=y
CONFIG_PTHREAD_CLEANUP=y
CONFIG_PTHREAD_CLEANUP_STACKSIZE=2
CONFIG_PTHREAD_MUTEX_TYPES=y
CONFIG_RAMMTD=y
Expand Down
2 changes: 1 addition & 1 deletion include/nuttx/pthread.h
Expand Up @@ -179,7 +179,7 @@ void nx_pthread_exit(FAR void *exit_value) noreturn_function;
*
****************************************************************************/

#ifdef CONFIG_PTHREAD_CLEANUP
#if defined(CONFIG_PTHREAD_CLEANUP_STACKSIZE) && CONFIG_PTHREAD_CLEANUP_STACKSIZE > 0
struct tls_info_s;
void pthread_cleanup_popall(FAR struct tls_info_s *tls);
#endif
Expand Down
4 changes: 2 additions & 2 deletions include/nuttx/tls.h
Expand Up @@ -156,7 +156,7 @@ struct task_info_s

/* This structure describes one element of the pthread cleanup stack */

#ifdef CONFIG_PTHREAD_CLEANUP
#if defined(CONFIG_PTHREAD_CLEANUP_STACKSIZE) && CONFIG_PTHREAD_CLEANUP_STACKSIZE > 0
struct pthread_cleanup_s
{
pthread_cleanup_t pc_cleaner; /* Cleanup callback address */
Expand Down Expand Up @@ -206,7 +206,7 @@ struct tls_info_s
uintptr_t tl_elem[CONFIG_TLS_NELEM]; /* TLS elements */
#endif

#ifdef CONFIG_PTHREAD_CLEANUP
#if defined(CONFIG_PTHREAD_CLEANUP_STACKSIZE) && CONFIG_PTHREAD_CLEANUP_STACKSIZE > 0
/* tos - The index to the next available entry at the top of the stack.
* stack - The pre-allocated clean-up stack memory.
*/
Expand Down
4 changes: 2 additions & 2 deletions include/pthread.h
Expand Up @@ -417,7 +417,7 @@ typedef FAR struct pthread_spinlock_s pthread_spinlock_t;
# endif
#endif /* CONFIG_PTHREAD_SPINLOCKS */

#ifdef CONFIG_PTHREAD_CLEANUP
#if defined(CONFIG_PTHREAD_CLEANUP_STACKSIZE) && CONFIG_PTHREAD_CLEANUP_STACKSIZE > 0
/* This type describes the pthread cleanup callback (non-standard) */

typedef CODE void (*pthread_cleanup_t)(FAR void *arg);
Expand Down Expand Up @@ -528,7 +528,7 @@ void pthread_testcancel(void);
* is canceled.
*/

#ifdef CONFIG_PTHREAD_CLEANUP
#if defined(CONFIG_PTHREAD_CLEANUP_STACKSIZE) && CONFIG_PTHREAD_CLEANUP_STACKSIZE > 0
void pthread_cleanup_pop(int execute);
void pthread_cleanup_push(pthread_cleanup_t routine, FAR void *arg);
#endif
Expand Down
2 changes: 1 addition & 1 deletion libs/libc/pthread/Make.defs
Expand Up @@ -66,7 +66,7 @@ ifeq ($(CONFIG_PTHREAD_SPINLOCKS),y)
CSRCS += pthread_spinlock.c
endif

ifeq ($(CONFIG_PTHREAD_CLEANUP),y)
ifneq ($(CONFIG_PTHREAD_CLEANUP_STACKSIZE),0)
CSRCS += pthread_cleanup.c
endif

Expand Down
4 changes: 2 additions & 2 deletions libs/libc/pthread/pthread_cleanup.c
Expand Up @@ -32,7 +32,7 @@
#include <nuttx/tls.h>
#include <nuttx/pthread.h>

#ifdef CONFIG_PTHREAD_CLEANUP
#if defined(CONFIG_PTHREAD_CLEANUP_STACKSIZE) && CONFIG_PTHREAD_CLEANUP_STACKSIZE > 0

/****************************************************************************
* Private Functions
Expand Down Expand Up @@ -186,4 +186,4 @@ void pthread_cleanup_popall(FAR struct tls_info_s *tls)
sched_unlock();
}

#endif /* CONFIG_PTHREAD_CLEANUP */
#endif /* defined(CONFIG_PTHREAD_CLEANUP_STACKSIZE) && CONFIG_PTHREAD_CLEANUP_STACKSIZE > 0 */
2 changes: 1 addition & 1 deletion libs/libc/pthread/pthread_exit.c
Expand Up @@ -60,7 +60,7 @@ void pthread_exit(FAR void *exit_value)

task_setcancelstate(TASK_CANCEL_DISABLE, NULL);

#ifdef CONFIG_PTHREAD_CLEANUP
#if defined(CONFIG_PTHREAD_CLEANUP_STACKSIZE) && CONFIG_PTHREAD_CLEANUP_STACKSIZE > 0
pthread_cleanup_popall(tls_get_info());
#endif

Expand Down
6 changes: 3 additions & 3 deletions libs/libc/pthread/pthread_rwlock_rdlock.c
Expand Up @@ -33,7 +33,7 @@
* Private Functions
****************************************************************************/

#ifdef CONFIG_PTHREAD_CLEANUP
#if defined(CONFIG_PTHREAD_CLEANUP_STACKSIZE) && CONFIG_PTHREAD_CLEANUP_STACKSIZE > 0
static void rdlock_cleanup(FAR void *arg)
{
FAR pthread_rwlock_t *rw_lock = (FAR pthread_rwlock_t *)arg;
Expand Down Expand Up @@ -109,7 +109,7 @@ int pthread_rwlock_clockrdlock(FAR pthread_rwlock_t *rw_lock,
return err;
}

#ifdef CONFIG_PTHREAD_CLEANUP
#if defined(CONFIG_PTHREAD_CLEANUP_STACKSIZE) && CONFIG_PTHREAD_CLEANUP_STACKSIZE > 0
pthread_cleanup_push(&rdlock_cleanup, rw_lock);
#endif
while ((err = tryrdlock(rw_lock)) == EBUSY)
Expand All @@ -130,7 +130,7 @@ int pthread_rwlock_clockrdlock(FAR pthread_rwlock_t *rw_lock,
}
}

#ifdef CONFIG_PTHREAD_CLEANUP
#if defined(CONFIG_PTHREAD_CLEANUP_STACKSIZE) && CONFIG_PTHREAD_CLEANUP_STACKSIZE > 0
pthread_cleanup_pop(0);
#endif

Expand Down
6 changes: 3 additions & 3 deletions libs/libc/pthread/pthread_rwlock_wrlock.c
Expand Up @@ -33,7 +33,7 @@
* Private Functions
****************************************************************************/

#ifdef CONFIG_PTHREAD_CLEANUP
#if defined(CONFIG_PTHREAD_CLEANUP_STACKSIZE) && CONFIG_PTHREAD_CLEANUP_STACKSIZE > 0
static void wrlock_cleanup(FAR void *arg)
{
FAR pthread_rwlock_t *rw_lock = (FAR pthread_rwlock_t *)arg;
Expand Down Expand Up @@ -104,7 +104,7 @@ int pthread_rwlock_clockwrlock(FAR pthread_rwlock_t *rw_lock,

rw_lock->num_writers++;

#ifdef CONFIG_PTHREAD_CLEANUP
#if defined(CONFIG_PTHREAD_CLEANUP_STACKSIZE) && CONFIG_PTHREAD_CLEANUP_STACKSIZE > 0
pthread_cleanup_push(&wrlock_cleanup, rw_lock);
#endif
while (rw_lock->write_in_progress || rw_lock->num_readers > 0)
Expand All @@ -125,7 +125,7 @@ int pthread_rwlock_clockwrlock(FAR pthread_rwlock_t *rw_lock,
}
}

#ifdef CONFIG_PTHREAD_CLEANUP
#if defined(CONFIG_PTHREAD_CLEANUP_STACKSIZE) && CONFIG_PTHREAD_CLEANUP_STACKSIZE > 0
pthread_cleanup_pop(0);
#endif

Expand Down
4 changes: 2 additions & 2 deletions libs/libc/stdlib/lib_exit.c
Expand Up @@ -96,7 +96,7 @@ void exit(int status)

task_setcancelstate(TASK_CANCEL_DISABLE, NULL);

#ifdef CONFIG_PTHREAD_CLEANUP
#if defined(CONFIG_PTHREAD_CLEANUP_STACKSIZE) && CONFIG_PTHREAD_CLEANUP_STACKSIZE > 0
pthread_cleanup_popall(tls_get_info());
#endif

Expand Down Expand Up @@ -145,7 +145,7 @@ void quick_exit(int status)

task_setcancelstate(TASK_CANCEL_DISABLE, NULL);

#ifdef CONFIG_PTHREAD_CLEANUP
#if defined(CONFIG_PTHREAD_CLEANUP_STACKSIZE) && CONFIG_PTHREAD_CLEANUP_STACKSIZE > 0
pthread_cleanup_popall(tls_get_info());
#endif

Expand Down
17 changes: 5 additions & 12 deletions sched/Kconfig
Expand Up @@ -752,22 +752,15 @@ config PTHREAD_MUTEX_DEFAULT_PRIO_INHERIT

endchoice # Default pthread mutex protocol

config PTHREAD_CLEANUP
bool "pthread cleanup stack"
default n
---help---
Select to enable support for pthread exit cleanup stacks. This
enables the interfaces pthread_cleanup_push() and
pthread_cleanup_pop().

config PTHREAD_CLEANUP_STACKSIZE
int "pthread cleanup stack size"
default 1
range 1 32
depends on PTHREAD_CLEANUP
default 0
range 0 32
---help---
The maximum number of cleanup actions that may be pushed by
pthread_clean_push(). This setting will increase the size of EVERY
pthread_cleanup_push().
if 0 disable the interfaces pthread_cleanup_push() and pthread_cleanup_pop().
This setting will increase the size of EVERY
pthread task control block by about n * CONFIG_PTHREAD_CLEANUP_STACKSIZE
where n is the size of a pointer, 2 * sizeof(uintptr_t), this would be
8 for a CPU with 32-bit addressing and 4 for a CPU with 16-bit
Expand Down
2 changes: 1 addition & 1 deletion sched/pthread/pthread_cancel.c
Expand Up @@ -90,7 +90,7 @@ int pthread_cancel(pthread_t thread)

/* Refer to tls_get_info() */

#ifdef CONFIG_PTHREAD_CLEANUP
#if defined(CONFIG_PTHREAD_CLEANUP_STACKSIZE) && CONFIG_PTHREAD_CLEANUP_STACKSIZE > 0
pthread_cleanup_popall(tcb->stack_alloc_ptr);
#endif

Expand Down