| # Copyright (c) 2017 Intel Corporation |
| # Copyright (c) 2023 Meta |
| # Copyright (c) 2024 Tenstorrent AI ULC |
| # |
| # SPDX-License-Identifier: Apache-2.0 |
| |
| menuconfig POSIX_THREADS |
| bool "POSIX thread support" |
| help |
| Select 'y' here to enable POSIX threads, mutexes, condition variables, and thread-specific |
| storage. |
| |
| For more information please see |
| https://pubs.opengroup.org/onlinepubs/9699919799/xrat/V4_subprofiles.html |
| |
| if POSIX_THREADS |
| |
| config POSIX_THREAD_THREADS_MAX |
| int "Maximum number of POSIX threads" |
| default 5 |
| help |
| Maximum simultaneously active threads in a POSIX application. |
| |
| For more information, see |
| https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/limits.h.html |
| |
| config MAX_PTHREAD_MUTEX_COUNT |
| int "Maximum number of POSIX mutexes" |
| default 5 |
| help |
| Maximum simultaneously active mutexes in a POSIX application. |
| |
| config MAX_PTHREAD_COND_COUNT |
| int "Maximum number of POSIX condition variables" |
| default 5 |
| help |
| Maximum simultaneously active condition variables in a POSIX application. |
| |
| config POSIX_THREAD_KEYS_MAX |
| int "Maximum number of POSIX thread-specific-storage keys" |
| default 5 |
| help |
| Maximum simultaneously active thread-specific-storage keys in a POSIX application. |
| |
| For more information, see |
| https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/limits.h.html |
| |
| config PTHREAD_RECYCLER_DELAY_MS |
| int "Delay for reclaiming dynamic pthread stacks (ms)" |
| default 100 |
| help |
| Prior to a POSIX thread terminating via k_thread_abort(), scheduled |
| work is added to the system workqueue (SWQ) so that any resources |
| allocated by the thread (e.g. thread stack from a pool or the heap) |
| can be released back to the system. Because resources are also freed |
| on calls to pthread_create() there is no need to worry about resource |
| starvation. |
| |
| This option sets the number of milliseconds by which to defer |
| scheduled work. |
| |
| Note: this option should be considered temporary and will likely be |
| removed once a more synchronous solution is available. |
| |
| config POSIX_THREAD_ATTR_STACKADDR |
| bool "Support getting and setting POSIX thread stack addresses" |
| help |
| Enable this option to use pthread_attr_getstackaddr() and |
| pthread_attr_setstackaddr(). |
| |
| This option was removed in IEEE 1003.1-2017 in favour of |
| pthread_attr_getstack() and pthread_attr_setstack(). |
| |
| For more information, please see |
| https://pubs.opengroup.org/onlinepubs/009696799/functions/pthread_attr_getstackaddr.html |
| https://pubs.opengroup.org/onlinepubs/9699919799/xrat/V4_xsh_chap03.html |
| https://pubs.opengroup.org/onlinepubs/9699919799/functions/V2_chap02.html#tag_15_09_08 |
| |
| config POSIX_THREAD_ATTR_STACKSIZE |
| bool "Support getting and setting POSIX thread stack sizes" |
| help |
| Enable this option to use pthread_attr_getstacksize() or |
| pthread_attr_setstacksize(). |
| |
| For more information, please see |
| https://pubs.opengroup.org/onlinepubs/009696699/functions/pthread_attr_getstacksize.html |
| |
| config POSIX_THREADS_EXT |
| bool "Extended POSIX thread support" |
| help |
| Enable this option to use pthread_attr_getguardsize(), pthread_attr_setguardsize(), |
| pthread_mutexattr_gettype(), or pthread_mutexattr_settype(). |
| |
| For more information, please see |
| https://pubs.opengroup.org/onlinepubs/9699919799/xrat/V4_subprofiles.html |
| |
| config POSIX_THREAD_PRIORITY_SCHEDULING |
| bool "Run POSIX threads with different priorities and schedulers" |
| help |
| Enabling this option allows the application to configure different priorities and |
| scheduling algorithms for different threads via functions such as pthread_setschedparam() |
| and pthread_setschedprio(). This is required for Realtime Threads and Advanced Realtime |
| Threads. |
| |
| For more information, please see |
| https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap02.html#tag_02_01_06 |
| https://man7.org/linux/man-pages/man7/posixoptions.7.html |
| |
| config POSIX_PTHREAD_ATTR_STACKSIZE_BITS |
| int "Significant bits for pthread_attr_t stacksize" |
| range 8 31 |
| default 23 |
| help |
| This value plays a part in determining the maximum supported |
| pthread_attr_t stacksize. Valid stacksizes are in the range |
| [1, N], where N = 1 << M, and M is this configuration value. |
| |
| config POSIX_PTHREAD_ATTR_GUARDSIZE_BITS |
| int "Significant bits for pthread_attr_t guardsize" |
| range 1 31 |
| default 9 |
| help |
| This value plays a part in determining the maximum supported |
| pthread_attr_t guardsize. Valid guardsizes are in the range |
| [0, N-1], where N = 1 << M, and M is this configuration value. |
| |
| Actual guardsize values may be rounded-up. |
| |
| config POSIX_PTHREAD_ATTR_GUARDSIZE_DEFAULT |
| int "Default size of stack guard area" |
| default 0 |
| help |
| This is the default amount of space to reserve at the overflow end of a |
| pthread stack. Since Zephyr already supports both software-based stack |
| protection (canaries) and hardware-based stack protection (MMU or MPU), |
| this is set to 0 by default. However, a conforming application would be |
| required to set this to PAGESIZE. Eventually, this option might |
| facilitate a more dynamic approach to guard areas (via software or |
| hardware) but for now it simply increases the size of thread stacks. |
| |
| config POSIX_THREAD_PRIO_INHERIT |
| bool "POSIX mutex priority inheritance" |
| help |
| Select 'y' here to enable POSIX mutex priority inheritance. |
| |
| For more information, please see |
| https://pubs.opengroup.org/onlinepubs/9699919799/functions/pthread_mutexattr_getprotocol.html |
| |
| config POSIX_THREAD_PRIO_PROTECT |
| bool "POSIX mutex priority protection" |
| help |
| Select 'y' here to enable POSIX mutex priority protection. |
| |
| For more information, please see |
| https://pubs.opengroup.org/onlinepubs/9699919799/functions/pthread_mutexattr_getprotocol.html |
| |
| config POSIX_THREAD_SAFE_FUNCTIONS |
| bool "POSIX thread-safe functions" |
| select POSIX_FILE_SYSTEM_R if POSIX_FILE_SYSTEM |
| select POSIX_C_LANG_SUPPORT_R |
| help |
| Select 'y' here to enable POSIX thread-safe functions including asctime_r(), ctime_r(), |
| flockfile(), ftrylockfile(), funlockfile(), getc_unlocked(), getchar_unlocked(), |
| getgrgid_r(), getgrnam_r(), getpwnam_r(), getpwuid_r(), gmtime_r(), localtime_r(), |
| putc_unlocked(), putchar_unlocked(), rand_r(), readdir_r(), strerror_r(), and strtok_r(). |
| |
| For more information, please see |
| https://pubs.opengroup.org/onlinepubs/9699919799/xrat/V4_xsh_chap02.html#tag_22_02_09_07 |
| |
| module = PTHREAD |
| module-str = POSIX thread |
| source "subsys/logging/Kconfig.template.log_config" |
| |
| module = PTHREAD_MUTEX |
| module-str = POSIX mutex |
| source "subsys/logging/Kconfig.template.log_config" |
| |
| module = PTHREAD_COND |
| module-str = POSIX condition variable |
| source "subsys/logging/Kconfig.template.log_config" |
| |
| module = PTHREAD_KEY |
| module-str = POSIX thread-specific data |
| source "subsys/logging/Kconfig.template.log_config" |
| |
| endif # POSIX_THREADS |