On 03/06/16 12:17, Pravin Shinde wrote:
The motivation to go for rumprun was lack of clear understanding of the rumpkernel, and it seemed easy (and cleaner) to add Barrelfish as an additional platform to rumprun due to the Non-POSIX'y nature of Barrelfish. My guess was that keeping the changes limited to the 'rumprun/platform/' would be self-contained, and would simplify the maintenance of the code.
Unless you're working in a standalone environment, I'd stay clear of trying to reuse Rumprun.
I am open for suggestions if my initial approach seems ill-suited. My goal is to be able to use NetBSD TCP/IP stack from Barrelfish applications as a library, and if possible, ability to easily track the updates to rump kernel. Currently I am looking into using '-k' flag of rumprun to avoid linking with libc, and I will be happy to hear about alternate approaches or any suggestions.
What I would do to reach that goal is use a raw rump kernel. The symbol hiding properties of rump kernels were designed for exactly the purpose of being easy to integrate. Then just make the user-visible symbols reference the rump kernel syscalls (rump_sys_foo). Furthermore, since I get the impression that you're not concerned with being able to use off-the-shelf POSIX software, you can expose <rump/rumpdefs.h> as the data type interface to those syscalls -- please send patches if you need something else for your use case added to rumpdefs.h. So, essentially, use "buildrump.sh -k" for building rump kernel components, build your librumpuser implementation in whatever way necessary, and you should be good to go.
