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 || |