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 *struct _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/