2023-03-29 03:05:16 +03:00
|
|
|
#pragma once
|
|
|
|
|
2023-04-03 11:43:16 +03:00
|
|
|
#include <kernel/DeviceManager.h>
|
2023-03-29 03:05:16 +03:00
|
|
|
|
|
|
|
namespace Kernel
|
|
|
|
{
|
|
|
|
|
2023-03-29 11:50:46 +03:00
|
|
|
class Device : public Inode
|
2023-03-29 03:05:16 +03:00
|
|
|
{
|
|
|
|
public:
|
2023-03-30 12:09:37 +03:00
|
|
|
Device();
|
2023-03-29 03:05:16 +03:00
|
|
|
virtual ~Device() {}
|
|
|
|
virtual void update() {}
|
2023-03-30 12:09:37 +03:00
|
|
|
|
2023-06-03 13:28:15 +03:00
|
|
|
virtual bool is_device() const override { return true; }
|
|
|
|
|
|
|
|
virtual bool is_partition() const { return false; }
|
2023-03-30 15:06:41 +03:00
|
|
|
|
2023-04-03 11:43:16 +03:00
|
|
|
virtual ino_t ino() const override { return m_ino_t; }
|
|
|
|
virtual nlink_t nlink() const override { return 1; }
|
|
|
|
virtual off_t size() const override { return 0; }
|
2023-03-30 12:09:37 +03:00
|
|
|
virtual timespec atime() const override { return m_create_time; }
|
|
|
|
virtual timespec mtime() const override { return m_create_time; }
|
|
|
|
virtual timespec ctime() const override { return m_create_time; }
|
2023-04-03 11:43:16 +03:00
|
|
|
virtual blksize_t blksize() const override { return DeviceManager::get().blksize(); }
|
|
|
|
virtual blkcnt_t blocks() const override { return DeviceManager::get().blocks(); }
|
|
|
|
virtual dev_t dev() const override { return DeviceManager::get().dev(); }
|
|
|
|
|
|
|
|
/*
|
|
|
|
a device has to overload
|
|
|
|
virtual Mode mode() const;
|
|
|
|
virtual uid_t uid() const;
|
|
|
|
virtual gid_t gid() const;
|
2023-04-03 19:56:55 +03:00
|
|
|
virtual dev_t rdev() const;
|
2023-04-03 11:43:16 +03:00
|
|
|
virtual BAN::StringView name() const;
|
|
|
|
*/
|
2023-03-30 12:09:37 +03:00
|
|
|
|
|
|
|
private:
|
2023-04-03 11:43:16 +03:00
|
|
|
const timespec m_create_time;
|
|
|
|
const ino_t m_ino_t;
|
2023-03-29 03:05:16 +03:00
|
|
|
};
|
|
|
|
|
|
|
|
class BlockDevice : public Device
|
|
|
|
{
|
|
|
|
public:
|
|
|
|
};
|
|
|
|
|
|
|
|
class CharacterDevice : public Device
|
|
|
|
{
|
|
|
|
public:
|
|
|
|
};
|
|
|
|
|
|
|
|
}
|