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