mirror of
https://github.com/SerenityOS/serenity.git
synced 2025-01-22 17:31:58 -05:00
Kernel: Add File, a base class for anything that a FileDescriptor can wrap.
FileDescriptor is getting out of control, and the layering isn't quite right so let's make a File class that everything can inherit from. Then we can stop worrying about all kinds of specifics in FileDescriptor.
This commit is contained in:
parent
75734aa003
commit
7ec1f6ab3c
2 changed files with 67 additions and 0 deletions
31
Kernel/File.cpp
Normal file
31
Kernel/File.cpp
Normal file
|
@ -0,0 +1,31 @@
|
|||
#include <Kernel/File.h>
|
||||
#include <Kernel/FileSystem/FileDescriptor.h>
|
||||
|
||||
File::File()
|
||||
{
|
||||
}
|
||||
|
||||
File::~File()
|
||||
{
|
||||
}
|
||||
|
||||
KResultOr<Retained<FileDescriptor>> File::open(int options)
|
||||
{
|
||||
UNUSED_PARAM(options);
|
||||
return FileDescriptor::create(this);
|
||||
}
|
||||
|
||||
void File::close()
|
||||
{
|
||||
}
|
||||
|
||||
int File::ioctl(Process&, unsigned, unsigned)
|
||||
{
|
||||
return -ENOTTY;
|
||||
}
|
||||
|
||||
KResultOr<Region*> File::mmap(Process&, LinearAddress, size_t, size_t)
|
||||
{
|
||||
return KResult(-ENODEV);
|
||||
}
|
||||
|
36
Kernel/File.h
Normal file
36
Kernel/File.h
Normal file
|
@ -0,0 +1,36 @@
|
|||
#include <AK/Retainable.h>
|
||||
#include <AK/Types.h>
|
||||
#include <Kernel/FileSystem/FileDescriptor.h>
|
||||
|
||||
class Process;
|
||||
|
||||
class File : public Retainable<File> {
|
||||
public:
|
||||
virtual ~File();
|
||||
|
||||
virtual KResultOr<Retained<FileDescriptor>> open(int options);
|
||||
virtual void close();
|
||||
|
||||
virtual bool can_read(Process&) const = 0;
|
||||
virtual bool can_write(Process&) const = 0;
|
||||
|
||||
virtual ssize_t read(Process&, byte*, ssize_t) = 0;
|
||||
virtual ssize_t write(Process&, const byte*, ssize_t) = 0;
|
||||
virtual int ioctl(Process&, unsigned request, unsigned arg);
|
||||
virtual KResultOr<Region*> mmap(Process&, LinearAddress preferred_laddr, size_t offset, size_t size);
|
||||
|
||||
virtual String absolute_path() const = 0;
|
||||
|
||||
virtual const char* class_name() const = 0;
|
||||
|
||||
virtual bool is_seekable() const { return false; }
|
||||
|
||||
virtual bool is_device() const { return false; }
|
||||
virtual bool is_tty() const { return false; }
|
||||
virtual bool is_master_pty() const { return false; }
|
||||
virtual bool is_block_device() const { return false; }
|
||||
virtual bool is_character_device() const { return false; }
|
||||
|
||||
protected:
|
||||
File();
|
||||
};
|
Loading…
Reference in a new issue