start work on fat

This commit is contained in:
Bananymous 2024-06-12 16:31:54 +03:00
parent 766439db6d
commit 6a1f653289
5 changed files with 54 additions and 1 deletions

View File

@ -32,6 +32,7 @@ set(KERNEL_SOURCES
kernel/FS/DevFS/FileSystem.cpp
kernel/FS/Ext2/FileSystem.cpp
kernel/FS/Ext2/Inode.cpp
kernel/FS/FAT/FileSystem.cpp
kernel/FS/FileSystem.cpp
kernel/FS/Inode.cpp
kernel/FS/Pipe.cpp

View File

@ -0,0 +1,32 @@
#pragma once
#include <kernel/FS/FileSystem.h>
namespace Kernel
{
class FATFS final : public FileSystem
{
public:
static BAN::ErrorOr<bool> probe(BAN::RefPtr<BlockDevice>);
static BAN::ErrorOr<BAN::RefPtr<FATFS>> create(BAN::RefPtr<BlockDevice>);
virtual BAN::RefPtr<Inode> root_inode() override { return m_root_inode; }
virtual dev_t dev() const override { return m_block_device->rdev(); };
private:
FATFS(BAN::RefPtr<BlockDevice> block_device)
: m_block_device(block_device)
{}
private:
Mutex m_mutex;
BAN::RefPtr<BlockDevice> m_block_device;
BAN::RefPtr<Inode> m_root_inode;
friend class BAN::RefPtr<FATFS>;
};
}

View File

@ -0,0 +1,16 @@
#include <kernel/FS/FAT/FileSystem.h>
namespace Kernel
{
BAN::ErrorOr<bool> FATFS::probe(BAN::RefPtr<BlockDevice> block_device)
{
}
BAN::ErrorOr<BAN::RefPtr<FATFS>> FATFS::create(BAN::RefPtr<BlockDevice> block_device)
{
}
}

View File

@ -1,4 +1,5 @@
#include <kernel/FS/Ext2/FileSystem.h>
#include <kernel/FS/FAT/FileSystem.h>
#include <kernel/FS/FileSystem.h>
namespace Kernel
@ -8,6 +9,8 @@ namespace Kernel
{
if (auto res = Ext2FS::probe(block_device); !res.is_error() && res.value())
return BAN::RefPtr<FileSystem>(TRY(Ext2FS::create(block_device)));
if (auto res = FATFS::probe(block_device); !res.is_error() && res.value())
return BAN::RefPtr<FileSystem>(TRY(FATFS::create(block_device)));
dprintln("Unsupported filesystem");
return BAN::Error::from_errno(ENOTSUP);
}

View File

@ -57,7 +57,8 @@ if [ ! -b $PARTITION1 ] || [ ! -b $PARTITION2 ]; then
fi
# create root filesystem
sudo mkfs.ext2 -q $PARTITION2
sudo mkfs.fat -F 32 $PARTITION2
#sudo mkfs.ext2 -q $PARTITION2
# delete loop device
sudo losetup -d $LOOP_DEV