yaffsfs.h
上传用户:wealth48
上传日期:2022-06-24
资源大小:1701k
文件大小:4k
源码类别:

uCOS

开发平台:

C/C++

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