• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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