exit
This commit is contained in:
@@ -61,6 +61,8 @@ extern "C" size_t syscall_handler(size_t sysnum, size_t p1, size_t p2,
|
|||||||
case Syscall::ID::SEM_SIGNAL:
|
case Syscall::ID::SEM_SIGNAL:
|
||||||
Syscall::Skeleton::sem_signal(Guard::enter().vault(), p1);
|
Syscall::Skeleton::sem_signal(Guard::enter().vault(), p1);
|
||||||
break;
|
break;
|
||||||
|
case Syscall::ID::SYS_EXIT:
|
||||||
|
Syscall::Skeleton::exit(Guard::enter().vault());
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -97,7 +97,9 @@ bool sem_wait(Vault &vault, size_t id) {
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
void exit(Vault &vault) { (void)vault; }
|
void exit(Vault &vault) {
|
||||||
|
vault.scheduler.exit();
|
||||||
|
}
|
||||||
|
|
||||||
} // namespace Skeleton
|
} // namespace Skeleton
|
||||||
} // namespace Syscall
|
} // namespace Syscall
|
||||||
|
|||||||
@@ -15,7 +15,7 @@ enum class ID : size_t {
|
|||||||
SEM_WAIT=6,
|
SEM_WAIT=6,
|
||||||
SEM_SIGNAL=7,
|
SEM_SIGNAL=7,
|
||||||
//SYS_GETPID=8,
|
//SYS_GETPID=8,
|
||||||
//SYS_EXIT= 9,
|
SYS_EXIT= 9,
|
||||||
//SYS_KILL=10
|
//SYS_KILL=10
|
||||||
};
|
};
|
||||||
} // namespace Syscall
|
} // namespace Syscall
|
||||||
@@ -59,3 +59,7 @@ extern "C" ssize_t sys_safe_call(Syscall::ID id, size_t p1, size_t p2,
|
|||||||
return sys_call(Syscall::ID::SEM_SIGNAL, fd, semid,0,0,0);
|
return sys_call(Syscall::ID::SEM_SIGNAL, fd, semid,0,0,0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[[gnu::always_inline]] static inline void sys_exit(){
|
||||||
|
sys_call(Syscall::ID::SYS_EXIT, 0, 0, 0, 0, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -25,8 +25,10 @@ void Application::action() { // NOLINT
|
|||||||
char text[] = "testX";
|
char text[] = "testX";
|
||||||
text[4] = 0x30+id;
|
text[4] = 0x30+id;
|
||||||
|
|
||||||
for (unsigned i = 0;; ++i) {
|
for (unsigned i = 1;; ++i) {
|
||||||
write(0, text, sizeof(text));
|
write(0, text, sizeof(text));
|
||||||
|
if(i==id)
|
||||||
|
sys_exit();
|
||||||
sleep(1000);
|
sleep(1000);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user