L4Re/departure

Changeset

568:40e889c0788f
2023-04-09 Paul Boddie raw files shortlog changelog graph Updated program loading and roadmap notes.
docs/wiki/Program_Loading (file) docs/wiki/Roadmap (file)
     1.1 --- a/docs/wiki/Program_Loading	Fri Apr 07 23:35:21 2023 +0200
     1.2 +++ b/docs/wiki/Program_Loading	Sun Apr 09 15:02:05 2023 +0200
     1.3 @@ -215,7 +215,7 @@
     1.4      IPCGate_note -> IPCGate [dir=none,style=dotted];
     1.5    }
     1.6  
     1.7 -  InitCaps [shape=record,label="<head> Initial capabilities | {<s> \"server\" |<c> capability }"];
     1.8 +  InitCaps [shape=record,label="<head> Initial capabilities | {<s> ENV_INTERNAL_PAGER_NAME |<c> capability }"];
     1.9  
    1.10    subgraph {
    1.11      rank=same;
    1.12 @@ -248,3 +248,27 @@
    1.13  }}}
    1.14  
    1.15  ########
    1.16 +
    1.17 +The creating task performs the following operations:
    1.18 +
    1.19 + 1. Create an IPC gate for communication between the program and its pager.
    1.20 +
    1.21 + 1. Map the IPC gate into the created task to be accessible via a given
    1.22 +    capability slot.
    1.23 +
    1.24 + 1. Define the IPC gate in the pager's initial capabilities using a
    1.25 +    well-defined name, allowing the pager to look up the capability in its
    1.26 +    environment.
    1.27 +
    1.28 + 1. Start the pager which itself obtains the IPC gate capability and binds to
    1.29 +    it, making itself available as the pager for the program.
    1.30 +
    1.31 + 1. Set the pager of the program to the IPC gate as mapped within the task.
    1.32 +
    1.33 + 1. Start the program which is already configured to send page faults via the
    1.34 +    IPC gate to the pager.
    1.35 +
    1.36 +Upon starting, the program will encounter a page fault immediately, unless
    1.37 +some additional work was done to map memory pages into the task in advance.
    1.38 +The internal pager or page fault handler will attempt to resolve these faults
    1.39 +as they occur, being contacted by the kernel on the program's behalf.
     2.1 --- a/docs/wiki/Roadmap	Fri Apr 07 23:35:21 2023 +0200
     2.2 +++ b/docs/wiki/Roadmap	Sun Apr 09 15:02:05 2023 +0200
     2.3 @@ -24,11 +24,23 @@
     2.4  implementation when the `main` function returns control to the C library. It
     2.5  seems worthwhile adopting this approach for compatibility with L4Re.
     2.6  
     2.7 +Currently, a process server is implemented, but more control over the
     2.8 +configuration of individual processes is desirable. It should be possible to
     2.9 +run programs that cannot access the filesystem from which they were loaded,
    2.10 +instead accessing a different, user-supplied filesystem.
    2.11 +
    2.12  == Library Loading Support ==
    2.13  
    2.14  Currently, the program loading functionality does not support dynamic
    2.15  library loading.
    2.16  
    2.17 +== Program Environment Support ==
    2.18 +
    2.19 +The program loading functionality does relatively little beyond the
    2.20 +initialisation of an initial environment that can start a program. Work is
    2.21 +needed to handle situations like the exhaustion of the program stack and to be
    2.22 +able to extend the stack appropriately.
    2.23 +
    2.24  == Test Sequencing and Shell Functionality ==
    2.25  
    2.26  Currently, testing attempts to validate the behaviour of various operations
    2.27 @@ -51,6 +63,10 @@
    2.28  on Newlib that employed the filesystem access framework. It seems likely that
    2.29  a similar approach will be taken for this iteration as well.
    2.30  
    2.31 +The C library should provide support for all the elements of the frameworks
    2.32 +implemented in this project, and it should also provide usable threading
    2.33 +mechanisms.
    2.34 +
    2.35  == Virtual Filesystems ==
    2.36  
    2.37  The previous iteration of this work provided a virtual filesystem server that