The Pedigree Project 0.1
Ext2InodeEvents.cc
1/* Copyright (c) 2026, Pedigree Developers. */
2#include "pedigree/kernel/LockGuard.h"
3
4#include "Ext2File.h"
5#include "ext2.h"
6
7FileHandleStatus Ext2File::subscribeInodeEvents(FileEventMask mask,
9 FileEventSubscription& subscription) {
10 subscription.reset();
11 if (!observer || !mask) {
12 return FileHandleStatus::Invalid;
13 }
14 LockGuard<Mutex> metadata(m_State->writebackLock);
15 if (m_State->orphan || !LITTLE_TO_HOST16(m_pInode->i_links_count)) {
16 return FileHandleStatus::Stale;
17 }
18 if (!m_State->inodeEvents.subscribeFileEvents(mask | FileEvents::SourceRetired, observer,
19 subscription)) {
20 return FileHandleStatus::NoMemory;
21 }
22 return FileHandleStatus::Success;
23}
24
25void Ext2File::publishInodeEvent(const FileEvent& event) {
26 m_State->inodeEvents.publish(event);
27}
28
29void Ext2File::finishInodeRetirement() {
30 m_State->inodeEvents.finishRetirement();
31}
void finishRetirement()
Definition FileEvent.cc:338