REF: https://bugzilla.tianocore.org/show_bug.cgi?id=3737 Apply uncrustify changes to .c/.h files in the FatPkg package Cc: Andrew Fish <afish@apple.com> Cc: Leif Lindholm <leif@nuviainc.com> Cc: Michael D Kinney <michael.d.kinney@intel.com> Signed-off-by: Michael Kubacki <michael.kubacki@microsoft.com> Reviewed-by: Ray Ni <ray.ni@intel.com>
		
			
				
	
	
		
			208 lines
		
	
	
		
			5.8 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			208 lines
		
	
	
		
			5.8 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
/** @file
 | 
						|
  Definitions for on-disk FAT structures.
 | 
						|
 | 
						|
Copyright (c) 2005 - 2017, Intel Corporation. All rights reserved.<BR>
 | 
						|
SPDX-License-Identifier: BSD-2-Clause-Patent
 | 
						|
 | 
						|
 | 
						|
**/
 | 
						|
 | 
						|
#ifndef _FATFILESYSTEM_H_
 | 
						|
#define _FATFILESYSTEM_H_
 | 
						|
 | 
						|
#pragma pack(1)
 | 
						|
//
 | 
						|
// FAT info signature
 | 
						|
//
 | 
						|
#define FAT_INFO_SIGNATURE        0x41615252
 | 
						|
#define FAT_INFO_BEGIN_SIGNATURE  0x61417272
 | 
						|
#define FAT_INFO_END_SIGNATURE    0xAA550000
 | 
						|
//
 | 
						|
// FAT entry values
 | 
						|
//
 | 
						|
#define FAT_CLUSTER_SPECIAL_EXT  (MAX_UINTN & (~0xF))
 | 
						|
#define FAT_CLUSTER_SPECIAL      ((FAT_CLUSTER_SPECIAL_EXT) | 0x07)
 | 
						|
#define FAT_CLUSTER_FREE         0
 | 
						|
#define FAT_CLUSTER_RESERVED     (FAT_CLUSTER_SPECIAL)
 | 
						|
#define FAT_CLUSTER_BAD          (FAT_CLUSTER_SPECIAL)
 | 
						|
#define FAT_CLUSTER_LAST         (-1)
 | 
						|
#define FAT_END_OF_FAT_CHAIN(Cluster)  ((Cluster) > (FAT_CLUSTER_SPECIAL))
 | 
						|
#define FAT_MIN_CLUSTER            2
 | 
						|
#define FAT_MAX_FAT12_CLUSTER      0xFF5
 | 
						|
#define FAT_MAX_FAT16_CLUSTER      0xFFF5
 | 
						|
#define FAT_CLUSTER_SPECIAL_FAT12  0xFF7
 | 
						|
#define FAT_CLUSTER_SPECIAL_FAT16  0xFFF7
 | 
						|
#define FAT_CLUSTER_SPECIAL_FAT32  0x0FFFFFF7
 | 
						|
#define FAT_CLUSTER_MASK_FAT12     0xFFF
 | 
						|
#define FAT_CLUSTER_UNMASK_FAT12   0xF000
 | 
						|
#define FAT_CLUSTER_MASK_FAT32     0x0FFFFFFF
 | 
						|
#define FAT_CLUSTER_UNMASK_FAT32   0xF0000000
 | 
						|
#define FAT_POS_FAT12(a)          ((a) * 3 / 2)
 | 
						|
#define FAT_POS_FAT16(a)          ((a) * 2)
 | 
						|
#define FAT_POS_FAT32(a)          ((a) * 4)
 | 
						|
#define FAT_ODD_CLUSTER_FAT12(a)  (((a) & 1) != 0)
 | 
						|
 | 
						|
//
 | 
						|
// FAT attribute define
 | 
						|
//
 | 
						|
#define FAT_ATTRIBUTE_READ_ONLY  0x01
 | 
						|
#define FAT_ATTRIBUTE_HIDDEN     0x02
 | 
						|
#define FAT_ATTRIBUTE_SYSTEM     0x04
 | 
						|
#define FAT_ATTRIBUTE_VOLUME_ID  0x08
 | 
						|
#define FAT_ATTRIBUTE_DIRECTORY  0x10
 | 
						|
#define FAT_ATTRIBUTE_ARCHIVE    0x20
 | 
						|
#define FAT_ATTRIBUTE_DEVICE     0x40
 | 
						|
#define FAT_ATTRIBUTE_LFN        0x0F
 | 
						|
//
 | 
						|
// Some Long File Name definitions
 | 
						|
//
 | 
						|
#define FAT_LFN_LAST     0x40         // Ordinal field
 | 
						|
#define MAX_LFN_ENTRIES  20
 | 
						|
#define LFN_CHAR1_LEN    5
 | 
						|
#define LFN_CHAR2_LEN    6
 | 
						|
#define LFN_CHAR3_LEN    2
 | 
						|
#define LFN_CHAR_TOTAL   (LFN_CHAR1_LEN + LFN_CHAR2_LEN + LFN_CHAR3_LEN)
 | 
						|
#define LFN_ENTRY_NUMBER(a)  (((a) + LFN_CHAR_TOTAL - 1) / LFN_CHAR_TOTAL)
 | 
						|
//
 | 
						|
// Some 8.3 File Name definitions
 | 
						|
//
 | 
						|
#define FAT_MAIN_NAME_LEN    8
 | 
						|
#define FAT_EXTEND_NAME_LEN  3
 | 
						|
#define FAT_NAME_LEN         (FAT_MAIN_NAME_LEN + FAT_EXTEND_NAME_LEN)
 | 
						|
//
 | 
						|
// Some directory entry information
 | 
						|
//
 | 
						|
#define FAT_ENTRY_INFO_OFFSET  13
 | 
						|
#define DELETE_ENTRY_MARK      0xE5
 | 
						|
#define EMPTY_ENTRY_MARK       0x00
 | 
						|
 | 
						|
//
 | 
						|
// Volume dirty Mask
 | 
						|
//
 | 
						|
#define FAT16_DIRTY_MASK  0x7fff
 | 
						|
#define FAT32_DIRTY_MASK  0xf7ffffff
 | 
						|
//
 | 
						|
// internal flag
 | 
						|
//
 | 
						|
#define FAT_CASE_MIXED       0x01
 | 
						|
#define FAT_CASE_NAME_LOWER  0x08
 | 
						|
#define FAT_CASE_EXT_LOWER   0x10
 | 
						|
 | 
						|
typedef struct {
 | 
						|
  UINT8     Ia32Jump[3];
 | 
						|
  CHAR8     OemId[8];
 | 
						|
  UINT16    SectorSize;
 | 
						|
  UINT8     SectorsPerCluster;
 | 
						|
  UINT16    ReservedSectors;
 | 
						|
  UINT8     NumFats;
 | 
						|
  UINT16    RootEntries;        // < FAT32, root dir is fixed size
 | 
						|
  UINT16    Sectors;
 | 
						|
  UINT8     Media;
 | 
						|
  UINT16    SectorsPerFat;      // < FAT32
 | 
						|
  UINT16    SectorsPerTrack;    // (ignored)
 | 
						|
  UINT16    Heads;              // (ignored)
 | 
						|
  UINT32    HiddenSectors;      // (ignored)
 | 
						|
  UINT32    LargeSectors;       // Used if Sectors==0
 | 
						|
} FAT_BOOT_SECTOR_BASIC;
 | 
						|
 | 
						|
typedef struct {
 | 
						|
  UINT8    PhysicalDriveNumber; // (ignored)
 | 
						|
  UINT8    CurrentHead;         // holds boot_sector_dirty bit
 | 
						|
  UINT8    Signature;           // (ignored)
 | 
						|
  CHAR8    Id[4];
 | 
						|
  CHAR8    FatLabel[11];
 | 
						|
  CHAR8    SystemId[8];
 | 
						|
} FAT_BOOT_SECTOR_EXT;
 | 
						|
 | 
						|
typedef struct {
 | 
						|
  UINT32    LargeSectorsPerFat;  // FAT32
 | 
						|
  UINT16    ExtendedFlags;       // FAT32 (ignored)
 | 
						|
  UINT16    FsVersion;           // FAT32 (ignored)
 | 
						|
  UINT32    RootDirFirstCluster; // FAT32
 | 
						|
  UINT16    FsInfoSector;        // FAT32
 | 
						|
  UINT16    BackupBootSector;    // FAT32
 | 
						|
  UINT8     Reserved[12];        // FAT32 (ignored)
 | 
						|
  UINT8     PhysicalDriveNumber; // (ignored)
 | 
						|
  UINT8     CurrentHead;         // holds boot_sector_dirty bit
 | 
						|
  UINT8     Signature;           // (ignored)
 | 
						|
  CHAR8     Id[4];
 | 
						|
  CHAR8     FatLabel[11];
 | 
						|
  CHAR8     SystemId[8];
 | 
						|
} FAT32_BOOT_SECTOR_EXT;
 | 
						|
 | 
						|
typedef union {
 | 
						|
  FAT_BOOT_SECTOR_EXT      FatBse;
 | 
						|
  FAT32_BOOT_SECTOR_EXT    Fat32Bse;
 | 
						|
} FAT_BSE;
 | 
						|
 | 
						|
typedef struct {
 | 
						|
  FAT_BOOT_SECTOR_BASIC    FatBsb;
 | 
						|
  FAT_BSE                  FatBse;
 | 
						|
} FAT_BOOT_SECTOR;
 | 
						|
 | 
						|
//
 | 
						|
// FAT Info Structure
 | 
						|
//
 | 
						|
typedef struct {
 | 
						|
  UINT32    ClusterCount;
 | 
						|
  UINT32    NextCluster;
 | 
						|
} FAT_FREE_INFO;
 | 
						|
 | 
						|
typedef struct {
 | 
						|
  UINT32           Signature;
 | 
						|
  UINT8            ExtraBootCode[480];
 | 
						|
  UINT32           InfoBeginSignature;
 | 
						|
  FAT_FREE_INFO    FreeInfo;
 | 
						|
  UINT8            Reserved[12];
 | 
						|
  UINT32           InfoEndSignature;
 | 
						|
} FAT_INFO_SECTOR;
 | 
						|
 | 
						|
//
 | 
						|
// Directory Entry
 | 
						|
//
 | 
						|
#define FAT_MAX_YEAR_FROM_1980  0x7f
 | 
						|
typedef struct {
 | 
						|
  UINT16    Day   : 5;
 | 
						|
  UINT16    Month : 4;
 | 
						|
  UINT16    Year  : 7;              // From 1980
 | 
						|
} FAT_DATE;
 | 
						|
 | 
						|
typedef struct {
 | 
						|
  UINT16    DoubleSecond : 5;
 | 
						|
  UINT16    Minute       : 6;
 | 
						|
  UINT16    Hour         : 5;
 | 
						|
} FAT_TIME;
 | 
						|
 | 
						|
typedef struct {
 | 
						|
  FAT_TIME    Time;
 | 
						|
  FAT_DATE    Date;
 | 
						|
} FAT_DATE_TIME;
 | 
						|
 | 
						|
typedef struct {
 | 
						|
  CHAR8            FileName[11];    // 8.3 filename
 | 
						|
  UINT8            Attributes;
 | 
						|
  UINT8            CaseFlag;
 | 
						|
  UINT8            CreateMillisecond; // (creation milliseconds - ignored)
 | 
						|
  FAT_DATE_TIME    FileCreateTime;
 | 
						|
  FAT_DATE         FileLastAccess;
 | 
						|
  UINT16           FileClusterHigh; // >= FAT32
 | 
						|
  FAT_DATE_TIME    FileModificationTime;
 | 
						|
  UINT16           FileCluster;
 | 
						|
  UINT32           FileSize;
 | 
						|
} FAT_DIRECTORY_ENTRY;
 | 
						|
 | 
						|
typedef struct {
 | 
						|
  UINT8     Ordinal;
 | 
						|
  CHAR8     Name1[10];              // (Really 5 chars, but not WCHAR aligned)
 | 
						|
  UINT8     Attributes;
 | 
						|
  UINT8     Type;
 | 
						|
  UINT8     Checksum;
 | 
						|
  CHAR16    Name2[6];
 | 
						|
  UINT16    MustBeZero;
 | 
						|
  CHAR16    Name3[2];
 | 
						|
} FAT_DIRECTORY_LFN;
 | 
						|
 | 
						|
#pragma pack()
 | 
						|
 | 
						|
#endif
 |