L4Re/departure

Annotated docs/wiki/Libraries

456:d431ace6aeaf
23 months ago Paul Boddie Added header file descriptions and a script to generate them.
paul@427 1
= Libraries =
paul@427 2
paul@427 3
Within the `departure` package, a number of libraries have been established to
paul@427 4
retain certain kinds of functionality. This document provides an overview of
paul@427 5
each of them.
paul@427 6
paul@427 7
<<TableOfContents(2, 2)>>
paul@427 8
paul@427 9
== libe2access ==
paul@427 10
paul@427 11
Convenience functions for `libext2fs` operations.
paul@427 12
paul@456 13
|| '''Header File'''   || '''Contents'''                        ||
paul@456 14
|| `e2access/access.h` || Access control functions              ||
paul@456 15
|| `e2access/format.h` || File metadata formatting              ||
paul@456 16
|| `e2access/image.h`  || Filesystem image access functions     ||
paul@456 17
|| `e2access/path.h`   || Path functions                        ||
paul@456 18
|| `e2access/utils.h`  || Common utilities for filesystem users ||
paul@456 19
paul@427 20
== libe2access_blockserver ==
paul@427 21
paul@427 22
A convenience wrapper around `libext2fs`, providing initialisation functions
paul@427 23
for the opening of filesystems and for indicating the capability through which
paul@427 24
a block server, this providing a filesystem, may be accessed.
paul@427 25
paul@456 26
|| '''Header File''' || '''Contents'''               ||
paul@456 27
|| `e2access/fs.h`   || Filesystem opening functions ||
paul@456 28
paul@427 29
== libexec ==
paul@427 30
paul@427 31
Support for initialising and executing programs in new tasks.
paul@427 32
paul@456 33
|| '''Header File'''       || '''Contents'''                                                       ||
paul@456 34
|| `exec/common.h`         || Common structures and functions                                      ||
paul@456 35
|| `exec/elf.h`            || ELF payload decoding support                                         ||
paul@456 36
|| `exec/external_pager.h` || A system pager implementation residing in a separate task            ||
paul@456 37
|| `exec/internal_pager.h` || A system pager implementation residing in the same task as a program ||
paul@456 38
|| `exec/mapped_region.h`  || Mapped memory region support                                         ||
paul@456 39
|| `exec/memory.h`         || Program memory initialisation support                                ||
paul@456 40
|| `exec/pager.h`          || Common system pager functionality                                    ||
paul@456 41
|| `exec/process.h`        || Support for initialising programs in new tasks and threads           ||
paul@456 42
|| `exec/segment.h`        || Program memory segment support                                       ||
paul@456 43
|| `exec/stack.h`          || Stack support for new tasks and threads                              ||
paul@456 44
paul@427 45
== libext2fs ==
paul@427 46
paul@427 47
The ext2 filesystem library provided by the
paul@427 48
[[http://e2fsprogs.sourceforge.net/|e2fsprogs]] project.
paul@427 49
paul@427 50
== libext2fs_blockserver ==
paul@427 51
paul@427 52
Interfacing functions for `libext2fs`, permitting the library to access block
paul@427 53
servers, these being servers supporting the [[Components#Openers|opener]]
paul@427 54
interface, doing so using the [[Client Library|client library]].
paul@427 55
paul@427 56
== libfsclient ==
paul@427 57
paul@427 58
The [[Client Library|client library]] for accessing filesystem servers.
paul@427 59
paul@456 60
|| '''Header File'''     || '''Contents'''                              ||
paul@456 61
|| `fsclient/client.h`   || Filesystem client functions                 ||
paul@456 62
|| `fsclient/file.h`     || File access convenience functions and types ||
paul@456 63
|| `fsclient/notifier.h` || File event notification support             ||
paul@456 64
paul@427 65
== libfsserver ==
paul@427 66
paul@427 67
The [[Server Library|server library]] providing supporting abstractions and
paul@427 68
functionality for filesystem-related [[Components|components]].
paul@427 69
paul@456 70
|| '''Header File'''                      || '''Contents'''                                                                                                                   ||
paul@456 71
|| `fsserver/access_map.h`                || An access map providing memory corresponding to file regions.                                                                    ||
paul@456 72
|| `fsserver/accessor.h`                  || Generic accessor functionality.                                                                                                  ||
paul@456 73
|| `fsserver/accountable.h`               || Accountable object support.                                                                                                      ||
paul@456 74
|| `fsserver/block_file_accessor.h`       || A file accessor employing a rewritable memory area.                                                                              ||
paul@456 75
|| `fsserver/block_file_opener.h`         || An opener for a file employing a rewritable memory area.                                                                         ||
paul@456 76
|| `fsserver/copied_page_mapper.h`        || A page mapper providing copied memory pages or deferring to another page mapper to satisfy file accesses.                        ||
paul@456 77
|| `fsserver/directory_accessor.h`        || An object providing access to a filesystem directory.                                                                            ||
paul@456 78
|| `fsserver/directory_provider.h`        || An object providing a directory abstraction with notification facilities.                                                        ||
paul@456 79
|| `fsserver/directory_resource.h`        || A resource offering support for directory operations.                                                                            ||
paul@456 80
|| `fsserver/ext2_directory_accessor.h`   || An object for a directory provided by an Ext2-compatible filesystem.                                                             ||
paul@456 81
|| `fsserver/ext2_file_accessor.h`        || A file accessor employing a file provided by an Ext2-compatible filesystem.                                                      ||
paul@456 82
|| `fsserver/ext2_file_opener.h`          || An opener for a file provided by an Ext2-compatible filesystem.                                                                  ||
paul@456 83
|| `fsserver/ext2_file_operations.h`      || File operations supporting an Ext2-compatible filesystem.                                                                        ||
paul@456 84
|| `fsserver/ext2_filesystem.h`           || A resource supporting the creation of user-specific ext2 filesystem opener resources.                                            ||
paul@456 85
|| `fsserver/file_opening.h`              || Generic support for opening files.                                                                                               ||
paul@456 86
|| `fsserver/file_pager.h`                || File-specific pager functionality.                                                                                               ||
paul@456 87
|| `fsserver/file_provider.h`             || An object encapsulating file resources.                                                                                          ||
paul@456 88
|| `fsserver/filesystem_resource.h`       || A resource supporting the creation of user-specific opener resources.                                                            ||
paul@456 89
|| `fsserver/generic_page_mapper.h`       || A generic page mapper providing memory pages to satisfy file accesses.                                                           ||
paul@456 90
|| `fsserver/host_directory_accessor.h`   || An object for a "host" directory provided via the C library.                                                                     ||
paul@456 91
|| `fsserver/host_file_accessor.h`        || A file accessor employing a "host" file provided via the C library.                                                              ||
paul@456 92
|| `fsserver/host_file_opener.h`          || An opener for a "host" file provided via the C library.                                                                          ||
paul@456 93
|| `fsserver/ipc.h`                       || Interprocess communication utilities.                                                                                            ||
paul@456 94
|| `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.    ||
paul@456 95
|| `fsserver/notification.h`              || Notification support.                                                                                                            ||
paul@456 96
|| `fsserver/opener_context_resource.h`   || A context resource offering support for opening files.                                                                           ||
paul@456 97
|| `fsserver/opener_resource.h`           || A resource offering support for creating contexts and opening files.                                                             ||
paul@456 98
|| `fsserver/page_mapper.h`               || A page mapper providing memory pages to satisfy file accesses.                                                                   ||
paul@456 99
|| `fsserver/page_owner.h`                || A page owner abstraction, indicating the current user of a memory region.                                                        ||
paul@456 100
|| `fsserver/page_queue.h`                || A page queue abstraction.                                                                                                        ||
paul@456 101
|| `fsserver/page_queue_partitioned.h`    || A page queue retaining two internal collections of memory pages.                                                                 ||
paul@456 102
|| `fsserver/page_queue_shared.h`         || A page queue whose users take turns to access pages.                                                                             ||
paul@456 103
|| `fsserver/pager.h`                     || Generic pager functionality.                                                                                                     ||
paul@456 104
|| `fsserver/pages.h`                     || A page collection abstraction providing pages from a queue to users.                                                             ||
paul@456 105
|| `fsserver/pipe_accessor.h`             || A pipe accessor merely resetting allocated memory for use.                                                                       ||
paul@456 106
|| `fsserver/pipe_opener_resource.h`      || A pipe opener resource.                                                                                                          ||
paul@456 107
|| `fsserver/pipe_pager.h`                || A pipe pager providing access to pipe content and navigation support.                                                            ||
paul@456 108
|| `fsserver/pipe_paging.h`               || A pipe paging coordinator, permitting memory sharing pipe endpoints.                                                             ||
paul@456 109
|| `fsserver/provider.h`                  || Filesystem object provider support.                                                                                              ||
paul@456 110
|| `fsserver/provider_registry.h`         || A registry of filesystem object providers.                                                                                       ||
paul@456 111
|| `fsserver/resource.h`                  || Common resource classes and functions.                                                                                           ||
paul@456 112
|| `fsserver/resource_registry.h`         || A registry of filesystem object resources.                                                                                       ||
paul@456 113
|| `fsserver/resource_server.h`           || Common resource server functions.                                                                                                ||
paul@456 114
|| `fsserver/simple_pager.h`              || A simple pager exposing a single memory region.                                                                                  ||
paul@456 115
|| `fsserver/test_file_accessor.h`        || A test accessor producing generated content.                                                                                     ||
paul@456 116
|| `fsserver/test_file_opener.h`          || An opener for a test file containing generated content.                                                                          ||
paul@456 117
paul@427 118
== libipc ==
paul@427 119
paul@427 120
A library providing IPC (interprocess communication) mechanisms to support
paul@427 121
communication and interactions between components.
paul@427 122
paul@456 123
|| '''Header File'''    || '''Contents'''                                   ||
paul@456 124
|| `ipc/cap_alloc.h`    || Capability allocation and management             ||
paul@456 125
|| `ipc/direct.h`       || Interprocess communication operations            ||
paul@456 126
|| `ipc/factory.h`      || Factory-related data types                       ||
paul@456 127
|| `ipc/irq.h`          || Interrupt request handling                       ||
paul@456 128
|| `ipc/macros_ipc.h`   || Interprocess communication macros                ||
paul@456 129
|| `ipc/map.h`          || Capability mapping between tasks                 ||
paul@456 130
|| `ipc/mem_ipc.h`      || Memory sharing abstractions                      ||
paul@456 131
|| `ipc/message.h`      || Interprocess communication message abstraction   ||
paul@456 132
|| `ipc/semaphore.h`    || Semaphore utilities                              ||
paul@456 133
|| `ipc/server.h`       || Server binding/registration                      ||
paul@456 134
|| `ipc/thread.h`       || Thread-related initialisation                    ||
paul@456 135
|| `ipc/util_ipc.h`     || Interprocess communication abstractions          ||
paul@456 136
paul@427 137
== libmem ==
paul@427 138
paul@427 139
A library providing memory-related abstractions and utilities.
paul@427 140
paul@456 141
|| '''Header File'''             || '''Contents'''                                                         ||
paul@456 142
|| `mem/flexpage.h`              || A flexpage abstraction                                                 ||
paul@456 143
|| `mem/memory.h`                || A generic memory pool abstraction                                      ||
paul@456 144
|| `mem/memory_incremental.h`    || A memory pool allocating a region at a time from the system            ||
paul@456 145
|| `mem/memory_preallocated.h`   || A memory pool providing regions from a preallocated amount of memory   ||
paul@456 146
|| `mem/memory_utils.h`          || Memory quantity calculation utilities                                  ||
paul@456 147
|| `mem/region.h`                || Memory region abstractions                                             ||
paul@456 148
|| `mem/send_flexpage.h`         || A "send" flexpage abstraction for communicating memory mappings        ||
paul@456 149
|| `mem/types.h`                 || Miscellaneous types                                                    ||
paul@456 150
paul@427 151
== libsystypes ==
paul@427 152
paul@427 153
A repository of fundamental types used by the other libraries.
paul@456 154
paul@456 155
|| '''Header File'''       || '''Contents'''                           ||
paul@456 156
|| `systypes/base.h`       || Base types used by various other types   ||
paul@456 157
|| `systypes/factory.h`    || Factory-related data type macros         ||
paul@456 158
|| `systypes/fcntl.h`      || File control definitions                 ||
paul@456 159
|| `systypes/format.h`     || Format specifiers for output             ||
paul@456 160
|| `systypes/stat.h`       || File metadata abstractions               ||
paul@456 161
|| `systypes/timespec.h`   || Time-related types                       ||
paul@456 162
|| `systypes/user.h`       || User abstractions                        ||