1 /* 2 * Header file for using yaffs in an application via 3 * a direct interface. 4 */ 5 6 7 #ifndef __YAFFSFS_H__ 8 #define __YAFFSFS_H__ 9 10 #include "yaffscfg.h" 11 #include "yportenv.h" 12 13 14 //typedef long off_t; 15 //typedef long dev_t; 16 //typedef unsigned long mode_t; 17 18 19 #ifndef NAME_MAX 20 #define NAME_MAX 256 21 #endif 22 23 #ifndef O_RDONLY 24 #define O_RDONLY 00 25 #endif 26 27 #ifndef O_WRONLY 28 #define O_WRONLY 01 29 #endif 30 31 #ifndef O_RDWR 32 #define O_RDWR 02 33 #endif 34 35 #ifndef O_CREAT 36 #define O_CREAT 0100 37 #endif 38 39 #ifndef O_EXCL 40 #define O_EXCL 0200 41 #endif 42 43 #ifndef O_TRUNC 44 #define O_TRUNC 01000 45 #endif 46 47 #ifndef O_APPEND 48 #define O_APPEND 02000 49 #endif 50 51 #ifndef SEEK_SET 52 #define SEEK_SET 0 53 #endif 54 55 #ifndef SEEK_CUR 56 #define SEEK_CUR 1 57 #endif 58 59 #ifndef SEEK_END 60 #define SEEK_END 2 61 #endif 62 63 #ifndef EBUSY 64 #define EBUSY 16 65 #endif 66 67 #ifndef ENODEV 68 #define ENODEV 19 69 #endif 70 71 #ifndef EINVAL 72 #define EINVAL 22 73 #endif 74 75 #ifndef EBADF 76 #define EBADF 9 77 #endif 78 79 #ifndef EACCESS 80 #define EACCESS 13 81 #endif 82 83 #ifndef EXDEV 84 #define EXDEV 18 85 #endif 86 87 #ifndef ENOENT 88 #define ENOENT 2 89 #endif 90 91 #ifndef ENOSPC 92 #define ENOSPC 28 93 #endif 94 95 #ifndef ENOTEMPTY 96 #define ENOTEMPTY 39 97 #endif 98 99 #ifndef ENOMEM 100 #define ENOMEM 12 101 #endif 102 103 #ifndef EEXIST 104 #define EEXIST 17 105 #endif 106 107 #ifndef ENOTDIR 108 #define ENOTDIR 20 109 #endif 110 111 #ifndef EISDIR 112 #define EISDIR 21 113 #endif 114 115 116 // Mode flags 117 118 #ifndef S_IFMT 119 #define S_IFMT 0170000 120 #endif 121 122 #ifndef S_IFLNK 123 #define S_IFLNK 0120000 124 #endif 125 126 #ifndef S_IFDIR 127 #define S_IFDIR 0040000 128 #endif 129 130 #ifndef S_IFREG 131 #define S_IFREG 0100000 132 #endif 133 134 #ifndef S_IREAD 135 #define S_IREAD 0000400 136 #endif 137 138 #ifndef S_IWRITE 139 #define S_IWRITE 0000200 140 #endif 141 142 143 144 145 struct yaffs_dirent{ 146 long d_ino; /* inode number */ 147 off_t d_off; /* offset to this dirent */ 148 unsigned short d_reclen; /* length of this d_name */ 149 char d_name [NAME_MAX+1]; /* file name (null-terminated) */ 150 }; 151 152 typedef struct yaffs_dirent yaffs_dirent; 153 154 155 typedef struct __opaque yaffs_DIR; 156 157 158 159 struct yaffs_stat{ 160 int st_dev; /* device */ 161 int st_ino; /* inode */ 162 mode_t st_mode; /* protection */ 163 int st_nlink; /* number of hard links */ 164 int st_uid; /* user ID of owner */ 165 int st_gid; /* group ID of owner */ 166 unsigned st_rdev; /* device type (if inode device) */ 167 off_t st_size; /* total size, in bytes */ 168 unsigned long st_blksize; /* blocksize for filesystem I/O */ 169 unsigned long st_blocks; /* number of blocks allocated */ 170 unsigned long yst_atime; /* time of last access */ 171 unsigned long yst_mtime; /* time of last modification */ 172 unsigned long yst_ctime; /* time of last change */ 173 }; 174 175 int yaffs_open(const char *path, int oflag, int mode) ; 176 int yaffs_read(int fd, void *buf, unsigned int nbyte) ; 177 int yaffs_write(int fd, const void *buf, unsigned int nbyte) ; 178 int yaffs_close(int fd) ; 179 off_t yaffs_lseek(int fd, off_t offset, int whence) ; 180 int yaffs_truncate(int fd, off_t newSize); 181 182 int yaffs_unlink(const char *path) ; 183 int yaffs_rename(const char *oldPath, const char *newPath) ; 184 185 int yaffs_stat(const char *path, struct yaffs_stat *buf) ; 186 int yaffs_lstat(const char *path, struct yaffs_stat *buf) ; 187 int yaffs_fstat(int fd, struct yaffs_stat *buf) ; 188 189 int yaffs_chmod(const char *path, mode_t mode); 190 int yaffs_fchmod(int fd, mode_t mode); 191 192 int yaffs_mkdir(const char *path, mode_t mode) ; 193 int yaffs_rmdir(const char *path) ; 194 195 yaffs_DIR *yaffs_opendir(const char *dirname) ; 196 struct yaffs_dirent *yaffs_readdir(yaffs_DIR *dirp) ; 197 void yaffs_rewinddir(yaffs_DIR *dirp) ; 198 int yaffs_closedir(yaffs_DIR *dirp) ; 199 200 int yaffs_mount(const char *path) ; 201 int yaffs_unmount(const char *path) ; 202 203 int yaffs_symlink(const char *oldpath, const char *newpath); 204 int yaffs_readlink(const char *path, char *buf, int bufsiz); 205 206 int yaffs_link(const char *oldpath, const char *newpath); 207 int yaffs_mknod(const char *pathname, mode_t mode, dev_t dev); 208 209 loff_t yaffs_freespace(const char *path); 210 211 void yaffs_initialise(yaffsfs_DeviceConfiguration *configList); 212 213 int yaffs_StartUp(void); 214 215 #endif 216 217 218