source: bootcd/isolinux/syslinux-6.03/libfat/fat.h

Last change on this file was e16e8f2, checked in by Edwin Eefting <edwin@datux.nl>, 3 years ago

bootstuff

  • Property mode set to 100644
File size: 3.6 KB
Line 
1/* ----------------------------------------------------------------------- *
2 *
3 *   Copyright 2001-2008 H. Peter Anvin - All Rights Reserved
4 *
5 *   This program is free software; you can redistribute it and/or modify
6 *   it under the terms of the GNU General Public License as published by
7 *   the Free Software Foundation, Inc., 53 Temple Place Ste 330,
8 *   Boston MA 02111-1307, USA; either version 2 of the License, or
9 *   (at your option) any later version; incorporated herein by reference.
10 *
11 * ----------------------------------------------------------------------- */
12
13/*
14 * fat.h
15 *
16 * Basic data structures for a FAT filesystem
17 */
18
19#ifndef FAT_H
20#define FAT_H
21
22#include "ulint.h"
23
24/* The poor excuse FAT has for a superblock -- in the boot sector */
25struct fat_bootsect {
26    le8_t bsJump[3];            /* Jump to code */
27    char bsOemName[8];          /* Formatting program */
28    le16_t bsBytesPerSec;       /* Bytes/sector */
29    le8_t bsSecPerClust;        /* Sectors/cluster */
30    le16_t bsResSectors;        /* Reserved sectors */
31    le8_t bsFATs;               /* Number of FATs */
32    le16_t bsRootDirEnts;       /* Number of entries/root directory */
33    le16_t bsSectors;           /* Number of sectors [1] */
34    le8_t bsMedia;              /* Magic media type byte */
35    le16_t bsFATsecs;           /* Sectors/FAT */
36    le16_t bsSecPerTrack;       /* Sectors/track */
37    le16_t bsHeads;             /* Number of heads */
38    le32_t bsHiddenSecs;        /* Number of hidden sectors */
39    le32_t bsHugeSectors;       /* Number of sectors [2] */
40    union {
41        /* FAT12/16 */
42        struct {
43            le8_t bsDriveNumber;        /* Drive number */
44            le8_t bsReserved1;  /* Reserved */
45            le8_t bsBootSignature;      /* 0x29 */
46            le32_t bsVolumeID;  /* Volume serial number */
47            char bsVolumeLabel[11];     /* Volume name */
48            char bsFileSysType[8];      /* File system type */
49
50            le8_t bsCode[448];  /* Boot sector code */
51        } fat16;
52
53        /* FAT32 */
54        struct {
55            le32_t bpb_fatsz32; /* Sectors/FAT */
56            le16_t bpb_extflags;        /* Extended flags */
57            le16_t bpb_fsver;   /* Filesystem version */
58            le32_t bpb_rootclus;        /* Root directory cluster */
59            le16_t bpb_fsinfo;  /* FSINFO sector number */
60            le16_t bpb_bkbootsec;       /* Backup boot sector (superblock) */
61            char bpb_reserved[12];
62
63            /* Same shit, different offset! */
64            le8_t bsDriveNumber;        /* Drive number */
65            le8_t bsReserved1;  /* Reserved */
66            le8_t bsBootSignature;      /* 0x29 */
67            le32_t bsVolumeID;  /* Volume serial number */
68            char bsVolumeLabel[11];     /* Volume name */
69            char bsFileSysType[8];      /* File system type */
70
71            le8_t bsCode[420];  /* Boot sector code */
72        } fat32;
73    } u;
74
75    le16_t bsSignature;         /* 0xAA55 */
76};
77
78#define BS_BOOTSIGNATURE        0x29
79#define BS_SIGNATURE            0xAA55
80
81/* A FAT filesystem directory entry */
82
83struct fat_dirent {
84    le8_t name[11];             /* Mangled filename */
85    le8_t attribute;            /* File type/attribute */
86    le8_t caseflags;            /* VFAT: case for basis and extension */
87    le8_t ctime_ms;             /* ms of creation time */
88    le32_t ctime;               /* Creation time */
89    le16_t atime;               /* Date portion (high 16 bits) of atime */
90    le16_t clusthi;             /* FAT32: high 16 bits of cluster */
91    le32_t mtime;               /* Modification time */
92    le16_t clustlo;             /* First cluster pointer */
93    le32_t size;                /* File size (bytes) */
94};
95
96/* A VFAT filesystem continuation entry */
97struct fat_vfat_slot {
98    le8_t id;                   /* Sequence number for slot */
99    le16_t name0[5];            /* 5 characters */
100    le8_t attribute;            /* Attribute byte */
101    le8_t reserved;             /* Reserved, MBZ */
102    le8_t alias_csum;           /* Short name checksum */
103    le16_t name5[6];            /* 6 characters */
104    le16_t firstclust;          /* MBZ */
105    le16_t name11[2];           /* 2 characters */
106};
107
108#endif /* FAT_H */
Note: See TracBrowser for help on using the repository browser.