From b6ea21b77c6d124597fc6901ddaf401bb9ba0ad4 Mon Sep 17 00:00:00 2001 From: Baptiste Wicht Date: Mon, 20 Jan 2014 22:06:33 +0100 Subject: [PATCH] Prepare exit support --- kernel/src/system_calls.cpp | 4 ++++ programs/one/src/main.cpp | 3 +++ userlib/include/system.hpp | 20 ++++++++++++++++++++ 3 files changed, 27 insertions(+) create mode 100644 userlib/include/system.hpp diff --git a/kernel/src/system_calls.cpp b/kernel/src/system_calls.cpp index 351a9c91..d0c92118 100644 --- a/kernel/src/system_calls.cpp +++ b/kernel/src/system_calls.cpp @@ -40,6 +40,10 @@ void system_call_entry(const interrupt::syscall_regs& regs){ sc_print_digit(regs); break; + case 0x666: + //TODO Indicate to the scheduler that the process is over + break; + default: k_print_line("Invalid system call"); break; diff --git a/programs/one/src/main.cpp b/programs/one/src/main.cpp index d290e131..5f8b05be 100644 --- a/programs/one/src/main.cpp +++ b/programs/one/src/main.cpp @@ -6,10 +6,13 @@ //======================================================================= #include +#include int main(){ print('Z'); print_line(); + + exit(0); return 1; } \ No newline at end of file diff --git a/userlib/include/system.hpp b/userlib/include/system.hpp new file mode 100644 index 00000000..0c99565e --- /dev/null +++ b/userlib/include/system.hpp @@ -0,0 +1,20 @@ +//======================================================================= +// Copyright Baptiste Wicht 2013-2014. +// Distributed under the Boost Software License, Version 1.0. +// (See accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) +//======================================================================= + +#ifndef USER_SYSTEM_HPP +#define USER_SYSTEM_HPP + +#include + +void exit(size_t return_code){ + asm volatile("mov rax, 0x666; mov rbx, %0; int 50" + : //No outputs + : "r" (return_code) + : "rax", "rbx"); +} + +#endif