XenevaOS
Loading...
Searching...
No Matches
vdisk.h
Go to the documentation of this file.
1
32/*
33 * Here, Aurora kernel, the virtual disk service registers
34 * each disk drives present in the system , for example
35 * a system might have two AHCI/SATA drives in two port connected
36 * and one NVMe drive, so there will be total three Virtaul Disk
37 * registered to each connected physical disk, and each
38 * physical disk will have number of partitions, and the maximum
39 * available partition should be 128 because GPT only supports
40 * 16 partitions
41 */
42
43#ifndef __VDISK_H__
44#define __VDISK_H__
45
46#include <stdint.h>
47#include <aurora.h>
48#include <Fs/vfs.h>
49#include <Fs/_FsGUIDs.h>
50
51
52#define MAX_VDISK_DEVICES 26
53#define MAX_PARTITION_PER_DISK 128
54
55struct _VDISK_;
56
57typedef int(*vdisk_read) (struct _VDISK_ *disk, uint64_t lba, uint32_t count ,uint64_t* buffer);
58typedef int(*vdisk_write) (struct _VDISK_ *disk, uint64_t lba, uint32_t count, uint64_t *buffer);
59
60/* will needed in future */
68
69
70//#pragma pack(push,1)
71/* vdisk structures */
72typedef struct _VDISK_ {
73 char diskname[40];
74 char serialNumber[20];
75 char diskPath[32];
76 void* data;
80
81 //----------------------//
82 // partition specific //
83 //----------------------//
84 // Actually it should //
85 // look like : //
86 // AuPartition part[MAX_PARTITION_PER_DISK] //
90
91 /* for now only 1 partition
92 * is supported
93 */
96 /* mounted file system of
97 * the part
98 */
100
101 //----------------------//
102 // disk specific //
103 //=======================//
106 /* more device specific functions
107 * needs to be added like eject
108 */
110//#pragma pack(pop)
111
112#pragma pack(push,1)
121#pragma pack(pop)
122
123#pragma pack(push,1)
130#pragma pack(pop)
131
135extern void AuVDiskInitialise();
136
141
142
148
156
157
166AU_EXTERN AU_EXPORT size_t AuVDiskRead(AuVDisk *disk, uint64_t lba, uint32_t count, uint64_t* buffer);
167
176AU_EXTERN AU_EXPORT size_t AuVDiskWrite(AuVDisk* disk, uint64_t lba, uint32_t count, uint64_t* buffer);
177
183
192extern int AuGetVDiskInfo(uint8_t vdiskID, void* buffer);
193
202extern int AuGetVDiskPartitionInfo(uint8_t vdiskID, uint8_t partition_ID, void* buffer);
203
211
219AU_EXTERN AU_EXPORT AuVDisk* AuGetVDisk(int vdisk_idx);
220#endif
#define AU_EXTERN
Definition aurora.h:50
#define AU_EXPORT
Definition aurora.h:38
unsigned int uint32_t
Definition acefiex.h:163
unsigned char uint8_t
Definition acefiex.h:161
COMPILER_DEPENDENT_UINT64 uint64_t
Definition acefiex.h:165
Definition Base.h:281
Definition vdisk.h:72
char diskPath[32]
Definition vdisk.h:75
uint64_t currentLBA
Definition vdisk.h:89
AuVFSNode * fsys
Definition vdisk.h:99
char diskname[40]
Definition vdisk.h:73
uint64_t blockSize
Definition vdisk.h:78
void * data
Definition vdisk.h:76
uint8_t __VDiskID
Definition vdisk.h:79
uint8_t num_partition
Definition vdisk.h:87
vdisk_read Read
Definition vdisk.h:104
uint64_t max_blocks
Definition vdisk.h:77
char serialNumber[20]
Definition vdisk.h:74
GUID part_guid
Definition vdisk.h:94
GUID part_unique_guid
Definition vdisk.h:95
uint64_t startingLBA
Definition vdisk.h:88
vdisk_write Write
Definition vdisk.h:105
Definition vfs.h:89
Definition vdisk.h:61
GUID part_unique_guid
Definition vdisk.h:66
GUID part_guid
Definition vdisk.h:65
uint64_t maxBlocks
Definition vdisk.h:64
uint64_t startingLBA
Definition vdisk.h:62
uint64_t lastLBA
Definition vdisk.h:63
Definition vdisk.h:113
uint8_t vDiskID
Definition vdisk.h:116
uint64_t maxBlocks
Definition vdisk.h:118
char serialNumber[20]
Definition vdisk.h:115
uint64_t blocksSize
Definition vdisk.h:119
int num_partition
Definition vdisk.h:117
char diskname[40]
Definition vdisk.h:114
Definition vdisk.h:124
GUID uniqueGUID
Definition vdisk.h:127
uint64_t startingLBA
Definition vdisk.h:128
GUID partitionGUID
Definition vdisk.h:126
char mountedName[32]
Definition vdisk.h:125
int(* vdisk_read)(struct _VDISK_ *disk, uint64_t lba, uint32_t count, uint64_t *buffer)
Definition vdisk.h:57
AU_EXTERN AU_EXPORT size_t AuVDiskRead(AuVDisk *disk, uint64_t lba, uint32_t count, uint64_t *buffer)
AuVDiskRead – reads a disk block from registered disk.
Definition vdisk.cpp:114
AU_EXTERN AU_EXPORT int AuVDiskCreateStorageFile(char *output)
AuVDiskCreateStorageFile – creates a storage directory in device file system.
Definition vdisk.cpp:61
AU_EXTERN AU_EXPORT void AuVDiskRegister(AuVDisk *disk)
AuVDiskRegister – adds a vdisk service to the list.
Definition vdisk.cpp:205
struct _VDISK_ AuVDisk
AU_EXTERN AU_EXPORT AuVDisk * AuGetVDisk(int vdisk_idx)
AuGetVDisk – get a vdisk from the vdisk array.
Definition vdisk.cpp:308
struct _vdisk_info_ AuVDiskInfo
int AuGetVDiskPartitionInfo(uint8_t vdiskID, uint8_t partition_ID, void *buffer)
AuGetVDiskPartitionInfo – get partition information from desired virtual disk.
Definition vdisk.cpp:270
AU_EXTERN AU_EXPORT AuVDisk * AuCreateVDisk()
AuCreateVDisk – creates a vdisk and return to the caller.
Definition vdisk.cpp:101
int AuGetVDiskInfo(uint8_t vdiskID, void *buffer)
AuGetVDiskInfo – returns virtual disk information to application.
Definition vdisk.cpp:246
void AuVDiskInitialise()
AuVDiskInitialise – initialise the vdisk.
Definition vdisk.cpp:49
AU_EXTERN AU_EXPORT void AuVDiskDestroy(AuVDisk *vdisk)
AuVDiskDestroy – destroy's a vdisk.
Definition vdisk.cpp:224
int(* vdisk_write)(struct _VDISK_ *disk, uint64_t lba, uint32_t count, uint64_t *buffer)
Definition vdisk.h:58
AU_EXTERN AU_EXPORT uint8_t AuVDiskGetIndex()
AuVDiskGetIndex – returns a vdisk index.
Definition vdisk.cpp:89
struct _au_partition_data_ AuPartitionData
struct _vdisk_partition_info_ AuVDiskPartitionInfo
AU_EXTERN AU_EXPORT size_t AuVDiskWrite(AuVDisk *disk, uint64_t lba, uint32_t count, uint64_t *buffer)
AuVDiskWrite – reads a disk block from registered disk.
Definition vdisk.cpp:128