21#include "pedigree/kernel/Log.h"
22#include "pedigree/kernel/processor/types.h"
26#include "modules/system/vfs/File.h"
32 0 , static_cast<
Filesystem*>(pFs), 0 , pParent) {
34 uint32_t permissions = FILE_UR | FILE_UW | FILE_UX | FILE_GR | FILE_GX | FILE_OR | FILE_OX;
35 setPermissions(permissions);
44 NOTICE(
"rawfs: removing '" <<
getName() <<
"'");
48bool RawFsDir::syncFiles(
bool terminal) {
53 } context = {
this, terminal,
true};
54 auto syncChild = [](
void* opaque,
const DirectoryEntryView& entry) ->
bool {
55 auto* context =
static_cast<Context*
>(opaque);
58 LookupStatus::Found) {
59 context->succeeded =
false;
63 ?
static_cast<RawFsDir*
>(child.get())->syncFiles(context->terminal)
64 : context->terminal ?
static_cast<RawFsFile*
>(child.get())->shutdown()
65 : child.get()->
sync();
66 context->succeeded = synced && context->succeeded;
70 const ReadStatus result =
enumerate(cookie, syncChild, &context);
71 return result == ReadStatus::Complete && context.succeeded;
ReadStatus enumerate(uint64_t &cookie, DirectoryEntryEmitter emitter, void *context)
bool addDirectoryEntry(const String &name, File *pTarget)
virtual bool isDirectory()
RawFsDir(const RawFsDir &file)
void addEntry(File *pEntry)