start work on fat
This commit is contained in:
parent
766439db6d
commit
6a1f653289
|
@ -32,6 +32,7 @@ set(KERNEL_SOURCES
|
||||||
kernel/FS/DevFS/FileSystem.cpp
|
kernel/FS/DevFS/FileSystem.cpp
|
||||||
kernel/FS/Ext2/FileSystem.cpp
|
kernel/FS/Ext2/FileSystem.cpp
|
||||||
kernel/FS/Ext2/Inode.cpp
|
kernel/FS/Ext2/Inode.cpp
|
||||||
|
kernel/FS/FAT/FileSystem.cpp
|
||||||
kernel/FS/FileSystem.cpp
|
kernel/FS/FileSystem.cpp
|
||||||
kernel/FS/Inode.cpp
|
kernel/FS/Inode.cpp
|
||||||
kernel/FS/Pipe.cpp
|
kernel/FS/Pipe.cpp
|
||||||
|
|
|
@ -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>;
|
||||||
|
};
|
||||||
|
|
||||||
|
}
|
|
@ -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)
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -1,4 +1,5 @@
|
||||||
#include <kernel/FS/Ext2/FileSystem.h>
|
#include <kernel/FS/Ext2/FileSystem.h>
|
||||||
|
#include <kernel/FS/FAT/FileSystem.h>
|
||||||
#include <kernel/FS/FileSystem.h>
|
#include <kernel/FS/FileSystem.h>
|
||||||
|
|
||||||
namespace Kernel
|
namespace Kernel
|
||||||
|
@ -8,6 +9,8 @@ namespace Kernel
|
||||||
{
|
{
|
||||||
if (auto res = Ext2FS::probe(block_device); !res.is_error() && res.value())
|
if (auto res = Ext2FS::probe(block_device); !res.is_error() && res.value())
|
||||||
return BAN::RefPtr<FileSystem>(TRY(Ext2FS::create(block_device)));
|
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");
|
dprintln("Unsupported filesystem");
|
||||||
return BAN::Error::from_errno(ENOTSUP);
|
return BAN::Error::from_errno(ENOTSUP);
|
||||||
}
|
}
|
||||||
|
|
|
@ -57,7 +57,8 @@ if [ ! -b $PARTITION1 ] || [ ! -b $PARTITION2 ]; then
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# create root filesystem
|
# create root filesystem
|
||||||
sudo mkfs.ext2 -q $PARTITION2
|
sudo mkfs.fat -F 32 $PARTITION2
|
||||||
|
#sudo mkfs.ext2 -q $PARTITION2
|
||||||
|
|
||||||
# delete loop device
|
# delete loop device
|
||||||
sudo losetup -d $LOOP_DEV
|
sudo losetup -d $LOOP_DEV
|
||||||
|
|
Loading…
Reference in New Issue