Main Page | Modules | Alphabetical List | Data Structures | Directories | File List | Data Fields | Globals | Related Pages | Examples

PHAT File System
[File System API.]

Collaboration diagram for PHAT File System:


Detailed Description

FAT12/16/32 compatible file system.

Note:
This is alpha code and may contain severe bugs.


Modules

 Volume Support
 Dealing with volumes.
 Directory Support
 Routines for reading and writing directories.
 PHAT12 Support
 PHAT12 specific routines.
 PHAT16 Support
 PHAT16 specific routines.
 PHAT32 Support
 PHAT32 specific routines.
 PHAT Block I/O
 Reading and writing data blocks.
 PHAT Utilities
 General utility routines used by the PHAT file system.
 PHAT Debugging Support
 Listing various PHAT structures.

Data Structures

struct  _PHATFILE
 PHAT file descriptor structure. More...

File attributes.

#define PHAT_FATTR_RDONLY   0x01
#define PHAT_FATTR_HIDDEN   0x02
#define PHAT_FATTR_SYSTEM   0x04
#define PHAT_FATTR_VOLID   0x08
#define PHAT_FATTR_DIR   0x10
#define PHAT_FATTR_ARCHIV   0x20
#define PHAT_FATTR_LFN   (PHAT_FATTR_RDONLY | PHAT_FATTR_HIDDEN | PHAT_FATTR_SYSTEM | PHAT_FATTR_VOLID)
#define PHAT_FATTR_FILEMASK   0x37

Defines

#define PHATEOC   0x0FFFFFF8
 Marks end of cluster chain.

Typedefs

typedef _PHATFILE PHATFILE
 PHAT file descriptor structure.

Functions

u_long AllocFirstCluster (NUTFILE *nfp)
 Allocate the first cluster of a file.
NUTFILEPhatFileOpen (NUTDEVICE *dev, CONST char *path, int mode, int acc)
 Open a file.
int PhatFileClose (NUTFILE *nfp)
 Close a file.
int PhatFileWrite (NUTFILE *nfp, CONST void *buffer, int len)
 Write data to a file.
int PhatFileWrite_P (NUTFILE *nfp, PGM_P buffer, int len)
 Write data from program space to a file.
int PhatFileRead (NUTFILE *nfp, void *buffer, int size)
 Read data from a file.

Variables

NUTDEVICE devPhat0
 PHAT file system driver information structure.
NUTDEVICE devPhat1
NUTDEVICE devPhat0
 PHAT file system driver information structure.
NUTDEVICE devPhat1


Define Documentation

#define PHAT_FATTR_RDONLY   0x01
 

Read only file.

#define PHAT_FATTR_HIDDEN   0x02
 

Hidden file.

#define PHAT_FATTR_SYSTEM   0x04
 

System file.

#define PHAT_FATTR_VOLID   0x08
 

No file, but a volume label.

#define PHAT_FATTR_DIR   0x10
 

File contains a subdirectory.

#define PHAT_FATTR_ARCHIV   0x20
 

File is not archived. This flag will be set when the file is created or modified.

#define PHAT_FATTR_LFN   (PHAT_FATTR_RDONLY | PHAT_FATTR_HIDDEN | PHAT_FATTR_SYSTEM | PHAT_FATTR_VOLID)
 

Long filename entry.

#define PHAT_FATTR_FILEMASK   0x37
 

Only these flags are allowed for files and directories.


Function Documentation

u_long AllocFirstCluster NUTFILE nfp  ) 
 

Allocate the first cluster of a file.

Parameters:
nfp The file for which a cluster is allocated.
Returns:
Number of the allocated cluster, which is not lower than 2. Any value lower than 2 indicates an error.

NUTFILE * PhatFileOpen NUTDEVICE dev,
CONST char *  path,
int  mode,
int  acc
 

Open a file.

This function is called by the low level open routine of the C runtime library, using the _NUTDEVICE::dev_open entry.

Parameters:
dev Specifies the file system device.
path Pathname of the file to open. If the last character is a slash, then a directory will be opened.
mode Operation mode.
acc File attribute.
Returns:
Pointer to a NUTFILE structure if successful or NUTFILE_EOF otherwise.

int PhatFileClose NUTFILE nfp  ) 
 

Close a file.

Parameters:
nfp File descriptor.
Returns:
0 on success, -1 otherwise.

int PhatFileWrite NUTFILE nfp,
CONST void *  buffer,
int  len
 

Write data to a file.

Parameters:
nfp Pointer to a NUTFILE structure, obtained by a previous call to PnutFileOpen().
buffer Pointer to the data to be written. If zero, then the output buffer will be flushed.
len Number of bytes to write.
Returns:
The number of bytes written. A return value of -1 indicates an error.

int PhatFileWrite_P NUTFILE nfp,
PGM_P  buffer,
int  len
 

Write data from program space to a file.

This function is not yet implemented and will always return -1.

Similar to PhatFileWrite() except that the data is located in program memory.

Parameters:
nfp Pointer to a NUTFILE structure, obtained by a previous call to PnutFileOpen().
buffer Pointer to the data in program space. If zero, then the output buffer will be flushed.
len Number of bytes to write.
Returns:
The number of bytes written. A return value of -1 indicates an error.

int PhatFileRead NUTFILE nfp,
void *  buffer,
int  size
 

Read data from a file.

Parameters:
nfp Pointer to a NUTFILE structure, obtained by a previous call to PnutFileOpen().
buffer Pointer to the data buffer to fill.
size Maximum number of bytes to read.
Returns:
The number of bytes actually read. A return value of -1 indicates an error.


Variable Documentation

NUTDEVICE devPhat0
 

PHAT file system driver information structure.

A pointer to this structure must be passed to NutRegisterDevice() to bind this file system driver to the Nut/OS kernel. An application may then call /verbatim _open("MMC0:1/PHAT0", _O_RDWR | _O_BINARY); /endverbatim to mount partition 1 on the previously registered block device (devMmc0 in this example).

NUTDEVICE devPhat0
 

Initial value:

 {
    0,                          
    {'P', 'H', 'A', 'T', '0', 0, 0, 0, 0}
    ,                           
    IFTYP_FS,                   
    0,                          
    0,                          
    0,                          
    0,                          
    PhatInit,                   
    PhatApiIOCtl,               
    PhatApiFileRead,            
    PhatApiFileWrite,           

    PhatApiFileWrite_P,         

    PhatApiFileOpen,            
    PhatApiFileClose,           
    PhatFileSize                
}
PHAT file system driver information structure.

A pointer to this structure must be passed to NutRegisterDevice() to bind this file system driver to the Nut/OS kernel. An application may then call /verbatim _open("MMC0:1/PHAT0", _O_RDWR | _O_BINARY); /endverbatim to mount partition 1 on the previously registered block device (devMmc0 in this example).

NUTDEVICE devPhat1
 

Initial value:

 {
    0,                          
    {'P', 'H', 'A', 'T', '1', 0, 0, 0, 0}
    ,                           
    IFTYP_FS,                   
    0,                          
    0,                          
    0,                          
    0,                          
    PhatInit,                   
    PhatApiIOCtl,               
    PhatApiFileRead,            
    PhatApiFileWrite,           

    PhatApiFileWrite_P,         

    PhatApiFileOpen,            
    PhatApiFileClose,           
    PhatFileSize                
}


© 2000-2006 by egnite Software GmbH - visit http://www.ethernut.de/