SayoriOS 0.3.3

dpm.h
1 #pragma once
2
3 #include <common.h>
4
5 #define DPM_ERROR_NO_MOUNT (-1)
6 #define DPM_ERROR_NOT_READY (-2)
7 #define DPM_ERROR_NO_READ (-3)
8
9 // disk, offset_h, offset_l, size, buffer
10 // typedef int (*dpm_disk_rw_cmd)(size_t,size_t,size_t,void*);
11 typedef size_t (*dpm_disk_rw_cmd)(size_t,uint64_t,uint64_t,size_t,void*);
12
13 typedef struct {
14 bool Ready;
15 char Name[128];
16 char FileSystem[64];
17 int Status;
18 size_t Size;
19 size_t Sectors;
20 size_t SectorSize;
21 int AddrMode;
22 char Serial[16];
23 void* Point;
24 void* Reserved;
25 dpm_disk_rw_cmd Read;
26 dpm_disk_rw_cmd Write;
27 } __attribute__((packed)) DPM_Disk;
28
29 // TODO: Save model, manufacturer, serial number, firmware version in that dpm structure.
30 enum dpm_disk_type {
31 NONE,
32 MEMORY,
33 IDE_ATA,
34 IDE_ATAPI,
35 AHCI_SATA,
36 AHCI_SATAPI
37 };
38
39 struct dpm_disk_info {
40 enum dpm_disk_type type;
41 };
42
43 void* dpm_metadata_read(char Letter);
44 void dpm_metadata_write(char Letter, uint32_t Addr);
45 size_t dpm_read(char Letter, uint64_t high_offset, uint64_t low_offset, size_t Size, void *Buffer);
46 size_t dpm_write(char Letter, uint64_t high_offset, uint64_t low_offset, size_t Size, char* Buffer);
47 int dpm_reg(char Letter, char* Name, char* FS, int Status, size_t Size, size_t Sectors, size_t SectorSize, int AddrMode, char* Serial, void *Point);
48 DPM_Disk dpm_info(char Letter);
49 int dpm_unmount(char Letter, bool FreeReserved);
50 void dpm_LabelUpdate(char Letter, char* Label);
51 void dpm_fnc_write(char Letter, dpm_disk_rw_cmd Read, dpm_disk_rw_cmd Write);
52 int dpm_searchFreeIndex(int Index);
common.h
Основные определения ядра
__attribute__
struct registers __attribute__((packed))
Структура данных пакета от мыши
Definition: psf.h:19
dpm_write
size_t dpm_write(char Letter, uint64_t high_offset, uint64_t low_offset, size_t Size, char *Buffer)
[DPM] Запись данных на диск
Definition: dpm.c:123
dpm_LabelUpdate
void dpm_LabelUpdate(char Letter, char *Label)
Definition: dpm.c:241
dpm_reg
int dpm_reg(char Letter, char *Name, char *FS, int Status, size_t Size, size_t Sectors, size_t SectorSize, int AddrMode, char *Serial, void *Point)
[DPM] Регистрация дискового раздела
Definition: dpm.c:187
dpm_read
size_t dpm_read(char Letter, uint64_t high_offset, uint64_t low_offset, size_t Size, void *Buffer)
[DPM] Считывание данных с диска
Definition: dpm.c:82
__attribute__::Sectors
size_t Sectors
Кол-во секторов
Definition: dpm.h:19
__attribute__::Ready
bool Ready
Устройство подключено? (1 - да | 0 - нет)
Definition: dpm.h:14
__attribute__::Read
dpm_disk_rw_cmd Read
Команда для чтения данных
Definition: dpm.h:25
__attribute__::Point
void * Point
Точка входа в оперативной памяти
Definition: dpm.h:23
__attribute__::Size
size_t Size
Размер диска (в байтах)
Definition: dpm.h:18
__attribute__::Reserved
void * Reserved
Можно в ОЗУ дописать доп.данные если требуется.
Definition: dpm.h:24
__attribute__::Status
int Status
Режим устройства (0 - не обслуживает | 1 - Чтение/Запись | 2 - Только чтение)
Definition: dpm.h:17
__attribute__::SectorSize
size_t SectorSize
Размер секторов
Definition: dpm.h:20
__attribute__::AddrMode
int AddrMode
Метод адрессации (0 - CHS | 1 - LBA | 2 - RAM | 3 - RW for FNC)
Definition: dpm.h:21
__attribute__::Write
dpm_disk_rw_cmd Write
Команда для записи данных
Definition: dpm.h:26
dpm_disk_info
Definition: dpm.h:39