📄 sys_vfs.h
字号:
#ifndef __vfs_INTERFACE_h__
#define __vfs_INTERFACE_h__
#define RWCOUNT int
/**************************************************************************/
/* M A C R O S */
/***************************************************************************/
/*----------------- seek flags ------------------*/
#define SEEK_SET 0 /* offset from beginning of the file*/
#define SEEK_CUR 1 /* offset from current location */
#define SEEK_END 2 /* offset from eof */
/***************** open flags (the 2nd parameter)**********************/ //wanghuidi
#define O_RDONLY 0x0000
#define O_WRONLY 0x0001
#define O_RDWR 0x0002
#define O_TRUNC 0x0200 /* both */
#define O_CREAT 0x0400
#define O_EXCL 0x4000 /* not fcntl */
/*----------------- open flags (the 3rd parameter) --------------------*/
#define _S_IREAD 0x0400 /* Read by owner. */
#define _S_IWRITE 0x0200 /* Write by owner. */
/*------------------ error codes ------------------*/
/* these code should be defined in erron.h in ussally Clib */
#define ENOENT 2 /* No such file or directory */
#define EIO 5 /* I/O error */
#define EBADF 9 /* Bad file number */
#define ENOMEM 12 /* Not enough core */
#define EACCES 13 /* Permission denied */
#define EBUSY 16 /* Device or resource busy */
#define EEXIST 17 /* File exists */
#define EISDIR 21
#define EINVAL 22 /* Invalid argument */
#define EMFILE 24 /* Too many open files */
#define ENOSPC 28 /* No space left on device */
#define ENOTEMPTY 93 /* directory is not empty; or directory is either current working directory or root directory.*/
#define ERANGE 34 /* Math result not representable */
#define EROFS 30 /* Read-only file system */
#define ENAMETOOLONG 78
#define ENOTDIR 20
/*-----------------------------------------------------*/
/* File attribute constants for _findfirst() */
#define _A_NORMAL 0x00 /* Normal file - No read/write restrictions */
#define _A_RDONLY 0x01 /* Read only file */
#define _A_HIDDEN 0x02 /* Hidden file */
#define _A_SYSTEM 0x04 /* System file */
#define _A_SUBDIR 0x10 /* Subdirectory */
#define _A_ARCH 0x20 /* Archive file */
/*-----------------------------------------------------*/
/* FAT file system attribute bits */
#define D_NORMAL 0 /* normal */
#define D_RDONLY 0x01 /* read-only file */
#define D_HIDDEN 0x02 /* hidden */
#define D_SYSTEM 0x04 /* system */
#define D_VOLID 0x08 /* volume id */
#define D_DIR 0x10 /* subdir */
#define D_ARCHIVE 0x20 /* archive bit */
/* /// Added D_DEVICE bit. - Ron Cemer */
//#define D_LFN (D_RDONLY | D_HIDDEN | D_SYSTEM | D_VOLID)
#define D_ALL (D_RDONLY | D_HIDDEN | D_SYSTEM | D_DIR | D_ARCHIVE)
/**************************************************************************/
/* DATA TYPES ABOUT FILE */
/***************************************************************************/
//----------------------------------
struct stat
{
unsigned short st_mode;
// _dev_t st_dev;
// _dev_t st_rdev;
// short st_nlink;
long st_size;
// long st_atime;
unsigned long st_mtime;
// time_t st_ctime;
};//----------------------------------
struct statbuf
{
unsigned short st_mode;
// _dev_t st_dev;
// _dev_t st_rdev;
// short st_nlink;
long st_size;
// long st_atime;
unsigned long st_mtime;
// time_t st_ctime;
};
//----------------------------------
struct _diskfree_t {
unsigned long total_clusters;
unsigned long avail_clusters;
unsigned long sectors_per_cluster;
unsigned long bytes_per_sector;
};
struct f_info
{
char f_name[255];
unsigned char f_attrib;
unsigned int f_time;
unsigned int f_date;
unsigned long f_size;
};
/****************************************************************************/
/***************************************************************************/
/* F U N C T I O N D E C L A R A T I O N S */
/***************************************************************************/
extern int open(char *path,int open_flag,...);
extern int close(int fd);
extern int read(int fd, void *buf,unsigned int size);
extern int write(int fd,void *buf, unsigned int size);
extern long lseek(int fd,long offset,int fromwhere);
extern int unlink(char *filename);
extern int rename(char *oldname, char *newname);
extern int rmdir(char *pathname);
extern int mkdir(char *pathname);
extern int chdir(char *path);
extern char *getcwd( char *buffer, int maxlen );
extern int fstat(int handle, struct stat *statbuf);
extern int stat(char*, struct stat*);
extern int _findfirst(char *name, struct f_info *f_info, unsigned int attr);
extern int _findnext(struct f_info *f_info);
extern int _getdiskfree(short, struct _diskfree_t *);
/****************************************************************************/
extern long vfsFreeSpace(short drive);
extern int _copy(char *path1,char *path2);
extern unsigned char fs_format(unsigned char Drv, unsigned char FAT_Type);
extern int fs_init(void);
extern int fs_mount(int);
/****************************************************************************/
/****************************************************************************/
extern char *get_fs_version(void);
extern void _clsfserrcode ();
extern int _getfserrcode ();
/****************************************************************************/
#endif //# end __FS_INTERFACE_h__
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -