Bare bones child process creation.

Alexander Boettcher alexander.boettcher at ...1...
Wed Mar 30 20:26:05 CEST 2016


Hello,

On 30.03.2016 19:16, Daniel Waddington wrote:
> I'm trying to do bare bones process creation without using the Child or
> Process helper classes (I'm toying around with serialization ideas).  I
> tried to construct something similar to
> http://genode.org/documentation/architecture/process
> but I can't seem to get it to work (error = exception base not specified on
> nova32).

Some base-* platforms implement the startup of threads slightly
differently than described, e.g. base-foc [0] and base-nova [1]. If you
really want to have portable code, you should stay with the thread
implementation of the base library as we provide per base-* platform.

Nevertheless - I presume, that you already try to bring up a second
thread (in this case the message can be printed) and that you are
missing a call to cpu_session->state() (see Thread_base::start in [1]).

The state() call tells core some nova specific information (start/base
of exception portal selector for the new thread) in order to
successfully start a new thread. The base exception portal selector
(sel_exc_base) must not be zero (because the main thread already
occupies [0-31]).

Hope it helps,

Alex.

[0] repos/base-nova/src/base/thread/thread_nova.cc
[1] repos/base-foc/src/base/thread/thread_start.cc




More information about the users mailing list