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");
139 uint32_t reserved1[120];
147 static_assert(offsetof(
fat_boot_fsinfo_t, signature) == 510,
"Bad fat_boot_fsinfo_t");
uint16_t start
Definition: msdos_fs.h:172
uint8_t alias_checksum
Definition: msdos_fs.h:170
uint8_t state
Definition: msdos_fs.h:101
uint32_t hidden
Definition: msdos_fs.h:94
uint64_t fs_type
Definition: msdos_fs.h:105
uint16_t sectors
Definition: msdos_fs.h:89
uint32_t next_cluster
Definition: msdos_fs.h:142
uint8_t reserved
Definition: msdos_fs.h:169
uint16_t reserved
Definition: msdos_fs.h:86
uint32_t signature2
Definition: msdos_fs.h:140
uint8_t sec_per_clus
Definition: msdos_fs.h:85
Definition: msdos_fs.h:165
uint32_t size
Definition: msdos_fs.h:159
uint16_t version
Definition: msdos_fs.h:113
uint16_t signature
Definition: msdos_fs.h:130
uint32_t free_clusters
Definition: msdos_fs.h:141
uint16_t time
Definition: msdos_fs.h:158
uint16_t info_sector
Definition: msdos_fs.h:115
uint32_t signature1
Definition: msdos_fs.h:138
uint32_t fat_length
Definition: msdos_fs.h:111
uint32_t total_sect
Definition: msdos_fs.h:95
uint16_t sector_size
Definition: msdos_fs.h:84
uint16_t dir_entries
Definition: msdos_fs.h:88
uint16_t cdate
Definition: msdos_fs.h:155
uint8_t signature
Definition: msdos_fs.h:102
uint16_t ctime
Definition: msdos_fs.h:154
Definition: msdos_fs.h:137
uint16_t secs_track
Definition: msdos_fs.h:92
#define MSDOS_NAME
Definition: msdos_fs.h:48
uint8_t attr
Definition: msdos_fs.h:168
uint8_t media
Definition: msdos_fs.h:90
uint8_t drive_number
Definition: msdos_fs.h:100
uint16_t fat_length
Definition: msdos_fs.h:91
Definition: msdos_fs.h:81
uint8_t attr
Definition: msdos_fs.h:151
uint8_t lcase
Definition: msdos_fs.h:152
uint16_t starthi
Definition: msdos_fs.h:157
uint16_t adate
Definition: msdos_fs.h:156
uint8_t num_fats
Definition: msdos_fs.h:87
uint32_t vol_id
Definition: msdos_fs.h:103
Definition: msdos_fs.h:149
uint8_t id
Definition: msdos_fs.h:166
uint32_t root_cluster
Definition: msdos_fs.h:114
uint16_t signature
Definition: msdos_fs.h:144
uint8_t ctime_cs
Definition: msdos_fs.h:153
uint16_t backup_boot
Definition: msdos_fs.h:116
uint16_t flags
Definition: msdos_fs.h:112
uint16_t heads
Definition: msdos_fs.h:93