Go to the documentation of this file.
2 #ifndef _UAPI_LINUX_MSDOS_FS_H
3 #define _UAPI_LINUX_MSDOS_FS_H
10 #define SECTOR_SIZE 512
13 #define MSDOS_DPB (MSDOS_DPS)
14 #define MSDOS_DPB_BITS 4
15 #define MSDOS_DPS (SECTOR_SIZE / sizeof(struct msdos_dir_entry))
16 #define MSDOS_DPS_BITS 4
17 #define MSDOS_LONGNAME 256
19 #define MSDOS_ROOT_INO 1
20 #define MSDOS_FSINFO_INO 2
22 #define MSDOS_DIR_BITS 5
25 #define FAT_MAX_DIR_ENTRIES (65536)
26 #define FAT_MAX_DIR_SIZE (FAT_MAX_DIR_ENTRIES << MSDOS_DIR_BITS)
28 #define ATTR_NONE 0x0000
29 #define ATTR_RO 0x0001
30 #define ATTR_HIDDEN 0x0002
31 #define ATTR_SYS 0x0004
32 #define ATTR_VOLUME 0x0008
33 #define ATTR_DIR 0x0010
34 #define ATTR_ARCH 0x0020
37 #define ATTR_UNUSED (ATTR_VOLUME | ATTR_ARCH | ATTR_SYS | ATTR_HIDDEN)
39 #define ATTR_EXT (ATTR_RO | ATTR_HIDDEN | ATTR_SYS | ATTR_VOLUME)
41 #define CASE_LOWER_BASE 8
42 #define CASE_LOWER_EXT 16
44 #define DELETED_FLAG 0xe5
45 #define IS_FREE(n) (!*(n) || *(n) == DELETED_FLAG)
47 #define FAT_LFN_LEN 255
49 #define MSDOS_SLOTS 21
50 #define MSDOS_DOT ". "
51 #define MSDOS_DOTDOT ".. "
54 #define FAT_START_ENT 2
62 #define BAD_FAT12 0xFF7
63 #define BAD_FAT16 0xFFF7
64 #define BAD_FAT32 0x0FFFFFF7
67 #define EOF_FAT12 0xFFF
68 #define EOF_FAT16 0xFFFF
69 #define EOF_FAT32 0x0FFFFFFF
71 #define FAT_ENT_FREE (0)
72 #define FAT_ENT_BAD (BAD_FAT32)
73 #define FAT_ENT_EOF (EOF_FAT32)
75 #define FAT_FSINFO_SIG1 0x41615252
76 #define FAT_FSINFO_SIG2 0x61417272
77 #define IS_FSINFO(x) ((x)->signature1 == FAT_FSINFO_SIG1 && (x)->signature2 == FAT_FSINFO_SIG2)
79 #define FAT_STATE_DIRTY 0x01
98 struct __attribute__((packed)) {
109 struct __attribute__((packed)) {
128 struct __attribute__((packed)) {
135 static_assert(offsetof(
fat_boot_sector_t, signature) == 510,
"Bad fat_boot_sector_t");
147 static_assert(offsetof(
fat_boot_fsinfo_t, signature) == 510,
"Bad fat_boot_fsinfo_t");
uint16_t fat_length
Definition: msdos_fs.h:91
uint16_t secs_track
Definition: msdos_fs.h:92
uint16_t version
Definition: msdos_fs.h:113
uint16_t sector_size
Definition: msdos_fs.h:84
uint32_t total_sect
Definition: msdos_fs.h:95
uint32_t next_cluster
Definition: msdos_fs.h:142
uint8_t num_fats
Definition: msdos_fs.h:87
uint16_t starthi
Definition: msdos_fs.h:157
uint8_t media
Definition: msdos_fs.h:90
uint8_t sec_per_clus
Definition: msdos_fs.h:85
uint8_t signature
Definition: msdos_fs.h:102
uint32_t vol_id
Definition: msdos_fs.h:103
uint32_t size
Definition: msdos_fs.h:159
uint8_t name11_12[4]
Definition: msdos_fs.h:173
uint16_t dir_entries
Definition: msdos_fs.h:88
uint8_t name5_10[12]
Definition: msdos_fs.h:171
uint64_t fs_type
Definition: msdos_fs.h:105
uint32_t fat_length
Definition: msdos_fs.h:111
uint8_t attr
Definition: msdos_fs.h:151
uint16_t backup_boot
Definition: msdos_fs.h:116
uint16_t signature
Definition: msdos_fs.h:130
uint32_t signature2
Definition: msdos_fs.h:140
uint16_t info_sector
Definition: msdos_fs.h:115
uint16_t sectors
Definition: msdos_fs.h:89
uint8_t reserved
Definition: msdos_fs.h:169
uint16_t reserved
Definition: msdos_fs.h:86
uint16_t flags
Definition: msdos_fs.h:112
uint8_t ctime_cs
Definition: msdos_fs.h:153
uint8_t state
Definition: msdos_fs.h:101
Definition: msdos_fs.h:165
Definition: msdos_fs.h:81
uint32_t root_cluster
Definition: msdos_fs.h:114
uint16_t heads
Definition: msdos_fs.h:93
uint16_t adate
Definition: msdos_fs.h:156
Definition: msdos_fs.h:149
uint16_t reserved2[7]
Definition: msdos_fs.h:143
uint16_t time
Definition: msdos_fs.h:158
uint32_t reserved1[120]
Definition: msdos_fs.h:139
uint32_t hidden
Definition: msdos_fs.h:94
Definition: msdos_fs.h:137
uint32_t signature1
Definition: msdos_fs.h:138
uint16_t date
Definition: msdos_fs.h:158
uint8_t lcase
Definition: msdos_fs.h:152
uint16_t signature
Definition: msdos_fs.h:144
uint8_t attr
Definition: msdos_fs.h:168
uint8_t drive_number
Definition: msdos_fs.h:100
#define MSDOS_NAME
Definition: msdos_fs.h:48
uint16_t start
Definition: msdos_fs.h:172
uint16_t start
Definition: msdos_fs.h:158
uint32_t free_clusters
Definition: msdos_fs.h:141
uint8_t alias_checksum
Definition: msdos_fs.h:170
uint8_t id
Definition: msdos_fs.h:166
uint16_t cdate
Definition: msdos_fs.h:155
uint16_t ctime
Definition: msdos_fs.h:154
uint8_t name[MSDOS_NAME]
Definition: msdos_fs.h:150
uint8_t name0_4[10]
Definition: msdos_fs.h:167