Annotation of sys/msdosfs/bootsect.h, Revision 1.1.1.1
1.1 nbrk 1: /* $OpenBSD: bootsect.h,v 1.5 2006/12/15 03:04:24 krw Exp $ */
2: /* $NetBSD: bootsect.h,v 1.8 1997/10/17 11:23:29 ws Exp $ */
3:
4: /*
5: * Written by Paul Popelka (paulp@uts.amdahl.com)
6: *
7: * You can do anything you want with this software, just don't say you wrote
8: * it, and don't remove this notice.
9: *
10: * This software is provided "as is".
11: *
12: * The author supplies this software to be publicly redistributed on the
13: * understanding that the author is not responsible for the correct
14: * functioning of this software in any circumstances and is not liable for
15: * any damages caused by this software.
16: *
17: * October 1992
18: */
19:
20: /*
21: * Format of a boot sector. This is the first sector on a DOS floppy disk
22: * or the fist sector of a partition on a hard disk. But, it is not the
23: * first sector of a partitioned hard disk.
24: */
25: struct bootsector33 {
26: u_int8_t bsJump[3]; /* jump inst E9xxxx or EBxx90 */
27: int8_t bsOemName[8]; /* OEM name and version */
28: int8_t bsBPB[19]; /* BIOS parameter block */
29: int8_t bsDriveNumber; /* drive number (0x80) */
30: int8_t bsBootCode[479]; /* pad so struct is 512b */
31: u_int8_t bsBootSectSig0;
32: u_int8_t bsBootSectSig1;
33: #define BOOTSIG0 0x55
34: #define BOOTSIG1 0xaa
35: };
36:
37: struct extboot {
38: int8_t exDriveNumber; /* drive number (0x80) */
39: int8_t exReserved1; /* reserved */
40: int8_t exBootSignature; /* ext. boot signature (0x29) */
41: #define EXBOOTSIG 0x29
42: int8_t exVolumeID[4]; /* volume ID number */
43: int8_t exVolumeLabel[11]; /* volume label */
44: int8_t exFileSysType[8]; /* fs type (FAT12 or FAT16) */
45: };
46:
47: struct bootsector50 {
48: u_int8_t bsJump[3]; /* jump inst E9xxxx or EBxx90 */
49: int8_t bsOemName[8]; /* OEM name and version */
50: int8_t bsBPB[25]; /* BIOS parameter block */
51: int8_t bsExt[26]; /* Bootsector Extension */
52: int8_t bsBootCode[448]; /* pad so structure is 512b */
53: u_int8_t bsBootSectSig0;
54: u_int8_t bsBootSectSig1;
55: #define BOOTSIG0 0x55
56: #define BOOTSIG1 0xaa
57: };
58:
59: struct bootsector710 {
60: u_int8_t bsJump[3]; /* jump inst E9xxxx or EBxx90 */
61: int8_t bsOEMName[8]; /* OEM name and version */
62: int8_t bsPBP[53]; /* BIOS parameter block */
63: int8_t bsExt[26]; /* Bootsector Extension */
64: int8_t bsBootCode[418]; /* pad so structure is 512b */
65: u_int8_t bsBootSectSig2; /* 2 & 3 are only defined for FAT32? */
66: u_int8_t bsBootSectSig3;
67: u_int8_t bsBootSectSig0;
68: u_int8_t bsBootSectSig1;
69: #define BOOTSIG0 0x55
70: #define BOOTSIG1 0xaa
71: #define BOOTSIG2 0
72: #define BOOTSIG3 0
73: };
74:
75: union bootsector {
76: struct bootsector33 bs33;
77: struct bootsector50 bs50;
78: struct bootsector710 bs710;
79: };
80:
81: #if 0
82: /*
83: * Shorthand for fields in the bpb.
84: */
85: #define bsBytesPerSec bsBPB.bpbBytesPerSec
86: #define bsSectPerClust bsBPB.bpbSectPerClust
87: #define bsResSectors bsBPB.bpbResSectors
88: #define bsFATS bsBPB.bpbFATS
89: #define bsRootDirEnts bsBPB.bpbRootDirEnts
90: #define bsSectors bsBPB.bpbSectors
91: #define bsMedia bsBPB.bpbMedia
92: #define bsFATsecs bsBPB.bpbFATsecs
93: #define bsSectPerTrack bsBPB.bpbSectPerTrack
94: #define bsHeads bsBPB.bpbHeads
95: #define bsHiddenSecs bsBPB.bpbHiddenSecs
96: #define bsHugeSectors bsBPB.bpbHugeSectors
97: #endif
CVSweb