SayoriOS  0.3.3
fsm.h
1 #pragma once
2 
3 #include <common.h>
4 
5 #define FSM_CHMOD_EXEC 0x01
6 #define FSM_CHMOD_WRITE 0x02
7 #define FSM_CHMOD_READ 0x04
8 #define FSM_CHMOD_SYS 0x08
9 
10 typedef struct {
11  uint16_t year;
12  uint8_t month;
13  uint8_t day;
14  uint8_t hour;
15  uint8_t minute;
16  uint8_t second;
17 } __attribute__((packed)) FSM_TIME;
18 
19 typedef struct {
20  int Ready;
21  char Name[1024];
22  char Path[1024];
23  int Mode;
24  size_t Size;
25  FSM_TIME LastTime;
26  int Type;
27  uint8_t CHMOD;
28 } __attribute__((packed)) FSM_FILE;
29 
30 typedef struct {
31  int Ready;
32  size_t Count;
33  size_t CountFiles;
34  size_t CountDir;
35  size_t CountOther;
36  FSM_FILE* Files;
37 } __attribute__((packed)) FSM_DIR;
38 
40 typedef size_t (*fsm_cmd_read_t)(const char,const char*,size_t,size_t,void*);
41 
43 typedef size_t (*fsm_cmd_write_t)(const char,const char*,size_t,size_t,void*);
44 
46 typedef FSM_FILE (*fsm_cmd_info_t)(const char,const char*);
47 
49 typedef FSM_DIR* (*fsm_cmd_dir_t)(const char,const char*);
50 
52 typedef int (*fsm_cmd_create_t)(const char,const char*,int);
53 
55 typedef int (*fsm_cmd_delete_t)(const char,const char*,int);
56 
58 typedef void (*fsm_cmd_label_t)(const char,char*);
59 
60 
62 typedef int (*fsm_cmd_detect_t)(const char);
63 
64 typedef struct {
65  int Ready;
66  char Name[64];
67  int Splash;
68  fsm_cmd_read_t Read;
69  fsm_cmd_write_t Write;
70  fsm_cmd_info_t Info;
71  fsm_cmd_dir_t Dir;
72  fsm_cmd_create_t Create;
73  fsm_cmd_delete_t Delete;
74 
75  fsm_cmd_label_t Label;
76  fsm_cmd_detect_t Detect;
77  void* Reserved;
78 } __attribute__((packed)) FSM;
79 
80 
81 int fsm_getIDbyName(const char* Name);
82 size_t fsm_read(int FIndex, char DIndex, const char* Name, size_t Offset, size_t Count, void* Buffer);
83 size_t fsm_write(int FIndex, char DIndex, const char* Name, size_t Offset, size_t Count, void* Buffer);
84 FSM_FILE fsm_info(int FIndex, char DIndex, const char* Name);
85 void fsm_reg(const char* Name,int Splash,fsm_cmd_read_t Read, fsm_cmd_write_t Write, fsm_cmd_info_t Info, fsm_cmd_create_t Create, fsm_cmd_delete_t Delete, fsm_cmd_dir_t Dir, fsm_cmd_label_t Label, fsm_cmd_detect_t Detect);
86 int fsm_delete(int FIndex, char DIndex, const char* Name, int Mode);
87 int fsm_create(int FIndex, char DIndex, const char* Name, int Mode);
88 void fsm_dump(FSM_FILE file);
89 int fsm_getMode(int FIndex);
90 FSM_DIR* fsm_dir(int FIndex, char DIndex, const char* Name);
91 void fsm_convertUnix(uint32_t unix_time, FSM_TIME* time);
92 int fsm_isPathToFile(const char* Path,const char* Name);
93 char* fsm_timePrintable(FSM_TIME time);
94 void fsm_dpm_update(char Letter);
95 size_t fsm_DateConvertToUnix(FSM_TIME time);
Основные определения ядра
struct registers __attribute__((packed))
Структура данных пакета от мыши
Definition: psf.h:19
int Ready
Существует ли файл?
Definition: fsm.h:20
int Mode
Режим файла
Definition: fsm.h:23
uint8_t CHMOD
CHMOD файла
Definition: fsm.h:27
uint8_t month
Месяц
Definition: fsm.h:12
FSM_FILE * Files
Файлы и папки
Definition: fsm.h:36
fsm_cmd_delete_t Delete
Команда для удаления файла или папка
Definition: fsm.h:73
fsm_cmd_label_t Label
Команда для получения имени диска
Definition: fsm.h:75
uint16_t year
Год
Definition: fsm.h:11
fsm_cmd_read_t Read
Команда для чтения
Definition: fsm.h:68
uint8_t day
День
Definition: fsm.h:13
size_t Count
Количество всего
Definition: fsm.h:32
uint8_t second
Секунды
Definition: fsm.h:16
fsm_cmd_dir_t Dir
Команда для получения информации о папке
Definition: fsm.h:71
uint8_t minute
Минуты
Definition: fsm.h:15
fsm_cmd_write_t Write
Команда для записи
Definition: fsm.h:69
FSM_TIME LastTime
Время последнего изменения файла
Definition: fsm.h:25
int Splash
В какую сторону кинута палка?
Definition: fsm.h:67
size_t CountFiles
Количество файлов
Definition: fsm.h:33
size_t CountOther
Количество неизвестного типа файлов
Definition: fsm.h:35
fsm_cmd_info_t Info
Команда для получения информации
Definition: fsm.h:70
fsm_cmd_create_t Create
Команда для создания файла или папка
Definition: fsm.h:72
fsm_cmd_detect_t Detect
Команда для определения, предналежит ли диск к фс
Definition: fsm.h:76
size_t CountDir
Количество папок
Definition: fsm.h:34
int Type
Тип элемента
Definition: fsm.h:26
uint8_t hour
Час
Definition: fsm.h:14