Misc. changes to support FAT32 fileysystem
git-svn-id: svn://svn.code.sf.net/p/nuttx/code/trunk@219 42af7a65-404d-4744-a932-0658087f49c3
This commit is contained in:
parent
d8df31f3d8
commit
b6335e8ef7
@ -129,5 +129,6 @@
|
||||
development board (untested)
|
||||
* Added support for block devices.
|
||||
* Simulated target now exports a VFAT filesystem
|
||||
* Begin support for VFAT filesystem (not yet functional)
|
||||
* Added mount() and umount()
|
||||
* Started m68322
|
||||
|
@ -8,7 +8,7 @@
|
||||
<tr align="center" bgcolor="#e4e4e4">
|
||||
<td>
|
||||
<h1><big><font color="#3c34ec"><i>NuttX RTOS</i></font></big></h1>
|
||||
<p>Last Updated: May 12, 2007</p>
|
||||
<p>Last Updated: May 13, 2007</p>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
@ -508,9 +508,9 @@ Other memory:
|
||||
development board (untested)
|
||||
* Added support for block devices.
|
||||
* Simulated target now exports a VFAT filesystem
|
||||
* Begin support for VFAT filesystem (not yet functional)
|
||||
* Added mount() and umount()
|
||||
* Started m68322
|
||||
* Added support for the NXP 214x processor on the mcu123.com lpc214x
|
||||
</pre></ul>
|
||||
|
||||
<table width ="100%">
|
||||
|
@ -60,13 +60,13 @@
|
||||
* Private Function Prototypes
|
||||
****************************************************************************/
|
||||
|
||||
static int up_open(FAR struct file *filp);
|
||||
static int up_close(FAR struct file *filp);
|
||||
static ssize_t up_read(FAR struct file *filp, char *buffer,
|
||||
static int up_open(FAR struct inode *inode);
|
||||
static int up_close(FAR struct inode *inode);
|
||||
static ssize_t up_read(FAR struct inode *inode, unsigned char *buffer,
|
||||
size_t start_sector, size_t nsectors);
|
||||
static ssize_t up_write(FAR struct file *filp, const char *buffer,
|
||||
static ssize_t up_write(FAR struct inode *inode, const unsigned char *buffer,
|
||||
size_t start_sector, size_t nsectors);
|
||||
static size_t up_geometry(FAR struct file *filp, struct geometry *geometry);
|
||||
static int up_geometry(FAR struct inode *inode, struct geometry *geometry);
|
||||
|
||||
/****************************************************************************
|
||||
* Private Data
|
||||
@ -92,7 +92,7 @@ static const struct block_operations g_bops =
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
static int up_open(FAR struct file *filp)
|
||||
static int up_open(FAR struct inode *inode)
|
||||
{
|
||||
return OK;
|
||||
}
|
||||
@ -104,7 +104,7 @@ static int up_open(FAR struct file *filp)
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
static int up_close(FAR struct file *filp)
|
||||
static int up_close(FAR struct inode *inode)
|
||||
{
|
||||
return OK;
|
||||
}
|
||||
@ -116,10 +116,9 @@ static int up_close(FAR struct file *filp)
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
static ssize_t up_read(FAR struct file *filp, char *buffer,
|
||||
static ssize_t up_read(FAR struct inode *inode, unsigned char *buffer,
|
||||
size_t start_sector, size_t nsectors)
|
||||
{
|
||||
struct inode *inode = filp->f_inode;
|
||||
if (inode)
|
||||
{
|
||||
char *src = inode->i_private;
|
||||
@ -143,10 +142,9 @@ static ssize_t up_read(FAR struct file *filp, char *buffer,
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
static ssize_t up_write(FAR struct file *filp, const char *buffer,
|
||||
static ssize_t up_write(FAR struct inode *inode, const unsigned char *buffer,
|
||||
size_t start_sector, size_t nsectors)
|
||||
{
|
||||
struct inode *inode = filp->f_inode;
|
||||
if (inode)
|
||||
{
|
||||
char *dest = inode->i_private;
|
||||
@ -170,14 +168,15 @@ static ssize_t up_write(FAR struct file *filp, const char *buffer,
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
static size_t up_geometry(FAR struct file *filp, struct geometry *geometry)
|
||||
static int up_geometry(FAR struct inode *inode, struct geometry *geometry)
|
||||
{
|
||||
struct inode *inode = filp->f_inode;
|
||||
if (geometry)
|
||||
{
|
||||
geometry->geo_available = (inode->i_private != NULL);
|
||||
geometry->geo_nsectors = NSECTORS;
|
||||
geometry->geo_sectorsize = LOGICAL_SECTOR_SIZE;
|
||||
geometry->geo_available = (inode->i_private != NULL);
|
||||
geometry->geo_mediachanged = FALSE;
|
||||
geometry->geo_writeenabled = TRUE;
|
||||
geometry->geo_nsectors = NSECTORS;
|
||||
geometry->geo_sectorsize = LOGICAL_SECTOR_SIZE;
|
||||
return OK;
|
||||
}
|
||||
return -EINVAL;
|
||||
|
@ -198,7 +198,8 @@ CONFIG_PREALLOC_TIMERS=8
|
||||
|
||||
#
|
||||
# FAT filesystem configuration
|
||||
# CONFIG_FAT - Enable FAT filesystem support
|
||||
# CONFIG_FS_FAT - Enable FAT filesystem support
|
||||
# CONFIG_FAT_SECTORSIZE - Max supported sector size
|
||||
CONFIG_FS_FAT=y
|
||||
|
||||
#
|
||||
|
@ -81,25 +81,30 @@ struct file_operations
|
||||
|
||||
struct geometry
|
||||
{
|
||||
boolean geo_available; /* False if the device is not available */
|
||||
size_t geo_nsectors; /* Number of sectors on the device */
|
||||
size_t geo_sectorsize; /* Size of one sector */
|
||||
boolean geo_available; /* TRUE: The device is vailable */
|
||||
boolean geo_mediachanged; /* TRUE: The media has changed since last query */
|
||||
boolean geo_writeenabled; /* TRUE: It is okay to write to this device */
|
||||
size_t geo_nsectors; /* Number of sectors on the device */
|
||||
size_t geo_sectorsize; /* Size of one sector */
|
||||
};
|
||||
|
||||
/* This structure is provided by block devices when they register with the
|
||||
* system. It is used by file systems to perform filesystem transfers.
|
||||
* system. It is used by file systems to perform filesystem transfers. It
|
||||
* differs from the normal driver vtable in several ways -- most notably in
|
||||
* that it deals in struct inode vs. struct filep.
|
||||
*/
|
||||
|
||||
struct inode;
|
||||
struct block_operations
|
||||
{
|
||||
int (*open)(FAR struct file *filp);
|
||||
int (*close)(FAR struct file *filp);
|
||||
ssize_t (*read)(FAR struct file *filp, char *buffer,
|
||||
int (*open)(FAR struct inode *inode);
|
||||
int (*close)(FAR struct inode *inode);
|
||||
ssize_t (*read)(FAR struct inode *inode, unsigned char *buffer,
|
||||
size_t start_sector, size_t nsectors);
|
||||
ssize_t (*write)(FAR struct file *filp, const char *buffer,
|
||||
ssize_t (*write)(FAR struct inode *inode, const unsigned char *buffer,
|
||||
size_t start_sector, size_t nsectors);
|
||||
size_t (*geometry)(FAR struct file *filp, struct geometry *geometry);
|
||||
int (*ioctl)(FAR struct file *, int, unsigned long);
|
||||
int (*geometry)(FAR struct inode *inode, struct geometry *geometry);
|
||||
int (*ioctl)(FAR struct inode *inode, int cmd, unsigned long arg);
|
||||
};
|
||||
|
||||
/* This structure is provided by a filesystem to describe a mount point.
|
||||
@ -135,6 +140,10 @@ struct mountpt_operations
|
||||
|
||||
int (*bind)(FAR struct inode *blkdriver, const void *data, void **handle);
|
||||
int (*unbind)(void *handle);
|
||||
|
||||
/* NOTE: More operations will be needed here to support: disk usage stats, stat(),
|
||||
* sync(), unlink(), mkdir(), chmod(), rename(), etc.
|
||||
*/
|
||||
};
|
||||
|
||||
/* This structure represents one inode in the Nuttx psuedo-file system */
|
||||
|
Loading…
Reference in New Issue
Block a user