Quality RTOS & Embedded Software

LIBRARIES
NOTE: The POSIX library and documentation are in the FreeRTOS Labs.  The libraries in the FreeRTOS Labs download directory are fully functional, but undergoing optimizations or refactoring to improve memory usage, modularity, documentation, demo usability, or test coverage.  They are available as part of the FreeRTOS-Labs download.

FreeRTOS+POSIX
Portable Operating System Interface (POSIX threading wrapper) for FreeRTOS


On this page:

  1. Introduction
  2. Pre-configured example project
  3. Supported features
  4. FreeRTOS+POSIX source code organisation
  5. Dependencies
  6. Developer references and API documentation
  7. Porting
  8. Code Size

 

Introduction

The Portable Operating System Interface (POSIX) is a family of standards specified by the IEEE Computer Society for maintaining compatibility between operating systems. FreeRTOS+POSIX implements a subset of the POSIX threading API.

With FreeRTOS+POSIX, an existing POSIX threading compliant application can be ported to run on the FreeRTOS kernel, and therefor leverage all the FreeRTOS functionality. Additionally, a library designed for use with POSIX threading compatible operating systems can be ported to FreeRTOS kernel based applications.

FreeRTOS Architecture Description
Location of FreeRTOS+POSIX when used with FreeRTOS libraries

 

Example Pre-configure Project

Please see the FreeRTOS+POSIX Pre-configured Example documentation page.

 

Currently Supported Features

FreeRTOS+POSIX partially implements IEEE Std 1003.1-2017 Edition The Open Group Technical Standard Base Specifications, Issue 7. FreeRTOS+POSIX includes implementations for the following POSIX threading header files – please refer to the FreeRTOS+POSIX API documentation for specifics on the features supported within each header file:

  • errno.h
  • fcntl.h
  • mqueue.h
  • pthread.h
  • sched.h
  • semaphore.h
  • signal.h
  • sys/types.h
  • time.h
  • unistd.h
  • utils.h

 

FreeRTOS+POSIX Source Code Organisation

Porting related headers and implementation source code


/lib/FreeRTOS-Plus-POSIX
        |-- include
        |   |
        |   +- FreeRTOS_POSIX.h
        |   +- FreeRTOS_POSIX_internal.h
        |   +- FreeRTOS_POSIX_types.h
        |   +- portable
        |        |
        |        +- [target]
        |        |    |
        |        |    +- [development board]
        |        |            |
        |        |            +- FreeRTOS_POSIX_portable.h
        |        |
        |        +- FreeRTOS_POSIX_portable_default.h
        |
        +- source
            +- FreeRTOS_POSIX_clock.c
            +- FreeRTOS_POSIX_mqueue.c
            +- FreeRTOS_POSIX_pthread_barrier.c
            +- FreeRTOS_POSIX_pthread.c
            +- FreeRTOS_POSIX_pthread_cond.c
            +- FreeRTOS_POSIX_pthread_mutex.c
            +- FreeRTOS_POSIX_sched.c
            +- FreeRTOS_POSIX_semaphore.c
            +- FreeRTOS_POSIX_timer.c
            +- FreeRTOS_POSIX_unistd.c
            +- FreeRTOS_POSIX_utils.c

FreeRTOS+POSIX headers


	/lib/include/FreeRTOS_POSIX
                    +- errno.h
                    +- fcntl.h
                    +- mqueue.h
                    +- pthread.h
                    +- sched.h
                    +- semaphore.h
                    +- signal.h
                    +- sys
                    |    |
                    |    +- types.h
                    |
                    +- time.h
                    +- unistd.h
                    +- utils.h

 

Dependencies

Both configUSE_POSIX_ERRNO and configUSE_APPLICATION_TASK_TAG must be set to 1 in FreeRTOSConfig.h.

 

Developer References and API Documents

Please refer to the reference material (links to Doxygen output).

 

Porting

Porting Related Header Files

FreeRTOS platform specific POSIX configuration
High Level Description
/lib/FreeRTOS-Plus-POSIX/include/FreeRTOS_POSIX.h This header file brings in dependencies required by FreeRTOS+POSIX. This file must be included before all other FreeRTOS+POSIX includes.
/lib/FreeRTOS-Plus-POSIX/include/FreeRTOS_POSIX_internal.h FreeRTOS+POSIX internal structs and initializers. Users are not suggested to touch this file.
/lib/FreeRTOS-Plus-POSIX/include/FreeRTOS_POSIX_portable_default.h Defaults for FreeRTOS+POSIX port-specific configuration options.
/lib/FreeRTOS-Plus-POSIX/include/portable/[vendor-directory]/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.

 

FreeRTOS+POSIX Include Paths

/lib/FreeRTOS-Plus-POSIX/include
/lib/FreeRTOS-Plus-POSIX/source
/lib/include/FreeRTOS_POSIX/

Note that a project only needs platform specific header from this path /lib/FreeRTOS-Plus-POSIX/include/portable.

 

Code Size

Code Size (Compiled with ARM Code Generation Tools (CGT), –silicon_version 7M4)
File
Optimisation off, in Byte
Optimisation on, in Byte
(–opt_level 0 –opt_for_speed 0)
FreeRTOS_POSIX_clock.c
412
296
FreeRTOS_POSIX_mqueue.c
2016
1612
FreeRTOS_POSIX_pthread_barrier.c
294
200
FreeRTOS_POSIX_pthread.c
980
660
FreeRTOS_POSIX_pthread_cond.c
696
496
FreeRTOS_POSIX_pthread_mutex.c
848
608
FreeRTOS_POSIX_sched.c
48
32
FreeRTOS_POSIX_semaphore.c
540
380
FreeRTOS_POSIX_timer.c
972
788
FreeRTOS_POSIX_unistd.c
92
68
FreeRTOS_POSIX_utils.c
1152
768
Total
8050
5908
 

 

 

 

 

 

Copyright (C) Amazon Web Services, Inc. or its affiliates. All rights reserved.