diff --git a/src/kernel/scheduler.cpp b/src/kernel/scheduler.cpp index 0a312b0..a494984 100644 --- a/src/kernel/scheduler.cpp +++ b/src/kernel/scheduler.cpp @@ -284,6 +284,8 @@ scheduler::schedule(uintptr_t rsp0) // TODO: lol a real clock static uint64_t now = 0; + pid_t lastpid = m_current->pid; + m_current->rsp = rsp0; m_runlists[m_current->priority].remove(m_current); @@ -312,9 +314,11 @@ scheduler::schedule(uintptr_t rsp0) page_table *pml4 = m_current->pml4; page_manager::set_pml4(pml4); - bool loading = m_current->flags && process_flags::loading; - log::debug(logs::task, "Scheduler switched to process %d, priority %d%s.", - m_current->pid, m_current->priority, loading ? " (loading)" : ""); + if (lastpid != m_current->pid) { + bool loading = m_current->flags && process_flags::loading; + log::debug(logs::task, "Scheduler switched to process %d, priority %d%s.", + m_current->pid, m_current->priority, loading ? " (loading)" : ""); + } return rsp0; } diff --git a/src/kernel/syscall.cpp b/src/kernel/syscall.cpp index 1da14f3..71bf6a6 100644 --- a/src/kernel/syscall.cpp +++ b/src/kernel/syscall.cpp @@ -49,7 +49,7 @@ syscall_dispatch(uintptr_t return_rsp, cpu_state ®s) case syscall::debug: cons->set_color(11); - cons->printf("\nProcess %u: Received DEBUG syscall\n", p->pid); + cons->printf("\nProcess %d: Received DEBUG syscall\n", p->pid); cons->set_color(); print_regs(regs); cons->printf("\n Syscall enters: %8d\n", __counter_syscall_enter); @@ -58,7 +58,7 @@ syscall_dispatch(uintptr_t return_rsp, cpu_state ®s) case syscall::message: cons->set_color(11); - cons->printf("\nProcess %u: Received MESSAGE syscall\n", p->pid); + cons->printf("\nProcess %d: Received MESSAGE syscall\n", p->pid); cons->set_color(); break; @@ -69,7 +69,7 @@ syscall_dispatch(uintptr_t return_rsp, cpu_state ®s) auto &s = scheduler::get(); auto *p = s.current(); p->wait_on_signal(-1ull); - cons->printf("\nProcess %u: Received PAUSE syscall\n", p->pid); + cons->printf("\nProcess %d: Received PAUSE syscall\n", p->pid); cons->set_color(); return_rsp = s.schedule(return_rsp); } @@ -78,7 +78,7 @@ syscall_dispatch(uintptr_t return_rsp, cpu_state ®s) case syscall::sleep: { cons->set_color(11); - cons->printf("\nProcess %u: Received SLEEP syscall\n", p->pid); + cons->printf("\nProcess %d: Received SLEEP syscall\n", p->pid); cons->printf("Sleeping until %lu\n", regs.rbx); cons->set_color(); @@ -89,17 +89,18 @@ syscall_dispatch(uintptr_t return_rsp, cpu_state ®s) case syscall::getpid: cons->set_color(11); - cons->printf("\nProcess %u: Received GETPID syscall\n", p->pid); + cons->printf("\nProcess %d: Received GETPID syscall\n", p->pid); cons->set_color(); regs.rax = p->pid; break; case syscall::send: { - uint32_t target = regs.rdi; + pid_t target = regs.rdi; + uintptr_t data = regs.rsi; cons->set_color(11); - cons->printf("\nProcess %u: Received SEND syscall, target %u\n", p->pid, target); + cons->printf("\nProcess %d: Received SEND syscall, target %d, data %016lx\n", p->pid, target, data); cons->set_color(); if (p->wait_on_send(target)) @@ -109,10 +110,11 @@ syscall_dispatch(uintptr_t return_rsp, cpu_state ®s) case syscall::receive: { - uint32_t source = regs.rdi; + pid_t source = regs.rdi; + uintptr_t data = regs.rsi; cons->set_color(11); - cons->printf("\nProcess %u: Received RECEIVE syscall, source %u\n", p->pid, source); + cons->printf("\nProcess %d: Received RECEIVE syscall, source %d, dat %016lx\n", p->pid, source, data); cons->set_color(); if (p->wait_on_receive(source)) @@ -123,7 +125,7 @@ syscall_dispatch(uintptr_t return_rsp, cpu_state ®s) case syscall::fork: { cons->set_color(11); - cons->printf("\nProcess %u: Received FORK syscall\n", p->pid); + cons->printf("\nProcess %d: Received FORK syscall\n", p->pid); cons->set_color(); pid_t pid = p->fork(return_rsp); @@ -133,7 +135,7 @@ syscall_dispatch(uintptr_t return_rsp, cpu_state ®s) case syscall::exit: cons->set_color(11); - cons->printf("\nProcess %u: Received EXIT syscall\n", p->pid); + cons->printf("\nProcess %d: Received EXIT syscall\n", p->pid); cons->set_color(); p->exit(regs.rdi); return_rsp = s.schedule(return_rsp);