| # Copyright (c) 2017 Intel Corporation |
| # Copyright (c) 2023 Meta |
| # |
| # SPDX-License-Identifier: Apache-2.0 |
| |
| TYPE = PTHREAD |
| type = pthread_t |
| type-function = pthread_create |
| rsource "Kconfig.template.pooled_ipc_type" |
| |
| if PTHREAD |
| |
| 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_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. |
| |
| endif |