GitOS
Operating system exercise
Loading...
Searching...
No Matches
fat16.c File Reference
#include "fat16.h"
#include "common/string.h"
#include "common/status.h"
#include "memory/memory.h"
#include "memory/heap/kheap.h"
#include "kernel.h"
#include "common/assert.h"

Functions

struct filesystemfat16_init_filesystem ()
 Prepares filesystem struct for generic filesystem driver use.
 
int fat16_resolve (struct disk *disk)
 FAT16 filesystem resolver.
 
void * fat16_open (void *private_fs, struct path_part *path, FILE_MODE mode)
 FAT16 Implementation of fopen.
 
int fat16_read (void *private_fs, void *desc, uint32_t size, uint32_t nmemb, char *out)
 FAT16 Implementation of fread.
 
int fat16_write (void *private_fs, void *desc, uint32_t size, uint32_t nmemb, char *in)
 
int fat16_seek (void *desc, uint32_t offset, FILE_SEEK_MODE seek_mode)
 FAT16 Implementation of fseek.
 
int fat16_stat (void *desc, struct file_stat *stat)
 FAT16 Implementation of fstat.
 
int fat16_close (void *desc)
 FAT16 Implementation of fclose.
 

Variables

struct filesystem fat16_fs
 Describes driver as filesystem struct for generic filesystem driver use.
 

Function Documentation

◆ fat16_close()

int fat16_close ( void *  desc)

FAT16 Implementation of fclose.

Parameters
descInternal file descriptor
Returns
int Status

References ALL_OK, and kdebug.

◆ fat16_init_filesystem()

struct filesystem * fat16_init_filesystem ( )

Prepares filesystem struct for generic filesystem driver use.

Returns
struct filesystem*

References fat16_fs, filesystem::name, and strcpy().

◆ fat16_open()

void * fat16_open ( void *  private_fs,
struct path_part path,
FILE_MODE  mode 
)

FAT16 Implementation of fopen.

Parameters
private_fsPrivate filesystem data
pathPath to file
modeOpen mode (FILE_MODE_READ for readonly)
Returns
void* Pointer to private file descriptor

References fat_file_descriptor::cached_cluster, fat_file_descriptor::cached_offset_bytes, fat_file_descriptor::file, FILE_MODE_READ, kdebug, kzalloc(), path_part::part, and fat_file_descriptor::pos.

◆ fat16_read()

int fat16_read ( void *  private_fs,
void *  desc,
uint32_t  size,
uint32_t  nmemb,
char *  out 
)

FAT16 Implementation of fread.

Parameters
private_fsPrivate filesystem data
descInternal file descriptor
sizeSize of block
nmembNumber of blocks to read
outOutput buffer
Returns
int Status

References ALL_OK, fat_private::cluster_read_stream, fat_item::file, fat_file_descriptor::file, kdebug, offset, fat_file_descriptor::pos, and size.

◆ fat16_resolve()

◆ fat16_seek()

int fat16_seek ( void *  desc,
uint32_t  offset,
FILE_SEEK_MODE  seek_mode 
)

FAT16 Implementation of fseek.

Parameters
descInternal file descriptor
offsetOffset
seek_modeSeek mode (SEEK_SET for absolute, SEEK_CUR for relative)
Returns
int Status

References ALL_OK, EINVARG, FAT_ITEM_TYPE_FILE, fat_item::file, fat_file_descriptor::file, fat_file::filesize, kdebug, offset, fat_file_descriptor::pos, SEEK_CUR, SEEK_END, SEEK_SET, and fat_item::type.

◆ fat16_stat()

int fat16_stat ( void *  desc,
struct file_stat stat 
)

◆ fat16_write()

int fat16_write ( void *  private_fs,
void *  desc,
uint32_t  size,
uint32_t  nmemb,
char *  in 
)

References ENOTIMPL, kdebug, and size.

Variable Documentation

◆ fat16_fs

struct filesystem fat16_fs
Initial value:
=
{
.resolve = fat16_resolve,
.open = fat16_open,
.read = fat16_read,
.seek = fat16_seek,
.stat = fat16_stat,
.close = fat16_close,
.write = fat16_write,
}
int fat16_seek(void *desc, uint32_t offset, FILE_SEEK_MODE seek_mode)
FAT16 Implementation of fseek.
Definition fat16.c:775
int fat16_read(void *private_fs, void *desc, uint32_t size, uint32_t nmemb, char *out)
FAT16 Implementation of fread.
Definition fat16.c:728
int fat16_stat(void *desc, struct file_stat *stat)
FAT16 Implementation of fstat.
Definition fat16.c:821
int fat16_resolve(struct disk *disk)
FAT16 filesystem resolver.
Definition fat16.c:590
int fat16_close(void *desc)
FAT16 Implementation of fclose.
Definition fat16.c:856
void * fat16_open(void *private_fs, struct path_part *path, FILE_MODE mode)
FAT16 Implementation of fopen.
Definition fat16.c:694
int fat16_write(void *private_fs, void *desc, uint32_t size, uint32_t nmemb, char *in)
Definition fat16.c:752

Describes driver as filesystem struct for generic filesystem driver use.