1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1.2 +++ b/docs/tools/make_table.sh Mon Nov 21 01:19:48 2022 +0100
1.3 @@ -0,0 +1,63 @@
1.4 +#!/bin/sh
1.5 +
1.6 +# Generate a Moin syntax table for header file documentation.
1.7 +
1.8 +DN=$1
1.9 +
1.10 +if [ ! -e "$DN" ] ; then
1.11 + cat 1>&2 <<EOF
1.12 +Usage: $0 <directory>
1.13 +
1.14 +Obtain header file details from within a given include directory.
1.15 +EOF
1.16 + exit 1
1.17 +fi
1.18 +
1.19 +# Obtain the description from the top of a file.
1.20 +
1.21 +get_description()
1.22 +{
1.23 + ENDLINE=$(grep -n -m 1 '^ \*$' "$1" | cut -f 1 -d :)
1.24 + head -n "$ENDLINE" "$1" | tail -n +2 | head -n -1 | sed 's/^ \* //' | concat_lines
1.25 +}
1.26 +
1.27 +# Concatenate lines.
1.28 +
1.29 +concat_lines()
1.30 +{
1.31 + while read LINE ; do
1.32 + echo -n "$LINE "
1.33 + done
1.34 +}
1.35 +
1.36 +# Format a table of header filenames and descriptions.
1.37 +
1.38 +make_table()
1.39 +{
1.40 + for FN in "$1/"*"/"*".h" ; do
1.41 +
1.42 + # Detect non-matching patterns.
1.43 +
1.44 + if [ ! -e "$FN" ] ; then
1.45 + break
1.46 +
1.47 + # Emit the header at the start.
1.48 +
1.49 + elif [ ! "$HEADER" ] ; then
1.50 + echo "|| '''Header File''' §|| '''Contents''' §||"
1.51 + HEADER=1
1.52 + fi
1.53 +
1.54 + PARENT=$(dirname "$FN")
1.55 + SECTION=$(basename "$PARENT")
1.56 + FILENAME=$(basename "$FN")
1.57 +
1.58 + echo -n '|| `'"$SECTION/$FILENAME"'` §|| '
1.59 + get_description "$FN"
1.60 + echo ' §||'
1.61 + done
1.62 +}
1.63 +
1.64 +make_table "$DN" | column -s '§' -t
1.65 +
1.66 +# vim: tabstop=4 expandtab shiftwidth=4
2.1 --- a/docs/wiki/Libraries Sat Oct 29 01:19:48 2022 +0200
2.2 +++ b/docs/wiki/Libraries Mon Nov 21 01:19:48 2022 +0100
2.3 @@ -10,16 +10,38 @@
2.4
2.5 Convenience functions for `libext2fs` operations.
2.6
2.7 +|| '''Header File''' || '''Contents''' ||
2.8 +|| `e2access/access.h` || Access control functions ||
2.9 +|| `e2access/format.h` || File metadata formatting ||
2.10 +|| `e2access/image.h` || Filesystem image access functions ||
2.11 +|| `e2access/path.h` || Path functions ||
2.12 +|| `e2access/utils.h` || Common utilities for filesystem users ||
2.13 +
2.14 == libe2access_blockserver ==
2.15
2.16 A convenience wrapper around `libext2fs`, providing initialisation functions
2.17 for the opening of filesystems and for indicating the capability through which
2.18 a block server, this providing a filesystem, may be accessed.
2.19
2.20 +|| '''Header File''' || '''Contents''' ||
2.21 +|| `e2access/fs.h` || Filesystem opening functions ||
2.22 +
2.23 == libexec ==
2.24
2.25 Support for initialising and executing programs in new tasks.
2.26
2.27 +|| '''Header File''' || '''Contents''' ||
2.28 +|| `exec/common.h` || Common structures and functions ||
2.29 +|| `exec/elf.h` || ELF payload decoding support ||
2.30 +|| `exec/external_pager.h` || A system pager implementation residing in a separate task ||
2.31 +|| `exec/internal_pager.h` || A system pager implementation residing in the same task as a program ||
2.32 +|| `exec/mapped_region.h` || Mapped memory region support ||
2.33 +|| `exec/memory.h` || Program memory initialisation support ||
2.34 +|| `exec/pager.h` || Common system pager functionality ||
2.35 +|| `exec/process.h` || Support for initialising programs in new tasks and threads ||
2.36 +|| `exec/segment.h` || Program memory segment support ||
2.37 +|| `exec/stack.h` || Stack support for new tasks and threads ||
2.38 +
2.39 == libext2fs ==
2.40
2.41 The ext2 filesystem library provided by the
2.42 @@ -35,20 +57,106 @@
2.43
2.44 The [[Client Library|client library]] for accessing filesystem servers.
2.45
2.46 +|| '''Header File''' || '''Contents''' ||
2.47 +|| `fsclient/client.h` || Filesystem client functions ||
2.48 +|| `fsclient/file.h` || File access convenience functions and types ||
2.49 +|| `fsclient/notifier.h` || File event notification support ||
2.50 +
2.51 == libfsserver ==
2.52
2.53 The [[Server Library|server library]] providing supporting abstractions and
2.54 functionality for filesystem-related [[Components|components]].
2.55
2.56 +|| '''Header File''' || '''Contents''' ||
2.57 +|| `fsserver/access_map.h` || An access map providing memory corresponding to file regions. ||
2.58 +|| `fsserver/accessor.h` || Generic accessor functionality. ||
2.59 +|| `fsserver/accountable.h` || Accountable object support. ||
2.60 +|| `fsserver/block_file_accessor.h` || A file accessor employing a rewritable memory area. ||
2.61 +|| `fsserver/block_file_opener.h` || An opener for a file employing a rewritable memory area. ||
2.62 +|| `fsserver/copied_page_mapper.h` || A page mapper providing copied memory pages or deferring to another page mapper to satisfy file accesses. ||
2.63 +|| `fsserver/directory_accessor.h` || An object providing access to a filesystem directory. ||
2.64 +|| `fsserver/directory_provider.h` || An object providing a directory abstraction with notification facilities. ||
2.65 +|| `fsserver/directory_resource.h` || A resource offering support for directory operations. ||
2.66 +|| `fsserver/ext2_directory_accessor.h` || An object for a directory provided by an Ext2-compatible filesystem. ||
2.67 +|| `fsserver/ext2_file_accessor.h` || A file accessor employing a file provided by an Ext2-compatible filesystem. ||
2.68 +|| `fsserver/ext2_file_opener.h` || An opener for a file provided by an Ext2-compatible filesystem. ||
2.69 +|| `fsserver/ext2_file_operations.h` || File operations supporting an Ext2-compatible filesystem. ||
2.70 +|| `fsserver/ext2_filesystem.h` || A resource supporting the creation of user-specific ext2 filesystem opener resources. ||
2.71 +|| `fsserver/file_opening.h` || Generic support for opening files. ||
2.72 +|| `fsserver/file_pager.h` || File-specific pager functionality. ||
2.73 +|| `fsserver/file_provider.h` || An object encapsulating file resources. ||
2.74 +|| `fsserver/filesystem_resource.h` || A resource supporting the creation of user-specific opener resources. ||
2.75 +|| `fsserver/generic_page_mapper.h` || A generic page mapper providing memory pages to satisfy file accesses. ||
2.76 +|| `fsserver/host_directory_accessor.h` || An object for a "host" directory provided via the C library. ||
2.77 +|| `fsserver/host_file_accessor.h` || A file accessor employing a "host" file provided via the C library. ||
2.78 +|| `fsserver/host_file_opener.h` || An opener for a "host" file provided via the C library. ||
2.79 +|| `fsserver/ipc.h` || Interprocess communication utilities. ||
2.80 +|| `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. ||
2.81 +|| `fsserver/notification.h` || Notification support. ||
2.82 +|| `fsserver/opener_context_resource.h` || A context resource offering support for opening files. ||
2.83 +|| `fsserver/opener_resource.h` || A resource offering support for creating contexts and opening files. ||
2.84 +|| `fsserver/page_mapper.h` || A page mapper providing memory pages to satisfy file accesses. ||
2.85 +|| `fsserver/page_owner.h` || A page owner abstraction, indicating the current user of a memory region. ||
2.86 +|| `fsserver/page_queue.h` || A page queue abstraction. ||
2.87 +|| `fsserver/page_queue_partitioned.h` || A page queue retaining two internal collections of memory pages. ||
2.88 +|| `fsserver/page_queue_shared.h` || A page queue whose users take turns to access pages. ||
2.89 +|| `fsserver/pager.h` || Generic pager functionality. ||
2.90 +|| `fsserver/pages.h` || A page collection abstraction providing pages from a queue to users. ||
2.91 +|| `fsserver/pipe_accessor.h` || A pipe accessor merely resetting allocated memory for use. ||
2.92 +|| `fsserver/pipe_opener_resource.h` || A pipe opener resource. ||
2.93 +|| `fsserver/pipe_pager.h` || A pipe pager providing access to pipe content and navigation support. ||
2.94 +|| `fsserver/pipe_paging.h` || A pipe paging coordinator, permitting memory sharing pipe endpoints. ||
2.95 +|| `fsserver/provider.h` || Filesystem object provider support. ||
2.96 +|| `fsserver/provider_registry.h` || A registry of filesystem object providers. ||
2.97 +|| `fsserver/resource.h` || Common resource classes and functions. ||
2.98 +|| `fsserver/resource_registry.h` || A registry of filesystem object resources. ||
2.99 +|| `fsserver/resource_server.h` || Common resource server functions. ||
2.100 +|| `fsserver/simple_pager.h` || A simple pager exposing a single memory region. ||
2.101 +|| `fsserver/test_file_accessor.h` || A test accessor producing generated content. ||
2.102 +|| `fsserver/test_file_opener.h` || An opener for a test file containing generated content. ||
2.103 +
2.104 == libipc ==
2.105
2.106 A library providing IPC (interprocess communication) mechanisms to support
2.107 communication and interactions between components.
2.108
2.109 +|| '''Header File''' || '''Contents''' ||
2.110 +|| `ipc/cap_alloc.h` || Capability allocation and management ||
2.111 +|| `ipc/direct.h` || Interprocess communication operations ||
2.112 +|| `ipc/factory.h` || Factory-related data types ||
2.113 +|| `ipc/irq.h` || Interrupt request handling ||
2.114 +|| `ipc/macros_ipc.h` || Interprocess communication macros ||
2.115 +|| `ipc/map.h` || Capability mapping between tasks ||
2.116 +|| `ipc/mem_ipc.h` || Memory sharing abstractions ||
2.117 +|| `ipc/message.h` || Interprocess communication message abstraction ||
2.118 +|| `ipc/semaphore.h` || Semaphore utilities ||
2.119 +|| `ipc/server.h` || Server binding/registration ||
2.120 +|| `ipc/thread.h` || Thread-related initialisation ||
2.121 +|| `ipc/util_ipc.h` || Interprocess communication abstractions ||
2.122 +
2.123 == libmem ==
2.124
2.125 A library providing memory-related abstractions and utilities.
2.126
2.127 +|| '''Header File''' || '''Contents''' ||
2.128 +|| `mem/flexpage.h` || A flexpage abstraction ||
2.129 +|| `mem/memory.h` || A generic memory pool abstraction ||
2.130 +|| `mem/memory_incremental.h` || A memory pool allocating a region at a time from the system ||
2.131 +|| `mem/memory_preallocated.h` || A memory pool providing regions from a preallocated amount of memory ||
2.132 +|| `mem/memory_utils.h` || Memory quantity calculation utilities ||
2.133 +|| `mem/region.h` || Memory region abstractions ||
2.134 +|| `mem/send_flexpage.h` || A "send" flexpage abstraction for communicating memory mappings ||
2.135 +|| `mem/types.h` || Miscellaneous types ||
2.136 +
2.137 == libsystypes ==
2.138
2.139 A repository of fundamental types used by the other libraries.
2.140 +
2.141 +|| '''Header File''' || '''Contents''' ||
2.142 +|| `systypes/base.h` || Base types used by various other types ||
2.143 +|| `systypes/factory.h` || Factory-related data type macros ||
2.144 +|| `systypes/fcntl.h` || File control definitions ||
2.145 +|| `systypes/format.h` || Format specifiers for output ||
2.146 +|| `systypes/stat.h` || File metadata abstractions ||
2.147 +|| `systypes/timespec.h` || Time-related types ||
2.148 +|| `systypes/user.h` || User abstractions ||