[BACK]Return to bootsect.h CVS log [TXT][DIR] Up to [cvs.NetBSD.org] / src / sys / fs / msdosfs

Annotation of src/sys/fs/msdosfs/bootsect.h, Revision 1.4

1.4     ! gdt         1: /*     $NetBSD: bootsect.h,v 1.3 2005/12/03 17:34:43 christos Exp $    */
1.1       jdolecek    2:
                      3: /*
                      4:  * Written by Paul Popelka (paulp@uts.amdahl.com)
                      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:  */
1.3       christos   18: #ifndef _MSDOSFS_BOOTSECT_H_
                     19: #define _MSDOSFS_BOOTSECT_H_
1.1       jdolecek   20:
                     21: /*
                     22:  * Format of a boot sector.  This is the first sector on a DOS floppy disk
                     23:  * or the fist 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:        u_int8_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:        u_int8_t        bsBootSectSig0;
                     33:        u_int8_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:        u_int8_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:        u_int8_t        bsBootSectSig0;
                     55:        u_int8_t        bsBootSectSig1;
                     56: #define        BOOTSIG0        0x55
                     57: #define        BOOTSIG1        0xaa
                     58: };
                     59:
                     60: struct bootsector710 {
                     61:        u_int8_t        bsJump[3];              /* jump inst E9xxxx or EBxx90 */
                     62:        int8_t          bsOEMName[8];           /* OEM name and version */
1.2       lukem      63:        int8_t          bsBPB[53];              /* BIOS parameter block */
1.1       jdolecek   64:        int8_t          bsExt[26];              /* Bootsector Extension */
1.4     ! gdt        65:        int8_t          bsBootCode[420];        /* pad so structure is 512b */
1.1       jdolecek   66:        u_int8_t        bsBootSectSig0;
                     67:        u_int8_t        bsBootSectSig1;
                     68: #define        BOOTSIG0        0x55
                     69: #define        BOOTSIG1        0xaa
                     70: };
                     71: #ifdef atari
                     72: /*
                     73:  * The boot sector on a gemdos fs is a little bit different from the msdos fs
                     74:  * format. Currently there is no need to declare a separate structure, the
                     75:  * bootsector33 struct will do.
                     76:  */
                     77: #if 0
                     78: struct bootsec_atari {
                     79:        u_int8_t        bsBranch[2];            /* branch inst if auto-boot     */
                     80:        int8_t          bsFiller[6];            /* anything or nothing          */
                     81:        int8_t          bsSerial[3];            /* serial no. for mediachange   */
                     82:        int8_t          bsBPB[19];              /* BIOS parameter block         */
                     83:        int8_t          bsBootCode[482];        /* pad so struct is 512b        */
                     84: };
                     85: #endif
                     86: #endif /* atari */
                     87:
                     88: union bootsector {
                     89:        struct bootsector33 bs33;
                     90:        struct bootsector50 bs50;
                     91:        struct bootsector710 bs710;
                     92: };
                     93:
                     94: #if 0
                     95: /*
                     96:  * Shorthand for fields in the bpb.
                     97:  */
                     98: #define        bsBytesPerSec   bsBPB.bpbBytesPerSec
                     99: #define        bsSectPerClust  bsBPB.bpbSectPerClust
                    100: #define        bsResSectors    bsBPB.bpbResSectors
                    101: #define        bsFATS          bsBPB.bpbFATS
                    102: #define        bsRootDirEnts   bsBPB.bpbRootDirEnts
                    103: #define        bsSectors       bsBPB.bpbSectors
                    104: #define        bsMedia         bsBPB.bpbMedia
                    105: #define        bsFATsecs       bsBPB.bpbFATsecs
                    106: #define        bsSectPerTrack  bsBPB.bpbSectPerTrack
                    107: #define        bsHeads         bsBPB.bpbHeads
                    108: #define        bsHiddenSecs    bsBPB.bpbHiddenSecs
                    109: #define        bsHugeSectors   bsBPB.bpbHugeSectors
                    110: #endif
1.3       christos  111:
                    112: #endif /* _MSDOSFS_BOOTSECT_H_ */

CVSweb <webmaster@jp.NetBSD.org>