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
145struct 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
152typedef struct yaffs_dirent yaffs_dirent;
153
154
155typedef struct __opaque yaffs_DIR;
156
157
158
159struct 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
175int yaffs_open(const char *path, int oflag, int mode) ;
176int yaffs_read(int fd, void *buf, unsigned int nbyte) ;
177int yaffs_write(int fd, const void *buf, unsigned int nbyte) ;
178int yaffs_close(int fd) ;
179off_t yaffs_lseek(int fd, off_t offset, int whence) ;
180int yaffs_truncate(int fd, off_t newSize);
181
182int yaffs_unlink(const char *path) ;
183int yaffs_rename(const char *oldPath, const char *newPath) ;
184
185int yaffs_stat(const char *path, struct yaffs_stat *buf) ;
186int yaffs_lstat(const char *path, struct yaffs_stat *buf) ;
187int yaffs_fstat(int fd, struct yaffs_stat *buf) ;
188
189int yaffs_chmod(const char *path, mode_t mode);
190int yaffs_fchmod(int fd, mode_t mode);
191
192int yaffs_mkdir(const char *path, mode_t mode) ;
193int yaffs_rmdir(const char *path) ;
194
195yaffs_DIR *yaffs_opendir(const char *dirname) ;
196struct yaffs_dirent *yaffs_readdir(yaffs_DIR *dirp) ;
197void yaffs_rewinddir(yaffs_DIR *dirp) ;
198int yaffs_closedir(yaffs_DIR *dirp) ;
199
200int yaffs_mount(const char *path) ;
201int yaffs_unmount(const char *path) ;
202
203int yaffs_symlink(const char *oldpath, const char *newpath);
204int yaffs_readlink(const char *path, char *buf, int bufsiz);
205
206int yaffs_link(const char *oldpath, const char *newpath);
207int yaffs_mknod(const char *pathname, mode_t mode, dev_t dev);
208
209loff_t yaffs_freespace(const char *path);
210
211void yaffs_initialise(yaffsfs_DeviceConfiguration *configList);
212
213int yaffs_StartUp(void);
214
215#endif
216
217
218