187 lines
6.6 KiB
Plaintext
187 lines
6.6 KiB
Plaintext
# 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
|