#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 */