| # Copyright (c) 2024 Tenstorrent |
| # |
| # SPDX-License-Identifier: Apache-2.0 |
| |
| config POSIX_API |
| bool "POSIX APIs" |
| depends on !NATIVE_APPLICATION |
| select NATIVE_LIBC_INCOMPATIBLE |
| select POSIX_BASE_DEFINITIONS # clock_gettime(), pthread_create(), sem_get(), etc |
| select POSIX_AEP_REALTIME_MINIMAL # CLOCK_MONOTONIC, pthread_attr_setstack(), etc |
| select POSIX_NETWORKING if NETWORKING # inet_ntoa(), socket(), etc |
| imply EVENTFD # eventfd(), eventfd_read(), eventfd_write() |
| imply POSIX_FD_MGMT # open(), close(), read(), write() |
| imply POSIX_MESSAGE_PASSING # mq_open(), etc |
| imply POSIX_MULTI_PROCESS # sleep(), getpid(), etc |
| help |
| This option enables the required POSIX System Interfaces (base definitions), all of PSE51, |
| and some features found in PSE52. |
| |
| Note: in the future, this option may be deprecated in favour of subprofiling options. |
| |
| choice POSIX_AEP_CHOICE |
| prompt "POSIX Subprofile" |
| default POSIX_AEP_CHOICE_NONE |
| help |
| This choice is intended to help users select the correct POSIX profile for their |
| application. Choices are based on IEEE 1003.13-2003 (now inactive / reserved) and |
| extrapolated to the more recent Subprofiling Option Groups in IEEE 1003.3-2017. |
| |
| For more information, please refer to |
| https://standards.ieee.org/ieee/1003.13/3322/ |
| https://pubs.opengroup.org/onlinepubs/9699919799/xrat/V4_subprofiles.html |
| |
| config POSIX_AEP_CHOICE_NONE |
| bool "No pre-defined POSIX subprofile" |
| help |
| No pre-defined POSIX profile is selected. |
| |
| config POSIX_AEP_CHOICE_BASE |
| bool "Base definitions (system interfaces)" |
| depends on !NATIVE_APPLICATION |
| select NATIVE_LIBC_INCOMPATIBLE |
| select POSIX_BASE_DEFINITIONS |
| help |
| Only enable the base definitions required for all POSIX systems. |
| |
| For more information, please see |
| https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap02.html#tag_02_01_03_01 |
| |
| config POSIX_AEP_CHOICE_PSE51 |
| bool "Minimal Realtime System Profile (PSE51)" |
| depends on !NATIVE_APPLICATION |
| select NATIVE_LIBC_INCOMPATIBLE |
| select POSIX_BASE_DEFINITIONS |
| select POSIX_AEP_REALTIME_MINIMAL |
| help |
| PSE51 includes the POSIX Base Definitions (System Interfaces) as well as several Options and |
| Option Groups to facilitate device I/O, signals, mandatory configuration utilities, and |
| threading. |
| |
| For more information, please see |
| https://pubs.opengroup.org/onlinepubs/9699919799/xrat/V4_subprofiles.html |
| |
| config POSIX_AEP_CHOICE_PSE52 |
| bool "Realtime Controller System Profile (PSE52)" |
| depends on !NATIVE_APPLICATION |
| select NATIVE_LIBC_INCOMPATIBLE |
| select POSIX_BASE_DEFINITIONS |
| select POSIX_AEP_REALTIME_MINIMAL |
| select POSIX_AEP_REALTIME_CONTROLLER |
| help |
| PSE52 includes the POSIX Base Definitions (System Interfaces) as well as all features of |
| PSE51. Additionally, it includes interfaces for file descriptor management, filesystem |
| support, support for message queues, and tracing. |
| |
| For more information, please see |
| https://pubs.opengroup.org/onlinepubs/9699919799/xrat/V4_subprofiles.html |
| |
| config POSIX_AEP_CHOICE_PSE53 |
| bool "Dedicated Realtime System Profile (PSE53)" |
| depends on !NATIVE_APPLICATION |
| select NATIVE_LIBC_INCOMPATIBLE |
| select POSIX_BASE_DEFINITIONS |
| select POSIX_AEP_REALTIME_MINIMAL |
| select POSIX_AEP_REALTIME_CONTROLLER |
| select POSIX_AEP_REALTIME_DEDICATED |
| help |
| PSE53 includes the POSIX Base Definitions (System Interfaces) as well as all features of |
| PSE52. Additionally, it includes interfaces for POSIX multi-processing, networking, pipes, |
| and prioritized I/O. |
| |
| For more information, please see |
| https://pubs.opengroup.org/onlinepubs/9699919799/xrat/V4_subprofiles.html |
| |
| # TODO: PSE54: Multi-purpose Realtime System Profile |
| |
| endchoice # POSIX_AEP_CHOICE |
| |
| # Base Definitions (System Interfaces) |
| config POSIX_BASE_DEFINITIONS |
| bool |
| select POSIX_ASYNCHRONOUS_IO |
| select POSIX_BARRIERS |
| select POSIX_CLOCK_SELECTION |
| # select POSIX_MAPPED_FILES |
| # select POSIX_MEMORY_PROTECTION |
| select POSIX_READER_WRITER_LOCKS |
| select POSIX_REALTIME_SIGNALS |
| select POSIX_SEMAPHORES |
| select POSIX_SPIN_LOCKS |
| select POSIX_THREAD_SAFE_FUNCTIONS |
| select POSIX_THREADS |
| select POSIX_TIMEOUTS |
| select POSIX_TIMERS |
| help |
| This option is not user configurable. It may be configured indirectly by selecting |
| CONFIG_POSIX_AEP_CHOICE_BASE=y. |
| |
| For more information, please see |
| https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap02.html#tag_02_01_03_01 |
| |
| config POSIX_AEP_REALTIME_MINIMAL |
| bool |
| # Option Groups |
| select POSIX_DEVICE_IO |
| select POSIX_SIGNALS |
| select POSIX_SINGLE_PROCESS |
| select XSI_THREADS_EXT |
| # Options |
| select POSIX_FSYNC |
| # select POSIX_MEMLOCK |
| # select POSIX_MEMLOCK_RANGE |
| select POSIX_MONOTONIC_CLOCK |
| # select POSIX_SHARED_MEMORY_OBJECTS |
| select POSIX_SYNCHRONIZED_IO |
| select POSIX_THREAD_ATTR_STACKADDR |
| select POSIX_THREAD_ATTR_STACKSIZE |
| select POSIX_THREAD_CPUTIME |
| select POSIX_THREAD_PRIO_INHERIT |
| select POSIX_THREAD_PRIO_PROTECT |
| select POSIX_THREAD_PRIORITY_SCHEDULING |
| # select POSIX_THREAD_SPORADIC_SERVER |
| help |
| This option is not user configurable. It may be configured indirectly by selecting |
| CONFIG_POSIX_AEP_CHOICE_PSE51=y. |
| |
| For more information, please see |
| https://pubs.opengroup.org/onlinepubs/9699919799/xrat/V4_subprofiles.html |
| |
| config POSIX_AEP_REALTIME_CONTROLLER |
| bool |
| # Option Groups |
| select POSIX_FD_MGMT |
| select POSIX_FILE_SYSTEM |
| # Options |
| select POSIX_MESSAGE_PASSING |
| # select POSIX_TRACE |
| # select POSIX_TRACE_EVENT_FILTER |
| # select POSIX_TRACE_LOG |
| help |
| This option is not user configurable. It may be configured indirectly by selecting |
| CONFIG_POSIX_AEP_CHOICE_PSE52=y. |
| |
| For more information, please see |
| https://pubs.opengroup.org/onlinepubs/9699919799/xrat/V4_subprofiles.html |
| |
| config POSIX_AEP_REALTIME_DEDICATED |
| bool |
| # Option Groups |
| select POSIX_MULTI_PROCESS |
| select POSIX_NETWORKING |
| # select POSIX_PIPE |
| # select POSIX_SIGNAL_JUMP |
| # Options |
| select POSIX_CPUTIME |
| # select POSIX_PRIORITIZED_IO |
| select POSIX_PRIORITY_SCHEDULING |
| select POSIX_RAW_SOCKETS |
| # select POSIX_SPAWN |
| # select POSIX_SPORADIC_SERVER |
| help |
| This option is not user configurable. It may be configured indirectly by selecting |
| CONFIG_POSIX_AEP_CHOICE_PSE53=y. |
| |
| For more information, please see |
| https://pubs.opengroup.org/onlinepubs/9699919799/xrat/V4_subprofiles.html |