kern: delete KWritableEvent, devirtualize KReadableEvent Signal/Clear

This commit is contained in:
Michael Scire authored and SciresM committed 2021-09-19 10:34:31 -07:00
1 parent d80ad222cc
commit e6a6fe6f38
15 files changed
+81 -149

No files matched your search

+18 -10
View File
@@ -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);