1 |
|
* Design |
2 |
|
** physmem should probably support marking a container as being the |
3 |
|
default paging container for a certain task (providing a specific |
4 |
|
virtual address for this container). |
5 |
|
Then the last-resort pager in a task can run on memory in this |
6 |
|
container, and physmem can freely unmap that memory temporarily |
7 |
|
(for reorganization). The last-resort pager would use physmem as |
8 |
|
its pager. This relieves the need to wire down the memory the |
9 |
|
pager is running on. |
10 |
|
This can also be used for startup code, which is currently mapped |
11 |
|
directly from starting task to started task. This is not |
12 |
|
acceptable under the paranoid constrain that all mappings must be |
13 |
|
installed by physmem, to avoid DoS attacks on the page tables. |
14 |
|
|
15 |
|
Deep integration in libhurd-cap-server to handle page fault |
16 |
|
messages transparently as RPC messages could be provided by hooks. |
17 |
|
Alternatively, special server thread could be designated to handle |
18 |
|
the page faults. |
19 |
|
|
20 |
|
This does not eliminate all need to wire down memory. Buffers for |
21 |
|
receiving string items must not page fault, and although physmem |
22 |
|
could be trusted to handle such a page fault, the server has no way |
23 |
|
to enforce the use of a trusted pager for such memory on the client |
24 |
|
side. So, either some form of wiring must still be supported, or |
25 |
|
containers or other trusted buffer objects must be used instead of |
26 |
|
string items. |
27 |
|
|
28 |
|
|
29 |
* libl4 |
* libl4 |
30 |
** The main TODO list for libl4 is in the file libl4/TODO. |
** The main TODO list for libl4 is in the file libl4/TODO. |
31 |
** We need cancellable forms of ipc() and lipc()! |
** We need cancellable forms of ipc() and lipc()! |
58 |
well as all modules beyond the rootserver module. |
well as all modules beyond the rootserver module. |
59 |
|
|
60 |
|
|
61 |
|
* root server libraries |
62 |
|
** More code should be explicitely shared by the root servers. |
63 |
|
** Use ptmalloc, not malloc+USE_MALLOC_LOCK. |
64 |
|
|
65 |
|
|
66 |
* wortel |
* wortel |
67 |
** Use the Generic Booting Protocol (Appendix J l4-x2-20040823.pdf and |
** Use the Generic Booting Protocol (Appendix J l4-x2-20040823.pdf and |
68 |
newer). Needs corresponding support in laden. |
newer). Needs corresponding support in laden. |
94 |
So, maybe, to cancel, the manager could just propagates the |
So, maybe, to cancel, the manager could just propagates the |
95 |
cancellation request. For this to work, we need to be able to |
cancellation request. For this to work, we need to be able to |
96 |
differentiate between normal pending workers and such sub-managers. |
differentiate between normal pending workers and such sub-managers. |
97 |
|
** Neal points out that the placement of the cap-class argument in |
98 |
|
hurd_cap_class_init and hurd_cap_class_create is very much |
99 |
|
divergent. |
100 |
|
|
101 |
|
|
102 |
* L4 (for lack of a better place) |
* L4 (for lack of a better place) |
103 |
** Check that L4 does not schedule the client when the server makes a |
** Check that L4 does not schedule the client when the server makes a |
116 |
** Bugs: |
** Bugs: |
117 |
*** See patches in README |
*** See patches in README |
118 |
|
|
119 |
|
|
120 |
|
* Servers |
121 |
|
** The task server can hang if it needs to create a thread and is out |
122 |
|
of memory, and physmem wants to create a worker thread. Because |
123 |
|
then task will contact physmem to allocate more memory, and physmem |
124 |
|
contacts task to create a new worker thread, and the system will |
125 |
|
dead-lock. This needs some hackery to break out of it. |
126 |
|
|
127 |
Copyright 2003, 2004 Free Software Foundation, Inc. |
Copyright 2003, 2004 Free Software Foundation, Inc. |
128 |
Written by Marcus Brinkmann <marcus@gnu.org> |
Written by Marcus Brinkmann <marcus@gnu.org> |
129 |
|
|