L4Re/departure

Annotated docs/wiki/Libraries

535:48a46e7a32e7
19 months ago Paul Boddie Introduced a separate library for the resource and resource server abstractions.
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
paul@427 64
== libfsserver ==
paul@427 65
paul@427 66
The [[Server Library|server library]] providing supporting abstractions and
paul@427 67
functionality for filesystem-related [[Components|components]].
paul@427 68
paul@456 69
|| '''Header File'''                      || '''Contents'''                                                                                                                   ||
paul@535 70
|| `fsserver/access_map.h`                || An access map providing memory corresponding to file regions                                                                    ||
paul@535 71
|| `fsserver/accessor.h`                  || Generic accessor functionality                                                                                                  ||
paul@535 72
|| `fsserver/accountable.h`               || Accountable object support                                                                                                      ||
paul@535 73
|| `fsserver/block_file_accessor.h`       || A file accessor employing a rewritable memory area                                                                              ||
paul@535 74
|| `fsserver/block_file_opener.h`         || An opener for a file employing a rewritable memory area                                                                         ||
paul@535 75
|| `fsserver/copied_page_mapper.h`        || A page mapper providing copied memory pages or deferring to another page mapper to satisfy file accesses                        ||
paul@535 76
|| `fsserver/directory_accessor.h`        || An object providing access to a filesystem directory                                                                            ||
paul@535 77
|| `fsserver/directory_provider.h`        || An object providing a directory abstraction with notification facilities                                                        ||
paul@535 78
|| `fsserver/directory_resource.h`        || A resource offering support for directory operations                                                                            ||
paul@535 79
|| `fsserver/ext2_directory_accessor.h`   || An object for a directory provided by an Ext2-compatible filesystem                                                             ||
paul@535 80
|| `fsserver/ext2_file_accessor.h`        || A file accessor employing a file provided by an Ext2-compatible filesystem                                                      ||
paul@535 81
|| `fsserver/ext2_file_opener.h`          || An opener for a file provided by an Ext2-compatible filesystem                                                                  ||
paul@535 82
|| `fsserver/ext2_file_operations.h`      || File operations supporting an Ext2-compatible filesystem                                                                        ||
paul@535 83
|| `fsserver/ext2_filesystem.h`           || A resource supporting the creation of user-specific ext2 filesystem opener resources                                            ||
paul@535 84
|| `fsserver/file_opening.h`              || Generic support for opening files                                                                                               ||
paul@535 85
|| `fsserver/file_pager.h`                || File-specific pager functionality                                                                                               ||
paul@535 86
|| `fsserver/file_provider.h`             || An object encapsulating file resources                                                                                          ||
paul@535 87
|| `fsserver/filesystem_resource.h`       || A resource supporting the creation of user-specific opener resources                                                            ||
paul@535 88
|| `fsserver/generic_page_mapper.h`       || A generic page mapper providing memory pages to satisfy file accesses                                                           ||
paul@535 89
|| `fsserver/host_directory_accessor.h`   || An object for a "host" directory provided via the C library                                                                     ||
paul@535 90
|| `fsserver/host_file_accessor.h`        || A file accessor employing a "host" file provided via the C library                                                              ||
paul@535 91
|| `fsserver/host_file_opener.h`          || An opener for a "host" file provided via the C library                                                                          ||
paul@535 92
|| `fsserver/ipc.h`                       || Interprocess communication utilities                                                                                            ||
paul@535 93
|| `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@535 94
|| `fsserver/notification.h`              || Notification support                                                                                                            ||
paul@535 95
|| `fsserver/opener_context_resource.h`   || A context resource offering support for opening files                                                                           ||
paul@535 96
|| `fsserver/opener_resource.h`           || A resource offering support for creating contexts and opening files                                                             ||
paul@535 97
|| `fsserver/page_mapper.h`               || A page mapper providing memory pages to satisfy file accesses                                                                   ||
paul@535 98
|| `fsserver/page_owner.h`                || A page owner abstraction, indicating the current user of a memory region                                                        ||
paul@535 99
|| `fsserver/page_queue.h`                || A page queue abstraction                                                                                                        ||
paul@535 100
|| `fsserver/page_queue_partitioned.h`    || A page queue retaining two internal collections of memory pages                                                                 ||
paul@535 101
|| `fsserver/page_queue_shared.h`         || A page queue whose users take turns to access pages                                                                             ||
paul@535 102
|| `fsserver/pager.h`                     || Generic pager functionality                                                                                                     ||
paul@535 103
|| `fsserver/pages.h`                     || A page collection abstraction providing pages from a queue to users                                                             ||
paul@535 104
|| `fsserver/pipe_accessor.h`             || A pipe accessor merely resetting allocated memory for use                                                                       ||
paul@535 105
|| `fsserver/pipe_opener_resource.h`      || A pipe opener resource                                                                                                          ||
paul@535 106
|| `fsserver/pipe_pager.h`                || A pipe pager providing access to pipe content and navigation support                                                            ||
paul@535 107
|| `fsserver/pipe_paging.h`               || A pipe paging coordinator, permitting memory sharing pipe endpoints                                                             ||
paul@535 108
|| `fsserver/provider.h`                  || Filesystem object provider support                                                                                              ||
paul@535 109
|| `fsserver/provider_registry.h`         || A registry of filesystem object providers                                                                                       ||
paul@535 110
|| `fsserver/resource_registry.h`         || A registry of filesystem object resources                                                                                       ||
paul@535 111
|| `fsserver/simple_pager.h`              || A simple pager exposing a single memory region                                                                                  ||
paul@535 112
|| `fsserver/test_file_accessor.h`        || A test accessor producing generated content                                                                                     ||
paul@535 113
|| `fsserver/test_file_opener.h`          || An opener for a test file containing generated content                                                                          ||
paul@456 114
paul@427 115
== libipc ==
paul@427 116
paul@427 117
A library providing IPC (interprocess communication) mechanisms to support
paul@427 118
communication and interactions between components.
paul@427 119
paul@456 120
|| '''Header File'''    || '''Contents'''                                   ||
paul@456 121
|| `ipc/cap_alloc.h`    || Capability allocation and management             ||
paul@456 122
|| `ipc/direct.h`       || Interprocess communication operations            ||
paul@456 123
|| `ipc/factory.h`      || Factory-related data types                       ||
paul@456 124
|| `ipc/irq.h`          || Interrupt request handling                       ||
paul@456 125
|| `ipc/macros_ipc.h`   || Interprocess communication macros                ||
paul@456 126
|| `ipc/map.h`          || Capability mapping between tasks                 ||
paul@456 127
|| `ipc/mem_ipc.h`      || Memory sharing abstractions                      ||
paul@456 128
|| `ipc/message.h`      || Interprocess communication message abstraction   ||
paul@456 129
|| `ipc/semaphore.h`    || Semaphore utilities                              ||
paul@456 130
|| `ipc/server.h`       || Server binding/registration                      ||
paul@456 131
|| `ipc/thread.h`       || Thread-related initialisation                    ||
paul@456 132
|| `ipc/util_ipc.h`     || Interprocess communication abstractions          ||
paul@456 133
paul@427 134
== libmem ==
paul@427 135
paul@427 136
A library providing memory-related abstractions and utilities.
paul@427 137
paul@456 138
|| '''Header File'''             || '''Contents'''                                                         ||
paul@456 139
|| `mem/flexpage.h`              || A flexpage abstraction                                                 ||
paul@456 140
|| `mem/memory.h`                || A generic memory pool abstraction                                      ||
paul@456 141
|| `mem/memory_incremental.h`    || A memory pool allocating a region at a time from the system            ||
paul@456 142
|| `mem/memory_preallocated.h`   || A memory pool providing regions from a preallocated amount of memory   ||
paul@456 143
|| `mem/memory_utils.h`          || Memory quantity calculation utilities                                  ||
paul@456 144
|| `mem/region.h`                || Memory region abstractions                                             ||
paul@456 145
|| `mem/send_flexpage.h`         || A "send" flexpage abstraction for communicating memory mappings        ||
paul@456 146
|| `mem/types.h`                 || Miscellaneous types                                                    ||
paul@456 147
paul@535 148
== libnotifier ==
paul@535 149
paul@535 150
A library providing notification support for programs.
paul@535 151
paul@535 152
|| '''Header File'''     || '''Contents'''             ||
paul@535 153
|| `notifier/notifier.h` || Event notification support ||
paul@535 154
paul@535 155
== libresource ==
paul@535 156
paul@535 157
A library providing support for resources, which are managed server
paul@535 158
components.
paul@535 159
paul@535 160
|| '''Header File'''             || '''Contents'''                        ||
paul@535 161
|| `resource/resource.h`         || Common resource classes and functions ||
paul@535 162
|| `resource/resource_server.h`  || Common resource server functions      ||
paul@535 163
paul@427 164
== libsystypes ==
paul@427 165
paul@427 166
A repository of fundamental types used by the other libraries.
paul@456 167
paul@456 168
|| '''Header File'''       || '''Contents'''                           ||
paul@456 169
|| `systypes/base.h`       || Base types used by various other types   ||
paul@456 170
|| `systypes/factory.h`    || Factory-related data type macros         ||
paul@456 171
|| `systypes/fcntl.h`      || File control definitions                 ||
paul@456 172
|| `systypes/format.h`     || Format specifiers for output             ||
paul@456 173
|| `systypes/stat.h`       || File metadata abstractions               ||
paul@456 174
|| `systypes/timespec.h`   || Time-related types                       ||
paul@456 175
|| `systypes/user.h`       || User abstractions                        ||