66 lines
1.9 KiB
C
66 lines
1.9 KiB
C
/*
|
|
* storage.h
|
|
*
|
|
* Created on: Aug 23, 2011
|
|
* Author: Tiberiu
|
|
*/
|
|
|
|
#ifndef STORAGE_H_
|
|
#define STORAGE_H_
|
|
|
|
#include <types.h>
|
|
|
|
// Storage device
|
|
typedef struct {
|
|
|
|
char MountPointName[32];// E.g. "fd0"; you should avoid spaces, or special chars, or otherwise get weird paths like "Mom's floppy\virus.exe"
|
|
uint32 DeviceID; // Autocompleted by VFS
|
|
|
|
uint32 BlockSize; // E.g. sector size
|
|
uint32 BlockCount; // How many blocks are loaded in memory per read
|
|
|
|
/********************************************************
|
|
* READ DATA *
|
|
* Params: *
|
|
* > offset: read starting from block ~ *
|
|
* Returns: address to data, NULL for error *
|
|
********************************************************/
|
|
uint32 (*ReadData) (uint32 offset);
|
|
|
|
/********************************************************
|
|
* WRITE DATA *
|
|
* Params: *
|
|
* > offset: write starting from block ~ *
|
|
* > address: where to write from *
|
|
* Returns: NULL for error *
|
|
********************************************************/
|
|
uint32 (*WriteData) (uint32 offset, uint32 address);
|
|
|
|
uint32 FileSystemID; // Autocompleted by 'mount'... at least should be
|
|
|
|
} StorageDevice;
|
|
|
|
|
|
typedef struct {
|
|
uint32 FileSystemID; // Autocompleted by VFS
|
|
|
|
/********************************************************
|
|
* DETECT IF THIS IS THE FS ON STORAGE DEVICE *
|
|
* Params: *
|
|
* > *s: Pointer to device info & routines *
|
|
* Returns: positive if match, NULL otherwise *
|
|
********************************************************/
|
|
uint32 (*Detect) (StorageDevice *s);
|
|
|
|
uint32 (*Open) (StorageDevice *s, string path);
|
|
uint32 (*CreateNode) (StorageDevice *s, string path);
|
|
uint32 (*DeleteNode) (StorageDevice *s, string path);
|
|
|
|
} FileSystem;
|
|
|
|
|
|
|
|
extern void ConvertLbaToChs(uint32 SectorsPerTrack, uint32 lba, uint32 *cyl, uint32 *head, uint32 *sector);
|
|
|
|
#endif /* STORAGE_H_ */
|