SeptemberOS provides with POSIX-like device drivers framework. The
drivers are interfaces via device and sub-device ID numbers (analogous
to UNIX major:minor numbers), which are passed as parameters to open(),
read(), write(), ioctl() and close() methods.
Similarity made it trivial to interface drivers by standard POSIX calls
(provided by the POSIX compatibility layer). However, under native API
many drivers need not be opened and closed, and appropriate API calls
(for read(), write() and ioctl()) may be made instantly.
Since application code runs in kernel mode, SeptemberOS doesn't include
virtual to physical address mapping and all system services are
accessible by application code, it is possible to write device
interface completely in application (including interrupt handler).
Device drivers framework is provided for convenience of using
well-known interface structure and for ease of porting drivers and
applications from other POSIX-compliant OSes.