2007-09-30: September snapshot
 
 * build environment:
  [feature]:
   * add dice version check
   * support external packages
   * install host programs to $foo/bin/host
   * add checkcxx function to check for g++ options
  [bug fix]:
   * fix generation of l4defs.inc file
   * Makefile in the build directories: always go to the source directory
     to build, don't be confused with local files that might exist
   * only set GCCNOSTACKPROTOPT for non-host modes
   * fix dependency issue with $(L4DIR)/Makeconf.local
  [change]:
   * Remove unused ABIs
   * Shared libs are always built now
   * dietlibc is deprecated
   * explicitly get include files from INCSRC_DIR
   * include a $(L4DIR)/Makeconf.$(CONFIG_LABEL) file in Makeconf

 * dice:
  [feature]:
   * add new option --require <string> where string is the minimal
     required version to compile a given IDL. That is, if
     --require="3.2.0" is given the currently running Dice has to have
     at least that version.
   * add new #pragma with same semantics:
     #pragma require <string>
     Don't forget the "" around the <string>!
   * add L4.Fiasco back-end:
     - This only generates C-Bindings but uses the l4_ipc_*_tag
       variants. Select with -Bifiasco.
     - Now L4.Fiasco is recommended as default back-end for Dice with
       the current L4Env. Mark that the behavior of [default_function]
       changed!
     - expanded L4.Fiasco back-end: the received message tag is now
       passed through the server and handed to a default-function, if
       specified.
   * provide files generated by bootstrap in svn now
     -> allows to build dice without recent auto* tools
     -> simply run 'configure' and 'make'
   * replace old dce/corba/gcc-c/gcc-cxx/inc parsers with new c-c++ and
     idl parser: idl parser combines DCE and CORBA grammar now, C/C++
     parser combines C and C++ grammar
   * check explicitly for g++ compiler flags
   * bump version to 3.2.1

  [bug fix]:
   * allow build with -j
   * use correct versions of AC_INIT macro
   * fix for flex 2.5.4 (MacOS)
   * some fixes in V4 back end:
     * actually load buffer registers to receive indirect parts
     * sort message buffer after refitting
   * now that rcv-any and wait-any have different names on server and
     client side, we need two instances of rcv-any functions.
   * print access specifier in C++ class before each function, this
     allows us to make unmarshal/marshal,wait-any functions protected.
   * fix size calculation of enums
   * fix recognition of 64 bit values whe building for 64 bit
     architectures
   * allow execution of CC="ccache gcc" dice ...
   * fix conditional include depending on surrounding pre-processing
     directives
   * fail hard if libtool is missing, small fix

  [change]:
   * minimum version of Bison required is now 2.1a,
     yacc compatibility is gone.
   * make _marshal,_unmarshal,_wait_any, and _recv_any functions
     "inline". This allows the target compiler to apply cross function
     call optimizations by inlining the marshal/unmarshal functions into
     the dispatch function. However, these functions are only inline to
     allow their use in derived interfaces. This implies that the
     optimization only applies if dispatch function and
     marshal/unmarshal function are in the same file (from the same
     interface)--marshal/unmarshal functions of base interfaces are
     still "call"ed.
   * rename long option --create-inline to --inline
   * constant variable defined with "const" can now be used in *_is
     attributes or array dimensions
   * enum usage: you can now define enums and use them as constants
   * improved error reporting (thanks to new Bison generated error
     handling instead of own).    

 * kernel/fiasco:
  [feature]:
   * Chief of a task is allowed to exec inter_task_ex_regs()
  [bug fix]:
   * Increase the number of memory descriptors in KIP.
   * Fix constraints of tsc calc functions 
   * fix tsc<->ns calculations
  [change]:
   * only post int1 and int3 to user if thread in question is alien otherwise
     handle in kernel, makes jdb-breakpoints work again for non-linux programs
     and keeps gdb happy
   * 32 bit thread ids
   * streamline l4_task_new
     * same interface across all architectures
     * rename l4_task_new_cap to l4_task_new_long
     * have l4_task_new_long on all archs
     * roottask: rename l4_task_new_cap to _long
   * jdb: make horiz scrolling with h and l, drop o and p
   * jdb: add msgtag to tracebuffer
   * enable CONFIG_DECEIT_BIT_DISABLES_SWITCH because ia32-short is the
     default config and we need to have that enabled for semaphore package

 * l4linux-2.6:
  [feature]:
   * L4Linux-2.6.22 released
   * add generic futex implementation
   * support for both dope and con running at the same time
   * L4 software-suspend support
  [bug fix]:
   * fix io page faults
   * fix handling of utcb handling code
   * fix order of exception processing
   * add trap_mask to let exception handlers specify which traps they want to
     handle
   * fix l4fb driver for recent Xorg
   * make sure RTC server is ready to serve us
  [change]:
   * adaption to kernel interface
   * merge common code of dispatch.c
   * remove DROPSCON support
   * add config option for suffix of vmlinuz file
   * more code sharing between different CPUs
   * remove userpriv only option, not needed anymore
   * make headers_install work, installed headers are not complete due to
     different paths we use and the build system is expecting
   * make virt irqs the same as hw interrupts in omega0 mode


 * l4/pkg/bootstrap:
  [bug fix]:
   * fix gcc-4.2 warnings
   * workaround for older ld versions which produce an empty section which
   grub does not like
     * also fixes ld segfault behavior

 * l4/pkg/dde:
  [feature]:
   * updated to Linux 2.6.20.19
   * implement vmalloc()/vfree() by mapping it to DDEKit's
      simple malloc primitives
     * adapt DDE2.6 kthreads management to use vmalloc/vfree
   * support two types of DDEKit slabs: backed by physically contiguous
     and non-contiguous memory
     * adapt kmem_cache implementation to use physically contiguous memory
   * enable ioread()/iowrite() functionality
   * map all devices discovered from L4IO to a single PCI bus
   * e1000 driver
  [bug fix]:
   * correctly map usleep() and msleep() to ddekit functions
   * make include and lib targets work with-in this package, also consider
     include and lib directory in non-standard places
   * memory for DDE needs to be allocated physically contiguous, so
     that drivers don't die when doing DMA
   * obey shared IRQ flag and hand it over to l4io
  [change]:
   * add ddekit_thread_nsleep()
   * timers will now execute timer functions with Linux code, therefore we need
     to make the timer thread a Linux process, even though it has been started by
     DDEKit.

 * l4/pkg/generic_fprov:
  [feature]:
   * add proxy fprov

 * l4/pkg/generic_io:
  [feature]:
   * improved static device configuration
     * added device/resource descriptors to info page for easy device discovery
     * added convenient descriptor accessor functions
     * adapted l4io to parse device descriptors and add them to the info page
  [change]: 
   * new function: l4io_info_page(): returns pointer to info page
   * new function: l4io_desc_lookup_device(): lookup device in platform configuration
   * new function: l4io_desc_lookup_resource(): look up resource in device structure

 * l4/pkg/generic_ts:
  [feature]: 
   * kernel quota support additions

 * l4/pkg/input:
  [change]:
   * convert to new l4io/generic_io, get all platform info from l4io instead of
     hard-coding it

 * l4/pkg/l4io:
  [feature]:
   * added device descriptor discovery
   * improved static device configuration 
     * added device/resource descriptors to infopage for easy device discovery
     * added convenient descriptor accessor functions
     * adapted l4io to parse device descriptors and add them into the infopage
  [change]:
   * tag IPCs for sigma0/roottask
   * update documentation for --platform switch
   * added simple static configuration of I/O resources

 * l4/pkg/l4rm:
  [bug fix]:
   * use tagged IPC to forward PFs (incl. IO-PFs)
  [feature]:
   * add fault handler callback for unknown faults

 * l4/pkg/l4sys:
  [feature]:
   * kernel quota support additions
  [bug fix]:
   * return ~0 in the case of an infinite timeout when calculating the timeout
     in micro seconds
  [change]:
   * l4_inter_task_ex_regs: add cap_handler argument, add utcb argument
   * l4_inter_task_ex_regs_cap: remove 
   * l4_task_new_long: add utcb argument
   * streamline l4_task_new
   * rename l4_task_new_cap to l4_task_new_long
   * l4_task_new_long enables L4_TASK_NEW_UTCB_ARGS automatically
   * add l4_utcb_exc_typeval() which returns the architecture specific value
     for the type of the exception
   * make L4_IPC_NIL_DESCRIPTOR ~0UL instead of -1
   * l4_threadid_t: make raw uint32 to be consistent with other archs
   * add l4_quota_desc_t

 * l4/pkg/l4util:
  [bug fixes]: 
   * fix tsc<->ns calculations
   * fix rdtsc
  [change]: 
   * add l4util_set_bit32
   * add L4UTIL_MB_VALID_ASM to be used in asm
   * add ElfW macro for easy ELF type usage
   * add l4_rdpmc* functions
   * change argument of l4util_micros2l4to to unsigned, ~0U has the special
     meaning of infinite
   * remove l4util_l4to2micros prototype 

 * l4/pkg/libsigma0:
  [change]:
   * use tagged IPC for communication with sigma0

 * l4/pkg/loader:
  [feature]:
   * optional integrity support (disabled by default) 
   * memory kquota support
  [bug fix]:
   * fix merging of section when sections are on the same page and overlap
   * prevent errors when building without libloader
  [change]: 
   * from now on compile with ipcmon is mandatory

 * l4/pkg/log:
  [change]:
   * export idl

 * l4/pkg/names:
  [change]: 
   * sort output on names_dump()

 * l4/pkg/omega0:
  [change]: 
   * Fiasco has 18 IRQs at least, make them all available through omega0

 * l4/pkg/ore:
  [feature]:
   * update drivers to Linux 2.6.20.19
   * Tulip support for DDE2.6
   * DDE2.6 is default now, DDE2.4 can still be used
   * support for Intel/E1000 NICs
   * support for Broadcom Tigon3 NICs
   * added switch to turn off use of promiscuous mode
   * add option for using packet debugging lib
  [bug fix]:
   * ORe only works for x86-l4v2
  [change]: 
   * use modern e100 NAPI driver instead of eepro driver which is going to be
     removed from the kernel anyway

 * l4/pkg/roottask:
  [change]:
   * use tagged IPC to talk to sigma0
   * kernel quota support additions
   * rename l4_task_new_cap to _long
   * fiasco has 18 IRQs at least, make them all available

 * l4/pkg/semaphore:
  [bug fix]:
   * fix, if counter >= 0, we got the semaphore
   * adapt to changes of l4util_micros2l4to
  [change]: 
   * increase max. supported thread count to 128

 * l4/pkg/sigma0:
   [change]:
   * used tagged IPC types only
   * link sigma0 above 1MB to get it out of the way of the bios which might be
     bigger than usual

 * l4/pkg/simple_ts:
  [change]:
   * kernel quota support additions
   * don't build pkg if task-mode is enable

 * l4/pkg/task:
  [bug fix]:
   * split up create and create2
  [change]:
   * adapt to l4sys changes
   * quota adaptions



2007-06-26: June Snapshot

**************
**********
* CONTENT
**********
**************

1. Build environment
2. Dice
3. Fiasco
4. Added/Removed L4 Packages
5. Changes in L4 Packages
    1.  bootstrap
    2.  cxx
    3.  dde
    4.  dde_linux
    5.  dm_phys
    6.  events
    7.  generic_io
    8.  generic_ts
    9.  input
    10. ipcmon
    11. l4env
    12. l4io
    13. l4rm
    14. l4sys
    15. l4util
    16. libc_backends_l4env
    17. libsigma0
    18. linux-24-headers
    19. loader
    20. lxfuxlibc
    21. names
    22. omega0
    23. ore
    24. roottask
    25. rtc
    26. sigma0
    27. simple_ts
    28. uclibc
    29. uclibc++
    
**************
**********
* 1. BUILD ENVIRONMENT
**********
**************
    * [Feature]:
        * Added ctags and etags commands, and a 'make *tags' command for l4/pkg

    * [Bugfix]:
        * Fixed DEFAULT_RELOC{_...} code in BID. Now DEFAULT_RELOC,
          DEFAULT_RELOC_<arch> and DEFAULT_RELOC_<target> may be used in the
          Makefiles. In every case the value of RAM_BASE is added to that value
          to calculate the particular link address. To access the link address
          in your own Makefile, you have to use $(call default_reloc,<target>).
        * Fixed MODE, differentiates between linux and host mode.
        * Added sanity check for proper OBJ_DIR and source dir.

    * [Changed]: 
        * Added support for STATIC files in the pkg dir of the build directory.

**************
**********
* 2. DICE
**********
**************
    * [Feature]:
        * Only set receive window in message buffer to environment's receive
          flexpage if we really received a flexpage.
        * Only set exception in environment if we received an exception (this
          might require to reset the environment in case of error in calling
          code).
        * Add [default_timeout] attribute: if attribute is set, IPC timeout is
          set using constant, default timeout values. Otherwise the
          environment's timeout member is used.
        * Add simplistic exception support for C back-end.
        * Add -fsyscall= option to allow optimization of kernel entry.

    * [Bugfix]:
        * Send two variable sized arrays into one direction.
        * Configure is more strict if bison/flex are missing.
        * Bootstrap version checks are more accurate now.
        * Building user's manual in builddir != srcdir.
        * Build fixes for Ubuntu.
        * Really scrub dice dir on 'make cleanall' (fixes some subsequent
          build errors experienced by some users).
        * No dependency on a configured L4 object-dir anymore.
        * C++ back-end fixes.
        * -s option did not generate *-sys.h[h] file.
        * Sending array of flexpages works for L4 V2.
        * Signdness issues in generated code.

    * [Changed]:
        * Removed the obsolete developer's manual.
        * Removed --with-l4dir configure option.
        * Removed the Common Data Representation back-end.

**************
**********
* 3. FIASCO
**********
**************
    * [Feature]:
        * Added memory resource limits to Fiasco.
          With these resource limits the kernel-memory usage of a set of tasks
          can be limited. The limits can be defined on task_new system calls.
          There are three possible modes for the limits of a new task:
                1. The new task shares the quota with the creator (quota
                   descriptor = 0).
                2. The new task shares the quota with another task T (where
                   the creator must be the chief of T).
                3. The new task gets a new quota, which is accounted to the
                   quota of a reference task T (where the creator must be the
                   chief of T).
        
        * Experimental fast user-level semaphore implementation: now the
          semaphore is correctly working with timeouts and thread destruction
          (as long as no thread currently within the critical section is
          killed).        
        * Added horizontal scroll feature to trace buffer view of kernel
          debugger (h and l keys).
 
    * [Changed]: 
        * Improved memory efficiency of Fiasco.
        * Moved from 64bit UIDs to 32bit UIDs for all architectures, no longer
          containing chief, site and nest IDs.
            * All architectures use the same ABI.
        * Improved UTCB support.
        * IPC: Extra argument: the message tag describes additional
          characteristics of the IPC (e.g. UTCB transfer sizes, FPU transfer).
          The kernel will also flag kernel generated IPC messages appropriately
          (page-fault, IO-page-fault, exception etc.). 
        * The UTCB layout has been changed.
        * Changed timeout format to X.2 format.
        * Added support IOPL 3 option in fiasco config: running with IOPL3 is
          now explicitely configured and may completely disabled IOPL3
          operations in user land (like cli/sti).
        * New interrupt handling doing low-level interrupt handling in the kernel.

    
**************
**********
* 4. ADDED/REMOVED L4 PACKAGES
**********
**************
    * Core packages: 
        * Added:
            - dde
            - dde_linux26
            - linux-26-headers
            - task
        * Removed:
            - exec

    * EMSCB packages:
        * Removed:
            - dde_linux26
            - linux-26-headers


**************
**********
* 5. CHANGES IN L4 PACKAGES
**********
**************
    Applies to all packages:

    * Adapted to ABI changes of Fiasco:
        * l4_threadid_t change to 32bit
        * Change of timeout format
        * Interrupt handling

    Note:
    * An IPC timeout pair can be specified with l4_ipc_timeout(snd_man,
      snd_exp, rcv_man, rcv_exp).
    * Additionally, the function l4util_microsecs2l4to returns an l4_timeout_s
      which is a single timeout, two of these timeouts can be combined by
      l4_timeout(snd, rcv) to an l4_timeout_t (for IPC). 


**************
* 1. bootstrap
**************
    * [Feature]: 
        * Added -modaddr command line switch to set modaddr directly in
          bootstrap which now relocates the modules. 
    
    * [Changed]:
        * Code cleanups

**************    
* 2. cxx
**************
    * [Bugfix]:
        * Count free objects in partial and empty slabs.

**************
* 3. dde
**************
    * [Feature]:
        * First release of the new DDE including
          * DDEKit - a construction kit for device driver environments
          * DDE_Linux 2.6 - a new implementation of DDE2.6 using DDEKit

**************    
* 4. dde_linux
**************
    * [Changed]:
        * Updated to Linux 2.4.34.4 so that it compiles with GCC4.
        * Adapted to new Fiasco timeout handling.
        * Added driver for es1370 (QEMU emulates this card via "-soundhw
          es1370").
        * Removed non-omega0 interrupt mode from dde_linux (Linux 2.4) new
          signature: int l4dde_irq_init(void).
            
**************
* 5. dm_phys
**************
    * [Bugfix]:
        * Always round memory regions to complete pages.
        * Fixed zero page bug.

    * [Changed]:
        * Use memory descriptors on all architectures. 

**************
* 6. events
**************
    * [Bugfix]:
        * Solved malloc-backend problem.

**************
* 7. generic_io
**************
    * [Bugfix]:
        * Dice related compile fix.

    * [Changed]: 
        * l4io_request_mem_region():
            * No longer returns offset value.
              * Supports (and uses by default) L4_PAGESIZE mappings.
        

**************
* 8. generic_ts
**************
    * [Changed]:
        * Disabled some functions based on the chief ID (superseeded by the
          new task library).
        * Added new doxygen configuration file. 

**************
* 9. input
**************
    * [Bugfix]:
        * [FEATURE]: Improved support for USB keyboards in PS/2 legacy mode
          with buggy BIOSes. It doesn't work with USB mice!

    * [Changed]:
        * libinput now depends on l4io.
        * Unified native and UX version of libinput
              - libinput detects on initialization if running under Fiasco-UX
              - libinput-ux.a no longer exists - please adapt your packages

**************
* 10. ipcmon
**************
    * [Feature]:
        * Introduce -r switch to express that all tasks are allowed to talk to
          roottask. This is needed:
              - for the tasks to find names
              - if roottask is not the chief of all tasks.
        
**************
* 11. l4env
**************
    * [Changed]:
        * Refactoring: env.h is now architecture independent.
        * Check for appropriate Fiasco ABI version on startup. 

**************
* 12. l4io
**************
    * [Feature]:
        * Added "--nomtrr" command line switch. This switch disables MTRR
          programming which needs IOPL3.
        * Enhanced Fiasco-UX support:
            - If running under UX, l4io now parses the virtual H/W descriptors
              and announces them to the res module.
              - l4io_request_mem_region() can now be used under UX and native
                Fiasco.
        * Added support for I/O port fpages:
            - l4io_request/release_region() changed a bit.
            - generic_io.idl uses an fpage array on request
            - L4io requests port ranges on client request - currently from
              roottask, which should be sigma0.
            - Simple I/O port test program.


    * [Changed]:
        * Updated to Linux 2.4.34.4, which is compatible to GCC4.
        * Adapted to new l4sys interface (caching/buffering flags in flex page).
        * Removed MTRR support - finally l4io (and the rest of the userland)
          works with IOPL0.    
        * Removed Ancient jiffies thread implementation. 
        * Adaption to generic_io changes.
          * MMIO: 
            * Requests MMIO regions from its pager (i.e., sigma0 because of
              roottask limitations) in compile-time option granularity (default
              is L4_PAGESIZE)
              * Does no longer request new MMIO region mappings from its pager
                for cacheable regions.
              * If MMIO regions share a page (some weird on-board controllers
                do that!), l4io no longer requests multiple mappings. Expect
                further changes here in   the context of "untrusted device
                drivers".
        * Completely removed PIC programming from omega0 and l4io. The applied
          changes depend on a recent Fiasco version (merged irq_ack_devel
          branch).
            * l4io:
                - Removed non-Omega0 interrupt mode. Command line switches
                  "--noirq", "--nosfn" and "--omega0" are no longer supported. 
                - Removed usage of CLI/STI from PCI code - the only module
                  depending on IOPL 3 is now MTRR programming.
            * omega0
                  - Added file headers.
                  - Removed pic.c/pic.h - use irq-devel branch of Fiasco.

            Fiasco supports IRQ handling completely without touching the PIC
              in user land:
            * L4V2 protocol:
                  - Receive from IRQ ID associates caller with this IRQ.
                  - Receive from NIL ID with L4_IPC_RECV_TIMEOUT_0
                    disassociates the caller from all interrupts. 
 
              * Recent Fiasco extended protocol:
                  - Send to IRQ ID with dw0==0 enables (unmasks) the IRQ.
                  - Send to IRQ ID with dw0==1 disassociates caller from this IRQ.

            Currently missing is an explicit "mask IRQ" function that is IMO
            not needed. Fiasco masks the IRQ on occurence and it is only
            unmasked on explicit request.

        * Removed non-omega0 interrupt mode from dde_linux (Linux 2.4) new
          signature: int l4dde_irq_init(void)
        * Adapted some users of dde_linux. 



**************
* 13. l4rm
**************
    * [Bugfix]:
        * Initialize dice-environment for every call to reset error conditions.

    * [Changed]:
        * Don't use some hard-coded value for vm-end, use the KIP!

**************
* 14. l4sys
**************
    * [Feature]:
        * Provided a data structure for the user level part of the fast
          user-level semaphore.

    * [Bugfix]:
        * Fixed PIC call IPC binding.    
        * Don't let gcc cache l4_myself and l4_nchief results. 

    * [Changed]:
        * Adapted to new Fiasco's timeout handling.
        * Adapted to new Fiasco's IPC format (message tag).
        * Adapted to Fiasco ABI changes: 
            - Restructured flex-page type definitions and added a true cache
              field to the memory flex page (no longer add bits to the raw
              values).
            - Removed a lot of code duplication among the architectures.
              - Proper interface to the 'Buffered' (IA32 write-combined)
                memory attributes supported by Fiasco. It is now no longer
                neccessary to use MTRRs for having non-cached but buffered
                device access to MMIO. However, the Fiasco kernel only supports
                buffered memory on IA32 PIII+ CPUs that have the page-attribute
                table feature. MTRRs are available from P6 on.
        * Added member to set the number of vital memory descriptors in the KIP. 
        * Added bindings for Fiasco user-level lock and semaphore. 
        * Cleaned up UTCB access functions.

**************
* 15. l4util
**************
    * [Changed]:
        * Changes regarding the use of memory descriptors.
        * Removed wait_queue implementation that uses cli/sti.
        * Removed l4util_l4to2micros prototype.
        

**************
* 16. libc_backends_l4env
**************
    * [Bugfix]:
        * Fixed alignment of the heap and allocation size for buddy
          allocations (required by buddy resp. slab impl.).
        * Slab part of buddy_slab_mem fixed. Before, it did only claim the
          first page of a grow set for its own which resulted in heap
          corruptions.

**************
* 17. libsigma0
**************
    * [Changed]:
        * Added #define for SIGMA0 thread ID. 

**************
* 18. linux-24-headers
**************
    * [Changed]:
        * Updated to Linux 2.4.34.4, which is compatible to GCC4. 

**************
* 19. loader
**************
    * [Feature]:
        * Added allow_bios and allow_vga options: note that l4linux now
          requires the allow_vga option when used with the VGA console!
        * Removed dummy page in loader as it was a communication channel for
          programs.

    * [Changed]:
        * Changes regarding memory descriptors.
        * Made pager cope with recent s0 requests.
        * Made pager cope with IPC types it doesn't know.
        * Added compile-time conditional tasklib support.
        * Removed exec related code, including idl interfaces.
        * Removed special l4linux(-2.2) reboot hook.

**************
* 20. lxfuxlibc
**************
    * [Bugfix]:
        * lx_fseek(): just return 0 or -1, as fseek does.

**************
* 21. names
**************
    * [Bugfix]:
        * Let the names demo wait for dm_phys in the beginning, so
        that its output is in a consistent state every time.
        * Fixed bug in names for query_id: if the function returns error (0),
          name should be set to 0, so the generated stubs won't try to call
          strlen on it.

**************    
* 22. omega0
**************
    * [Changed]:
        * Unified l4io's libomega0 and omega0 (management thread handling).
        * Support easy config of test duration. 
        * Removed some old OSKit related code from omega0. 

**************
* 23. ore
**************
    * [Feature]:
        *  Added support for SysKonnect GigaEthernet cards. 

    * [Bugfix]:
        * Let ORe behave like a good network interface, which means to not
          deliver a packet to the sender, even if the packet is a broadcast
          packet and the sender forged the source MAC (like the Linux ethernet
          bridge does...).
        * Race fixed. Someone (evil) might send us an EXIT event from a
          client, while the client tries to receive a packet at the same time.
          This may leave the rx list in an inconsistent state. Now we grab the
          channel lock before cleaning up and detect a closed connection during
          recv().
        * Fixed use-after-free bug that caused ORe to fault sometimes if a
          client's rx list was being cleaned up.
        * Fixed dubious use of goto in client-MAC initialization. 
        * Don't notify about dropped packets by default. 
        * Never do IRQ handling when using the loopback device. It only
          handles local clients and those will have received this packets
          already beforehand.
        * Sanity check some function arguments for not being NULL. 
        * Fixed bug in ORe MAC calculation: the ORe MAC is created by
          checksumming the device MAC (6 bytes) and the channel ID (4 bytes) and
          if we pack both into a char buffer, then of course the channel id
          starts at &buffer[6], not &buffer[7]. 
        * Fix pointer arithmetics error in arping example.
  
**************    
* 24. roottask
**************
    * [Bugfix]:
        * Fixed some issue when no modules given. 
        * Fixed some issue in module handling.
        * Fixed I/O protection detection.        
        * Made roottask behave nicer when it gets exceptions and other IPCs it
          cannot handle.

    * [Changed]:
        * Changes regarding tasklib support.

**************
* 25. rtc
**************
    * [Changed]:
        * No longer uses cli/sti.

**************
* 26. sigma0
**************
    * [Bugfix]:
        * Interpret KIP memory descriptor type 'dedicated' as memory not
          available to other applications. 

**************
* 27. simple_ts
**************
    * [Changed]:
        * Do not build simple_ts if tasklib is used.

**************
* 28. uclibc
**************
    * [Bugfix]:
        * Use pre-obj target to build include before objects. Support parallel
          building.

    * [Changed]:
        * Added ip.h. 

**************
* 29. uclibc++
**************
    * [Bugfix]:
        * Use pre-obj target to build include before objects. Support parallel
          building. 



2007-02-28: February Snapshot

 * Build environment:
   * Changed: Fiasco and DICE source tree's are now separated from the general l4 
     tree.
   * Changed: build directories for fiasco, l4 packages and linux are in build.
	
 * DICE upgrade to newly released version 3.1.1:
   * Fixed: warn on colliding operation IDs for two base interfaces in the
     derived interface.	
   * Fixed: classes generated from derived interfaces derive from the classes of
     the base interfaces now. This has some consequences for member variables
     (exist in base class) and constructors (call base class constructor).
   * Fixed: parameters with constructed type and [out, ref] parameter were not
     unmarshalled correctly
   * Fixed: for X0: actually invoke IPC in reply function
	
 * Fiasco:
   * Feature: move to new KIP format (with L4V4 memory descriptors).
   * Feature: FPU can be transfered with UTCB IPC, when sender and receiver agree 
     to this. This feature is important especially for virtualization of Linux.
   * Fixed: (Bug 218) Fiasco-UX now also runs on systems with TLS (thread local
     storage) enabled libc's
   * Fixed: critical Bug in mapping code. In the case of a large send flex page
     and a small receive window.
   * Fixed: (Bug 289) when updating kernel memory pagetables with disabled
     interrupts, interrupts have been switched on and thus allowed breaking the
     cpu lock
   * Fixed: EFlags get restored also if IO protection is off. 
   * Fixed: size of multiboot info in KIP memory descriptors.
	
  * L4Linux upgrade to 2.6.19:
    * Feature: use the new FPU state switching feature of Fiasco
    * Feature: add memisadma=xx option to cmdline to configure the size of ISA DMA
      memory, default stays at 2MB, use memisadma=0 to disable usage of ISA DMA
      memory
    * Fixed: tamer implementation. Formerly, under heavy workload a deadlock could
      occur
    * Fixed: irq struct in l4ore driver
    * Changed: use l4io (omega0) for interrupts

  * dm_phys:
    * Removed: limitation that always enables physically contiguous memory when 
      requesting super pages
    * Fixed: a bug in __aligned_size that did only consider the start of the page
      area but not the end

  * l4rm:
    * Feature: a new interface in l4rm enables one to store user-defined pointers 
      for regions. So the l4rm AVL tree for used regions can be reused to lookup
      user information about these regions.

  * log:
    * Removed: obsolete oskit code

  * loader:
    * Removed: obsolete oskit code
    * Fixed: documentation completly revised

  * roottask:
    * Fixed: some documentation bugs
    * Fixed: a typo bug

  * sigma0:
    * Removed: sigma0-ux is not needed anymore, use sigma0 instead
    * Changed: uses only memory descriptors from the KIP, no MBI or something else

  * ORe:
    * Added: some assertions
    * Changed: sequence of broadcast packet and of quota handling to gain a 
      better performance
    * Changed: when looking up the ORe server, do some retries before giving up
    * Fixed: the ORe server's loopback device can be used to connect only to local
      clients and in absence of any HW NICs. In this case, the device's MTU
      is 16k and not ETH_FRAME_LEN, therefore adapt the ORe stub's receive
      buffer size
	
  * lxfuxlibc:
    * Feature: socket and connect support

  * slab:
    * Feature: support for multi-page slabs and automatic slab dimensioning
    * Removed: __resort() and l4slab_get_page_data()
    * Fixed: the slab implementation requires that the memory for the slab 
      data is slab_size aligned, which is now guaranteed
	
  * ipcmon:
    * Feature: revocation works
    * Fixed: bug in lookup funktion
    * Added: loader script and Fiasco-UX run script for test scenario

  * libc_backends:
    * Feature: enhanced sigma0 backend available, which firstly allocates some
      memory from sigma0 before dm_phys gets it all
	
2006-12-05: October Snapshot: Patchlevel 3

 * Major upgrade of DICE to newly released version 3.1.0:
   Fixes several problems, including those addressed in the second patch
   and a stack underflow problem that became apparent in the DOpE
   package provided with the additional EMSCB source tarball
   See Changelog file in the DICE source tree included in this snapshot
   
 * Adaptations to new DICE version in various user-level packages:
   * Instead of [prealloc], IDL interfaces now use [prealloc_client] and/or
     [prealloc_server]; see Section 1.6.4 of the DICE user manual for more
     details
   * Reverted preliminary fixes for loader and names package from
     patchlevel 2
     
 * roottask:
   * Fixed the use of incorrect constants in the client library
   * Fixed client-side and server-side code of rmgr_set_task_id():
     This function no longer registers a new name, but just tries to set the
     quota for a given task
   * Added missing bounds checking on names registry
   * Removed obsolete code for handling old sigma0 protocol
   
 * Fixed C++ compatibility of libio interface:
   adapted packages: generic_io, l4io
   
 * Fixed typo in inline documentation of sigma0 lib's header file
   concering cacheable/noncacheable memory mappings
 * Added missing documentation of 'all_sects_writable' directive in
   loader package
 * C++ compatibility fix in semaphore library
 * Fixes related to C standards and removal of obsolete code for older
   compilers in the the l4sys system-call bindings
 * Added ptest test case for names package
 * Minor fixes in log package
 * Changed default configuration of non-driver L4Linux so that it indeed
   does not touch any hardware (i.e., removed serial driver)
   
 * Fixes in the EMSCB tarball:
   * Fixed C++ compatibility of libio interface:
     adapted packages: dde_linux, dde_linux26
   * Minor fixes in lxfuxlibc and l4vfs packages


2006-11-20: October Snapshot: Patchlevel 2

 * Fix DICE-related problems in the names and loader packages:
   Add missing CORBA_alloc() and CORBA_free()


2006-10-27: October Snapshot: Patchlevel 1

 * Fix for Fiasco: Clear reference to previosly freed I/O page table entries
 * Fix for Fiasco: Enable 4K stacks in order to avoid stack underflows


2006-10-16: October Snapshot with IPC-Mon Support

 * Fiasco:
   * Mapping database supports memory, I/O, and capability spaces
   * Support for mapping and unmapping task capabilities
   * Improved support for mapping and unmapping of superpages
   * Support for unmapping memory-mapped I/O pages and I/O flexpages
   * Support for querying dirty and accessed flags
   * Support for "directed unmap"
   * Support for reclaiming unused kernel memory from slab allocaters

 * Task capabilities (IPC-Mon) support in user-level packages:
   * ipcmon package provides a capability-fault handler and client library
   * roottask, simple_ts, and loader packages and system-call bindings
     adapted for task capabilities

 * Upgrade to L4linux 2.6.18
 * Upgrade to new version of DICE


2006-07-13: July Snapshot: Patchlevel 1

 * Extension to allow running multiple instances of the ORe network
   switch; includes changes for both ORe and L4Linux


2006-06-30: July Snapshot

 * Fast IPC path in Fiasco
 * Sigma0 extension for MTRR support (cacheable memory-mapped I/O)
 * Upgrade to L4linux 2.6.17
 * L4Env build directories support
 * DICE messagebuffer changed to support X.2
 * Dynamic loading of applications via ldso
 * Development overview document added


2006-06-09: March Snapshot: Patchlevel 1

 * Fix for memory leak in ORe


2006-03-31: March Snapshot

 * First snapshot released!
 * Includes: Fiasco, L4Env core, L4Linux, DICE