This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision Next revision Both sides next revision | ||
wishlist:david [2016/03/14 12:36] dcvmoole setuid revision done |
wishlist:david [2017/03/27 16:09] dcvmoole not to forget: pselect(2) |
||
---|---|---|---|
Line 167: | Line 167: | ||
* complication: /etc/mtab is currently a symlink to /proc/mounts, this needs to be dealt with | * complication: /etc/mtab is currently a symlink to /proc/mounts, this needs to be dealt with | ||
* note: ideally, procfs should no longer be needed on the ramdisk | * note: ideally, procfs should no longer be needed on the ramdisk | ||
+ | |||
+ | === Rework the DS publish/subscribe API === | ||
+ | |||
+ | * reason: the current implementation is heavyweight (libc regex) and uses malloc through regcomp(3) | ||
+ | * reason: at the same time it does not fulfill needs of services, which want to have multiple independent subscriptions | ||
+ | * complication: this requires a proper look at all current DS publish/subscribe usage scenarios | ||
+ | * note: an example use case is RMIB, which wants to detect MIB-service restarts independent of the main code | ||
+ | * note: a solution based on multiple possible subscriptions to sets of service classes would probably suffice | ||
+ | * note: libsys should probably have a DS notification dispatcher, possibly as part of SEF | ||
+ | * note: this probably a good time to introduce a system-wide constant for service label sizes | ||
+ | |||
+ | === Make the MIB service's RMIB calls asynchronous === | ||
+ | |||
+ | * reason: a RMIB call to a deadlocked service may currently deadlock MIB, and with that the entire system | ||
+ | * complication: this may or may not require the MIB service to sign up for PM process events | ||
+ | * note: this depends on RMIB being notified about service deaths through DS, rather than via ipc_sendrec() | ||
+ | |||
+ | === Extend RMIB functionality/robustness to match service requirements === | ||
+ | |||
+ | * problem: it is not possible to modify (= bump the version number of) already-mounted RMIB subtrees (e.g., net.interface) | ||
+ | * 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 | ||
+ | |||
+ | === Add support for pselect(2) === | ||
+ | |||
+ | * reason: pselect(2) is required by dhcpcd(8) and various other parts of userland | ||
+ | * complication: pselect(2) is supposed to be atomic and thus cannot be implemented as a select(2) wrapper | ||
+ | * 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 | ||
=== Move the BSD socket API into VFS === | === Move the BSD socket API into VFS === | ||
- | * status: **IN PROGRESS** | + | * status: **PULL REQUEST FILED** |
* reason: libc should not need to test or track socket types, it violates the light-libc minix philosophy | * 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 | * reason: the individual writes to implement sendto (etc) probably violate posix signal atomicity |