1 |
17 |
hellwig |
/*
|
2 |
|
|
* disklabel.h -- structure of the disklabel
|
3 |
|
|
*/
|
4 |
|
|
|
5 |
|
|
|
6 |
|
|
#ifndef _DISKLABEL_H_
|
7 |
|
|
#define _DISKLABEL_H_
|
8 |
|
|
|
9 |
|
|
|
10 |
|
|
#define DSKMAGIC 0x82564557
|
11 |
|
|
#define NTYPENAME 16
|
12 |
|
|
#define NPACKNAME 16
|
13 |
|
|
#define NDDATA 5
|
14 |
|
|
#define NSPARE 5
|
15 |
|
|
#define MAXPARTS 16
|
16 |
|
|
#define PADSIZE 108
|
17 |
|
|
|
18 |
|
|
|
19 |
|
|
typedef struct {
|
20 |
|
|
uint32_t p_size; /* number of sectors in partition */
|
21 |
|
|
uint32_t p_offset; /* starting sector */
|
22 |
|
|
uint32_t p_fsize; /* filesystem basic fragment size */
|
23 |
|
|
uint8_t p_fstype; /* filesystem type */
|
24 |
|
|
uint8_t p_frag; /* filesystem fragments per block */
|
25 |
|
|
uint16_t p_cpg; /* filesystem cylinders per group */
|
26 |
|
|
} Partition;
|
27 |
|
|
|
28 |
|
|
typedef struct {
|
29 |
|
|
uint32_t d_magic; /* magic number */
|
30 |
|
|
uint16_t d_type; /* drive type */
|
31 |
|
|
uint16_t d_subtype; /* controller, d_type specific */
|
32 |
|
|
char d_typename[NTYPENAME]; /* type name */
|
33 |
|
|
char d_packname[NPACKNAME]; /* pack identifier */
|
34 |
|
|
uint32_t d_secsize; /* bytes per sector */
|
35 |
|
|
uint32_t d_nsectors; /* data sectors per track */
|
36 |
|
|
uint32_t d_ntracks; /* tracks per cylinder */
|
37 |
|
|
uint32_t d_ncylinders; /* data cylinders per unit */
|
38 |
|
|
uint32_t d_secpercyl; /* data sectors per cylinder */
|
39 |
|
|
uint32_t d_secperunit; /* data sectors per unit */
|
40 |
|
|
uint16_t d_sparespertrack; /* spare sectors per track */
|
41 |
|
|
uint16_t d_sparespercyl; /* spare sectors per cylinder */
|
42 |
|
|
uint32_t d_acylinders; /* alternative cylinders per unit */
|
43 |
|
|
uint16_t d_rpm; /* rotational speed */
|
44 |
|
|
uint16_t d_interleave; /* hardware sector interleave */
|
45 |
|
|
uint16_t d_trackskew; /* sector 0 skew, per track */
|
46 |
|
|
uint16_t d_cylskew; /* sector 0 skew, per cylinder */
|
47 |
|
|
uint32_t d_headswitch; /* head switch time, usec */
|
48 |
|
|
uint32_t d_trkseek; /* track-to-track seek, usec */
|
49 |
|
|
uint32_t d_flags; /* generic flags */
|
50 |
|
|
uint32_t d_drivedata[NDDATA]; /* drive-type specific information */
|
51 |
|
|
uint32_t d_spare[NSPARE]; /* reserved for future use */
|
52 |
|
|
uint32_t d_magic2; /* the magic number again */
|
53 |
|
|
uint16_t d_checksum; /* xor of data incl partitions */
|
54 |
|
|
uint16_t d_npartitions; /* number of partitions */
|
55 |
|
|
uint32_t d_bbsize; /* size of boot area at sector 0, bytes */
|
56 |
|
|
uint32_t d_sbsize; /* size of filesystem superblock, bytes */
|
57 |
|
|
Partition d_parts[MAXPARTS]; /* the partition table */
|
58 |
|
|
uint8_t d_pad[PADSIZE]; /* pad up to sector size */
|
59 |
|
|
} DiskLabel;
|
60 |
|
|
|
61 |
|
|
|
62 |
|
|
#endif /* _DISKLABEL_H_ */
|