[BACK]Return to bootsect.h CVS log [TXT][DIR] Up to [local] / sys / msdosfs

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