diff --git a/include/l4/generic/scheduler.h b/include/l4/generic/scheduler.h index 19d32c0..9470a59 100644 --- a/include/l4/generic/scheduler.h +++ b/include/l4/generic/scheduler.h @@ -11,8 +11,8 @@ #include INC_GLUE(memory.h) /* Ticks per second, try ticks = 1000 + timeslice = 1 for regressed preemption test. */ -#define HZ 100 -#define TASK_TIMESLICE_DEFAULT 20 +#define HZ 10 +#define TASK_TIMESLICE_DEFAULT 100 /* #define TASK_TIMESLICE_DEFAULT (HZ/100)*/ static inline struct ktcb *current_task(void) diff --git a/tasks/mm0/main.c b/tasks/mm0/main.c index 091654d..c6fa51d 100644 --- a/tasks/mm0/main.c +++ b/tasks/mm0/main.c @@ -47,7 +47,7 @@ void handle_requests(void) /* Read mrs not used by syslib */ for (int i = 0; i < MR_UNUSED_TOTAL; i++) - mr[i] = read_mr(i); + mr[i] = read_mr(MR_UNUSED_START + i); switch(tag) { case L4_IPC_TAG_WAIT: diff --git a/tasks/mm0/src/arch-arm/mm.c b/tasks/mm0/src/arch-arm/mm.c index 398017b..1e7efcb 100644 --- a/tasks/mm0/src/arch-arm/mm.c +++ b/tasks/mm0/src/arch-arm/mm.c @@ -51,5 +51,9 @@ void set_generic_fault_params(struct fault_data *fault) else BUG(); } + printf("%s: Handling %s fault (%s abort) from %d. fault @ 0x%x\n", + __TASKNAME__, (fault->reason & VM_READ) ? "read" : "write", + is_prefetch_abort(fault->kdata->fsr) ? "prefetch" : "data", + fault->task->tid, fault->address); } diff --git a/tasks/mm0/src/fault.c b/tasks/mm0/src/fault.c index e41b3fe..bea14af 100644 --- a/tasks/mm0/src/fault.c +++ b/tasks/mm0/src/fault.c @@ -118,7 +118,8 @@ int do_file_page(struct fault_data *fault) BUG_ON(!list_empty(&page->list)); list_add(&page->list, &page->owner->page_cache_list); spin_unlock(&page->lock); - + printf("%s: Mapped new page @ 0x%x to task: %d\n", __TASKNAME__, + fault->address, fault->task->tid); /* Upgrade RO page to non-cow write */ } else if ((reason & VM_WRITE) && (pte_flags & VM_READ) && !(vma_flags & VMA_COW)) { @@ -457,7 +458,6 @@ void page_fault_handler(l4id_t sender, fault_kdata_t *fkdata) .kdata = fkdata, }; - printf("%s: Handling fault from %d.\n", __TASKNAME__, sender); BUG_ON(sender == 0); /* Get pager specific task info */ diff --git a/tools/helper-scripts/touch_all b/tools/helper-scripts/touch_all new file mode 100755 index 0000000..68e36ad --- /dev/null +++ b/tools/helper-scripts/touch_all @@ -0,0 +1,4 @@ +find . -exec touch {} \; + +# or +# find . | xargs touch diff --git a/tools/l4-qemunew b/tools/l4-qemunew new file mode 100755 index 0000000..36ceb76 --- /dev/null +++ b/tools/l4-qemunew @@ -0,0 +1,13 @@ +cd build +#arm-none-eabi-insight & +/opt/bin/qemu-system-arm -s -kernel final.axf -nographic -m 128 -M versatilepb & +arm-none-eabi-insight ; pkill qemu-system-arm +#arm-none-eabi-gdb ; pkill qemu-system-arm +cd .. + + +# TODO: +# insight works ok if gdbinit script is run from the insight +# command window. Then one needs to break at bkpt_phys_to_virt and do: +# sym start.axf +# Then continue execution to see all symbols. This must be done automatic.