1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-05-31 15:48:12 +00:00

Kernel: Add InodeFile, a File subclass for regular files.

Finally everything that can be held by a FileDescriptor actually inherits
from the File class.
This commit is contained in:
Andreas Kling 2019-05-30 13:39:17 +02:00
parent 66c1a9be3b
commit 08926e59b3
9 changed files with 151 additions and 133 deletions

View file

@ -47,10 +47,8 @@ public:
bool is_directory() const;
// FIXME: These should go away once everything is a File.
bool is_file() const { return m_file.ptr(); }
File* file() { return m_file.ptr(); }
const File* file() const { return m_file.ptr(); }
File& file() { return *m_file; }
const File& file() const { return *m_file; }
bool is_device() const;
@ -85,7 +83,6 @@ public:
FIFO::Direction fifo_direction() { return m_fifo_direction; }
void set_fifo_direction(Badge<FIFO>, FIFO::Direction direction) { m_fifo_direction = direction; }
bool is_fsfile() const;
bool is_shared_memory() const;
SharedMemory* shared_memory();
const SharedMemory* shared_memory() const;
@ -99,10 +96,11 @@ public:
KResult truncate(off_t);
off_t offset() const { return m_current_offset; }
private:
friend class VFS;
FileDescriptor(RetainPtr<File>&&, SocketRole);
explicit FileDescriptor(RetainPtr<Inode>&&);
FileDescriptor(RetainPtr<File>&&, SocketRole = SocketRole::None);
FileDescriptor(FIFO&, FIFO::Direction);
RetainPtr<Inode> m_inode;