SayoriOS 0.3.3

fat12.h
1 #pragma once
2
3 #include <common.h>
4
5 #define SECTOR_SIZE 512
6 #define FAT_DELETED_MAGIC ((char)0xE5)
7 #define ENTRY_AVAILABLE 0x00
8 #define ENTRY_ERASED 0xe5
9 #define offsetof(t,d) __builtin_offsetof(t, d)
10 typedef uint32_t addr_t;
11 typedef struct {
12 uint8_t jump_code[3];
13 char oem_name[8];
14 uint16_t bytes_per_sector;
15 uint8_t sectors_per_cluster;
16 uint16_t reserved_sectors;
17 uint8_t fat_count;
18 uint16_t root_dir_capacity;
19 uint16_t logical_sectors16;
20 uint8_t media_type;
21 uint16_t sectors_per_fat;
22 uint16_t chs_sectors_per_track;
23 uint16_t chs_tracks_per_cylinder;
24 uint32_t hidden_sectors;
25 uint32_t logical_sectors32;
26 uint8_t media_id;
27 uint8_t chs_head;
28 uint8_t ext_bpb_signature;
29 uint32_t serial_number;
30 char volume_label[11];
31 char fsid[8];
32 uint8_t boot_code[448];
33 uint16_t magic;
34 } __attribute__((__packed__)) FAT_BOOT_SECTOR;
35
36
37 typedef struct{
38 uint8_t READONLY: 1,
39 HIDDEN: 1,
40 SYSTEN: 1,
41 VOLUMEID: 1,
42 DIR: 1,
43 ARCHIVE: 1,
44 _reserved: 2;
45 }__attribute__((__packed__)) fat_attributes;
46
47
48 typedef struct{
49 char Name[11];
50 fat_attributes Attr;
51 uint8_t Reser;
52 uint8_t TimeMS;
53 uint16_t TimeCreateHIS;
54 uint16_t TimeCreateDate;
55 uint16_t TimeAccess;
56 uint16_t FCHB;
57 uint16_t TimeEditHIS;
58 uint16_t TimeEditDate;
59 uint16_t FCLB;
60 uint32_t Size;
61 } FAT_ENTRY;
62
63 struct dir_entry_t{
64 char name[13];
65 uint32_t size;
66 uint8_t is_archived: 1;
67 uint8_t is_readonly: 1;
68 uint8_t is_system: 1;
69 uint8_t is_hidden: 1;
70 uint8_t is_directory: 1;
71 };
72
73 struct disk_t{
74 FILE* pdisk;
75 int32_t sec_count;
76 };
77
78 struct volume_t {
79 FAT_BOOT_SECTOR super;
80 uint32_t fat1_pos;
81 uint32_t root_pos;
82 uint32_t root_sectors;
83 uint32_t cluster2_pos;
84 struct disk_t* disk;
85 uint32_t* fat_table;
86 };
87
88 struct file_t{
89 FAT_ENTRY *entry;
90 struct volume_t* volume;
91 uint32_t offset;
92 };
93 struct dir_t{
94 FAT_ENTRY * entries;
95 uint32_t capactiy;
96 uint32_t offset;
97 struct volume_t* volume;
98 };
common.h
Основные определения ядра
__attribute__
struct registers __attribute__((packed))
Структура данных пакета от мыши
Definition: psf.h:19
__attribute__::logical_sectors16
uint16_t logical_sectors16
Общее количество секторов в логическом томе. Если это значение равно 0, это означает,...
Definition: fat12.h:19
__attribute__::root_dir_capacity
uint16_t root_dir_capacity
Количество записей корневого каталога (должно быть установлено так, чтобы корневой каталог занимал це...
Definition: fat12.h:18
__attribute__::media_type
uint8_t media_type
Этот байт указывает тип дескриптора носителя .
Definition: fat12.h:20
__attribute__::fat_count
uint8_t fat_count
Количество таблиц размещения файлов (FAT) на носителе. Часто это значение равно 2.
Definition: fat12.h:17
__attribute__::serial_number
uint32_t serial_number
VolumeID 'Серийный' номер. Используется для отслеживания томов между компьютерами....
Definition: fat12.h:29
__attribute__::chs_head
uint8_t chs_head
Флаги в Windows NT. В противном случае зарезервировано.
Definition: fat12.h:27
__attribute__::magic
uint16_t magic
Подпись загрузочного раздела 0xAA55.
Definition: fat12.h:33
__attribute__::sectors_per_cluster
uint8_t sectors_per_cluster
Количество секторов в кластере.
Definition: fat12.h:15
__attribute__::bytes_per_sector
uint16_t bytes_per_sector
Количество байтов на сектор
Definition: fat12.h:14
__attribute__::chs_sectors_per_track
uint16_t chs_sectors_per_track
Количество секторов на дорожке.
Definition: fat12.h:22
__attribute__::reserved_sectors
uint16_t reserved_sectors
Количество зарезервированных секторов. Сектора загрузочной записи включены в это значение.
Definition: fat12.h:16
__attribute__::logical_sectors32
uint32_t logical_sectors32
Большое количество секторов. Это поле устанавливается, если в томе более 65535 секторов,...
Definition: fat12.h:25
__attribute__::ext_bpb_signature
uint8_t ext_bpb_signature
Подпись (должна быть 0x28 или 0x29).
Definition: fat12.h:28
__attribute__::hidden_sectors
uint32_t hidden_sectors
Количество скрытых секторов. (т.е. LBA начала раздела.)
Definition: fat12.h:24
__attribute__::media_id
uint8_t media_id
Номер привода. Значение здесь должно быть идентично значению, возвращаемому прерыванием BIOS 0x13 или...
Definition: fat12.h:26
__attribute__::chs_tracks_per_cylinder
uint16_t chs_tracks_per_cylinder
Количество головок или сторон на носителе.
Definition: fat12.h:23
__attribute__::sectors_per_fat
uint16_t sectors_per_fat
Количество секторов на FAT. Только FAT12/FAT16.
Definition: fat12.h:21
FAT_ENTRY
Definition: fat12.h:48
FAT_ENTRY::Reser
uint8_t Reser
Зарезервировано для использования Windows NT.
Definition: fat12.h:51
FAT_ENTRY::Size
uint32_t Size
Размер файла в байтах.
Definition: fat12.h:60
FAT_ENTRY::TimeEditHIS
uint16_t TimeEditHIS
Время последней модификации. Тот же формат, что и время создания.
Definition: fat12.h:57
FAT_ENTRY::TimeAccess
uint16_t TimeAccess
Дата последнего доступа. Тот же формат, что и дата создания.
Definition: fat12.h:55
FAT_ENTRY::Attr
fat_attributes Attr
Атрибуты файла
Definition: fat12.h:50
FAT_ENTRY::TimeEditDate
uint16_t TimeEditDate
Дата последней модификации. Тот же формат, что и дата создания.
Definition: fat12.h:58
FAT_ENTRY::TimeCreateHIS
uint16_t TimeCreateHIS
Время создания файла. Умножьте секунды на 2. (Часы 5 / Минуты 6 / Секунды 5)
Definition: fat12.h:53
FAT_ENTRY::TimeMS
uint8_t TimeMS
Время создания в десятых долях секунды.
Definition: fat12.h:52
FAT_ENTRY::FCHB
uint16_t FCHB
Старшие 16 бит первого номера кластера этой записи. Для FAT 12 и FAT 16 это значение всегда равно нул...
Definition: fat12.h:56
FAT_ENTRY::FCLB
uint16_t FCLB
Младшие 16 бит первого номера кластера этой записи. Используйте этот номер, чтобы найти первый класте...
Definition: fat12.h:59
FAT_ENTRY::TimeCreateDate
uint16_t TimeCreateDate
Дата создания файла (Год 7 / Месяц 4 / День 5)
Definition: fat12.h:54
FILE
Структура файла. Требуется для работы с VFS.
Definition: stdio.h:21
dir_entry_t
Definition: fat12.h:63
dir_t
Definition: fat12.h:93
disk_t
Definition: fat12.h:73
file_t
Definition: fat12.h:88
volume_t
Definition: fat12.h:78