mirror of
https://github.com/Atmosphere-NX/Atmosphere.git
synced 2025-05-23 03:06:52 -04:00
os: implement waitable management.
This implements waitable management for Events (and implements Events). It also refactors PM to use new Event/Waitable semantics, and also adds STS_ASSERT as a macro for asserting a boolean expression. The rest of stratosphere has been refactored to use STS_ASSERT whenever possible.
This commit is contained in:
parent
e07011be32
commit
609a302e16
108 changed files with 2752 additions and 1223 deletions
|
@ -24,20 +24,29 @@ namespace sts::fatal::srv {
|
|||
FatalConfig g_config;
|
||||
|
||||
/* Event creator. */
|
||||
IEvent *CreateFatalDirtyEvent() {
|
||||
Handle GetFatalDirtyEventReadableHandle() {
|
||||
Event evt;
|
||||
R_ASSERT(setsysBindFatalDirtyFlagEvent(&evt));
|
||||
return LoadReadOnlySystemEvent(evt.revent, [](u64 timeout) {
|
||||
u64 flags_0, flags_1;
|
||||
if (R_SUCCEEDED(setsysGetFatalDirtyFlags(&flags_0, &flags_1)) && (flags_0 & 1)) {
|
||||
g_config.UpdateLanguageCode();
|
||||
}
|
||||
return ResultSuccess;
|
||||
}, true);
|
||||
return evt.revent;
|
||||
}
|
||||
|
||||
/* Global event. */
|
||||
IEvent *g_fatal_dirty_event = CreateFatalDirtyEvent();
|
||||
os::SystemEvent g_fatal_dirty_event(GetFatalDirtyEventReadableHandle(), true, false);
|
||||
os::WaitableHolder g_fatal_dirty_waitable_holder(&g_fatal_dirty_event);
|
||||
|
||||
}
|
||||
|
||||
os::WaitableHolder *GetFatalDirtyWaitableHolder() {
|
||||
return &g_fatal_dirty_waitable_holder;
|
||||
}
|
||||
|
||||
void OnFatalDirtyEvent() {
|
||||
g_fatal_dirty_event.Reset();
|
||||
|
||||
u64 flags_0, flags_1;
|
||||
if (R_SUCCEEDED(setsysGetFatalDirtyFlags(&flags_0, &flags_1)) && (flags_0 & 1)) {
|
||||
g_config.UpdateLanguageCode();
|
||||
}
|
||||
}
|
||||
|
||||
FatalConfig::FatalConfig() {
|
||||
|
@ -84,10 +93,6 @@ namespace sts::fatal::srv {
|
|||
}
|
||||
}
|
||||
|
||||
IEvent *GetFatalDirtyEvent() {
|
||||
return g_fatal_dirty_event;
|
||||
}
|
||||
|
||||
const FatalConfig &GetFatalConfig() {
|
||||
return g_config;
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue