add kill + example code
scheduler.kill seems like its not implemented comletly or doest work as expected.
This commit is contained in:
@@ -66,6 +66,9 @@ extern "C" size_t syscall_handler(size_t sysnum, size_t p1, size_t p2,
|
||||
case Syscall::ID::SYS_EXIT:
|
||||
Syscall::Skeleton::exit(Guard::enter().vault());
|
||||
return 0;
|
||||
case Syscall::ID::SYS_KILL:
|
||||
Syscall::Skeleton::kill(Guard::enter().vault(),p1);
|
||||
return 0;
|
||||
}
|
||||
|
||||
return static_cast<size_t>(-1);
|
||||
|
||||
@@ -108,5 +108,8 @@ void exit(Vault &vault) {
|
||||
vault.scheduler.exit();
|
||||
}
|
||||
|
||||
void kill(Vault &vault, size_t pid){
|
||||
vault.scheduler.kill(&apps[pid]);
|
||||
}
|
||||
} // namespace Skeleton
|
||||
} // namespace Syscall
|
||||
|
||||
@@ -16,7 +16,7 @@ enum class ID : size_t {
|
||||
SEM_SIGNAL=7,
|
||||
SYS_GETPID = 8,
|
||||
SYS_EXIT = 9,
|
||||
//SYS_KILL=10
|
||||
SYS_KILL = 10
|
||||
};
|
||||
} // namespace Syscall
|
||||
|
||||
@@ -67,3 +67,7 @@ extern "C" ssize_t sys_safe_call(Syscall::ID id, size_t p1, size_t p2,
|
||||
sys_call(Syscall::ID::SYS_EXIT, 0, 0, 0, 0, 0);
|
||||
}
|
||||
|
||||
[[gnu::always_inline]] static inline void sys_kill(size_t pid){
|
||||
sys_call(Syscall::ID::SYS_KILL, pid, 0, 0, 0, 0);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user