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