diff options
Diffstat (limited to 'fs/yaffs2/yaffsfs.h')
| -rw-r--r-- | fs/yaffs2/yaffsfs.h | 233 | 
1 files changed, 233 insertions, 0 deletions
| diff --git a/fs/yaffs2/yaffsfs.h b/fs/yaffs2/yaffsfs.h new file mode 100644 index 000000000..9afe60a1c --- /dev/null +++ b/fs/yaffs2/yaffsfs.h @@ -0,0 +1,233 @@ +/* + * YAFFS: Yet another Flash File System . A NAND-flash specific file system.  + * + * Copyright (C) 2002-2007 Aleph One Ltd. + *   for Toby Churchill Ltd and Brightstar Engineering + * + * Created by Charles Manning <charles@aleph1.co.uk> + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 2.1 as + * published by the Free Software Foundation. + * + * Note: Only YAFFS headers are LGPL, YAFFS C code is covered by GPL. + */ + +/* + * Header file for using yaffs in an application via + * a direct interface. + */ + + +#ifndef __YAFFSFS_H__ +#define __YAFFSFS_H__ + +#include "yaffscfg.h" +#include "yportenv.h" + + +//typedef long off_t; +//typedef long dev_t; +//typedef unsigned long mode_t; + + +#ifndef NAME_MAX +#define NAME_MAX	256 +#endif + +#ifndef O_RDONLY +#define O_RDONLY	00 +#endif + +#ifndef O_WRONLY +#define O_WRONLY	01 +#endif + +#ifndef O_RDWR +#define O_RDWR		02 +#endif + +#ifndef O_CREAT		 +#define O_CREAT 	0100 +#endif + +#ifndef O_EXCL +#define O_EXCL		0200 +#endif + +#ifndef O_TRUNC +#define O_TRUNC		01000 +#endif + +#ifndef O_APPEND +#define O_APPEND	02000 +#endif + +#ifndef SEEK_SET +#define SEEK_SET	0 +#endif + +#ifndef SEEK_CUR +#define SEEK_CUR	1 +#endif + +#ifndef SEEK_END +#define SEEK_END	2 +#endif + +#ifndef EBUSY +#define EBUSY	16 +#endif + +#ifndef ENODEV +#define ENODEV	19 +#endif + +#ifndef EINVAL +#define EINVAL	22 +#endif + +#ifndef EBADF +#define EBADF	9 +#endif + +#ifndef EACCESS +#define EACCESS	13 +#endif + +#ifndef EXDEV	 +#define EXDEV	18 +#endif + +#ifndef ENOENT +#define ENOENT	2 +#endif + +#ifndef ENOSPC +#define ENOSPC	28 +#endif + +#ifndef ENOTEMPTY +#define ENOTEMPTY 39 +#endif + +#ifndef ENOMEM +#define ENOMEM 12 +#endif + +#ifndef EEXIST +#define EEXIST 17 +#endif + +#ifndef ENOTDIR +#define ENOTDIR 20 +#endif + +#ifndef EISDIR +#define EISDIR 21 +#endif + + +// Mode flags + +#ifndef S_IFMT +#define S_IFMT		0170000 +#endif + +#ifndef S_IFLNK +#define S_IFLNK		0120000 +#endif + +#ifndef S_IFDIR +#define S_IFDIR		0040000 +#endif + +#ifndef S_IFREG +#define S_IFREG		0100000 +#endif + +#ifndef S_IREAD  +#define S_IREAD		0000400 +#endif + +#ifndef S_IWRITE +#define	S_IWRITE	0000200 +#endif + + + + +struct yaffs_dirent{ +    long d_ino;                 /* inode number */ +    off_t d_off;                /* offset to this dirent */ +    unsigned short d_reclen;    /* length of this d_name */ +    char d_name [NAME_MAX+1];   /* file name (null-terminated) */ +    unsigned d_dont_use;	/* debug pointer, not for public consumption */ +}; + +typedef struct yaffs_dirent yaffs_dirent; + + +typedef struct __opaque yaffs_DIR; + + + +struct yaffs_stat{ +    int		      st_dev;      /* device */ +    int           st_ino;      /* inode */ +    mode_t        st_mode;     /* protection */ +    int           st_nlink;    /* number of hard links */ +    int           st_uid;      /* user ID of owner */ +    int           st_gid;      /* group ID of owner */ +    unsigned      st_rdev;     /* device type (if inode device) */ +    off_t         st_size;     /* total size, in bytes */ +    unsigned long st_blksize;  /* blocksize for filesystem I/O */ +    unsigned long st_blocks;   /* number of blocks allocated */ +    unsigned long yst_atime;    /* time of last access */ +    unsigned long yst_mtime;    /* time of last modification */ +    unsigned long yst_ctime;    /* time of last change */ +}; + +int yaffs_open(const char *path, int oflag, int mode) ; +int yaffs_read(int fd, void *buf, unsigned int nbyte) ; +int yaffs_write(int fd, const void *buf, unsigned int nbyte) ; +int yaffs_close(int fd) ; +off_t yaffs_lseek(int fd, off_t offset, int whence) ; +int yaffs_truncate(int fd, off_t newSize); + +int yaffs_unlink(const char *path) ; +int yaffs_rename(const char *oldPath, const char *newPath) ; + +int yaffs_stat(const char *path, struct yaffs_stat *buf) ; +int yaffs_lstat(const char *path, struct yaffs_stat *buf) ; +int yaffs_fstat(int fd, struct yaffs_stat *buf) ; + +int yaffs_chmod(const char *path, mode_t mode);  +int yaffs_fchmod(int fd, mode_t mode);  + +int yaffs_mkdir(const char *path, mode_t mode) ; +int yaffs_rmdir(const char *path) ; + +yaffs_DIR *yaffs_opendir(const char *dirname) ; +struct yaffs_dirent *yaffs_readdir(yaffs_DIR *dirp) ; +void yaffs_rewinddir(yaffs_DIR *dirp) ; +int yaffs_closedir(yaffs_DIR *dirp) ; + +int yaffs_mount(const char *path) ; +int yaffs_unmount(const char *path) ; + +int yaffs_symlink(const char *oldpath, const char *newpath);  +int yaffs_readlink(const char *path, char *buf, int bufsiz);  + +int yaffs_link(const char *oldpath, const char *newpath);  +int yaffs_mknod(const char *pathname, mode_t mode, dev_t dev); + +loff_t yaffs_freespace(const char *path); + +void yaffs_initialise(yaffsfs_DeviceConfiguration *configList); + +int yaffs_StartUp(void); + +#endif + + |