l4/sys/syscalls.h: No such file or directory

Adam Lackorzynski adam at os.inf.tu-dresden.de
Tue Sep 16 00:04:25 CEST 2014


On Mon Sep 15, 2014 at 15:50:07 +0200, Valentin Hauner wrote:
> On 09/15/2014 09:18 AM, Björn Döbel wrote:
> > The trick here is that your pager needs to have the binary mapped into
> > its own address space before handing it out. This can be achieved by
> > accessing the binary's pages once during startup. (For convenience,
> > see the l4_touch_ro() and l4_touch_rw() functions.)
> >   
> That worked, now the warnings do not appear any more.
> But it does not solve the real problem either.
> 
> The code I've added:
> 
> > extern char _start[], _stext[], _sdata[], _end[];
> >
> > // Adapted from examples/sys/start-with-exc/main.c
> > l4_touch_ro(_start, _sdata - _start + 1);
> > l4_touch_rw(_sdata, _end - _sdata);
> >
> > // Allocating stack and setting arguments to pass ...
> >
> > l4_touch_rw(thread_stack[count], sizeof(thread_stack[count]));
> > l4_touch_ro(t->func, 1);
> >
> > // Mapping the pages with l4_task_map ...
> 
> I've tried using _stext instead of _start, but still no success.
> 
> A simple call of
> > l4_touch_ro(_stext, _end - _stext)
> does not solve the issue either.

I'm unsure what is the problem now. Doing the 4 l4_touch_* are the right
thing to do. We should check whether there are more page faults
happening. Enter jdb, then issue 'P*' (capital P) to enable page-fault
logging, then 'g' for go. Let it run a second, then ESC again. Look at
log with 'T' (capital T). Are there any entries?
And generally, what are the threads doing?


Adam
-- 
Adam                 adam at os.inf.tu-dresden.de
  Lackorzynski         http://os.inf.tu-dresden.de/~adam/



More information about the l4-hackers mailing list