SeptemberOS POSIX Compatibility Layer

SeptemberOS provides POSIX emulation layer, which implements common file descriptor functions (open(), dup(), read(), write(), ...), provides interfaces to filesystem, device drivers, sockets and pipes/FIFOs, pthreads front-end (translation API to task manager) and execve() emulation (also via translation API to task manager).

The POSIX compatibility layer provides configuration of stdin, stdout and stderr to be descriptors of files/devices. The most common configuration of them is to UART.

execve() emulation deviates from POSIX standard. Under UNIX-like OS exec() completely replaces address space of the calling process with a new process from a disk. Usually exec() family calls are used after fork(), which creates a complete duplicate of calling process'es address space; after that one copy of the parent process continues execution and the other executes execve().

Under SeptemberOS there are no separate address spaces, therefore fork() semantics are senseless. So are execve()'s original semantics. SeptemberOS implementation of execve() just starts a new task with command-line parameters, which are then transferred to the new task's main function (with the same prototype as standard C main(), but with different name).

Copyright (c) Daniel Drubin, 2010