mirror of
				https://github.com/smaeul/u-boot.git
				synced 2025-10-30 19:48:19 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			232 lines
		
	
	
		
			4.6 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			232 lines
		
	
	
		
			4.6 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| /*
 | |
|  * YAFFS: Yet another Flash File System . A NAND-flash specific file system.
 | |
|  *
 | |
|  * Copyright (C) 2002-2007 Aleph One Ltd.
 | |
|  *   for Toby Churchill Ltd and Brightstar Engineering
 | |
|  *
 | |
|  * Created by Charles Manning <charles@aleph1.co.uk>
 | |
|  *
 | |
|  * This program is free software; you can redistribute it and/or modify
 | |
|  * it under the terms of the GNU Lesser General Public License version 2.1 as
 | |
|  * published by the Free Software Foundation.
 | |
|  *
 | |
|  * Note: Only YAFFS headers are LGPL, YAFFS C code is covered by GPL.
 | |
|  */
 | |
| 
 | |
| /*
 | |
|  * Header file for using yaffs in an application via
 | |
|  * a direct interface.
 | |
|  */
 | |
| 
 | |
| 
 | |
| #ifndef __YAFFSFS_H__
 | |
| #define __YAFFSFS_H__
 | |
| 
 | |
| #include "yaffscfg.h"
 | |
| #include "yportenv.h"
 | |
| 
 | |
| 
 | |
| //typedef long off_t;
 | |
| //typedef long dev_t;
 | |
| //typedef unsigned long mode_t;
 | |
| 
 | |
| 
 | |
| #ifndef NAME_MAX
 | |
| #define NAME_MAX	256
 | |
| #endif
 | |
| 
 | |
| #ifndef O_RDONLY
 | |
| #define O_RDONLY	00
 | |
| #endif
 | |
| 
 | |
| #ifndef O_WRONLY
 | |
| #define O_WRONLY	01
 | |
| #endif
 | |
| 
 | |
| #ifndef O_RDWR
 | |
| #define O_RDWR		02
 | |
| #endif
 | |
| 
 | |
| #ifndef O_CREAT
 | |
| #define O_CREAT 	0100
 | |
| #endif
 | |
| 
 | |
| #ifndef O_EXCL
 | |
| #define O_EXCL		0200
 | |
| #endif
 | |
| 
 | |
| #ifndef O_TRUNC
 | |
| #define O_TRUNC		01000
 | |
| #endif
 | |
| 
 | |
| #ifndef O_APPEND
 | |
| #define O_APPEND	02000
 | |
| #endif
 | |
| 
 | |
| #ifndef SEEK_SET
 | |
| #define SEEK_SET	0
 | |
| #endif
 | |
| 
 | |
| #ifndef SEEK_CUR
 | |
| #define SEEK_CUR	1
 | |
| #endif
 | |
| 
 | |
| #ifndef SEEK_END
 | |
| #define SEEK_END	2
 | |
| #endif
 | |
| 
 | |
| #ifndef EBUSY
 | |
| #define EBUSY	16
 | |
| #endif
 | |
| 
 | |
| #ifndef ENODEV
 | |
| #define ENODEV	19
 | |
| #endif
 | |
| 
 | |
| #ifndef EINVAL
 | |
| #define EINVAL	22
 | |
| #endif
 | |
| 
 | |
| #ifndef EBADF
 | |
| #define EBADF	9
 | |
| #endif
 | |
| 
 | |
| #ifndef EACCESS
 | |
| #define EACCESS	13
 | |
| #endif
 | |
| 
 | |
| #ifndef EXDEV
 | |
| #define EXDEV	18
 | |
| #endif
 | |
| 
 | |
| #ifndef ENOENT
 | |
| #define ENOENT	2
 | |
| #endif
 | |
| 
 | |
| #ifndef ENOSPC
 | |
| #define ENOSPC	28
 | |
| #endif
 | |
| 
 | |
| #ifndef ENOTEMPTY
 | |
| #define ENOTEMPTY 39
 | |
| #endif
 | |
| 
 | |
| #ifndef ENOMEM
 | |
| #define ENOMEM 12
 | |
| #endif
 | |
| 
 | |
| #ifndef EEXIST
 | |
| #define EEXIST 17
 | |
| #endif
 | |
| 
 | |
| #ifndef ENOTDIR
 | |
| #define ENOTDIR 20
 | |
| #endif
 | |
| 
 | |
| #ifndef EISDIR
 | |
| #define EISDIR 21
 | |
| #endif
 | |
| 
 | |
| 
 | |
| // Mode flags
 | |
| 
 | |
| #ifndef S_IFMT
 | |
| #define S_IFMT		0170000
 | |
| #endif
 | |
| 
 | |
| #ifndef S_IFLNK
 | |
| #define S_IFLNK		0120000
 | |
| #endif
 | |
| 
 | |
| #ifndef S_IFDIR
 | |
| #define S_IFDIR		0040000
 | |
| #endif
 | |
| 
 | |
| #ifndef S_IFREG
 | |
| #define S_IFREG		0100000
 | |
| #endif
 | |
| 
 | |
| #ifndef S_IREAD
 | |
| #define S_IREAD		0000400
 | |
| #endif
 | |
| 
 | |
| #ifndef S_IWRITE
 | |
| #define	S_IWRITE	0000200
 | |
| #endif
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| struct yaffs_dirent{
 | |
|     long d_ino;                 /* inode number */
 | |
|     off_t d_off;                /* offset to this dirent */
 | |
|     unsigned short d_reclen;    /* length of this d_name */
 | |
|     char d_name [NAME_MAX+1];   /* file name (null-terminated) */
 | |
|     unsigned d_dont_use;	/* debug pointer, not for public consumption */
 | |
| };
 | |
| 
 | |
| typedef struct yaffs_dirent yaffs_dirent;
 | |
| 
 | |
| 
 | |
| typedef struct __opaque yaffs_DIR;
 | |
| 
 | |
| 
 | |
| 
 | |
| struct yaffs_stat{
 | |
|     int		      st_dev;      /* device */
 | |
|     int           st_ino;      /* inode */
 | |
|     mode_t        st_mode;     /* protection */
 | |
|     int           st_nlink;    /* number of hard links */
 | |
|     int           st_uid;      /* user ID of owner */
 | |
|     int           st_gid;      /* group ID of owner */
 | |
|     unsigned      st_rdev;     /* device type (if inode device) */
 | |
|     off_t         st_size;     /* total size, in bytes */
 | |
|     unsigned long st_blksize;  /* blocksize for filesystem I/O */
 | |
|     unsigned long st_blocks;   /* number of blocks allocated */
 | |
|     unsigned long yst_atime;    /* time of last access */
 | |
|     unsigned long yst_mtime;    /* time of last modification */
 | |
|     unsigned long yst_ctime;    /* time of last change */
 | |
| };
 | |
| 
 | |
| int yaffs_open(const char *path, int oflag, int mode) ;
 | |
| int yaffs_read(int fd, void *buf, unsigned int nbyte) ;
 | |
| int yaffs_write(int fd, const void *buf, unsigned int nbyte) ;
 | |
| int yaffs_close(int fd) ;
 | |
| off_t yaffs_lseek(int fd, off_t offset, int whence) ;
 | |
| int yaffs_truncate(int fd, off_t newSize);
 | |
| 
 | |
| int yaffs_unlink(const char *path) ;
 | |
| int yaffs_rename(const char *oldPath, const char *newPath) ;
 | |
| 
 | |
| int yaffs_stat(const char *path, struct yaffs_stat *buf) ;
 | |
| int yaffs_lstat(const char *path, struct yaffs_stat *buf) ;
 | |
| int yaffs_fstat(int fd, struct yaffs_stat *buf) ;
 | |
| 
 | |
| int yaffs_chmod(const char *path, mode_t mode);
 | |
| int yaffs_fchmod(int fd, mode_t mode);
 | |
| 
 | |
| int yaffs_mkdir(const char *path, mode_t mode) ;
 | |
| int yaffs_rmdir(const char *path) ;
 | |
| 
 | |
| yaffs_DIR *yaffs_opendir(const char *dirname) ;
 | |
| struct yaffs_dirent *yaffs_readdir(yaffs_DIR *dirp) ;
 | |
| void yaffs_rewinddir(yaffs_DIR *dirp) ;
 | |
| int yaffs_closedir(yaffs_DIR *dirp) ;
 | |
| 
 | |
| int yaffs_mount(const char *path) ;
 | |
| int yaffs_unmount(const char *path) ;
 | |
| 
 | |
| int yaffs_symlink(const char *oldpath, const char *newpath);
 | |
| int yaffs_readlink(const char *path, char *buf, int bufsiz);
 | |
| 
 | |
| int yaffs_link(const char *oldpath, const char *newpath);
 | |
| int yaffs_mknod(const char *pathname, mode_t mode, dev_t dev);
 | |
| 
 | |
| loff_t yaffs_freespace(const char *path);
 | |
| 
 | |
| void yaffs_initialise(yaffsfs_DeviceConfiguration *configList);
 | |
| 
 | |
| int yaffs_StartUp(void);
 | |
| 
 | |
| #endif
 |