Kintsugi OS 0.4.0
x86 Monolithic OS
Loading...
Searching...
No Matches
fat12.c File Reference
#include "fat12.h"
#include "../drivers/ata_pio.h"
#include "../drivers/screen.h"
#include "../kklibc/mem.h"
#include "../kklibc/stdio.h"
#include "../kklibc/stdlib.h"

Functions

static void format_filename (const char *input, char *output)
 
static u16 fat12_get_fat_entry (u32 cluster)
 
static void fat12_set_fat_entry (u32 cluster, u16 value)
 
static u16 fat12_find_free_cluster (void)
 
static void fat12_free_cluster_chain (u16 start_cluster)
 
static int fat12_find_free_dir_entry (u32 *sector_out, u32 *offset_out)
 
static void fat12_sync_fat (void)
 
void fat12_cleanup (void)
 Очистка ресурсов подсистемы FAT12.
 
void fat12_init (void)
 Инициализация подсистемы FAT12.
 
void print_fat12_info (void)
 Вывод информации о файловой системе FAT12.
 
void fat12_list_root (void)
 Вывод содержимого корневого каталога
 
static void format_filename_from_entry (fat12_dir_entry_t *entry, char *out)
 
static void load_fat_if_needed (void)
 
int fat12_find_file (const char *filename, fat12_dir_entry_t *result)
 Поиск файла в корневом каталоге
 
int fat12_read_file (const char *filename, u8 *buffer)
 Чтение содержимого файла в буфер
 
int fat12_create_file (const char *filename)
 Создание пустого файла
 
int fat12_delete_file (const char *filename)
 Удаление файла
 
int fat12_write_file (const char *filename, u8 *data, u32 size)
 Запись данных в файл
 

Variables

static fat12_context_t ctx
 
static fat12_boot_sector_t boot_sector
 

Function Documentation

◆ fat12_cleanup()

void fat12_cleanup ( void  )

Очистка ресурсов подсистемы FAT12.

Освобождает буферы и сбрасывает состояние контекста

◆ fat12_create_file()

int fat12_create_file ( const char *  filename)

Создание пустого файла

Parameters
[in]filenameИмя файла (формат 8.3)
Returns
0 при успехе, -1 при ошибке

◆ fat12_delete_file()

int fat12_delete_file ( const char *  filename)

Удаление файла

Parameters
[in]filenameИмя файла (формат 8.3)
Returns
0 при успехе, -1 при ошибке

◆ fat12_find_file()

int fat12_find_file ( const char *  filename,
fat12_dir_entry_t *  result 
)

Поиск файла в корневом каталоге

Parameters
[in]filenameИмя файла в формате "NAME EXT" (8.3, в верхнем регистре)
[out]resultУказатель на структуру для сохранения найденной записи
Returns
0 если файл найден, -1 если не найден

◆ fat12_find_free_cluster()

static u16 fat12_find_free_cluster ( void  )
static

◆ fat12_find_free_dir_entry()

static int fat12_find_free_dir_entry ( u32 sector_out,
u32 offset_out 
)
static

◆ fat12_free_cluster_chain()

static void fat12_free_cluster_chain ( u16  start_cluster)
static

◆ fat12_get_fat_entry()

static u16 fat12_get_fat_entry ( u32  cluster)
static

◆ fat12_init()

void fat12_init ( void  )

Инициализация подсистемы FAT12.

Загружает загрузочный сектор и вычисляет параметры файловой системы

◆ fat12_list_root()

void fat12_list_root ( void  )

Вывод содержимого корневого каталога

Выводит список файлов и подкаталогов в корневом каталоге

◆ fat12_read_file()

int fat12_read_file ( const char *  filename,
u8 buffer 
)

Чтение содержимого файла в буфер

Parameters
[in]filenameИмя файла для чтения (формат 8.3)
[out]bufferБуфер для сохранения данных файла
Returns
Размер прочитанных данных в байтах при успехе, -1 при ошибке
Warning
Буфер должен быть достаточного размера для размещения файла

◆ fat12_set_fat_entry()

static void fat12_set_fat_entry ( u32  cluster,
u16  value 
)
static

◆ fat12_sync_fat()

static void fat12_sync_fat ( void  )
static

◆ fat12_write_file()

int fat12_write_file ( const char *  filename,
u8 data,
u32  size 
)

Запись данных в файл

Если файл существует - перезаписывает его, если нет - создает новый

Parameters
[in]filenameИмя файла (формат 8.3)
[in]dataДанные для записи
[in]sizeРазмер данных в байтах
Returns
0 при успехе, -1 при ошибке

◆ format_filename()

static void format_filename ( const char *  input,
char *  output 
)
static

◆ format_filename_from_entry()

static void format_filename_from_entry ( fat12_dir_entry_t *  entry,
char *  out 
)
static

◆ load_fat_if_needed()

static void load_fat_if_needed ( void  )
static

◆ print_fat12_info()

void print_fat12_info ( void  )

Вывод информации о файловой системе FAT12.

Отображает параметры из загрузочного сектора и вычисленные смещения

Variable Documentation

◆ boot_sector

fat12_boot_sector_t boot_sector
static

◆ ctx

fat12_context_t ctx
static