Re: [Yaffs] YAFFS2 in eCOS

Top Page
Attachments:
Message as email
+ (text/plain)
Delete this message
Reply to this message
Author: Rutger Hofman
Date:  
To: Emmanuel Blot
CC: yaffs
Subject: Re: [Yaffs] YAFFS2 in eCOS
Emmanuel Blot wrote:
>> Hmmm... I am writing/debugging a YAFFS interface layer to get it known as an
>> eCos filesystem. Did you also do that? Is there a way that we can share code
>> and/or work? Our intention is to fully feed the NAND Flash layer and YAFFS2
>> filesystem interface to eCos.
>
> I don't see why we could not :-)
> The back end (NAND vs. SPI flash) is different, but this is not
> relevant for the eCos "VFS" API - I mean the triplet (filesystem op,
> file op, directory op) functions (see below)
>
> I have virtually no time to work on this implementation right now, but
> it does not mean I could not post the code somewhere, for sure.


Did you manage to get YAFFS running, e.g. create a file? Then, I am
extremely interested in your "VFS" implementation.

Rutger

> Cheers,
> Manu
>
> The eCos API for YAFFS2:
>
> // --- Filesystem operations ---
> static int yaffs2_fs_mount(cyg_fstab_entry * fste, cyg_mtab_entry * mte);
> static int yaffs2_fs_umount(cyg_mtab_entry * mte);
> static int yaffs2_fs_open(cyg_mtab_entry * mte,
>                           cyg_dir dir, const char * path, int oflag,
>                           cyg_file * file);
> static int yaffs2_fs_unlink(cyg_mtab_entry * mte,
>                             cyg_dir dir, const char * path);
> static int yaffs2_fs_mkdir(cyg_mtab_entry * mte,
>                            cyg_dir dir, const char * path);
> static int yaffs2_fs_rmdir(cyg_mtab_entry * mte,
>                            cyg_dir dir, const char * path);
> static int yaffs2_fs_rename(cyg_mtab_entry * mte,
>                             cyg_dir sdir, const char * spath,
>                             cyg_dir ddir, const char * dpath);
> static int yaffs2_fs_link(cyg_mtab_entry * mte,
>                           cyg_dir sdir, const char * spath,
>                           cyg_dir ddir, const char * dpath, int type);
> static int yaffs2_fs_opendir(cyg_mtab_entry * mte,
>                              cyg_dir dir, const char * path, cyg_file * fte);
> static int yaffs2_fs_chdir(cyg_mtab_entry * mte,
>                            cyg_dir dir, const char * path, cyg_dir * dir_out);
> static int yaffs2_fs_stat(cyg_mtab_entry * mte,
>                           cyg_dir dir, const char * name, struct stat * buf);
> static int yaffs2_fs_getinfo(cyg_mtab_entry * mte,
>                              cyg_dir dir, const char * path,
>                              int key, void * buf, int len);
> static int yaffs2_fs_setinfo(cyg_mtab_entry * mte,
>                              cyg_dir dir, const char * path,
>                              int key, void * buf, int len);

>
> // --- File operations ---
> static int yaffs2_fo_read(struct CYG_FILE_TAG * fp, struct CYG_UIO_TAG * uio);
> static int yaffs2_fo_write(struct CYG_FILE_TAG * fp, struct CYG_UIO_TAG * uio);
> static int yaffs2_fo_lseek(struct CYG_FILE_TAG * fp, off_t * pos, int whence);
> static int yaffs2_fo_ioctl(struct CYG_FILE_TAG * fp, CYG_ADDRWORD com,
>                            CYG_ADDRWORD data);
> static int yaffs2_fo_fsync(struct CYG_FILE_TAG * fp, int mode);
> static int yaffs2_fo_close(struct CYG_FILE_TAG * fp);
> static int yaffs2_fo_fstat(struct CYG_FILE_TAG * fp, struct stat * buf);
> static int yaffs2_fo_getinfo(struct CYG_FILE_TAG * fp, int key, void * buf,
>                              int len);
> static int yaffs2_fo_setinfo(struct CYG_FILE_TAG * fp, int key, void * buf,
>                              int len);

>
> // --- Directory operations ---
> static int yaffs2_fo_readdir(struct CYG_FILE_TAG * fp,
>                              struct CYG_UIO_TAG * uio);
> static int yaffs2_fo_seekdir(struct CYG_FILE_TAG * fp, off_t * pos,
>                               int whence);
> static int yaffs2_fo_closedir(struct CYG_FILE_TAG * fp);

>
> // --- Helpers ---
> static yaffs_Object * yaffs2_lookup_dir(yaffs_Object * start, const
> char * path,
>                                         const char ** name, int symdepth);
> static yaffs_Object * yaffs2_lookup_object(yaffs_Object * reldir,
>                                            const char * path, int symdepth);
> static yaffs_Object * yaffs2_follow_link(yaffs_Object *obj, int symdepth);

>
> static int yaffs2_fs_pathconf(struct cyg_pathconf_info * info);
> #ifdef CYGSEM_FILEIO_INFO_DISK_USAGE
> static int yaffs2_fs_disk_usage(cyg_mtab_entry * mte,
>                                 struct cyg_fs_disk_usage * disk_usage);
> #endif // CYGSEM_FILEIO_INFO_DISK_USAGE

>
>
>