Hi,
On 09/03/2014 12:32 AM, Adam Lackorzynski wrote:
And indeed, you need to map the cap to the new task.
l4_task_map(task_cap, L4RE_THIS_TASK_CAP, l4_obj_fpage(l4re_env()->rm, 0, L4_FPAGE_RO), l4_map_obj_control(l4re_env()->rm, L4_MAP_ITEM_MAP));
Thanks, that works, there's no more kernel warning for an invalid pager now.
But the actual thread function is not executed any more. Instead, Fiasco calls the deblock_refill method of my ready queue implementation for that thread (respectively Sched_context) _steadily_. I've attached the output of JDB's thread list. It's interesting to see that thread0 seems to wait for the first thread of task 1a.
The function of thread0 accesses its Edf_thread object created in task 1a (named 't'), so I've tried to map that object to the new task. Additionally, I've tried to map the thread capability for thread0 ('t->cap') to the new task. But both approaches do not solve the problem.
l4_task_map(task_cap, L4RE_THIS_TASK_CAP, l4_fpage((l4_umword_t)t, sizeof(t), L4_FPAGE_RW), l4_map_obj_control((l4_umword_t)&t, L4_MAP_ITEM_MAP));
l4_task_map(task_cap, L4RE_THIS_TASK_CAP, l4_obj_fpage(t->cap, 0, L4_FPAGE_RW), l4_map_obj_control(t->cap, L4_MAP_ITEM_MAP));
Best regards, Valentin