In case anyone is interested, here is my rough TODO list for
rumpfiber... comments welcome.

In no particular order

1. Sort out exported symbols
Started making some of the scheduling interface private, but currently
external _lwp.c wants to use some functions, so only partially
complete. If the scheduling functions are going to remain public they
need to be namespaced.

2. Split out into modules
Started this, eg splitting out rumpuser_file.c as user may want to
modify, replace or not include at all. Most of these are just the
original ones (eg dl, which an embedded system wont want), but maybe
inclined to split out memory allocation, random numbers and so on as
these may vary.

3. Some sort of configure system
There is not a huge amount that isn't portable but there is some.
Should probably cover the rumpuser_port stuff as well. Probably a
shell script.

4. Some way of cleanly integrating _lwp handling
This means sorting out NetBSD env for building and access to internals
in a clean way.

5. Swapcontext implementation in case missing
For embedded systems (and other systems without swapcontext functions,
eg OpenBSD, currently Musl) a reference implementation would be
useful. In addition, some swapcontext implementations make system
calls: Linux saves and restores signal masks, while in NetBSD these
routimes are syscalls, which means that they are unnecessarily slow.

6. Reduce dependencies
Have been trying to remove eg requirement on stdio.h. Not so important
eg in rumpuser_dl.c or other optional modules but for embedded
applications the less you need to implement the better.

7. Less locking
I think Antti was suggetsing that something even more optimised than
locks_up.c possible without concurrent threads.

8. Look at cross unit optimisation
There is a lot of optimisation that could potentially happen with
cross unit optimisation that new gcc and clang have, eg inlining
curlwp hypercall, possibly removing some mutexes that are noops.

9. Block and network backends
Both of these currently rely on pthreads. The aio block code should
work, if its read thread is replaced by polling in the scheduler.
Probably want a scheduler hook for a simple poll and one for poll()
instead of sleeping when idle.

10. rump_server
This should I think now work, bar the etfs stuff which needs 9, so
just needs a build script.

10. rumprun integration
Due to limited host API hoping to make a simpler way of resolving
host/netbsd namespace issues.

11. performance testing
As it says. Networking needs 9. done.

------------------------------------------------------------------------------
Open source business process management suite built on Java and Eclipse
Turn processes into business applications with Bonita BPM Community Edition
Quickly connect people, data, and systems into organized workflows
Winner of BOSSIE, CODIE, OW2 and Gartner awards
http://p.sf.net/sfu/Bonitasoft
_______________________________________________
rumpkernel-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/rumpkernel-users

Reply via email to