1 #ifndef _LINUX_GENHD_H
2 #define _LINUX_GENHD_H
3
4 /*
5 * genhd.h Copyright (C) 1992 Drew Eckhardt
6 * Generic hard disk header file by
7 * Drew Eckhardt
8 *
9 * <drew@colorado.edu>
10 */
11
12 #define CONFIG_MSDOS_PARTITION 1
13
14 #ifdef __alpha__
15 #define CONFIG_OSF_PARTITION 1
16 #endif
17
18 #ifdef __sparc__
19 #define CONFIG_SUN_PARTITION 1
20 #endif
21
22 /* These two have identical behaviour; use the second one if DOS fdisk gets
23 confused about extended/logical partitions starting past cylinder 1023. */
24 #define DOS_EXTENDED_PARTITION 5
25 #define LINUX_EXTENDED_PARTITION 0x85
26
27 #define DM6_PARTITION 0x54 /* has DDO: use xlated geom & offset */
28 #define EZD_PARTITION 0x55 /* EZ-DRIVE: same as DM6 (we think) */
29 #define DM6_AUX1PARTITION 0x51 /* no DDO: use xlated geom */
30 #define DM6_AUX3PARTITION 0x53 /* no DDO: use xlated geom */
31
32 struct partition {
33 unsigned char boot_ind; /* 0x80 - active */
34 unsigned char head; /* starting head */
35 unsigned char sector; /* starting sector */
36 unsigned char cyl; /* starting cylinder */
37 unsigned char sys_ind; /* What partition type */
38 unsigned char end_head; /* end head */
39 unsigned char end_sector; /* end sector */
40 unsigned char end_cyl; /* end cylinder */
41 unsigned int start_sect; /* starting sector counting from 0 */
42 unsigned int nr_sects; /* nr of sectors in partition */
43 };
44
45 struct hd_struct {
46 long start_sect;
47 long nr_sects;
48 };
49
50 struct gendisk {
51 int major; /* major number of driver */
52 const char *major_name; /* name of major driver */
53 int minor_shift; /* number of times minor is shifted to
54 get real minor */
55 int max_p; /* maximum partitions per device */
56 int max_nr; /* maximum number of real devices */
57
58 void (*init)(struct gendisk *); /* Initialization called before we do our thing */
59 struct hd_struct *part; /* partition table */
60 int *sizes; /* device size in blocks, copied to blk_size[] */
61 int nr_real; /* number of real devices */
62
63 void *real_devices; /* internal use */
64 struct gendisk *next;
65 };
66
67 extern struct gendisk *gendisk_head; /* linked list of disks */
68
69 #endif