/* * Copyright (c) 2024, Liav A. * * SPDX-License-Identifier: BSD-2-Clause */ #pragma once #include #include #include namespace Kernel { enum class RAMBackedFileType : u8 { Directory, Character, Block, Regular, FIFO, Link, Socket, Unknown, }; inline RAMBackedFileType ram_backed_file_type_from_mode(mode_t mode) { switch (mode & S_IFMT) { case S_IFDIR: return RAMBackedFileType::Directory; case S_IFCHR: return RAMBackedFileType::Character; case S_IFBLK: return RAMBackedFileType::Block; case S_IFREG: return RAMBackedFileType::Regular; case S_IFIFO: return RAMBackedFileType::FIFO; case S_IFLNK: return RAMBackedFileType::Link; case S_IFSOCK: return RAMBackedFileType::Socket; default: return RAMBackedFileType::Unknown; } } inline u8 ram_backed_file_type_to_directory_entry_type(FileSystem::DirectoryEntryView const& entry) { switch (static_cast(entry.file_type)) { case RAMBackedFileType::Directory: return DT_DIR; case RAMBackedFileType::Character: return DT_CHR; case RAMBackedFileType::Block: return DT_BLK; case RAMBackedFileType::Regular: return DT_REG; case RAMBackedFileType::FIFO: return DT_FIFO; case RAMBackedFileType::Link: return DT_LNK; case RAMBackedFileType::Socket: return DT_SOCK; case RAMBackedFileType::Unknown: default: return DT_UNKNOWN; } } }