Nut/OS  4.10.3
API Reference
fat.c File Reference
#include <string.h>
#include <stddef.h>
#include <ctype.h>
#include <sys/heap.h>
#include <sys/event.h>
#include <sys/thread.h>
#include <sys/device.h>
#include <dev/ide.h>
#include <fs/fat.h>
#include <fs/typedefs.h>
Include dependency graph for fat.c:

Go to the source code of this file.

Data Structures

struct  DSKSZTOSECPERCLUS
struct  _FAT32FileDataTime
struct  _FAT32DirectoryEntry
struct  _FAT32DirectoryEntryLong
struct  _FAT32FileSystemInformation
struct  _FAT32PartitionEntry
struct  _FAT32PartionTable
struct  _bpbfat16
struct  _bpbfat32
union  _bpboffset36
struct  _FAT32BootRecord
struct  _fat_entry_table16
struct  _fat_entry_table32
union  _fat_dir_table
struct  _drive_info
struct  _fhandle
struct  _atapi_pvd
struct  _ATAPIDirectoryRecord

Defines

#define __FAT_C__
#define FAT_OK   0
#define FAT_ERROR   -1
#define FAT_ERROR_EOF   -2
#define FAT_ERROR_IDE   -3
#define NUTDEV_OK   0
#define NUTDEV_ERROR   -1
#define FAT_MAX_DRIVE   2
#define ZIP_DRIVE_BR_SECTOR   32
#define BPB_RsvdSecCnt   32
#define BPB_NumFATs   2
#define BPB_HiddSec   63
#define FAT32_MEDIA   0xf8
#define FAT32_OFFSET_FSINFO   1
#define FAT32_OFFSET_BACKUP_BOOT   6
#define FAT16_CLUSTER_EOF   0x0000FFFF
#define FAT16_CLUSTER_ERROR   0x0000FFF7
#define FAT16_CLUSTER_MASK   0x0000FFFF
#define FAT32_CLUSTER_EOF   0x0FFFFFFF
#define FAT32_CLUSTER_ERROR   0x0FFFFFF7
#define FAT32_CLUSTER_MASK   0x0FFFFFFF
#define FAT_SIGNATURE   0xAA55
#define MBR_SIGNATURE   FAT_SIGNATURE
#define MBR_FAT32   0x0C
#define FSINFO_FIRSTSIGNATURE   0x41615252
#define FSINFO_FSINFOSIGNATURE   0x61417272
#define FSINFO_SIGNATURE   FAT_SIGNATURE
#define DIRECTORY_ATTRIBUTE_READ_ONLY   0x01
#define DIRECTORY_ATTRIBUTE_HIDDEN   0x02
#define DIRECTORY_ATTRIBUTE_SYSTEM_FILE   0x04
#define DIRECTORY_ATTRIBUTE_VOLUME_ID   0x08
#define DIRECTORY_ATTRIBUTE_DIRECTORY   0x10
#define DIRECTORY_ATTRIBUTE_ARCHIVE   0x20
#define DIRECTORY_ATTRIBUTE_LONG_NAME   0x0F
#define DIRECTORY_ATTRIBUTE_LONG_NAME_MASK   0x3F
#define FAT_NAME_LEN   8
#define FAT_EXT_LEN   3
#define FAT_SHORT_NAME_LEN   (FAT_NAME_LEN+FAT_EXT_LEN+1)
#define FAT_LONG_NAME_LEN   64
#define FLAG_FAT_IS_CDROM   0x0001
#define FLAG_FAT_IS_ZIP   0x0002
#define ATAPI_BOOT_RECORD   0x00
#define ATAPI_PVD_DESC   0x01
#define ATAPI_SVD_DESC   0x02
#define ATAPI_VDST_DESC   0xFF

Typedefs

typedef struct _FAT32FileDataTime FAT32_FILEDATETIME
typedef struct _FAT32FileDataTimePFAT32_FILEDATETIME
typedef struct _FAT32DirectoryEntry FAT32_DIRECTORY_ENTRY
typedef struct
_FAT32DirectoryEntryLong 
FAT32_DIRECTORY_ENTRY_LONG
typedef struct
_FAT32FileSystemInformation 
FAT32_FSINFO
typedef struct _FAT32PartitionEntry FAT32_PARTITION_ENTRY
typedef struct _FAT32PartionTable FAT32_PARTITION_TABLE
typedef struct _bpbfat16 BPBFAT16
typedef struct _bpbfat32 BPBFAT32
typedef union _bpboffset36 BPBOFFSET36
typedef struct _FAT32BootRecord FAT32_BOOT_RECORD
typedef struct _FAT32BootRecordPFAT32_BOOT_RECORD
typedef struct _fat_entry_table16 FAT_ENTRY_TABLE16
typedef struct _fat_entry_table32 FAT_ENTRY_TABLE32
typedef union _fat_dir_table FAT_DIR_TABLE
typedef struct _drive_info DRIVE_INFO
typedef struct _fhandle FHANDLE
typedef struct _atapi_pvd ATAPI_PVD
typedef struct
_ATAPIDirectoryRecord 
ATAPI2_DIRECTORY_RECORD

Functions

void FATLock (void)
void FATFree (void)
void FATSemaInit (void)
long FATFileSize (NUTFILE *hNUTFile)
int FATFileRead (NUTFILE *hNUTFile, void *pData, int nSize)

Variables

NUTDEVICE devFATC

Define Documentation

#define __FAT_C__

Definition at line 73 of file fat.c.

#define FAT_OK   0

Definition at line 95 of file fat.c.

#define FAT_ERROR   -1

Definition at line 96 of file fat.c.

#define FAT_ERROR_EOF   -2

Definition at line 97 of file fat.c.

Referenced by FATFileRead().

#define FAT_ERROR_IDE   -3

Definition at line 98 of file fat.c.

Referenced by FATFileRead().

#define NUTDEV_OK   0

Definition at line 103 of file fat.c.

#define NUTDEV_ERROR   -1

Definition at line 104 of file fat.c.

Referenced by FATFileRead(), and FATFileSize().

#define FAT_MAX_DRIVE   2

Definition at line 107 of file fat.c.

#define ZIP_DRIVE_BR_SECTOR   32

Definition at line 112 of file fat.c.

#define BPB_RsvdSecCnt   32

Definition at line 114 of file fat.c.

#define BPB_NumFATs   2

Definition at line 115 of file fat.c.

#define BPB_HiddSec   63

Definition at line 116 of file fat.c.

#define FAT32_MEDIA   0xf8

Definition at line 118 of file fat.c.

#define FAT32_OFFSET_FSINFO   1

Definition at line 120 of file fat.c.

#define FAT32_OFFSET_BACKUP_BOOT   6

Definition at line 121 of file fat.c.

#define FAT16_CLUSTER_EOF   0x0000FFFF

Definition at line 123 of file fat.c.

#define FAT16_CLUSTER_ERROR   0x0000FFF7

Definition at line 124 of file fat.c.

#define FAT16_CLUSTER_MASK   0x0000FFFF

Definition at line 125 of file fat.c.

#define FAT32_CLUSTER_EOF   0x0FFFFFFF

Definition at line 127 of file fat.c.

#define FAT32_CLUSTER_ERROR   0x0FFFFFF7

Definition at line 128 of file fat.c.

#define FAT32_CLUSTER_MASK   0x0FFFFFFF

Definition at line 129 of file fat.c.

#define FAT_SIGNATURE   0xAA55

Definition at line 131 of file fat.c.

#define MBR_SIGNATURE   FAT_SIGNATURE

Definition at line 133 of file fat.c.

#define MBR_FAT32   0x0C

Definition at line 134 of file fat.c.

#define FSINFO_FIRSTSIGNATURE   0x41615252

Definition at line 136 of file fat.c.

#define FSINFO_FSINFOSIGNATURE   0x61417272

Definition at line 137 of file fat.c.

#define FSINFO_SIGNATURE   FAT_SIGNATURE

Definition at line 138 of file fat.c.

#define DIRECTORY_ATTRIBUTE_READ_ONLY   0x01

Definition at line 140 of file fat.c.

#define DIRECTORY_ATTRIBUTE_HIDDEN   0x02

Definition at line 141 of file fat.c.

#define DIRECTORY_ATTRIBUTE_SYSTEM_FILE   0x04

Definition at line 142 of file fat.c.

#define DIRECTORY_ATTRIBUTE_VOLUME_ID   0x08

Definition at line 143 of file fat.c.

#define DIRECTORY_ATTRIBUTE_DIRECTORY   0x10

Definition at line 144 of file fat.c.

#define DIRECTORY_ATTRIBUTE_ARCHIVE   0x20

Definition at line 145 of file fat.c.

#define DIRECTORY_ATTRIBUTE_LONG_NAME   0x0F

Definition at line 153 of file fat.c.

#define DIRECTORY_ATTRIBUTE_LONG_NAME_MASK   0x3F

Definition at line 163 of file fat.c.

#define FAT_NAME_LEN   8

Definition at line 165 of file fat.c.

#define FAT_EXT_LEN   3

Definition at line 166 of file fat.c.

#define FAT_SHORT_NAME_LEN   (FAT_NAME_LEN+FAT_EXT_LEN+1)

Definition at line 172 of file fat.c.

#define FAT_LONG_NAME_LEN   64

Definition at line 173 of file fat.c.

#define FLAG_FAT_IS_CDROM   0x0001

Definition at line 180 of file fat.c.

#define FLAG_FAT_IS_ZIP   0x0002

Definition at line 181 of file fat.c.

#define ATAPI_BOOT_RECORD   0x00

Definition at line 395 of file fat.c.

#define ATAPI_PVD_DESC   0x01

Definition at line 396 of file fat.c.

#define ATAPI_SVD_DESC   0x02

Definition at line 397 of file fat.c.

#define ATAPI_VDST_DESC   0xFF

Definition at line 398 of file fat.c.


Typedef Documentation

typedef struct _bpbfat16 BPBFAT16
typedef struct _bpbfat32 BPBFAT32
typedef union _bpboffset36 BPBOFFSET36
typedef struct _drive_info DRIVE_INFO
typedef struct _fhandle FHANDLE
typedef struct _atapi_pvd ATAPI_PVD

Function Documentation

void FATLock ( void  )

Definition at line 433 of file fat.c.

References NutEventWait().

Referenced by FATFileRead(), and FATFileSize().

Here is the call graph for this function:

void FATFree ( void  )

Definition at line 441 of file fat.c.

References NutEventPost().

Referenced by FATFileRead(), and FATFileSize().

Here is the call graph for this function:

void FATSemaInit ( void  )

Definition at line 449 of file fat.c.

References NutEventPost().

Here is the call graph for this function:

long FATFileSize ( NUTFILE hNUTFile)

Definition at line 1553 of file fat.c.

References _fhandle::dwFileSize, FATFree(), FATLock(), _NUTFILE::nf_fcb, and NUTDEV_ERROR.

Here is the call graph for this function:


Variable Documentation

Initial value:
 {
    0,                          
    
    {'F', 'A', 'T', '_', 'C', 0, 0, 0, 0}
    ,

    IFTYP_STREAM,               
    2,                          
    0,                          
    0,                          
    0,                          
    FATInit,                    
    0,                          
    FATFileRead,                
    FATFileWrite,               

    FATFileWriteP,              

    FATFileOpen,                
    FATFileClose,               
    FATFileSize
}

Definition at line 1765 of file fat.c.