# 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