![]() |
SyterKit 0.4.0.x
SyterKit is a bare-metal framework
|

Macros | |
| #define | MAX_DIR 0x200000 /* Max size of FAT directory */ |
| #define | MAX_DIR_EX 0x10000000 /* Max size of exFAT directory */ |
| #define | MAX_FAT12 0xFF5 /* Max FAT12 clusters (differs from specs, but right for real DOS/Windows behavior) */ |
| #define | MAX_FAT16 0xFFF5 /* Max FAT16 clusters (differs from specs, but right for real DOS/Windows behavior) */ |
| #define | MAX_FAT32 0x0FFFFFF5 /* Max FAT32 clusters (not specified, practical limit) */ |
| #define | MAX_EXFAT 0x7FFFFFFD /* Max exFAT clusters (differs from specs, implementation limit) */ |
| #define | IsUpper(c) ((c) >= 'A' && (c) <= 'Z') |
| #define | IsLower(c) ((c) >= 'a' && (c) <= 'z') |
| #define | IsDigit(c) ((c) >= '0' && (c) <= '9') |
| #define | IsSeparator(c) ((c) == '/' || (c) == '\\') |
| #define | IsTerminator(c) ((UINT) (c) < (FF_USE_LFN ? ' ' : '!')) |
| #define | IsSurrogate(c) ((c) >= 0xD800 && (c) <= 0xDFFF) |
| #define | IsSurrogateH(c) ((c) >= 0xD800 && (c) <= 0xDBFF) |
| #define | IsSurrogateL(c) ((c) >= 0xDC00 && (c) <= 0xDFFF) |
| #define | FA_SEEKEND 0x20 /* Seek to end of the file on file open */ |
| #define | FA_MODIFIED 0x40 /* File has been modified */ |
| #define | FA_DIRTY 0x80 /* FIL.buf[] needs to be written-back */ |
| #define | AM_VOL 0x08 /* Volume label */ |
| #define | AM_LFN 0x0F /* LFN entry */ |
| #define | AM_MASK 0x3F /* Mask of defined bits in FAT */ |
| #define | AM_MASKX 0x37 /* Mask of defined bits in exFAT */ |
| #define | NSFLAG 11 /* Index of the name status byte */ |
| #define | NS_LOSS 0x01 /* Out of 8.3 format */ |
| #define | NS_LFN 0x02 /* Force to create LFN entry */ |
| #define | NS_LAST 0x04 /* Last segment */ |
| #define | NS_BODY 0x08 /* Lower case flag (body) */ |
| #define | NS_EXT 0x10 /* Lower case flag (ext) */ |
| #define | NS_DOT 0x20 /* Dot entry */ |
| #define | NS_NOLFN 0x40 /* Do not find LFN */ |
| #define | NS_NONAME 0x80 /* Not followed */ |
| #define | ET_BITMAP 0x81 /* Allocation bitmap */ |
| #define | ET_UPCASE 0x82 /* Up-case table */ |
| #define | ET_VLABEL 0x83 /* Volume label */ |
| #define | ET_FILEDIR 0x85 /* File and directory */ |
| #define | ET_STREAM 0xC0 /* Stream extension */ |
| #define | ET_FILENAME 0xC1 /* Name extension */ |
| #define | BS_JmpBoot 0 /* x86 jump instruction (3-byte) */ |
| #define | BS_OEMName 3 /* OEM name (8-byte) */ |
| #define | BPB_BytsPerSec 11 /* Sector size [byte] (WORD) */ |
| #define | BPB_SecPerClus 13 /* Cluster size [sector] (BYTE) */ |
| #define | BPB_RsvdSecCnt 14 /* Size of reserved area [sector] (WORD) */ |
| #define | BPB_NumFATs 16 /* Number of FATs (BYTE) */ |
| #define | BPB_RootEntCnt 17 /* Size of root directory area for FAT [entry] (WORD) */ |
| #define | BPB_TotSec16 19 /* Volume size (16-bit) [sector] (WORD) */ |
| #define | BPB_Media 21 /* Media descriptor byte (BYTE) */ |
| #define | BPB_FATSz16 22 /* FAT size (16-bit) [sector] (WORD) */ |
| #define | BPB_SecPerTrk 24 /* Number of sectors per track for int13h [sector] (WORD) */ |
| #define | BPB_NumHeads 26 /* Number of heads for int13h (WORD) */ |
| #define | BPB_HiddSec 28 /* Volume offset from top of the drive (DWORD) */ |
| #define | BPB_TotSec32 32 /* Volume size (32-bit) [sector] (DWORD) */ |
| #define | BS_DrvNum 36 /* Physical drive number for int13h (BYTE) */ |
| #define | BS_NTres 37 /* WindowsNT error flag (BYTE) */ |
| #define | BS_BootSig 38 /* Extended boot signature (BYTE) */ |
| #define | BS_VolID 39 /* Volume serial number (DWORD) */ |
| #define | BS_VolLab 43 /* Volume label string (8-byte) */ |
| #define | BS_FilSysType 54 /* Filesystem type string (8-byte) */ |
| #define | BS_BootCode 62 /* Boot code (448-byte) */ |
| #define | BS_55AA 510 /* Signature word (WORD) */ |
| #define | BPB_FATSz32 36 /* FAT32: FAT size [sector] (DWORD) */ |
| #define | BPB_ExtFlags32 40 /* FAT32: Extended flags (WORD) */ |
| #define | BPB_FSVer32 42 /* FAT32: Filesystem version (WORD) */ |
| #define | BPB_RootClus32 44 /* FAT32: Root directory cluster (DWORD) */ |
| #define | BPB_FSInfo32 48 /* FAT32: Offset of FSINFO sector (WORD) */ |
| #define | BPB_BkBootSec32 50 /* FAT32: Offset of backup boot sector (WORD) */ |
| #define | BS_DrvNum32 64 /* FAT32: Physical drive number for int13h (BYTE) */ |
| #define | BS_NTres32 65 /* FAT32: Error flag (BYTE) */ |
| #define | BS_BootSig32 66 /* FAT32: Extended boot signature (BYTE) */ |
| #define | BS_VolID32 67 /* FAT32: Volume serial number (DWORD) */ |
| #define | BS_VolLab32 71 /* FAT32: Volume label string (8-byte) */ |
| #define | BS_FilSysType32 82 /* FAT32: Filesystem type string (8-byte) */ |
| #define | BS_BootCode32 90 /* FAT32: Boot code (420-byte) */ |
| #define | BPB_ZeroedEx 11 /* exFAT: MBZ field (53-byte) */ |
| #define | BPB_VolOfsEx 64 /* exFAT: Volume offset from top of the drive [sector] (QWORD) */ |
| #define | BPB_TotSecEx 72 /* exFAT: Volume size [sector] (QWORD) */ |
| #define | BPB_FatOfsEx 80 /* exFAT: FAT offset from top of the volume [sector] (DWORD) */ |
| #define | BPB_FatSzEx 84 /* exFAT: FAT size [sector] (DWORD) */ |
| #define | BPB_DataOfsEx 88 /* exFAT: Data offset from top of the volume [sector] (DWORD) */ |
| #define | BPB_NumClusEx 92 /* exFAT: Number of clusters (DWORD) */ |
| #define | BPB_RootClusEx 96 /* exFAT: Root directory start cluster (DWORD) */ |
| #define | BPB_VolIDEx 100 /* exFAT: Volume serial number (DWORD) */ |
| #define | BPB_FSVerEx 104 /* exFAT: Filesystem version (WORD) */ |
| #define | BPB_VolFlagEx 106 /* exFAT: Volume flags (WORD) */ |
| #define | BPB_BytsPerSecEx 108 /* exFAT: Log2 of sector size in unit of byte (BYTE) */ |
| #define | BPB_SecPerClusEx 109 /* exFAT: Log2 of cluster size in unit of sector (BYTE) */ |
| #define | BPB_NumFATsEx 110 /* exFAT: Number of FATs (BYTE) */ |
| #define | BPB_DrvNumEx 111 /* exFAT: Physical drive number for int13h (BYTE) */ |
| #define | BPB_PercInUseEx 112 /* exFAT: Percent in use (BYTE) */ |
| #define | BPB_RsvdEx 113 /* exFAT: Reserved (7-byte) */ |
| #define | BS_BootCodeEx 120 /* exFAT: Boot code (390-byte) */ |
| #define | DIR_Name 0 /* Short file name (11-byte) */ |
| #define | DIR_Attr 11 /* Attribute (BYTE) */ |
| #define | DIR_NTres 12 /* Lower case flag (BYTE) */ |
| #define | DIR_CrtTime10 13 /* Created time sub-second (BYTE) */ |
| #define | DIR_CrtTime 14 /* Created time (DWORD) */ |
| #define | DIR_LstAccDate 18 /* Last accessed date (WORD) */ |
| #define | DIR_FstClusHI 20 /* Higher 16-bit of first cluster (WORD) */ |
| #define | DIR_ModTime 22 /* Modified time (DWORD) */ |
| #define | DIR_FstClusLO 26 /* Lower 16-bit of first cluster (WORD) */ |
| #define | DIR_FileSize 28 /* File size (DWORD) */ |
| #define | LDIR_Ord 0 /* LFN: LFN order and LLE flag (BYTE) */ |
| #define | LDIR_Attr 11 /* LFN: LFN attribute (BYTE) */ |
| #define | LDIR_Type 12 /* LFN: Entry type (BYTE) */ |
| #define | LDIR_Chksum 13 /* LFN: Checksum of the SFN (BYTE) */ |
| #define | LDIR_FstClusLO 26 /* LFN: MBZ field (WORD) */ |
| #define | XDIR_Type 0 /* exFAT: Type of exFAT directory entry (BYTE) */ |
| #define | XDIR_NumLabel 1 /* exFAT: Number of volume label characters (BYTE) */ |
| #define | XDIR_Label 2 /* exFAT: Volume label (11-WORD) */ |
| #define | XDIR_CaseSum 4 /* exFAT: Sum of case conversion table (DWORD) */ |
| #define | XDIR_NumSec 1 /* exFAT: Number of secondary entries (BYTE) */ |
| #define | XDIR_SetSum 2 /* exFAT: Sum of the set of directory entries (WORD) */ |
| #define | XDIR_Attr 4 /* exFAT: File attribute (WORD) */ |
| #define | XDIR_CrtTime 8 /* exFAT: Created time (DWORD) */ |
| #define | XDIR_ModTime 12 /* exFAT: Modified time (DWORD) */ |
| #define | XDIR_AccTime 16 /* exFAT: Last accessed time (DWORD) */ |
| #define | XDIR_CrtTime10 20 /* exFAT: Created time subsecond (BYTE) */ |
| #define | XDIR_ModTime10 21 /* exFAT: Modified time subsecond (BYTE) */ |
| #define | XDIR_CrtTZ 22 /* exFAT: Created timezone (BYTE) */ |
| #define | XDIR_ModTZ 23 /* exFAT: Modified timezone (BYTE) */ |
| #define | XDIR_AccTZ 24 /* exFAT: Last accessed timezone (BYTE) */ |
| #define | XDIR_GenFlags 33 /* exFAT: General secondary flags (BYTE) */ |
| #define | XDIR_NumName 35 /* exFAT: Number of file name characters (BYTE) */ |
| #define | XDIR_NameHash 36 /* exFAT: Hash of file name (WORD) */ |
| #define | XDIR_ValidFileSize 40 /* exFAT: Valid file size (QWORD) */ |
| #define | XDIR_FstClus 52 /* exFAT: First cluster of the file data (DWORD) */ |
| #define | XDIR_FileSize 56 /* exFAT: File/Directory size (QWORD) */ |
| #define | SZDIRE 32 /* Size of a directory entry */ |
| #define | DDEM 0xE5 /* Deleted directory entry mark set to DIR_Name[0] */ |
| #define | RDDEM 0x05 /* Replacement of the character collides with DDEM */ |
| #define | LLEF 0x40 /* Last long entry flag in LDIR_Ord */ |
| #define | FSI_LeadSig 0 /* FAT32 FSI: Leading signature (DWORD) */ |
| #define | FSI_StrucSig 484 /* FAT32 FSI: Structure signature (DWORD) */ |
| #define | FSI_Free_Count 488 /* FAT32 FSI: Number of free clusters (DWORD) */ |
| #define | FSI_Nxt_Free 492 /* FAT32 FSI: Last allocated cluster (DWORD) */ |
| #define | MBR_Table 446 /* MBR: Offset of partition table in the MBR */ |
| #define | SZ_PTE 16 /* MBR: Size of a partition table entry */ |
| #define | PTE_Boot 0 /* MBR PTE: Boot indicator */ |
| #define | PTE_StHead 1 /* MBR PTE: Start head */ |
| #define | PTE_StSec 2 /* MBR PTE: Start sector */ |
| #define | PTE_StCyl 3 /* MBR PTE: Start cylinder */ |
| #define | PTE_System 4 /* MBR PTE: System ID */ |
| #define | PTE_EdHead 5 /* MBR PTE: End head */ |
| #define | PTE_EdSec 6 /* MBR PTE: End sector */ |
| #define | PTE_EdCyl 7 /* MBR PTE: End cylinder */ |
| #define | PTE_StLba 8 /* MBR PTE: Start in LBA */ |
| #define | PTE_SizLba 12 /* MBR PTE: Size in LBA */ |
| #define | GPTH_Sign 0 /* GPT HDR: Signature (8-byte) */ |
| #define | GPTH_Rev 8 /* GPT HDR: Revision (DWORD) */ |
| #define | GPTH_Size 12 /* GPT HDR: Header size (DWORD) */ |
| #define | GPTH_Bcc 16 /* GPT HDR: Header BCC (DWORD) */ |
| #define | GPTH_CurLba 24 /* GPT HDR: This header LBA (QWORD) */ |
| #define | GPTH_BakLba 32 /* GPT HDR: Another header LBA (QWORD) */ |
| #define | GPTH_FstLba 40 /* GPT HDR: First LBA for partition data (QWORD) */ |
| #define | GPTH_LstLba 48 /* GPT HDR: Last LBA for partition data (QWORD) */ |
| #define | GPTH_DskGuid 56 /* GPT HDR: Disk GUID (16-byte) */ |
| #define | GPTH_PtOfs 72 /* GPT HDR: Partition table LBA (QWORD) */ |
| #define | GPTH_PtNum 80 /* GPT HDR: Number of table entries (DWORD) */ |
| #define | GPTH_PteSize 84 /* GPT HDR: Size of table entry (DWORD) */ |
| #define | GPTH_PtBcc 88 /* GPT HDR: Partition table BCC (DWORD) */ |
| #define | SZ_GPTE 128 /* GPT PTE: Size of partition table entry */ |
| #define | GPTE_PtGuid 0 /* GPT PTE: Partition type GUID (16-byte) */ |
| #define | GPTE_UpGuid 16 /* GPT PTE: Partition unique GUID (16-byte) */ |
| #define | GPTE_FstLba 32 /* GPT PTE: First LBA of partition (QWORD) */ |
| #define | GPTE_LstLba 40 /* GPT PTE: Last LBA of partition (QWORD) */ |
| #define | GPTE_Flags 48 /* GPT PTE: Partition flags (QWORD) */ |
| #define | GPTE_Name 56 /* GPT PTE: Partition name */ |
| #define | ABORT(fs, res) |
| #define | LEAVE_FF(fs, res) return res |
| #define | LD2PD(vol) (BYTE)(vol) /* Each logical drive is associated with the same physical drive number */ |
| #define | LD2PT(vol) 0 /* Auto partition search */ |
| #define | SS(fs) ((UINT) FF_MAX_SS) /* Fixed sector size */ |
| #define | GET_FATTIME() get_fattime() |
| #define | TBL_CT437 |
| #define | TBL_CT720 |
| #define | TBL_CT737 |
| #define | TBL_CT771 |
| #define | TBL_CT775 |
| #define | TBL_CT850 |
| #define | TBL_CT852 |
| #define | TBL_CT855 |
| #define | TBL_CT857 |
| #define | TBL_CT860 |
| #define | TBL_CT861 |
| #define | TBL_CT862 |
| #define | TBL_CT863 |
| #define | TBL_CT864 |
| #define | TBL_CT865 |
| #define | TBL_CT866 |
| #define | TBL_CT869 |
| #define | TBL_DC932 { 0x81, 0x9F, 0xE0, 0xFC, 0x40, 0x7E, 0x80, 0xFC, 0x00, 0x00 } |
| #define | TBL_DC936 { 0x81, 0xFE, 0x00, 0x00, 0x40, 0x7E, 0x80, 0xFE, 0x00, 0x00 } |
| #define | TBL_DC949 { 0x81, 0xFE, 0x00, 0x00, 0x41, 0x5A, 0x61, 0x7A, 0x81, 0xFE } |
| #define | TBL_DC950 { 0x81, 0xFE, 0x00, 0x00, 0x40, 0x7E, 0xA1, 0xFE, 0x00, 0x00 } |
| #define | MERGE_2STR(a, b) a##b |
| #define | MKCVTBL(hd, cp) MERGE_2STR(hd, cp) |
| #define | DEF_NAMBUF |
| #define | INIT_NAMBUF(fs) |
| #define | FREE_NAMBUF() |
| #define | LEAVE_MKFS(res) return res |
| #define | CODEPAGE CodePage |
| #define | DIR_READ_FILE(dp) dir_read(dp, 0) |
| #define | DIR_READ_LABEL(dp) dir_read(dp, 1) |
Functions | |
| static WORD | ld_word (const BYTE *ptr) |
| static DWORD | ld_dword (const BYTE *ptr) |
| static void | st_word (BYTE *ptr, WORD val) |
| static void | st_dword (BYTE *ptr, DWORD val) |
| static int | dbc_1st (BYTE c) |
| static int | dbc_2nd (BYTE c) |
| static FRESULT | sync_window (FATFS *fs) |
| static FRESULT | move_window (FATFS *fs, LBA_t sect) |
| static FRESULT | sync_fs (FATFS *fs) |
| static LBA_t | clst2sect (FATFS *fs, DWORD clst) |
| static DWORD | get_fat (FFOBJID *obj, DWORD clst) |
| static FRESULT | put_fat (FATFS *fs, DWORD clst, DWORD val) |
| static FRESULT | remove_chain (FFOBJID *obj, DWORD clst, DWORD pclst) |
| static DWORD | create_chain (FFOBJID *obj, DWORD clst) |
| static FRESULT | dir_clear (FATFS *fs, DWORD clst) |
| static FRESULT | dir_sdi (DIR *dp, DWORD ofs) |
| static FRESULT | dir_next (DIR *dp, int stretch) |
| static FRESULT | dir_alloc (DIR *dp, UINT n_ent) |
| static DWORD | ld_clust (FATFS *fs, const BYTE *dir) |
| static void | st_clust (FATFS *fs, BYTE *dir, DWORD cl) |
| static FRESULT | dir_read (DIR *dp, int vol) |
| static FRESULT | dir_find (DIR *dp) |
| static FRESULT | dir_register (DIR *dp) |
| static FRESULT | dir_remove (DIR *dp) |
| static void | get_fileinfo (DIR *dp, FILINFO *fno) |
| static FRESULT | create_name (DIR *dp, const TCHAR **path) |
| static FRESULT | follow_path (DIR *dp, const TCHAR *path) |
| static int | get_ldnumber (const TCHAR **path) |
| static UINT | check_fs (FATFS *fs, LBA_t sect) |
| static UINT | find_volume (FATFS *fs, UINT part) |
| static FRESULT | mount_volume (const TCHAR **path, FATFS **rfs, BYTE mode) |
| static FRESULT | validate (FFOBJID *obj, FATFS **rfs) |
| FRESULT | f_mount (FATFS *fs, const TCHAR *path, BYTE opt) |
| FRESULT | f_open (FIL *fp, const TCHAR *path, BYTE mode) |
| FRESULT | f_read (FIL *fp, void *buff, UINT btr, UINT *br) |
| FRESULT | f_write (FIL *fp, const void *buff, UINT btw, UINT *bw) |
| FRESULT | f_sync (FIL *fp) |
| FRESULT | f_close (FIL *fp) |
| FRESULT | f_lseek (FIL *fp, FSIZE_t ofs) |
| FRESULT | f_opendir (DIR *dp, const TCHAR *path) |
| FRESULT | f_closedir (DIR *dp) |
| FRESULT | f_readdir (DIR *dp, FILINFO *fno) |
| FRESULT | f_stat (const TCHAR *path, FILINFO *fno) |
| FRESULT | f_getfree (const TCHAR *path, DWORD *nclst, FATFS **fatfs) |
| FRESULT | f_truncate (FIL *fp) |
| FRESULT | f_unlink (const TCHAR *path) |
| FRESULT | f_mkdir (const TCHAR *path) |
| FRESULT | f_rename (const TCHAR *path_old, const TCHAR *path_new) |
| FRESULT | f_setcp (WORD cp) |
Variables | |
| static FATFS * | FatFs [FF_VOLUMES] |
| static WORD | Fsid |
| static WORD | CodePage |
| static const BYTE * | ExCvt |
| static const BYTE * | DbcTbl |
| static const BYTE | Ct437 [] = TBL_CT437 |
| static const BYTE | Ct720 [] = TBL_CT720 |
| static const BYTE | Ct737 [] = TBL_CT737 |
| static const BYTE | Ct771 [] = TBL_CT771 |
| static const BYTE | Ct775 [] = TBL_CT775 |
| static const BYTE | Ct850 [] = TBL_CT850 |
| static const BYTE | Ct852 [] = TBL_CT852 |
| static const BYTE | Ct855 [] = TBL_CT855 |
| static const BYTE | Ct857 [] = TBL_CT857 |
| static const BYTE | Ct860 [] = TBL_CT860 |
| static const BYTE | Ct861 [] = TBL_CT861 |
| static const BYTE | Ct862 [] = TBL_CT862 |
| static const BYTE | Ct863 [] = TBL_CT863 |
| static const BYTE | Ct864 [] = TBL_CT864 |
| static const BYTE | Ct865 [] = TBL_CT865 |
| static const BYTE | Ct866 [] = TBL_CT866 |
| static const BYTE | Ct869 [] = TBL_CT869 |
| static const BYTE | Dc932 [] = TBL_DC932 |
| static const BYTE | Dc936 [] = TBL_DC936 |
| static const BYTE | Dc949 [] = TBL_DC949 |
| static const BYTE | Dc950 [] = TBL_DC950 |
| #define ABORT | ( | fs, | |
| res | |||
| ) |
| #define AM_LFN 0x0F /* LFN entry */ |
| #define AM_MASK 0x3F /* Mask of defined bits in FAT */ |
| #define AM_MASKX 0x37 /* Mask of defined bits in exFAT */ |
| #define AM_VOL 0x08 /* Volume label */ |
| #define BPB_BkBootSec32 50 /* FAT32: Offset of backup boot sector (WORD) */ |
| #define BPB_BytsPerSec 11 /* Sector size [byte] (WORD) */ |
| #define BPB_BytsPerSecEx 108 /* exFAT: Log2 of sector size in unit of byte (BYTE) */ |
| #define BPB_DataOfsEx 88 /* exFAT: Data offset from top of the volume [sector] (DWORD) */ |
| #define BPB_DrvNumEx 111 /* exFAT: Physical drive number for int13h (BYTE) */ |
| #define BPB_ExtFlags32 40 /* FAT32: Extended flags (WORD) */ |
| #define BPB_FatOfsEx 80 /* exFAT: FAT offset from top of the volume [sector] (DWORD) */ |
| #define BPB_FATSz16 22 /* FAT size (16-bit) [sector] (WORD) */ |
| #define BPB_FATSz32 36 /* FAT32: FAT size [sector] (DWORD) */ |
| #define BPB_FatSzEx 84 /* exFAT: FAT size [sector] (DWORD) */ |
| #define BPB_FSInfo32 48 /* FAT32: Offset of FSINFO sector (WORD) */ |
| #define BPB_FSVer32 42 /* FAT32: Filesystem version (WORD) */ |
| #define BPB_FSVerEx 104 /* exFAT: Filesystem version (WORD) */ |
| #define BPB_HiddSec 28 /* Volume offset from top of the drive (DWORD) */ |
| #define BPB_Media 21 /* Media descriptor byte (BYTE) */ |
| #define BPB_NumClusEx 92 /* exFAT: Number of clusters (DWORD) */ |
| #define BPB_NumFATs 16 /* Number of FATs (BYTE) */ |
| #define BPB_NumFATsEx 110 /* exFAT: Number of FATs (BYTE) */ |
| #define BPB_NumHeads 26 /* Number of heads for int13h (WORD) */ |
| #define BPB_PercInUseEx 112 /* exFAT: Percent in use (BYTE) */ |
| #define BPB_RootClus32 44 /* FAT32: Root directory cluster (DWORD) */ |
| #define BPB_RootClusEx 96 /* exFAT: Root directory start cluster (DWORD) */ |
| #define BPB_RootEntCnt 17 /* Size of root directory area for FAT [entry] (WORD) */ |
| #define BPB_RsvdEx 113 /* exFAT: Reserved (7-byte) */ |
| #define BPB_RsvdSecCnt 14 /* Size of reserved area [sector] (WORD) */ |
| #define BPB_SecPerClus 13 /* Cluster size [sector] (BYTE) */ |
| #define BPB_SecPerClusEx 109 /* exFAT: Log2 of cluster size in unit of sector (BYTE) */ |
| #define BPB_SecPerTrk 24 /* Number of sectors per track for int13h [sector] (WORD) */ |
| #define BPB_TotSec16 19 /* Volume size (16-bit) [sector] (WORD) */ |
| #define BPB_TotSec32 32 /* Volume size (32-bit) [sector] (DWORD) */ |
| #define BPB_TotSecEx 72 /* exFAT: Volume size [sector] (QWORD) */ |
| #define BPB_VolFlagEx 106 /* exFAT: Volume flags (WORD) */ |
| #define BPB_VolIDEx 100 /* exFAT: Volume serial number (DWORD) */ |
| #define BPB_VolOfsEx 64 /* exFAT: Volume offset from top of the drive [sector] (QWORD) */ |
| #define BPB_ZeroedEx 11 /* exFAT: MBZ field (53-byte) */ |
| #define BS_55AA 510 /* Signature word (WORD) */ |
| #define BS_BootCode 62 /* Boot code (448-byte) */ |
| #define BS_BootCode32 90 /* FAT32: Boot code (420-byte) */ |
| #define BS_BootCodeEx 120 /* exFAT: Boot code (390-byte) */ |
| #define BS_BootSig 38 /* Extended boot signature (BYTE) */ |
| #define BS_BootSig32 66 /* FAT32: Extended boot signature (BYTE) */ |
| #define BS_DrvNum 36 /* Physical drive number for int13h (BYTE) */ |
| #define BS_DrvNum32 64 /* FAT32: Physical drive number for int13h (BYTE) */ |
| #define BS_FilSysType 54 /* Filesystem type string (8-byte) */ |
| #define BS_FilSysType32 82 /* FAT32: Filesystem type string (8-byte) */ |
| #define BS_JmpBoot 0 /* x86 jump instruction (3-byte) */ |
| #define BS_NTres 37 /* WindowsNT error flag (BYTE) */ |
| #define BS_NTres32 65 /* FAT32: Error flag (BYTE) */ |
| #define BS_OEMName 3 /* OEM name (8-byte) */ |
| #define BS_VolID 39 /* Volume serial number (DWORD) */ |
| #define BS_VolID32 67 /* FAT32: Volume serial number (DWORD) */ |
| #define BS_VolLab 43 /* Volume label string (8-byte) */ |
| #define BS_VolLab32 71 /* FAT32: Volume label string (8-byte) */ |
| #define CODEPAGE CodePage |
| #define DDEM 0xE5 /* Deleted directory entry mark set to DIR_Name[0] */ |
| #define DEF_NAMBUF |
| #define DIR_Attr 11 /* Attribute (BYTE) */ |
| #define DIR_CrtTime 14 /* Created time (DWORD) */ |
| #define DIR_CrtTime10 13 /* Created time sub-second (BYTE) */ |
| #define DIR_FileSize 28 /* File size (DWORD) */ |
| #define DIR_FstClusHI 20 /* Higher 16-bit of first cluster (WORD) */ |
| #define DIR_FstClusLO 26 /* Lower 16-bit of first cluster (WORD) */ |
| #define DIR_LstAccDate 18 /* Last accessed date (WORD) */ |
| #define DIR_ModTime 22 /* Modified time (DWORD) */ |
| #define DIR_Name 0 /* Short file name (11-byte) */ |
| #define DIR_NTres 12 /* Lower case flag (BYTE) */ |
| #define DIR_READ_FILE | ( | dp | ) | dir_read(dp, 0) |
| #define DIR_READ_LABEL | ( | dp | ) | dir_read(dp, 1) |
| #define ET_BITMAP 0x81 /* Allocation bitmap */ |
| #define ET_FILEDIR 0x85 /* File and directory */ |
| #define ET_FILENAME 0xC1 /* Name extension */ |
| #define ET_STREAM 0xC0 /* Stream extension */ |
| #define ET_UPCASE 0x82 /* Up-case table */ |
| #define ET_VLABEL 0x83 /* Volume label */ |
| #define FA_DIRTY 0x80 /* FIL.buf[] needs to be written-back */ |
| #define FA_MODIFIED 0x40 /* File has been modified */ |
| #define FA_SEEKEND 0x20 /* Seek to end of the file on file open */ |
| #define FREE_NAMBUF | ( | ) |
| #define FSI_Free_Count 488 /* FAT32 FSI: Number of free clusters (DWORD) */ |
| #define FSI_LeadSig 0 /* FAT32 FSI: Leading signature (DWORD) */ |
| #define FSI_Nxt_Free 492 /* FAT32 FSI: Last allocated cluster (DWORD) */ |
| #define FSI_StrucSig 484 /* FAT32 FSI: Structure signature (DWORD) */ |
| #define GET_FATTIME | ( | ) | get_fattime() |
| #define GPTE_Flags 48 /* GPT PTE: Partition flags (QWORD) */ |
| #define GPTE_FstLba 32 /* GPT PTE: First LBA of partition (QWORD) */ |
| #define GPTE_LstLba 40 /* GPT PTE: Last LBA of partition (QWORD) */ |
| #define GPTE_Name 56 /* GPT PTE: Partition name */ |
| #define GPTE_PtGuid 0 /* GPT PTE: Partition type GUID (16-byte) */ |
| #define GPTE_UpGuid 16 /* GPT PTE: Partition unique GUID (16-byte) */ |
| #define GPTH_BakLba 32 /* GPT HDR: Another header LBA (QWORD) */ |
| #define GPTH_Bcc 16 /* GPT HDR: Header BCC (DWORD) */ |
| #define GPTH_CurLba 24 /* GPT HDR: This header LBA (QWORD) */ |
| #define GPTH_DskGuid 56 /* GPT HDR: Disk GUID (16-byte) */ |
| #define GPTH_FstLba 40 /* GPT HDR: First LBA for partition data (QWORD) */ |
| #define GPTH_LstLba 48 /* GPT HDR: Last LBA for partition data (QWORD) */ |
| #define GPTH_PtBcc 88 /* GPT HDR: Partition table BCC (DWORD) */ |
| #define GPTH_PteSize 84 /* GPT HDR: Size of table entry (DWORD) */ |
| #define GPTH_PtOfs 72 /* GPT HDR: Partition table LBA (QWORD) */ |
| #define GPTH_Rev 8 /* GPT HDR: Revision (DWORD) */ |
| #define GPTH_Sign 0 /* GPT HDR: Signature (8-byte) */ |
| #define GPTH_Size 12 /* GPT HDR: Header size (DWORD) */ |
| #define INIT_NAMBUF | ( | fs | ) |
| #define IsDigit | ( | c | ) | ((c) >= '0' && (c) <= '9') |
| #define IsLower | ( | c | ) | ((c) >= 'a' && (c) <= 'z') |
| #define IsSeparator | ( | c | ) | ((c) == '/' || (c) == '\\') |
| #define IsSurrogate | ( | c | ) | ((c) >= 0xD800 && (c) <= 0xDFFF) |
| #define IsSurrogateH | ( | c | ) | ((c) >= 0xD800 && (c) <= 0xDBFF) |
| #define IsSurrogateL | ( | c | ) | ((c) >= 0xDC00 && (c) <= 0xDFFF) |
| #define IsTerminator | ( | c | ) | ((UINT) (c) < (FF_USE_LFN ? ' ' : '!')) |
| #define IsUpper | ( | c | ) | ((c) >= 'A' && (c) <= 'Z') |
| #define LD2PD | ( | vol | ) | (BYTE)(vol) /* Each logical drive is associated with the same physical drive number */ |
| #define LD2PT | ( | vol | ) | 0 /* Auto partition search */ |
| #define LDIR_Attr 11 /* LFN: LFN attribute (BYTE) */ |
| #define LDIR_Chksum 13 /* LFN: Checksum of the SFN (BYTE) */ |
| #define LDIR_FstClusLO 26 /* LFN: MBZ field (WORD) */ |
| #define LDIR_Ord 0 /* LFN: LFN order and LLE flag (BYTE) */ |
| #define LDIR_Type 12 /* LFN: Entry type (BYTE) */ |
| #define LEAVE_FF | ( | fs, | |
| res | |||
| ) | return res |
| #define LEAVE_MKFS | ( | res | ) | return res |
| #define LLEF 0x40 /* Last long entry flag in LDIR_Ord */ |
| #define MAX_DIR 0x200000 /* Max size of FAT directory */ |
| #define MAX_DIR_EX 0x10000000 /* Max size of exFAT directory */ |
| #define MAX_EXFAT 0x7FFFFFFD /* Max exFAT clusters (differs from specs, implementation limit) */ |
| #define MAX_FAT12 0xFF5 /* Max FAT12 clusters (differs from specs, but right for real DOS/Windows behavior) */ |
| #define MAX_FAT16 0xFFF5 /* Max FAT16 clusters (differs from specs, but right for real DOS/Windows behavior) */ |
| #define MAX_FAT32 0x0FFFFFF5 /* Max FAT32 clusters (not specified, practical limit) */ |
| #define MBR_Table 446 /* MBR: Offset of partition table in the MBR */ |
| #define MERGE_2STR | ( | a, | |
| b | |||
| ) | a##b |
| #define MKCVTBL | ( | hd, | |
| cp | |||
| ) | MERGE_2STR(hd, cp) |
| #define NS_BODY 0x08 /* Lower case flag (body) */ |
| #define NS_DOT 0x20 /* Dot entry */ |
| #define NS_EXT 0x10 /* Lower case flag (ext) */ |
| #define NS_LAST 0x04 /* Last segment */ |
| #define NS_LFN 0x02 /* Force to create LFN entry */ |
| #define NS_LOSS 0x01 /* Out of 8.3 format */ |
| #define NS_NOLFN 0x40 /* Do not find LFN */ |
| #define NS_NONAME 0x80 /* Not followed */ |
| #define NSFLAG 11 /* Index of the name status byte */ |
| #define PTE_Boot 0 /* MBR PTE: Boot indicator */ |
| #define PTE_EdCyl 7 /* MBR PTE: End cylinder */ |
| #define PTE_EdHead 5 /* MBR PTE: End head */ |
| #define PTE_EdSec 6 /* MBR PTE: End sector */ |
| #define PTE_SizLba 12 /* MBR PTE: Size in LBA */ |
| #define PTE_StCyl 3 /* MBR PTE: Start cylinder */ |
| #define PTE_StHead 1 /* MBR PTE: Start head */ |
| #define PTE_StLba 8 /* MBR PTE: Start in LBA */ |
| #define PTE_StSec 2 /* MBR PTE: Start sector */ |
| #define PTE_System 4 /* MBR PTE: System ID */ |
| #define RDDEM 0x05 /* Replacement of the character collides with DDEM */ |
| #define SZ_GPTE 128 /* GPT PTE: Size of partition table entry */ |
| #define SZ_PTE 16 /* MBR: Size of a partition table entry */ |
| #define SZDIRE 32 /* Size of a directory entry */ |
| #define TBL_CT437 |
| #define TBL_CT720 |
| #define TBL_CT737 |
| #define TBL_CT771 |
| #define TBL_CT775 |
| #define TBL_CT850 |
| #define TBL_CT852 |
| #define TBL_CT855 |
| #define TBL_CT857 |
| #define TBL_CT860 |
| #define TBL_CT861 |
| #define TBL_CT862 |
| #define TBL_CT863 |
| #define TBL_CT864 |
| #define TBL_CT865 |
| #define TBL_CT866 |
| #define TBL_CT869 |
| #define TBL_DC932 { 0x81, 0x9F, 0xE0, 0xFC, 0x40, 0x7E, 0x80, 0xFC, 0x00, 0x00 } |
| #define TBL_DC936 { 0x81, 0xFE, 0x00, 0x00, 0x40, 0x7E, 0x80, 0xFE, 0x00, 0x00 } |
| #define TBL_DC949 { 0x81, 0xFE, 0x00, 0x00, 0x41, 0x5A, 0x61, 0x7A, 0x81, 0xFE } |
| #define TBL_DC950 { 0x81, 0xFE, 0x00, 0x00, 0x40, 0x7E, 0xA1, 0xFE, 0x00, 0x00 } |
| #define XDIR_AccTime 16 /* exFAT: Last accessed time (DWORD) */ |
| #define XDIR_AccTZ 24 /* exFAT: Last accessed timezone (BYTE) */ |
| #define XDIR_Attr 4 /* exFAT: File attribute (WORD) */ |
| #define XDIR_CaseSum 4 /* exFAT: Sum of case conversion table (DWORD) */ |
| #define XDIR_CrtTime 8 /* exFAT: Created time (DWORD) */ |
| #define XDIR_CrtTime10 20 /* exFAT: Created time subsecond (BYTE) */ |
| #define XDIR_CrtTZ 22 /* exFAT: Created timezone (BYTE) */ |
| #define XDIR_FileSize 56 /* exFAT: File/Directory size (QWORD) */ |
| #define XDIR_FstClus 52 /* exFAT: First cluster of the file data (DWORD) */ |
| #define XDIR_GenFlags 33 /* exFAT: General secondary flags (BYTE) */ |
| #define XDIR_Label 2 /* exFAT: Volume label (11-WORD) */ |
| #define XDIR_ModTime 12 /* exFAT: Modified time (DWORD) */ |
| #define XDIR_ModTime10 21 /* exFAT: Modified time subsecond (BYTE) */ |
| #define XDIR_ModTZ 23 /* exFAT: Modified timezone (BYTE) */ |
| #define XDIR_NumLabel 1 /* exFAT: Number of volume label characters (BYTE) */ |
| #define XDIR_Type 0 /* exFAT: Type of exFAT directory entry (BYTE) */ |
| #define XDIR_ValidFileSize 40 /* exFAT: Valid file size (QWORD) */ |
|
static |
|
static |
|
static |
|
static |
|
static |
|
static |
|
static |
|
static |