Libraries

Within the departure package, a number of libraries have been established to retain certain kinds of functionality. This document provides an overview of each of them.

  1. libe2access
  2. libe2access_blockserver
  3. libexec
  4. libext2fs
  5. libext2fs_blockserver
  6. libfsclient
  7. libfsserver
  8. libipc
  9. libmem
  10. libnotifier
  11. libresource
  12. libsystypes

libe2access

Convenience functions for libext2fs operations.

Header File Contents
e2access/access.h Access control functions
e2access/format.h File metadata formatting
e2access/image.h Filesystem image access functions
e2access/path.h Path functions
e2access/utils.h Common utilities for filesystem users

libe2access_blockserver

A convenience wrapper around libext2fs, providing initialisation functions for the opening of filesystems and for indicating the capability through which a block server, this providing a filesystem, may be accessed.

Header File Contents
e2access/fs.h Filesystem opening functions

libexec

Support for initialising and executing programs in new tasks.

Header File Contents
exec/common.h Common structures and functions
exec/elf.h ELF payload decoding support
exec/external_pager.h A system pager implementation residing in a separate task
exec/internal_pager.h A system pager implementation residing in the same task as a program
exec/mapped_region.h Mapped memory region support
exec/memory.h Program memory initialisation support
exec/pager.h Common system pager functionality
exec/process.h Support for initialising programs in new tasks and threads
exec/segment.h Program memory segment support
exec/stack.h Stack support for new tasks and threads

libext2fs

The ext2 filesystem library provided by the e2fsprogs project.

libext2fs_blockserver

Interfacing functions for libext2fs, permitting the library to access block servers, these being servers supporting the opener interface, doing so using the client library.

libfsclient

The client library for accessing filesystem servers.

Header File Contents
fsclient/client.h Filesystem client functions
fsclient/file.h File access convenience functions and types

libfsserver

The server library providing supporting abstractions and functionality for filesystem-related components.

Header File Contents
fsserver/access_map.h An access map providing memory corresponding to file regions
fsserver/accessor.h Generic accessor functionality
fsserver/accountable.h Accountable object support
fsserver/block_file_accessor.h A file accessor employing a rewritable memory area
fsserver/block_file_opener.h An opener for a file employing a rewritable memory area
fsserver/copied_page_mapper.h A page mapper providing copied memory pages or deferring to another page mapper to satisfy file accesses
fsserver/directory_accessor.h An object providing access to a filesystem directory
fsserver/directory_provider.h An object providing a directory abstraction with notification facilities
fsserver/directory_resource.h A resource offering support for directory operations
fsserver/ext2_directory_accessor.h An object for a directory provided by an Ext2-compatible filesystem
fsserver/ext2_file_accessor.h A file accessor employing a file provided by an Ext2-compatible filesystem
fsserver/ext2_file_opener.h An opener for a file provided by an Ext2-compatible filesystem
fsserver/ext2_file_operations.h File operations supporting an Ext2-compatible filesystem
fsserver/ext2_filesystem.h A resource supporting the creation of user-specific ext2 filesystem opener resources
fsserver/file_opening.h Generic support for opening files
fsserver/file_pager.h File-specific pager functionality
fsserver/file_provider.h An object encapsulating file resources
fsserver/filesystem_resource.h A resource supporting the creation of user-specific opener resources
fsserver/generic_page_mapper.h A generic page mapper providing memory pages to satisfy file accesses
fsserver/host_directory_accessor.h An object for a "host" directory provided via the C library
fsserver/host_file_accessor.h A file accessor employing a "host" file provided via the C library
fsserver/host_file_opener.h An opener for a "host" file provided via the C library
fsserver/ipc.h Interprocess communication utilities
fsserver/masked_page_mapper.h A page mapper providing memory pages to satisfy file accesses, masking the limits of a visible region of the file's contents
fsserver/notification.h Notification support
fsserver/opener_context_resource.h A context resource offering support for opening files
fsserver/opener_resource.h A resource offering support for creating contexts and opening files
fsserver/page_mapper.h A page mapper providing memory pages to satisfy file accesses
fsserver/page_owner.h A page owner abstraction, indicating the current user of a memory region
fsserver/page_queue.h A page queue abstraction
fsserver/page_queue_partitioned.h A page queue retaining two internal collections of memory pages
fsserver/page_queue_shared.h A page queue whose users take turns to access pages
fsserver/pager.h Generic pager functionality
fsserver/pages.h A page collection abstraction providing pages from a queue to users
fsserver/pipe_accessor.h A pipe accessor merely resetting allocated memory for use
fsserver/pipe_opener_resource.h A pipe opener resource
fsserver/pipe_pager.h A pipe pager providing access to pipe content and navigation support
fsserver/pipe_paging.h A pipe paging coordinator, permitting memory sharing pipe endpoints
fsserver/provider.h Filesystem object provider support
fsserver/provider_registry.h A registry of filesystem object providers
fsserver/resource_registry.h A registry of filesystem object resources
fsserver/simple_pager.h A simple pager exposing a single memory region
fsserver/test_file_accessor.h A test accessor producing generated content
fsserver/test_file_opener.h An opener for a test file containing generated content

libipc

A library providing IPC (interprocess communication) mechanisms to support communication and interactions between components.

Header File Contents
ipc/cap_alloc.h Capability allocation and management
ipc/direct.h Interprocess communication operations
ipc/factory.h Factory-related data types
ipc/irq.h Interrupt request handling
ipc/macros_ipc.h Interprocess communication macros
ipc/map.h Capability mapping between tasks
ipc/mem_ipc.h Memory sharing abstractions
ipc/message.h Interprocess communication message abstraction
ipc/semaphore.h Semaphore utilities
ipc/server.h Server binding/registration
ipc/thread.h Thread-related initialisation
ipc/util_ipc.h Interprocess communication abstractions

libmem

A library providing memory-related abstractions and utilities.

Header File Contents
mem/flexpage.h A flexpage abstraction
mem/memory.h A generic memory pool abstraction
mem/memory_incremental.h A memory pool allocating a region at a time from the system
mem/memory_preallocated.h A memory pool providing regions from a preallocated amount of memory
mem/memory_utils.h Memory quantity calculation utilities
mem/region.h Memory region abstractions
mem/send_flexpage.h A "send" flexpage abstraction for communicating memory mappings
mem/types.h Miscellaneous types

libnotifier

A library providing notification support for programs.

Header File Contents
notifier/notifier.h Event notification support

libresource

A library providing support for resources, which are managed server components.

Header File Contents
resource/resource.h Common resource classes and functions
resource/resource_server.h Common resource server functions

libsystypes

A repository of fundamental types used by the other libraries.

Header File Contents
systypes/base.h Base types used by various other types
systypes/factory.h Factory-related data type macros
systypes/fcntl.h File control definitions
systypes/format.h Format specifiers for output
systypes/stat.h File metadata abstractions
systypes/timespec.h Time-related types
systypes/user.h User abstractions