L4Re/departure

Changeset

456:d431ace6aeaf
2022-11-21 Paul Boddie raw files shortlog changelog graph Added header file descriptions and a script to generate them.
docs/tools/make_table.sh (file) docs/wiki/Libraries (file)
     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                        ||