osfree-project / osfree

osFree - open source Operating System/2 clone, usermode parts.
http://osfree.org
116 stars 12 forks source link

Finish porting the osFree OS/2 personality to Genode and L4Re #89

Open prokushev opened 2 years ago

prokushev commented 2 years ago

We have our OS/2 personality (OS/2 API implementation prototype) working under L4Env. Though, it is discontinued, outdated for almost 10 years, so we need migrate to more alive environment. L4Env is superseded by L4Re (http://os.inf.tu-dresden.de/L4Re/), so we, probably, need to port it to L4Re. Also, very promising and quickly developing is Genode OS framework (http://genode.org/). Also, Genode is promoted as a community-driven project , with a commercial company having the core team, behind it. L4Re is mostly, academic project, though, it has more in common with L4Env (being its successor). Also, L4Re is ported on more architectures than Genode. So, it is very promising too. So, ideally, we need to port our OS/2 personality prototype to both of them. Currently, porting to Genode is in progress. Also, there is a port to L4Re started too, though, some very basic functions are implemented.

We mostly converted the OS/2 personality to more portable form. Now the missing parts are:

1) L4Env-like region mapper functions. The most missing part in Genode is the l4rm_lookup analogue. So, we need to implement the accounting for VM regions ourself. The required functions implementation we need is contained in "ports-foc" repository for L4Linux port to Genode/Fiasco.OC. This is almost we need.

2) Create the code for spawning a child process. This is required in os2srv for starting other servers and os2app instances. The example of the required code is in Genode's "loader" server.

3) Refactor the code for KalCreateThread/KalKillThread/KalSuspendThread/KalResumeThread/KalWaitThread functions for both L4Env and Genode for more portability and code reuse. (platform-independent code, based on code for ThreadCreate/ThreadKill/ThreadSuspend/ThreadResume/ThreadWait, which are platform-dependent).

4) Implement required address-space layout management, with using of managed dataspaces + using customized linker scripts to move some VM areas around.