fs_fat.h
上传用户:yj_qqy
上传日期:2017-01-28
资源大小:2911k
文件大小:6k
源码类别:

uCOS

开发平台:

C/C++

  1. /*
  2. **********************************************************************
  3. *                          Micrium, Inc.
  4. *                      949 Crestview Circle
  5. *                     Weston,  FL 33327-1848
  6. *
  7. *                            uC/FS
  8. *
  9. *             (c) Copyright 2001 - 2003, Micrium, Inc.
  10. *                      All rights reserved.
  11. *
  12. ***********************************************************************
  13. ----------------------------------------------------------------------
  14. File        : fs_fat.h
  15. Purpose     : FAT File System Layer header
  16. ----------------------------------------------------------------------
  17. Known problems or limitations with current version
  18. ----------------------------------------------------------------------
  19. None.
  20. ---------------------------END-OF-HEADER------------------------------
  21. */
  22. #ifndef _FS_FAT_H_
  23. #define _FS_FAT_H_
  24. /*********************************************************************
  25. *
  26. *             #define constants
  27. *
  28. **********************************************************************
  29. */
  30. #define FS_FAT_ATTR_READ_ONLY   0x01
  31. #define FS_FAT_ATTR_HIDDEN      0x02
  32. #define FS_FAT_ATTR_SYSTEM      0x04
  33. #define FS_FAT_VOLUME_ID        0x08
  34. #define FS_FAT_ATTR_ARCHIVE     0x20
  35. #define FS_FAT_ATTR_DIRECTORY   0x10
  36. #define FS_FAT_DENTRY_SIZE      0x20
  37. /*********************************************************************
  38. *
  39. *             Global data types
  40. *
  41. **********************************************************************
  42. */
  43. /* BIOS parameter block (FAT12/FAT16) */
  44. typedef struct {
  45.   FS_u32          TotSec32;         /* RSVD + FAT + ROOT + FATA (>=64k) */
  46.   FS_u32          FATSz32;          /* number of FAT sectors          */
  47.   FS_u32          RootClus;         /* root dir clus for FAT32        */
  48.   FS_u16          BytesPerSec;      /* _512_,1024,2048,4096           */
  49.   FS_u16          RootEntCnt;       /* number of root dir entries     */
  50.   FS_u16          TotSec16;         /* RSVD + FAT + ROOT + FATA (<64k) */
  51.   FS_u16          FATSz16;          /* number of FAT sectors          */
  52.   FS_u16          ExtFlags;         /* mirroring info                 */
  53.   FS_u16          FSInfo;           /* position of FSInfo structure   */
  54.   FS_u16          Signature;        /* 0xAA55 Signature               */
  55.   FS_u16          RsvdSecCnt;       /* 1 for FAT12 & FAT16            */
  56.   unsigned char   SecPerClus;       /* sec in allocation unit         */
  57.   unsigned char   NumFATs;          /* 2                              */
  58. } FS__FAT_BPB;
  59. /* FAT directory entry */
  60. typedef struct {
  61.   unsigned char   data[32];
  62. } FS__fat_dentry_type;
  63. /*********************************************************************
  64. *
  65. *             Externals
  66. *
  67. **********************************************************************
  68. */
  69. extern FS__FAT_BPB FS__FAT_aBPBUnit[FS_MAXDEV][FS_FAT_MAXUNIT];
  70. /*********************************************************************
  71. *
  72. *             Global function prototypes
  73. *
  74. **********************************************************************
  75. */
  76. /*********************************************************************
  77. *
  78. *             fat_misc
  79. */
  80. void                FS__fat_block_init(void);
  81. char                *FS__fat_malloc(unsigned int Size);
  82. void                FS__fat_free(void *pBuffer);
  83. FS_i32              FS__fat_diskclust(int Idx, FS_u32 Unit, FS_i32 StrtClst, FS_i32 ClstNum);
  84. FS_i32              FS__fat_FAT_alloc(int Idx, FS_u32 Unit, FS_i32 LastClust);
  85. FS_i32              FS__fat_FAT_find_eof(int Idx, FS_u32 Unit, FS_i32 StrtClst, FS_u32 *pClstCnt);
  86. int                 FS__fat_which_type(int Idx, FS_u32 Unit);
  87. int                 FS__fat_checkunit(int Idx, FS_u32 Unit);
  88. /*********************************************************************
  89. *
  90. *             fat_in
  91. */
  92. FS_size_t           FS__fat_fread(void *pData, FS_size_t Size, FS_size_t N, FS_FILE *pFile);
  93. /*********************************************************************
  94. *
  95. *             fat_out
  96. */
  97. FS_size_t           FS__fat_fwrite(const void *pData, FS_size_t Size, FS_size_t N, FS_FILE *pFile);
  98. void                FS__fat_fclose(FS_FILE *pFile);
  99. /*********************************************************************
  100. *
  101. *             fat_open
  102. */
  103. FS_FILE             *FS__fat_fopen(const char *pFileName, const char *pMode, FS_FILE *pFile);
  104. FS_u32              FS__fat_dir_size(int Idx, FS_u32 Unit, FS_u32 DirStart);
  105. FS_u32              FS__fat_dir_realsec(int Idx, FS_u32 Unit, FS_u32 DirStart, FS_u32 DirSec);
  106. void                FS__fat_make_realname(char *pEntryName, const char *pOrgName);
  107. FS_u32              FS__fat_find_dir(int Idx, FS_u32 Unit, char *pDirName, FS_u32 DirStart, FS_u32 DirSize);
  108. FS_u32              FS__fat_findpath(int Idx, const char *pFullName, FS_FARCHARPTR *pFileName, FS_u32 *pUnit, FS_u32 *pDirStart);
  109. FS_i32              FS__fat_DeleteFileOrDir(int Idx, FS_u32 Unit,  const char *pName, FS_u32 DirStart, FS_u32 DirSize, char RmFile);
  110. /*********************************************************************
  111. *
  112. *             fat_ioctl
  113. */
  114. int                 FS__fat_ioctl(int Idx, FS_u32 Unit, FS_i32 Cmd, FS_i32 Aux, void *pBuffer);
  115. /*********************************************************************
  116. *
  117. *             fat_dir
  118. */
  119. #if FS_POSIX_DIR_SUPPORT
  120.   FS_DIR              *FS__fat_opendir(const char *pDirName, FS_DIR *pDir);
  121.   int                 FS__fat_closedir(FS_DIR *pDir);
  122.   struct FS_DIRENT    *FS__fat_readdir(FS_DIR *pDir);
  123.   int                 FS__fat_MkRmDir(const char *pDirName, int Idx, char MkDir);
  124. #endif /* FS_POSIX_DIR_SUPPORT */
  125. #endif  /* _FS_FAT_H_ */