/** @mainpage Overview @brief The Portable Operating System Interface (POSIX) is a family of standards specified by the IEEE Computer Society for maintaining compatibility between operating systems. With FreeRTOS+POSIX, an existing POSIX compliant application can be easily ported to FreeRTOS ecosystem, and thus leveraging the entire AWS IoT service stack.

FreeRTOS+POSIX partially implements IEEE Std 1003.1-2017 Edition The Open Group Technical Standard Base Specifications, Issue 7. It currently supports:
- errno.h - fcntl.h - mqueue.h - pthread.h - sched.h - semaphore.h - signal.h - sys/types.h - time.h - unistd.h Please see each above header file for detailed FreeRTOS+POSIX implementation of POSIX. To adopt FreeRTOS+POSIX in your project, these porting related header files are needed. | FreeRTOS platform specific POSIX configuration | High Level Description | | :--------------------------------------------- | :--------------------- | | FreeRTOS_POSIX.h. | This header file brings in dependencies required by FreeRTOS+POSIX. This file must be included before all other FreeRTOS+POSIX includes. | | FreeRTOS_POSIX_portable_default.h | Defaults for port-specific configuration of FreeRTOS+POSIX. | | FreeRTOS_POSIX_portable.h | Port-specific configuration overwrite of FreeRTOS+POSIX. As an example, /lib/FreeRTOS-Plus-POSIX/include/portable/pc/windows/FreeRTOS_POSIX_portable.h, Windows simulator uses the defaults, thus does not need to overwrite anything. | */ /** * @paramstructs_group{posix} * @paramstructs_brief{posix,POSIX} */ /** * @handles_group{posix} * @handles_brief{posix library} */ /** @config_page{posix} @config_brief{posix library} @section posixconfigENABLE_CLOCK_T @brief Set this to `1` defines clock_t. Third party code may already define this handle. Set to `1` to avoid redefinition. @configpossible `0` or `1`
@configdefault `1` @section posixconfigENABLE_CLOCKID_T @brief Set this to `1` defines clockid_t. Third party code may already define this handle. Set to `1` to avoid redefinition. @configpossible `0` or `1`
@configdefault `1` @section posixconfigENABLE_MODE_T @brief Set this to `1` defines mode_t. Third party code may already define this handle. Set to `1` to avoid redefinition. @configpossible `0` or `1`
@configdefault `1` @section posixconfigENABLE_PID_T @brief Set this to `1` defines pid_t. Third party code may already define this handle. Set to `1` to avoid redefinition. @configpossible `0` or `1`
@configdefault `1` @section posixconfigENABLE_PTHREAD_ATTR_T @brief Set this to `1` defines pthread_attr_t. Third party code may already define this handle. Set to `1` to avoid redefinition. @configpossible `0` or `1`
@configdefault `1` @section posixconfigENABLE_PTHREAD_BARRIER_T @brief Set this to `1` defines pthread_barrier_t. Third party code may already define this handle. Set to `1` to avoid redefinition. @configpossible `0` or `1`
@configdefault `1` @section posixconfigENABLE_PTHREAD_COND_T @brief Set this to `1` defines pthread_cond_t. Third party code may already define this handle. Set to `1` to avoid redefinition. @configpossible `0` or `1`
@configdefault `1` @section posixconfigENABLE_PTHREAD_CONDATTR_T @brief Set this to `1` defines pthread_condattr_t. Third party code may already define this handle. Set to `1` to avoid redefinition. @configpossible `0` or `1`
@configdefault `1` @section posixconfigENABLE_PTHREAD_MUTEX_T @brief Set this to `1` defines pthread_mutex_t. Third party code may already define this handle. Set to `1` to avoid redefinition. @configpossible `0` or `1`
@configdefault `1` @section posixconfigENABLE_PTHREAD_MUTEXATTR_T @brief Set this to `1` defines pthread_mutexattr_t. Third party code may already define this handle. Set to `1` to avoid redefinition. @configpossible `0` or `1`
@configdefault `1` @section posixconfigENABLE_PTHREAD_T @brief Set this to `1` defines pthread_t. Third party code may already define this handle. Set to `1` to avoid redefinition. @configpossible `0` or `1`
@configdefault `1` @section posixconfigENABLE_SSIZE_T @brief Set this to `1` defines ssize_t. Third party code may already define this handle. Set to `1` to avoid redefinition. @configpossible `0` or `1`
@configdefault `1` @section posixconfigENABLE_TIME_T @brief Set this to `1` defines time_t. Third party code may already define this handle. Set to `1` to avoid redefinition. @configpossible `0` or `1`
@configdefault `1` @section posixconfigENABLE_TIMER_T @brief Set this to `1` defines timer_t. Third party code may already define this handle. Set to `1` to avoid redefinition. @configpossible `0` or `1`
@configdefault `1` @section posixconfigENABLE_USECONDS_T @brief Set this to `1` defines useconds_t. Third party code may already define this handle. Set to `1` to avoid redefinition. @configpossible `0` or `1`
@configdefault `1` @section posixconfigENABLE_OFF_T @brief Set this to `1` defines off_t. Third party code may already define this handle. Set to `1` to avoid redefinition. @configpossible `0` or `1`
@configdefault `1` @section posixconfigENABLE_TIMESPEC @brief Set this to `1` defines struct timespec. Third party code may already define this handle. Set to `1` to avoid redefinition. @configpossible `0` or `1`
@configdefault `1` @section posixconfigENABLE_ITIMERSPEC @brief Set this to `1` defines struct itimerspec. Third party code may already define this handle. Set to `1` to avoid redefinition. @configpossible `0` or `1`
@configdefault `1` */ /** * @functions_page{posix,POSIX} * @functions_brief{posix} * - @function_name{mq_close} * @function_brief{mq_close} * - @function_name{mq_getattr} * @function_brief{mq_getattr} * - @function_name{mq_open} * @function_brief{mq_open} * - @function_name{mq_receive} * @function_brief{mq_receive} * - @function_name{mq_send} * @function_brief{mq_send} * - @function_name{mq_timedreceive} * @function_brief{mq_timedreceive} * - @function_name{mq_timedsend} * @function_brief{mq_timedsend} * - @function_name{mq_unlink} * @function_brief{mq_unlink} * - @function_name{pthread_attr_destroy} * @function_brief{pthread_attr_destroy} * - @function_name{pthread_attr_getdetachstate} * @function_brief{pthread_attr_getdetachstate} * - @function_name{pthread_attr_getschedparam} * @function_brief{pthread_attr_getschedparam} * - @function_name{pthread_attr_getstacksize} * @function_brief{pthread_attr_getstacksize} * - @function_name{pthread_attr_init} * @function_brief{pthread_attr_init} * - @function_name{pthread_attr_setdetachstate} * @function_brief{pthread_attr_setdetachstate} * - @function_name{pthread_attr_setschedparam} * @function_brief{pthread_attr_setschedparam} * - @function_name{pthread_attr_setschedpolicy} * @function_brief{pthread_attr_setschedpolicy} * - @function_name{pthread_attr_setstacksize} * @function_brief{pthread_attr_setstacksize} * - @function_name{pthread_barrier_destroy} * @function_brief{pthread_barrier_destroy} * - @function_name{pthread_barrier_init} * @function_brief{pthread_barrier_init} * - @function_name{pthread_barrier_wait} * @function_brief{pthread_barrier_wait} * - @function_name{pthread_create} * @function_brief{pthread_create} * - @function_name{pthread_cond_broadcast} * @function_brief{pthread_cond_broadcast} * - @function_name{pthread_cond_destroy} * @function_brief{pthread_cond_destroy} * - @function_name{pthread_cond_init} * @function_brief{pthread_cond_init} * - @function_name{pthread_cond_signal} * @function_brief{pthread_cond_signal} * - @function_name{pthread_cond_timedwait} * @function_brief{pthread_cond_timedwait} * - @function_name{pthread_cond_wait} * @function_brief{pthread_cond_wait} * - @function_name{pthread_equal} * @function_brief{pthread_equal} * - @function_name{pthread_exit} * @function_brief{pthread_exit} * - @function_name{pthread_getschedparam} * @function_brief{pthread_getschedparam} * - @function_name{pthread_join} * @function_brief{pthread_join} * - @function_name{pthread_mutex_destroy} * @function_brief{pthread_mutex_destroy} * - @function_name{pthread_mutex_init} * @function_brief{pthread_mutex_init} * - @function_name{pthread_mutex_lock} * @function_brief{pthread_mutex_lock} * - @function_name{pthread_mutex_timedlock} * @function_brief{pthread_mutex_timedlock} * - @function_name{pthread_mutex_trylock} * @function_brief{pthread_mutex_trylock} * - @function_name{pthread_mutex_unlock} * @function_brief{pthread_mutex_unlock} * - @function_name{pthread_mutexattr_destroy} * @function_brief{pthread_mutexattr_destroy} * - @function_name{pthread_mutexattr_gettype} * @function_brief{pthread_mutexattr_gettype} * - @function_name{pthread_cond_timedwait} * @function_brief{pthread_cond_timedwait} * - @function_name{pthread_mutexattr_init} * @function_brief{pthread_mutexattr_init} * - @function_name{pthread_mutexattr_settype} * @function_brief{pthread_mutexattr_settype} * - @function_name{pthread_self} * @function_brief{pthread_self} * - @function_name{pthread_setschedparam} * @function_brief{pthread_setschedparam} * - @function_name{sched_get_priority_max} * @function_brief{sched_get_priority_max} * - @function_name{sched_get_priority_min} * @function_brief{sched_get_priority_min} * - @function_name{sched_yield} * @function_brief{sched_yield} * - @function_name{sem_destroy} * @function_brief{sem_destroy} * - @function_name{sem_getvalue} * @function_brief{sem_getvalue} * - @function_name{sem_init} * @function_brief{sem_init} * - @function_name{sem_post} * @function_brief{sem_post} * - @function_name{sem_timedwait} * @function_brief{sem_timedwait} * - @function_name{sem_trywait} * @function_brief{sem_trywait} * - @function_name{sem_wait} * @function_brief{sem_wait} * - @function_name{clock} * @function_brief{clock} * - @function_name{clock_getcpuclockid} * @function_brief{clock_getcpuclockid} * - @function_name{clock_getres} * @function_brief{clock_getres} * - @function_name{clock_gettime} * @function_brief{clock_gettime} * - @function_name{clock_nanosleep} * @function_brief{clock_nanosleep} * - @function_name{clock_settime} * @function_brief{clock_settime} * - @function_name{nanosleep} * @function_brief{nanosleep} * - @function_name{timer_create} * @function_brief{timer_create} * - @function_name{timer_delete} * @function_brief{timer_delete} * - @function_name{timer_getoverrun} * @function_brief{timer_getoverrun} * - @function_name{timer_gettime} * @function_brief{timer_gettime} * - @function_name{timer_settime} * @function_brief{timer_settime} * - @function_name{sleep} * @function_brief{sleep} * - @function_name{usleep} * @function_brief{usleep} * - @function_name{UTILS_strnlen} * @function_brief{UTILS_strnlen} * - @function_name{UTILS_AbsoluteTimespecToDeltaTicks} * @function_brief{UTILS_AbsoluteTimespecToDeltaTicks} * - @function_name{UTILS_TimespecToTicks} * @function_brief{UTILS_TimespecToTicks} * - @function_name{UTILS_NanosecondsToTimespec} * @function_brief{UTILS_NanosecondsToTimespec} * - @function_name{UTILS_TimespecAdd} * @function_brief{UTILS_TimespecAdd} * - @function_name{UTILS_TimespecAddNanoseconds} * @function_brief{UTILS_TimespecAddNanoseconds} * - @function_name{UTILS_TimespecSubtract} * @function_brief{UTILS_TimespecSubtract} * - @function_name{UTILS_TimespecCompare} * @function_brief{UTILS_TimespecCompare} * - @function_name{UTILS_ValidateTimespec} * @function_brief{UTILS_ValidateTimespec} */