123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231 |
- /*
- * 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
|