SayoriOS  0.3.3
smfs.h
1 #pragma once
2 
3 #include <common.h>
4 
5 enum SMFS_PACKAGE_STATUS {
6  SMFS_PACKAGE_UNKNOWN = 0,
7  SMFS_PACKAGE_READY = 1,
8  SMFS_PACKAGE_FREE = 2,
9 };
10 
11 enum SMFS_ELEM_TYPE {
12  SMFS_TYPE_UNKNOWN = 0,
13  SMFS_TYPE_FILE = 1,
14  SMFS_TYPE_DIR = 2,
15  SMFS_TYPE_DELETE = 3,
16 };
17 
18 typedef struct {
19  uint16_t magic1;
20  uint16_t magic2;
21  char oem_name[8];
22  uint32_t MaximumElems;
23  uint32_t MaxPackage;
24  char volume_label[11];
25  char fsid[8];
26 } __attribute__((__packed__)) SMFS_BOOT_SECTOR;
27 
28 typedef struct {
29  uint32_t Index;
30  uint8_t Attr;
31  uint32_t Size;
32  uint16_t TimeCreateHIS;
33  uint16_t TimeCreateDate;
34  uint16_t TimeAccess;
35  uint32_t Point;
36  uint32_t Dir;
37  char Name[32];
38 } __attribute__((__packed__)) SMFS_Elements;
39 
40 typedef struct {
41  uint8_t Status;
42  uint8_t Length;
43  char Data[9];
44  uint32_t Next;
45 } __attribute__((__packed__)) SMFS_PACKAGE; // Получится 15 байт
46 
47 typedef struct {
48  uint8_t Status;
49  uint8_t Length;
50  char Data[33];
51  uint32_t Next;
52 } __attribute__((__packed__)) SMFS_PACKAGE_BIG; // Получится 39 байт
53 
54 
55 int fs_smfs_format(const char Disk);
56 
57 size_t fs_smfs_read(const char Disk,const char* Path,size_t Offset,size_t Size,void* Buffer);
58 size_t fs_smfs_write(const char Disk,const char* Path,size_t Offset,size_t Size,void* Buffer);
59 FSM_FILE fs_smfs_info(const char Disk,const char* Path);
60 int fs_smfs_create(const char Disk,const char* Path,int Mode);
61 int fs_smfs_delete(const char Disk,const char* Path,int Mode);
62 
63 TarFS_ROOT* fs_smfs_init(uint32_t in, uint32_t size, int Mode);
64 FSM_DIR* fs_smfs_dir(const char Disk,const char* Path);
65 
66 int fs_smfs_detect(const char Disk);
67 void fs_smfs_label(const char Disk, char* Label);
Основные определения ядра
struct registers __attribute__((packed))
Структура данных пакета от мыши
Definition: psf.h:19
uint32_t Size
Размер элемента
Definition: smfs.h:31
uint8_t Length
Длина пакета
Definition: smfs.h:42
uint16_t TimeAccess
Дата последнего доступа. Тот же формат, что и дата создания. всегда равно нулю.
Definition: smfs.h:34
uint32_t Next
Следующий пакет данных
Definition: smfs.h:44
uint16_t magic2
Подпись загрузочного раздела
Definition: smfs.h:20
uint8_t Attr
Атрибуты элемента
Definition: smfs.h:30
uint8_t Status
Статус пакета
Definition: smfs.h:41
uint16_t TimeCreateHIS
Время создания файла. Умножьте секунды на 2. (Часы 5 / Минуты 6 / Секунды 5)
Definition: smfs.h:32
uint32_t Dir
Папка
Definition: smfs.h:36
uint32_t MaxPackage
Количество пакетов
Definition: smfs.h:23
uint16_t magic1
Подпись загрузочного раздела
Definition: smfs.h:19
uint32_t Point
Точка входа
Definition: smfs.h:35
uint32_t MaximumElems
Максимальное колво элементов
Definition: smfs.h:22
uint16_t TimeCreateDate
Дата создания файла (Год 7 / Месяц 4 / День 5)
Definition: smfs.h:33
uint32_t Index
Индекс элемента
Definition: smfs.h:29