Merge pull request #5241 from MarcZX100/fix/sigwait-error-return-5224

fix(libkernel): return error numbers from sigwait
This commit is contained in:
Dean 2026-10-14 14:26:15 +13:00 committed by GitHub
commit 2c444bb9fb
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 9 additions and 6 deletions

View File

@ -559,9 +559,10 @@ int APS5_VABI sigwaitinfo_nid_postfix(const GuestSignalSet* set, void* info) {
}
int APS5_VABI sigwait_nid_postfix(const GuestSignalSet* set, int* received) {
if (set == nullptr || received == nullptr || !SetHasSignal(*set)) { *__error_nid_postfix() = 22; return -1; }
if (set == nullptr || received == nullptr || !SetHasSignal(*set)) return 22;
int guest = 0;
if (WaitForPendingInSet(*set, true, nullptr, &guest) != 0) { *__error_nid_postfix() = GuestEagain; return -1; }
const int result = WaitForPendingInSet(*set, true, nullptr, &guest);
if (result != 0) return result;
*received = guest;
return 0;
}

View File

@ -95,10 +95,12 @@ int main() {
Require(sigwaitinfo_nid_postfix(nullptr, &info) == -1 && *__error_nid_postfix() == 22);
*__error_nid_postfix() = 0;
Require(sigwaitinfo_nid_postfix(&empty, &info) == -1 && *__error_nid_postfix() == 22);
*__error_nid_postfix() = 0;
Require(sigwait_nid_postfix(&empty, &taken) == -1 && *__error_nid_postfix() == 22 && taken == -1);
*__error_nid_postfix() = 0;
Require(sigwait_nid_postfix(&interrupt, nullptr) == -1 && *__error_nid_postfix() == 22);
*__error_nid_postfix() = 71;
Require(sigwait_nid_postfix(nullptr, &taken) == 22 && *__error_nid_postfix() == 71 && taken == -1);
*__error_nid_postfix() = 72;
Require(sigwait_nid_postfix(&empty, &taken) == 22 && *__error_nid_postfix() == 72 && taken == -1);
*__error_nid_postfix() = 73;
Require(sigwait_nid_postfix(&interrupt, nullptr) == 22 && *__error_nid_postfix() == 73);
RequireUntouched(info);
*__error_nid_postfix() = 0;
Require(sigtimedwait_nid_postfix(&interrupt, &info, &poll) == -1 && *__error_nid_postfix() == 35);