Merge pull request #3715 from Lorkydey/feat/libkernel-wait

feat(libkernel): implement wait through guest waitpid
This commit is contained in:
Dean 2026-10-12 17:35:02 +13:00 committed by GitHub
commit 1a8fd39199
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 13 additions and 0 deletions

View File

@ -287,6 +287,10 @@ int APS5_VABI waitpid_nid_postfix(int pid, int* status, int options) {
return -1;
}
int APS5_VABI wait_nid_postfix(int* status) {
return waitpid_nid_postfix(-1, status, 0);
}
int APS5_VABI execvp_nid_postfix(const char* file, char* const* arguments) {
(void)file;
(void)arguments;

View File

@ -2,6 +2,7 @@
#include <cstdlib>
#include <initializer_list>
extern "C" {
int APS5_VABI wait_nid_postfix(int*);
int APS5_VABI waitpid_nid_postfix(int, int*, int);
int APS5_VABI getpid_nid_postfix(void);
int* APS5_VABI __error_nid_postfix();
@ -28,4 +29,12 @@ int main() {
for (int options : {0x40, 0x41, 0x80, 0x100, 0x40000000, static_cast<int>(0x80000040u), static_cast<int>(0xffffffffu)})
RequireFailure(pid, options, invalidArgument);
}
int status = untouched;
*__error_nid_postfix() = invalidArgument;
Require(wait_nid_postfix(&status) == -1);
Require(*__error_nid_postfix() == noChild);
Require(status == untouched);
*__error_nid_postfix() = invalidArgument;
Require(wait_nid_postfix(nullptr) == -1);
Require(*__error_nid_postfix() == noChild);
}