亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? fs.h

?? JFFS的源代碼
?? H
字號:
#ifndef _FS_H
#define _FS_H

#include "../jffs/jffstypes.h"

#define NR_OPEN 16

#define BLOCK_SIZE 1024
#define BLOCK_SIZE_BITS 10

#define FMODE_READ 1
#define FMODE_WRITE 2

#ifndef NULL
#define NULL ((void *) 0)
#endif

#define NIL_FILP	((struct file *)0)
#define SEL_IN		1
#define SEL_OUT		2
#define SEL_EX		4

/*
 * These are the fs-independent mount-flags: up to 16 flags are supported
 */
#define MS_RDONLY	 1	/* Mount read-only */
#define MS_NOSUID	 2	/* Ignore suid and sgid bits */
#define MS_NODEV	 4	/* Disallow access to device special files */
#define MS_NOEXEC	 8	/* Disallow program execution */
#define MS_SYNCHRONOUS	16	/* Writes are synced at once */
#define MS_REMOUNT	32	/* Alter flags of a mounted FS */
#define MS_MANDLOCK	64	/* Allow mandatory locks on an FS */
#define S_WRITE		128	/* Write on file/directory/symlink */
#define S_APPEND	256	/* Append-only file */
#define S_IMMUTABLE	512	/* Immutable file */
#define MS_NOATIME	1024	/* Do not update access times. */
#define S_BAD_INODE	2048	/* Marker for unreadable inodes */
#define S_ZERO_WR	4096	/* Device accepts 0 length writes */

/*
 * Flags that can be altered by MS_REMOUNT
 */
#define MS_RMT_MASK (MS_RDONLY|MS_NOSUID|MS_NODEV|MS_NOEXEC|MS_SYNCHRONOUS|MS_MANDLOCK|MS_NOATIME)

/*
 * Magic mount flag number. Has to be or-ed to the flag values.
 */
#define MS_MGC_VAL 0xC0ED0000	/* magic flag number to indicate "new" flags */
#define MS_MGC_MSK 0xffff0000	/* magic flag number mask */

/*
 * Note that read-only etc flags are inode-specific: setting some file-system
 * flags just means all the inodes inherit those flags by default. It might be
 * possible to override it selectively if you really wanted to with some
 * ioctl() that is not currently implemented.
 *
 * Exception: MS_RDONLY is always applied to the entire file system.
 */
#define IS_RDONLY(inode) (((inode)->i_sb) && ((inode)->i_sb->s_flags & MS_RDONLY))
#define IS_NOSUID(inode) ((inode)->i_flags & MS_NOSUID)
#define IS_NODEV(inode) ((inode)->i_flags & MS_NODEV)
#define IS_NOEXEC(inode) ((inode)->i_flags & MS_NOEXEC)
#define IS_SYNC(inode) ((inode)->i_flags & MS_SYNCHRONOUS)
#define IS_MANDLOCK(inode) ((inode)->i_flags & MS_MANDLOCK)

#define IS_WRITABLE(inode) ((inode)->i_flags & S_WRITE)
#define IS_APPEND(inode) ((inode)->i_flags & S_APPEND)
#define IS_IMMUTABLE(inode) ((inode)->i_flags & S_IMMUTABLE)
#define IS_NOATIME(inode) ((inode)->i_flags & MS_NOATIME)
#define IS_ZERO_WR(inode) ((inode)->i_flags & S_ZERO_WR)

typedef int (*filldir_t)(void *, const char *, int, off_t, ino_t);

struct iattr {
	unsigned int	ia_valid;
	umode_t		ia_mode;
	uid_t		ia_uid;
	gid_t		ia_gid;
	off_t		ia_size;
	time_t		ia_atime;
	time_t		ia_mtime;
	time_t		ia_ctime;
};

struct statfs {
	long f_type;
	long f_bsize;
	long f_blocks;
	long f_bfree;
	long f_bavail;
	long f_files;
	long f_ffree;
	/*__kernel_fsid_t f_fsid;*/
	long f_namelen;
	long f_spare[6];
};

struct super_operations {
	void (*read_inode) (struct inode *);
	int (*notify_change) (struct inode *, struct iattr *);
	void (*write_inode) (struct inode *);
	void (*put_inode) (struct inode *);
	void (*put_super) (struct super_block *);
	void (*write_super) (struct super_block *);
	void (*statfs) (struct super_block *, struct statfs *, int);
	int (*remount_fs) (struct super_block *, int *, char *);
};

struct file_system_type {
	struct super_block *(*read_super) (struct super_block *, void *, int);
	const char *name;
	int requires_dev;
	struct file_system_type * next;
};

struct super_block {
	kdev_t s_dev;
	unsigned long s_blocksize;
	unsigned char s_blocksize_bits;
	unsigned char s_lock;
	unsigned char s_rd_only;
	unsigned char s_dirt;
	struct file_system_type *s_type;
	struct super_operations *s_op;
	/*struct dquot_operations *dq_op;*/
	unsigned long s_flags;
	unsigned long s_magic;
	unsigned long s_time;
	struct inode * s_covered;
	struct inode * s_mounted;
	/*struct wait_queue * s_wait;TODO*/
	union {
		unsigned char i_ip_pad[40];
		void *generic_sbp;
	} u;
};


/*站位聲明*/
struct vm_area_struct{
	long pad;
};
typedef struct select_table_struct {
	int nr;
	void *entry;
} select_table;

struct file_operations {
	int (*lseek) (struct inode *, struct file *, off_t, int);
	int (*read) (struct inode *, struct file *, char *, int);
	int (*write) (struct inode *, struct file *, const char *, int);
	int (*readdir) (struct inode *, struct file *, void *, filldir_t);
	int (*select) (struct inode *, struct file *, int, select_table *);
	int (*ioctl) (struct inode *, struct file *, unsigned int, unsigned long);
	int (*mmap) (struct inode *, struct file *, struct vm_area_struct *);
	int (*open) (struct inode *, struct file *);
	void (*release) (struct inode *, struct file *);
	int (*fsync) (struct inode *, struct file *);
	int (*fasync) (struct inode *, struct file *, int);
	int (*check_media_change) (kdev_t dev);
	int (*revalidate) (kdev_t dev);
};

struct inode_operations {
	struct file_operations * default_file_ops;
	int (*create) (struct inode *,const char *,int,int,struct inode **);
	int (*lookup) (struct inode *,const char *,int,struct inode **);
	int (*link) (struct inode *,struct inode *,const char *,int);
	int (*unlink) (struct inode *,const char *,int);
	int (*symlink) (struct inode *,const char *,int,const char *);
	int (*mkdir) (struct inode *,const char *,int,int);
	int (*rmdir) (struct inode *,const char *,int);
	int (*mknod) (struct inode *,const char *,int,int,int);
	int (*rename) (struct inode *,const char *,int,struct inode *,const char *,int, int);
	int (*readlink) (struct inode *,char *,int);
	int (*follow_link) (struct inode *,struct inode *,int,int,struct inode **);
	int (*readpage) (struct inode *, struct page *);
	int (*writepage) (struct inode *, struct page *);
	int (*bmap) (struct inode *,int);
	void (*truncate) (struct inode *);
	int (*permission) (struct inode *, int);
	int (*smap) (struct inode *,int);
};

struct inode {
	kdev_t		i_dev;
	unsigned long	i_ino;
	umode_t		i_mode;
	nlink_t		i_nlink;
	uid_t		i_uid;
	gid_t		i_gid;
	kdev_t		i_rdev;
	off_t		i_size;
	time_t		i_atime;
	time_t		i_mtime;
	time_t		i_ctime;
	unsigned long	i_blksize;
	unsigned long	i_blocks;
	unsigned long	i_version;
	unsigned long	i_nrpages;
	/*struct semaphore i_sem;*/
	struct inode_operations *i_op;
	struct super_block *i_sb;
	/*struct wait_queue *i_wait;
	struct file_lock *i_flock;
	struct page *i_pages;
	struct dquot *i_dquot[MAXQUOTAS];*/
	struct inode *i_next, *i_prev;
	struct inode *i_hash_next, *i_hash_prev;
	struct inode *i_bound_to, *i_bound_by;
	struct inode *i_mount;
	unsigned long i_count;	/* needs to be > (address_space * tasks)>>pagebits */
	unsigned short i_flags;
	unsigned short i_writecount;
	unsigned char i_lock;
	unsigned char i_dirt;
	unsigned char i_pipe;
	unsigned char i_sock;
	unsigned char i_seek;
	unsigned char i_update;
 	unsigned char i_condemned;
	union {
		unsigned char i_ip_pad[100];
		void * generic_ip;
	} u;
};

struct file {
	mode_t f_mode;
	loff_t f_pos;
	unsigned short f_flags;
	unsigned short f_count;
	unsigned long f_reada, f_ramax, f_raend, f_ralen, f_rawin;
	struct file *f_next, *f_prev;
	/*struct fown_struct f_owner;*/
	struct inode * f_inode;
	struct file_operations * f_op;
	unsigned long f_version;
	void *private_data;	/* needed for tty driver, and maybe others */
};

/*來自sched.h*/
struct fs_struct {
	int count;
	unsigned short umask;
	struct inode * root, * pwd;
};

extern struct file files_fd[NR_OPEN]; /*靜態分配空間*/
extern struct fs_struct current_fs;
extern int current_fd;	 /*指向打開的文件槽*/

struct inode * iget(struct super_block * sb,int nr);
void iput(struct inode * inode);
unsigned long find_next_zero_bit(void *addr, unsigned long size, unsigned long offset);
struct file * fget(unsigned long fd);
void fput(struct file *file, struct inode *inode);

#define GFP_KERNEL 0
void *kmalloc(unsigned long size, char x);
void kfree( void *p );

struct inode * get_empty_inode(void);
int open_namei(const char * pathname, int flag, int mode,
               struct inode ** res_inode, struct inode * base);

int mf_open(char * filename,int flags,int mode);
int mf_close(unsigned int fd);
int mf_readdir(unsigned int fd, void * dirent, unsigned int count);
int mf_mkdir(const char * pathname, int mode);
long mf_lseek(unsigned int fd, off_t offset, unsigned int origin);
int mf_read(unsigned int fd,char * buf,int count);
int mf_write(unsigned int fd,char * buf,unsigned int count);        
int mf_unlink(const char * pathname); //文件刪除
int mf_ioctl(unsigned int fd, unsigned int cmd, unsigned long arg); //取文件長度
int mf_eof(unsigned int fd);
int mf_rename(const char * oldname, const char * newname, int must_be_dir);


#endif /*_FS_H*/

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产999精品久久| 99久久免费精品高清特色大片| 日本一不卡视频| 激情综合色综合久久| 91蝌蚪国产九色| 久久精品欧美日韩精品| 日韩精品一级中文字幕精品视频免费观看| 国产成人啪免费观看软件 | 亚洲午夜精品久久久久久久久| 久久电影网电视剧免费观看| 91亚洲精品久久久蜜桃网站| 精品国产伦一区二区三区观看方式 | 色哦色哦哦色天天综合| 久久久影院官网| 九九视频精品免费| 欧美色偷偷大香| 亚洲同性gay激情无套| 国产在线视视频有精品| 日韩一区二区在线观看视频| 亚洲线精品一区二区三区八戒| 成人精品视频.| 久久久三级国产网站| 久久er99精品| 欧美成人欧美edvon| 免费美女久久99| 777精品伊人久久久久大香线蕉| 玉足女爽爽91| 在线视频一区二区三| 亚洲精品高清视频在线观看| 99久久精品情趣| 中文字幕一区二区三区在线不卡 | 欧美不卡激情三级在线观看| 日本不卡的三区四区五区| 欧美日韩一区二区不卡| 一区二区激情小说| 91久久久免费一区二区| 亚洲一区二区综合| 欧美日韩久久一区二区| 亚洲成人你懂的| 欧美精品色一区二区三区| 日日摸夜夜添夜夜添精品视频| 欧美三级蜜桃2在线观看| 亚洲不卡av一区二区三区| 7777精品伊人久久久大香线蕉 | 国产成人在线免费| 国产精品污污网站在线观看| 不卡电影一区二区三区| 日韩毛片一二三区| 欧美日韩一区二区三区四区五区| 午夜精品一区在线观看| 日韩丝袜情趣美女图片| 国产在线不卡一卡二卡三卡四卡| 中文字幕精品在线不卡| 一本大道av一区二区在线播放| 依依成人精品视频| 欧美一区二区二区| 国产成人免费在线视频| 一区二区三区四区五区视频在线观看| 色www精品视频在线观看| 午夜电影网一区| 久久综合九色综合欧美亚洲| 99久久er热在这里只有精品66| 亚洲一区二区欧美| 亚洲精品一区二区精华| 99r国产精品| 日韩电影在线免费看| 久久久国产午夜精品| 色av成人天堂桃色av| 免费视频一区二区| 日韩一区在线播放| 日韩一级大片在线观看| 成人av网在线| 久久国内精品自在自线400部| 国产精品久久99| 欧美一区二区三区小说| 成人精品免费视频| 免播放器亚洲一区| 亚洲欧美偷拍三级| 久久综合九色综合97婷婷女人| 91国产免费看| 国产91在线观看丝袜| 亚洲成人中文在线| 国产精品午夜免费| 欧美mv和日韩mv的网站| 在线免费观看成人短视频| 国产一区二区三区国产| 爽爽淫人综合网网站| ...中文天堂在线一区| 欧美精品一区二区三区高清aⅴ| 日本丰满少妇一区二区三区| 国产不卡免费视频| 久久精品国产在热久久| 午夜免费久久看| 亚洲精品免费一二三区| 国产亚洲精品7777| 日韩视频免费观看高清完整版在线观看| 99久久综合国产精品| 久久国产精品一区二区| 五月天婷婷综合| 亚洲嫩草精品久久| 中文字幕一区二区三区四区不卡 | 粉嫩av亚洲一区二区图片| 裸体健美xxxx欧美裸体表演| 依依成人精品视频| 亚洲精品中文在线| 综合久久给合久久狠狠狠97色| 日本一区二区三区四区在线视频| 日韩欧美国产高清| 日韩一区二区高清| 宅男噜噜噜66一区二区66| 欧美日韩国产高清一区二区| 欧美亚洲日本国产| 欧美日韩另类一区| 777色狠狠一区二区三区| 欧美久久久久免费| 777久久久精品| 日韩一区二区在线看| 日韩精品一区二区三区视频| 91精品午夜视频| 91精品国产综合久久福利| 91精品综合久久久久久| 日韩视频在线永久播放| 欧美精品一区二区不卡 | 国产伦精品一区二区三区视频青涩 | av中文字幕在线不卡| 91一区二区在线观看| 91蜜桃婷婷狠狠久久综合9色| 91激情在线视频| 91精品欧美福利在线观看| 欧美大胆人体bbbb| 久久久精品黄色| 中文字幕日本乱码精品影院| 一区二区三区在线观看国产| 亚洲国产精品视频| 久久国产精品99久久久久久老狼| 国产一区二区视频在线| 国产a级毛片一区| 色综合 综合色| 欧美精品国产精品| 久久影院电视剧免费观看| 国产女主播一区| 亚洲国产日日夜夜| 久久99国产精品免费| 成人免费观看av| 欧美日韩不卡一区二区| 久久综合色鬼综合色| 亚洲精品v日韩精品| 美女网站一区二区| 99免费精品视频| 欧美一区二区精品| 亚洲视频一二三| 久久电影国产免费久久电影| 97se亚洲国产综合自在线不卡| 欧美日韩亚洲综合一区| 国产亚洲va综合人人澡精品| 亚洲精品日韩专区silk| 青青草国产精品97视觉盛宴| jlzzjlzz国产精品久久| 日韩视频一区二区三区在线播放 | 亚洲一区二区三区精品在线| 九色综合狠狠综合久久| 在线一区二区三区| 国产农村妇女毛片精品久久麻豆| 亚洲成a人在线观看| 丁香桃色午夜亚洲一区二区三区| 欧美专区日韩专区| 国产精品免费网站在线观看| 日本欧美加勒比视频| 色综合色综合色综合| 久久香蕉国产线看观看99| 亚洲午夜激情网页| 91视频91自| 国产欧美日韩综合| 久久国产婷婷国产香蕉| 欧美老肥妇做.爰bbww| 亚洲免费观看在线观看| 国产成人亚洲精品青草天美| 欧美一区二区福利视频| 五月婷婷久久综合| 在线日韩av片| 亚洲丝袜美腿综合| 国产成人精品影视| 久久综合九色综合欧美就去吻| 日韩不卡免费视频| 欧美日韩一区二区三区四区五区| 亚洲男人的天堂一区二区 | 国产女主播视频一区二区| 久久99日本精品| 欧美老年两性高潮| 亚洲综合男人的天堂| 91农村精品一区二区在线| 中文字幕av不卡| 成人综合婷婷国产精品久久蜜臀 | 国产一区二区三区美女| 制服丝袜国产精品| 日精品一区二区| 91精品国产福利在线观看| 午夜精品国产更新| 欧美日韩在线免费视频| 亚洲一区欧美一区|