Implement an ATA driver, Add vfsmount/vfsunmount syscalls
This commit is contained in:
@ -219,13 +219,27 @@ int32_t littlefs_fetchdirent(struct VfsMountPoint *vmp, const char *path, IoctlD
|
||||
|
||||
int portlfs_read(const struct lfs_config *c, lfs_block_t block, lfs_off_t off, void *buffer, lfs_size_t size) {
|
||||
VfsMountPoint *vmp = c->context;
|
||||
vmp->backingsd->read(vmp->backingsd, buffer, size, block * LITTLEFS_BLOCK_SIZE + off);
|
||||
|
||||
uint64_t byteaddr = (uint64_t)block * c->block_size + off;
|
||||
ptrdiff_t sector = byteaddr / vmp->backingsd->sectorsize;
|
||||
ptrdiff_t sector_off = byteaddr % vmp->backingsd->sectorsize;
|
||||
|
||||
int32_t ret = vmp->backingsd->read(vmp->backingsd, (const uint8_t *)buffer, sector, sector_off, size);
|
||||
if (ret != E_OK)
|
||||
return LFS_ERR_IO;
|
||||
return 0;
|
||||
}
|
||||
|
||||
int portlfs_prog(const struct lfs_config *c, lfs_block_t block, lfs_off_t off, const void *buffer, lfs_size_t size) {
|
||||
VfsMountPoint *vmp = c->context;
|
||||
vmp->backingsd->write(vmp->backingsd, buffer, size, block * LITTLEFS_BLOCK_SIZE + off);
|
||||
|
||||
uint64_t byteaddr = (uint64_t)block * c->block_size + off;
|
||||
ptrdiff_t sector = byteaddr / vmp->backingsd->sectorsize;
|
||||
ptrdiff_t sector_off = byteaddr % vmp->backingsd->sectorsize;
|
||||
|
||||
int32_t ret = vmp->backingsd->write(vmp->backingsd, (const uint8_t *)buffer, sector, sector_off, size);
|
||||
if (ret != E_OK)
|
||||
return LFS_ERR_IO;
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
@ -6,7 +6,7 @@
|
||||
#include "fs/littlefs/lfs.h"
|
||||
#include "sysdefs/ioctl.h"
|
||||
|
||||
#define LITTLEFS_BLOCK_SIZE 4096
|
||||
#define LITTLEFS_BLOCK_SIZE 512
|
||||
|
||||
struct VfsMountPoint;
|
||||
struct VfsObj;
|
||||
|
||||
Reference in New Issue
Block a user