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