From 75a1e4532166e7aeb2c0c3109851d4dd48c25183 Mon Sep 17 00:00:00 2001 From: Richard Braun Date: Sat, 15 Jun 2013 10:18:07 +0200 Subject: x86 page fault handling --- kern/kernel.c | 46 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) (limited to 'kern/kernel.c') diff --git a/kern/kernel.c b/kern/kernel.c index d636d54a..126b8a33 100644 --- a/kern/kernel.c +++ b/kern/kernel.c @@ -26,6 +26,50 @@ #include #include +#include +#include +#include +#include + +#define OBJ_SIZE (PAGE_SIZE * 10) + +static void +kernel_test(void *arg) +{ + struct vm_object *object; + unsigned long addr; + int error, flags; + + (void)arg; + + object = vm_anon_create(OBJ_SIZE); + assert(object != NULL); + addr = 0; + flags = VM_MAP_PROT_ALL | VM_MAP_MAX_PROT_ALL | VM_MAP_INHERIT_NONE + | VM_MAP_ADV_NORMAL; + error = vm_map_enter(kernel_map, object, 0, &addr, OBJ_SIZE, 0, flags); + assert(!error); + printk("anonymous object mapped at %#lx\n", addr); + vm_map_info(kernel_map); + memset((void *)addr, '\0', OBJ_SIZE); +} + +static void +start_test(void) +{ + struct thread_attr attr; + struct thread *thread; + int error; + + attr.name = "test"; + attr.cpumap = NULL; + attr.task = NULL; + attr.policy = THREAD_SCHED_POLICY_TS; + attr.priority = THREAD_SCHED_TS_PRIO_DEFAULT; + error = thread_create(&thread, &attr, kernel_test, NULL); + assert(!error); +} + void __init kernel_main(void) { @@ -42,6 +86,8 @@ kernel_main(void) work_setup(); llsync_setup(); + start_test(); + /* Rendezvous with APs */ cpu_mp_sync(); -- cgit v1.2.3