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