blob: 739902f7ebadd1d40b8fc753eba9e710e955726f (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
|
#ifndef DISK_H
#define DISK_H
#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;
};
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);
#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 */
|