forked from Bananymous/banan-os
Kernel: We now store the processes exit code
This commit is contained in:
parent
47c69e9def
commit
4cdeb98897
|
@ -122,7 +122,7 @@ namespace IDT
|
|||
{
|
||||
auto message = BAN::String::formatted("{}, aborting\n", isr_exceptions[isr]);
|
||||
(void)Kernel::Process::current().write(STDERR_FILENO, message.data(), message.size());
|
||||
Kernel::Process::current().exit();
|
||||
Kernel::Process::current().exit(1);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
|
|
@ -40,7 +40,7 @@ namespace Kernel
|
|||
static BAN::ErrorOr<Process*> create_userspace(BAN::StringView);
|
||||
~Process();
|
||||
|
||||
[[noreturn]] void exit();
|
||||
[[noreturn]] void exit(int status);
|
||||
|
||||
void add_thread(Thread*);
|
||||
void on_thread_exit(Thread&);
|
||||
|
|
|
@ -118,12 +118,13 @@ namespace Kernel
|
|||
if (m_threads[i] == &thread)
|
||||
m_threads.remove(i);
|
||||
if (m_threads.empty())
|
||||
exit();
|
||||
exit(0);
|
||||
}
|
||||
|
||||
void Process::exit()
|
||||
void Process::exit(int status)
|
||||
{
|
||||
m_lock.lock();
|
||||
m_exit_status.exit_code = status;
|
||||
m_exit_status.exited = true;
|
||||
while (m_exit_status.waiting > 0)
|
||||
{
|
||||
|
|
|
@ -363,7 +363,7 @@ argument_done:
|
|||
}
|
||||
else if (arguments.front() == "exit")
|
||||
{
|
||||
Process::current().exit();
|
||||
Process::current().exit(0);
|
||||
}
|
||||
else if (arguments.front() == "time")
|
||||
{
|
||||
|
|
|
@ -7,9 +7,9 @@
|
|||
namespace Kernel
|
||||
{
|
||||
|
||||
void sys_exit()
|
||||
void sys_exit(int status)
|
||||
{
|
||||
Process::current().exit();
|
||||
Process::current().exit(status);
|
||||
}
|
||||
|
||||
long sys_read(int fd, void* buffer, size_t size)
|
||||
|
@ -162,7 +162,7 @@ namespace Kernel
|
|||
switch (syscall)
|
||||
{
|
||||
case SYS_EXIT:
|
||||
sys_exit();
|
||||
sys_exit((int)arg1);
|
||||
break;
|
||||
case SYS_READ:
|
||||
ret = sys_read((int)arg1, (void*)arg2, (size_t)arg3);
|
||||
|
|
Loading…
Reference in New Issue