mirror of
https://github.com/xcat2/xNBA.git
synced 2024-12-15 07:41:45 +00:00
59 lines
1.6 KiB
C
59 lines
1.6 KiB
C
#ifndef DISK_H
|
|
#define DISK_H
|
|
|
|
#include "etherboot.h" /* for sector_t */
|
|
#include "dev.h"
|
|
|
|
/*
|
|
* Structure returned from disk_probe and passed to other driver
|
|
* functions.
|
|
*/
|
|
struct disk
|
|
{
|
|
struct dev dev; /* This must come first */
|
|
int (*read)(struct disk *, sector_t sector);
|
|
unsigned int drive;
|
|
unsigned long hw_sector_size; /* The hardware sector size for dealing
|
|
* with partition tables and the like.
|
|
* Must be >= 512
|
|
*/
|
|
unsigned int sectors_per_read; /* The number of 512 byte sectors
|
|
* returned by each read call.
|
|
* All I/O must be aligned to this size.
|
|
*/
|
|
unsigned int bytes; /* The number of bytes in the read buffer. */
|
|
sector_t sectors; /* The number of sectors on the drive. */
|
|
sector_t sector; /* The first sector in the driver buffer */
|
|
unsigned char *buffer; /* The data read from the drive */
|
|
void *priv; /* driver can hang private data here */
|
|
|
|
unsigned long disk_offset;
|
|
int direction;
|
|
};
|
|
|
|
struct disk_operations {
|
|
};
|
|
|
|
extern struct disk disk;
|
|
extern int url_file(const char *name,
|
|
int (*fnc)(unsigned char *, unsigned int, unsigned int, int));
|
|
|
|
extern int disk_probe(struct dev *dev);
|
|
extern int disk_load_configuration(struct dev *dev);
|
|
extern int disk_load(struct dev *dev);
|
|
extern void disk_disable(void);
|
|
|
|
extern struct type_driver disk_driver;
|
|
|
|
#ifndef DOWNLOAD_PROTO_DISK
|
|
#define disk_disable() do { } while(0)
|
|
#endif
|
|
|
|
#define SECTOR_SIZE 512
|
|
#define SECTOR_SHIFT 9
|
|
|
|
/* Maximum block_size that may be set. */
|
|
#define DISK_BUFFER_SIZE (18 * SECTOR_SIZE)
|
|
|
|
#endif /* DISK_H */
|