This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
wishlist:david [2017/03/27 16:09] dcvmoole not to forget: pselect(2) |
wishlist:david [2017/10/11 18:13] dcvmoole networking project is merged |
||
---|---|---|---|
Line 189: | Line 189: | ||
* problem: it is not possible to mount RMIB subtrees using a name only (e.g. minix.lwip) | * problem: it is not possible to mount RMIB subtrees using a name only (e.g. minix.lwip) | ||
* problem: it is currently possible to mess up the MIB tree with bad name+id combos in RMIB mount requests | * problem: it is currently possible to mess up the MIB tree with bad name+id combos in RMIB mount requests | ||
+ | |||
+ | === Disallow killing processes in an uninterruptible system call === | ||
+ | |||
+ | * reason: processes may currently be terminated while in an uninterruptible system call, possibly triggering poorly-tested scenarios in other services (safecopy failures, etc) | ||
+ | * complication: this will require changes to the PM signal state machine, with subtle side effects | ||
+ | * complication: involving all user-facing system services in exit notification is a performance problem | ||
+ | * note: the most obvious solution would be kernel support for notification (to PM) when a process system call has completed, comparable to SIGNDELAY, and a PREEXIT process state in PM | ||
+ | * note: ideally the same idea would be applied to signal handler invocation, because the current approach makes dangerous and already-incorrect(?) assumptions about "retreg" there | ||
=== Add support for pselect(2) === | === Add support for pselect(2) === | ||
Line 196: | Line 204: | ||
* complication: a proper implementation will require a non-trivial extension to the PM/VFS protocol | * complication: a proper implementation will require a non-trivial extension to the PM/VFS protocol | ||
* subsequent project: also implement paccept(2); this will require storing more call state in VFS | * subsequent project: also implement paccept(2); this will require storing more call state in VFS | ||
- | |||
- | === Move the BSD socket API into VFS === | ||
- | |||
- | * status: **PULL REQUEST FILED** | ||
- | * reason: libc should not need to test or track socket types, it violates the light-libc minix philosophy | ||
- | * reason: the individual writes to implement sendto (etc) probably violate posix signal atomicity | ||
- | * benefit: this allows for proper socket call support in trace(1) | ||
- | * complication: this will break everything, require INET's retirement and a substantial UDS rewrite | ||
- | * note: this is probably best done along with many other network stack related changes | ||
=== Implement job control === | === Implement job control === | ||
Line 222: | Line 221: | ||
* complication: different file system will require different small exceptions | * complication: different file system will require different small exceptions | ||
* complication: no neat way to model orphan management in the edge (directory) layer | * complication: no neat way to model orphan management in the edge (directory) layer | ||
+ | |||
+ | === Move the BSD socket API into VFS === | ||
+ | |||
+ | * status: **MERGED** | ||
+ | * reason: libc should not need to test or track socket types, it violates the light-libc minix philosophy | ||
+ | * reason: the individual writes to implement sendto (etc) probably violate posix signal atomicity | ||
+ | * benefit: this allows for proper socket call support in trace(1) | ||
+ | * complication: this will break everything, require INET's retirement and a substantial UDS rewrite | ||
+ | * note: this is probably best done along with many other network stack related changes | ||
=== Look into setuid/seteuid behavior === | === Look into setuid/seteuid behavior === |