Annotation of sys/msdosfs/bootsect.h, Revision 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