Files
jsix/src/kernel/syscalls/process.cpp
Justin C. Miller 0df93eaa98 [kernel] Added the process_kill syscall
Added process_kill, and also cleaned up all the disparate types being
used for thread/process exit codes. (Now all int32_t.)
2021-01-22 00:38:46 -08:00

50 lines
1013 B
C++

#include "j6/errors.h"
#include "j6/types.h"
#include "log.h"
#include "objects/process.h"
#include "syscalls/helpers.h"
namespace syscalls {
j6_status_t
process_create(j6_handle_t *handle)
{
process *child = construct_handle<process>(handle);
log::debug(logs::syscall, "Process %llx created", child->koid());
return j6_status_ok;
}
j6_status_t
process_start(j6_handle_t *handle, uintptr_t entrypoint)
{
return j6_err_nyi;
}
j6_status_t
process_kill(j6_handle_t handle)
{
process &p = process::current();
process *c = get_handle<process>(handle);
if (!c) return j6_err_invalid_arg;
log::debug(logs::syscall, "Process %llx killed by process %llx", c->koid(), p.koid());
c->exit(-1u);
return j6_status_ok;
}
j6_status_t
process_exit(int32_t status)
{
process &p = process::current();
log::debug(logs::syscall, "Process %llx exiting with code %d", p.koid(), status);
p.exit(status);
log::error(logs::syscall, "returned to exit syscall");
return j6_err_unexpected;
}
} // namespace syscalls