- Main Page
- Modules
- Data Structures
- Files

# The Layer Scheme

pico]OS is currently split into two layers:

- The pico layer contains the RTOS core. It covers:
  - Tasks
  - Semaphores
  - Mutexes
  - Flag Events
  - Message Boxes
  - Software Interrupts
  - Timers
  - Lists
  - Atomic Variables

- The nano layer contains features that are based on the pico layer:
  - Bottom Halfs
  - Multitasking able console I/O
  - Multitasking able dynamic memory management
  - Standardized API for easier task creation
  - Named tasks, semaphores, mutexes and timer
  - CPU usage measurement
  - etc. (more will follow)

Below is a diagram showing the layer scheme. Note that the nano layer is disabled by default to lower the memory usage for small devices. There are two ways to enable the nano layer: First, if you run your makefile, you can add the parameter `NANO=1` to the make command line. Second, you can set this parameter in your application makefile.
If the parameter `NANO` is set to 1, the makesystem will automatically compile and link the nano layer source files. Also the global define `POSCFG_ENABLE_NANO` is set, so you can test from within your sources if the nano layer is enabled or not.