140c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project/*
240c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project* Header file for using yaffs in an application via
340c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project* a direct interface.
440c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project*/
540c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project
640c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project
740c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project#ifndef __YAFFSFS_H__
840c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project#define __YAFFSFS_H__
940c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project
1040c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project#include "yaffscfg.h"
1140c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project#include "yportenv.h"
1240c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project
1340c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project
1440c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project//typedef long off_t;
1540c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project//typedef long dev_t;
1640c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project//typedef unsigned long mode_t;
1740c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project
1840c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project
1940c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project#ifndef NAME_MAX
2040c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project#define NAME_MAX	256
2140c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project#endif
2240c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project
2340c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project#ifndef O_RDONLY
2440c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project#define O_RDONLY	00
2540c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project#endif
2640c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project
2740c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project#ifndef O_WRONLY
2840c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project#define O_WRONLY	01
2940c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project#endif
3040c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project
3140c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project#ifndef O_RDWR
3240c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project#define O_RDWR		02
3340c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project#endif
3440c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project
3540c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project#ifndef O_CREAT
3640c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project#define O_CREAT 	0100
3740c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project#endif
3840c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project
3940c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project#ifndef O_EXCL
4040c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project#define O_EXCL		0200
4140c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project#endif
4240c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project
4340c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project#ifndef O_TRUNC
4440c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project#define O_TRUNC		01000
4540c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project#endif
4640c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project
4740c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project#ifndef O_APPEND
4840c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project#define O_APPEND	02000
4940c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project#endif
5040c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project
5140c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project#ifndef SEEK_SET
5240c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project#define SEEK_SET	0
5340c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project#endif
5440c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project
5540c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project#ifndef SEEK_CUR
5640c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project#define SEEK_CUR	1
5740c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project#endif
5840c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project
5940c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project#ifndef SEEK_END
6040c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project#define SEEK_END	2
6140c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project#endif
6240c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project
6340c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project#ifndef EBUSY
6440c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project#define EBUSY	16
6540c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project#endif
6640c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project
6740c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project#ifndef ENODEV
6840c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project#define ENODEV	19
6940c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project#endif
7040c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project
7140c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project#ifndef EINVAL
7240c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project#define EINVAL	22
7340c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project#endif
7440c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project
7540c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project#ifndef EBADF
7640c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project#define EBADF	9
7740c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project#endif
7840c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project
7940c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project#ifndef EACCESS
8040c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project#define EACCESS	13
8140c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project#endif
8240c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project
8340c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project#ifndef EXDEV
8440c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project#define EXDEV	18
8540c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project#endif
8640c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project
8740c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project#ifndef ENOENT
8840c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project#define ENOENT	2
8940c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project#endif
9040c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project
9140c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project#ifndef ENOSPC
9240c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project#define ENOSPC	28
9340c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project#endif
9440c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project
9540c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project#ifndef ENOTEMPTY
9640c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project#define ENOTEMPTY 39
9740c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project#endif
9840c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project
9940c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project#ifndef ENOMEM
10040c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project#define ENOMEM 12
10140c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project#endif
10240c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project
10340c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project#ifndef EEXIST
10440c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project#define EEXIST 17
10540c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project#endif
10640c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project
10740c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project#ifndef ENOTDIR
10840c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project#define ENOTDIR 20
10940c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project#endif
11040c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project
11140c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project#ifndef EISDIR
11240c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project#define EISDIR 21
11340c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project#endif
11440c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project
11540c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project
11640c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project// Mode flags
11740c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project
11840c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project#ifndef S_IFMT
11940c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project#define S_IFMT		0170000
12040c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project#endif
12140c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project
12240c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project#ifndef S_IFLNK
12340c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project#define S_IFLNK		0120000
12440c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project#endif
12540c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project
12640c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project#ifndef S_IFDIR
12740c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project#define S_IFDIR		0040000
12840c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project#endif
12940c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project
13040c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project#ifndef S_IFREG
13140c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project#define S_IFREG		0100000
13240c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project#endif
13340c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project
13440c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project#ifndef S_IREAD
13540c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project#define S_IREAD		0000400
13640c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project#endif
13740c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project
13840c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project#ifndef S_IWRITE
13940c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project#define	S_IWRITE	0000200
14040c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project#endif
14140c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project
14240c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project
14340c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project
14440c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project
14540c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Projectstruct yaffs_dirent{
14640c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project    long d_ino;                 /* inode number */
14740c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project    off_t d_off;                /* offset to this dirent */
14840c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project    unsigned short d_reclen;    /* length of this d_name */
14940c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project    char d_name [NAME_MAX+1];   /* file name (null-terminated) */
15040c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project};
15140c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project
15240c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Projecttypedef struct yaffs_dirent yaffs_dirent;
15340c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project
15440c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project
15540c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Projecttypedef struct __opaque yaffs_DIR;
15640c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project
15740c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project
15840c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project
15940c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Projectstruct yaffs_stat{
16040c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project    int		      st_dev;      /* device */
16140c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project    int           st_ino;      /* inode */
16240c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project    mode_t        st_mode;     /* protection */
16340c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project    int           st_nlink;    /* number of hard links */
16440c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project    int           st_uid;      /* user ID of owner */
16540c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project    int           st_gid;      /* group ID of owner */
16640c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project    unsigned      st_rdev;     /* device type (if inode device) */
16740c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project    off_t         st_size;     /* total size, in bytes */
16840c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project    unsigned long st_blksize;  /* blocksize for filesystem I/O */
16940c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project    unsigned long st_blocks;   /* number of blocks allocated */
17040c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project    unsigned long yst_atime;    /* time of last access */
17140c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project    unsigned long yst_mtime;    /* time of last modification */
17240c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project    unsigned long yst_ctime;    /* time of last change */
17340c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project};
17440c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project
17540c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Projectint yaffs_open(const char *path, int oflag, int mode) ;
17640c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Projectint yaffs_read(int fd, void *buf, unsigned int nbyte) ;
17740c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Projectint yaffs_write(int fd, const void *buf, unsigned int nbyte) ;
17840c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Projectint yaffs_close(int fd) ;
17940c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Projectoff_t yaffs_lseek(int fd, off_t offset, int whence) ;
18040c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Projectint yaffs_truncate(int fd, off_t newSize);
18140c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project
18240c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Projectint yaffs_unlink(const char *path) ;
18340c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Projectint yaffs_rename(const char *oldPath, const char *newPath) ;
18440c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project
18540c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Projectint yaffs_stat(const char *path, struct yaffs_stat *buf) ;
18640c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Projectint yaffs_lstat(const char *path, struct yaffs_stat *buf) ;
18740c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Projectint yaffs_fstat(int fd, struct yaffs_stat *buf) ;
18840c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project
18940c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Projectint yaffs_chmod(const char *path, mode_t mode);
19040c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Projectint yaffs_fchmod(int fd, mode_t mode);
19140c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project
19240c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Projectint yaffs_mkdir(const char *path, mode_t mode) ;
19340c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Projectint yaffs_rmdir(const char *path) ;
19440c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project
19540c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Projectyaffs_DIR *yaffs_opendir(const char *dirname) ;
19640c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Projectstruct yaffs_dirent *yaffs_readdir(yaffs_DIR *dirp) ;
19740c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Projectvoid yaffs_rewinddir(yaffs_DIR *dirp) ;
19840c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Projectint yaffs_closedir(yaffs_DIR *dirp) ;
19940c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project
20040c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Projectint yaffs_mount(const char *path) ;
20140c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Projectint yaffs_unmount(const char *path) ;
20240c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project
20340c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Projectint yaffs_symlink(const char *oldpath, const char *newpath);
20440c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Projectint yaffs_readlink(const char *path, char *buf, int bufsiz);
20540c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project
20640c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Projectint yaffs_link(const char *oldpath, const char *newpath);
20740c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Projectint yaffs_mknod(const char *pathname, mode_t mode, dev_t dev);
20840c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project
20940c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Projectloff_t yaffs_freespace(const char *path);
21040c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project
21140c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Projectvoid yaffs_initialise(yaffsfs_DeviceConfiguration *configList);
21240c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project
21340c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Projectint yaffs_StartUp(void);
21440c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project
21540c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project#endif
21640c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project
21740c4004d07a37a9b140067f893930ce4436b9346The Android Open Source Project
218