mirror of
https://github.com/Atmosphere-NX/Atmosphere.git
synced 2025-05-22 19:05:08 -04:00
kern: delete KWritableEvent, devirtualize KReadableEvent Signal/Clear
This commit is contained in:
parent
d80ad222cc
commit
e6a6fe6f38
15 changed files with 81 additions and 149 deletions
|
@ -20,19 +20,11 @@ namespace ams::kern {
|
|||
void KEvent::Initialize() {
|
||||
MESOSPHERE_ASSERT_THIS();
|
||||
|
||||
/* Increment reference count. */
|
||||
/* Because reference count is one on creation, this will result */
|
||||
/* in a reference count of two. Thus, when both readable and */
|
||||
/* writable events are closed this object will be destroyed. */
|
||||
this->Open();
|
||||
|
||||
/* Create our sub events. */
|
||||
/* Create our readable event. */
|
||||
KAutoObject::Create(std::addressof(m_readable_event));
|
||||
KAutoObject::Create(std::addressof(m_writable_event));
|
||||
|
||||
/* Initialize our sub sessions. */
|
||||
/* Initialize our readable event. */
|
||||
m_readable_event.Initialize(this);
|
||||
m_writable_event.Initialize(this);
|
||||
|
||||
/* Set our owner process. */
|
||||
m_owner = GetCurrentProcessPointer();
|
||||
|
@ -48,6 +40,22 @@ namespace ams::kern {
|
|||
KAutoObjectWithSlabHeapAndContainer<KEvent, KAutoObjectWithList>::Finalize();
|
||||
}
|
||||
|
||||
Result KEvent::Signal() {
|
||||
KScopedSchedulerLock sl;
|
||||
|
||||
R_SUCCEED_IF(m_readable_event_destroyed);
|
||||
|
||||
return m_readable_event.Signal();
|
||||
}
|
||||
|
||||
Result KEvent::Clear() {
|
||||
KScopedSchedulerLock sl;
|
||||
|
||||
R_SUCCEED_IF(m_readable_event_destroyed);
|
||||
|
||||
return m_readable_event.Clear();
|
||||
}
|
||||
|
||||
void KEvent::PostDestroy(uintptr_t arg) {
|
||||
/* Release the event count resource the owner process holds. */
|
||||
KProcess *owner = reinterpret_cast<KProcess *>(arg);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue