Fork us on GitHub Follow us on Facebook Follow us on Twitter

Version 21 (modified by Jiri Svoboda, 12 years ago) (diff)

Fibril Synchronization Primitives

Release Notes for HelenOS Trunk

Note: This document is a draft describing a future HelenOS release and is subject to change. The software described here has not been released yet. To get these latest and greatest features now, check out our SVN trunk. (But you will also get the latest bugs).

HelenOS version was released on date.

This document contains a summary of changes made to HelenOS since release 0.4.0.

Features Introduced in This Release


  • Multilingual text support
    • HelenOS now uses UCS as its primary representation for characters and UTF-8 as the primary string encoding, both in kernel and in user space. (With UTF-32 as an alternative for some special internal purposes).
  • New string API
    • The kernel and user space use a new (non-standard) string API which allows convenient processing of UTF-8 strings.
  • Architecture independent I/O
    • Both kernel and userspace drivers now use PIO functions so the same drivers work on architectures with separate I/O space and memory mapped I/O space.
  • Userspace drivers are more independent
    • Userspace drivers can handle interrupts without help from a kernel 'little brother'.
  • PowerPC Hardware Support
    • The ppc32 now produces an ISO CD image instead of a kernel image. In addition to PearPC it can now boot in Qemu and on real Apple iMac (keyboard does not work yet, however).


  • Kernel keyboard and output drivers were restructured for more flexibility and portability, with some redundant drivers removed.

Services and Drivers

  • Device mapper
  • kbd has been rewritten and modularized. It supports three layouts (US QWERTY, US Dvorak and Czech QWERTZ).
  • Console inheritance has been implemented at long last. Now tasks executed on the command line will use the same VC as their parent shell. The implementation makes use of the new devfs and a helper program, getvc.
  • rd now uses an abstract block device interface.
  • Added gxe_bd for GXemul disk device.
  • Added ata_bd for ATA disks simulated in Qemu.
  • Added file_bd block device backed by a file.

File systems

  • Support for multiple file systems mounted at once.
  • Support for stat() and fstat() file system calls.
  • The file system block cache will write back blocks to the device, it still does not flush the cache periodically though.
  • tmpfs now supports multiple instances (#35)
  • Added devfs file system for handling access to console via a file handle.


  • Tester
    • tester is controlled by command-line arguments rather than being interactive.
  • Tetris
    • tetris now uses colors.
    • Score table is now persistent.
  • Bdsh
    • A program is started at the same console as the shell. Bdsh waits for it to finish. If it crashed or returned non-zero, the shell will print out a message.
    • Support for simple mv command.
    • Support for simple mount command.


  • New Memory Allocator
    • Doug Lee's memory allocator has been removed and replaced with a simple first-fit allocator. The new allocator has more readable code making it easier to debug, modify and maintain.
  • Build system
    • Preconfigured defaults greatly simplify the process of configuring a HelenOS build.
  • Fibril Synchronization Primitives
    • The C library now provides mutexes, reader-writer locks and condition variables that synchronize fibrils (as opposed to threads).

Regressions in This Release

  • Support for mips32 malta machine
    • Support for the Simics model of the mips32 malta machine has been removed due to code cleanup.
  • Mouse support on ia32 and amd64
    • Mouse support was temporarily removed from the i8042 driver due to code cleanup. A new mouse driver will be reintroduced in a near future release.

Known Bugs