aboutsummaryrefslogtreecommitdiff
path: root/src/kernel/core
diff options
context:
space:
mode:
authorAlex Auvolat <alex.auvolat@ens.fr>2015-02-20 15:47:51 +0100
committerAlex Auvolat <alex.auvolat@ens.fr>2015-02-20 15:47:51 +0100
commit9ba449a6e5f9db20923fb9802eefe0f090ba5fff (patch)
treef0f58bfa44a30e61e30caf08af1cdf03bef822f0 /src/kernel/core
parent2d4d64189501c253ed6a5b5ff5e27da1cb34407a (diff)
downloadkogata-9ba449a6e5f9db20923fb9802eefe0f090ba5fff.tar.gz
kogata-9ba449a6e5f9db20923fb9802eefe0f090ba5fff.zip
Change mode of operation for mmap_file (see readme)
Diffstat (limited to 'src/kernel/core')
-rw-r--r--src/kernel/core/kmain.c12
-rw-r--r--src/kernel/core/thread.c4
2 files changed, 6 insertions, 10 deletions
diff --git a/src/kernel/core/kmain.c b/src/kernel/core/kmain.c
index 219bab1..fa5d69c 100644
--- a/src/kernel/core/kmain.c
+++ b/src/kernel/core/kmain.c
@@ -124,14 +124,6 @@ void kernel_init_stage2(void* data) {
// Launch some worker threads
start_workers(2);
- // test sleep()
- dbg_printf("Testing sleep() : ");
- for (int i = 0; i < 20; i++) {
- usleep(50000);
- dbg_printf(".");
- }
- dbg_printf("\n");
-
TEST_PLACEHOLDER_AFTER_TASKING;
// Create devfs
@@ -167,13 +159,13 @@ void kernel_init_stage2(void* data) {
ASSERT(nullfs_add_ram_file(devfs, name,
(char*)mods[i].mod_start,
- len, false, FM_READ | FM_MMAP));
+ len, false, FM_READ));
}
TEST_PLACEHOLDER_AFTER_DEVFS;
// Launch INIT
- fs_handle_t *init_bin = fs_open(devfs, "/mod/init.bin", FM_READ | FM_MMAP);
+ fs_handle_t *init_bin = fs_open(devfs, "/mod/init.bin", FM_READ);
if (init_bin == 0) PANIC("No init.bin module provided!");
if (!is_elf(init_bin)) PANIC("init.bin is not valid ELF32 binary");
diff --git a/src/kernel/core/thread.c b/src/kernel/core/thread.c
index 7f9f25e..60dccde 100644
--- a/src/kernel/core/thread.c
+++ b/src/kernel/core/thread.c
@@ -7,6 +7,7 @@
#include <frame.h>
#include <paging.h>
#include <worker.h>
+#include <process.h>
void save_context_and_enter_scheduler(saved_context_t *ctx);
void resume_context(saved_context_t *ctx);
@@ -84,6 +85,8 @@ void run_scheduler() {
// This function is expected NEVER TO RETURN
if (current_thread != 0 && current_thread->state == T_STATE_RUNNING) {
+ current_thread->last_ran = worker_get_time();
+ if (current_thread->proc) current_thread->proc->last_ran = current_thread->last_ran;
enqueue_thread(current_thread, true);
}
@@ -141,6 +144,7 @@ thread_t *new_thread(entry_t entry, void* data) {
t->ctx.eip = (void(*)())run_thread;
t->state = T_STATE_PAUSED;
+ t->last_ran = 0;
t->current_pd_d = get_kernel_pagedir();