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

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

?? super.c

?? Linux0.11的源代碼
?? C
字號:
/* *  linux/fs/super.c * *  (C) 1991  Linus Torvalds *//* * super.c contains code to handle the super-block tables. */#include <linux/config.h>#include <linux/sched.h>#include <linux/kernel.h>#include <asm/system.h>#include <errno.h>#include <sys/stat.h>int sync_dev(int dev);void wait_for_keypress(void);/* set_bit uses setb, as gas doesn't recognize setc */#define set_bit(bitnr,addr) ({ \register int __res ; \__asm__("bt %2,%3;setb %%al":"=a" (__res):"a" (0),"r" (bitnr),"m" (*(addr))); \__res; })struct super_block super_block[NR_SUPER];/* this is initialized in init/main.c */int ROOT_DEV = 0;static void lock_super(struct super_block * sb){	cli();	while (sb->s_lock)		sleep_on(&(sb->s_wait));	sb->s_lock = 1;	sti();}static void free_super(struct super_block * sb){	cli();	sb->s_lock = 0;	wake_up(&(sb->s_wait));	sti();}static void wait_on_super(struct super_block * sb){	cli();	while (sb->s_lock)		sleep_on(&(sb->s_wait));	sti();}struct super_block * get_super(int dev){	struct super_block * s;	if (!dev)		return NULL;	s = 0+super_block;	while (s < NR_SUPER+super_block)		if (s->s_dev == dev) {			wait_on_super(s);			if (s->s_dev == dev)				return s;			s = 0+super_block;		} else			s++;	return NULL;}void put_super(int dev){	struct super_block * sb;	/* struct m_inode * inode;*/	int i;	if (dev == ROOT_DEV) {		printk("root diskette changed: prepare for armageddon\n\r");		return;	}	if (!(sb = get_super(dev)))		return;	if (sb->s_imount) {		printk("Mounted disk changed - tssk, tssk\n\r");		return;	}	lock_super(sb);	sb->s_dev = 0;	for(i=0;i<I_MAP_SLOTS;i++)		brelse(sb->s_imap[i]);	for(i=0;i<Z_MAP_SLOTS;i++)		brelse(sb->s_zmap[i]);	free_super(sb);	return;}static struct super_block * read_super(int dev){	struct super_block * s;	struct buffer_head * bh;	int i,block;	if (!dev)		return NULL;	check_disk_change(dev);	if ((s = get_super(dev)))		return s;	for (s = 0+super_block ;; s++) {		if (s >= NR_SUPER+super_block)			return NULL;		if (!s->s_dev)			break;	}	s->s_dev = dev;	s->s_isup = NULL;	s->s_imount = NULL;	s->s_time = 0;	s->s_rd_only = 0;	s->s_dirt = 0;	lock_super(s);	if (!(bh = bread(dev,1))) {		s->s_dev=0;		free_super(s);		return NULL;	}	*((struct d_super_block *) s) =		*((struct d_super_block *) bh->b_data);	brelse(bh);	if (s->s_magic != SUPER_MAGIC) {		s->s_dev = 0;		free_super(s);		return NULL;	}	for (i=0;i<I_MAP_SLOTS;i++)		s->s_imap[i] = NULL;	for (i=0;i<Z_MAP_SLOTS;i++)		s->s_zmap[i] = NULL;	block=2;	for (i=0 ; i < s->s_imap_blocks ; i++)		if ((s->s_imap[i]=bread(dev,block)))			block++;		else			break;	for (i=0 ; i < s->s_zmap_blocks ; i++)		if ((s->s_zmap[i]=bread(dev,block)))			block++;		else			break;	if (block != 2+s->s_imap_blocks+s->s_zmap_blocks) {		for(i=0;i<I_MAP_SLOTS;i++)			brelse(s->s_imap[i]);		for(i=0;i<Z_MAP_SLOTS;i++)			brelse(s->s_zmap[i]);		s->s_dev=0;		free_super(s);		return NULL;	}	s->s_imap[0]->b_data[0] |= 1;	s->s_zmap[0]->b_data[0] |= 1;	free_super(s);	return s;}int sys_umount(char * dev_name){	struct m_inode * inode;	struct super_block * sb;	int dev;	if (!(inode=namei(dev_name)))		return -ENOENT;	dev = inode->i_zone[0];	if (!S_ISBLK(inode->i_mode)) {		iput(inode);		return -ENOTBLK;	}	iput(inode);	if (dev==ROOT_DEV)		return -EBUSY;	if (!(sb=get_super(dev)) || !(sb->s_imount))		return -ENOENT;	if (!sb->s_imount->i_mount)		printk("Mounted inode has i_mount=0\n");	for (inode=inode_table+0 ; inode<inode_table+NR_INODE ; inode++)		if (inode->i_dev==dev && inode->i_count)				return -EBUSY;	sb->s_imount->i_mount=0;	iput(sb->s_imount);	sb->s_imount = NULL;	iput(sb->s_isup);	sb->s_isup = NULL;	put_super(dev);	sync_dev(dev);	return 0;}int sys_mount(char * dev_name, char * dir_name, int rw_flag){	struct m_inode * dev_i, * dir_i;	struct super_block * sb;	int dev;	if (!(dev_i=namei(dev_name)))		return -ENOENT;	dev = dev_i->i_zone[0];	if (!S_ISBLK(dev_i->i_mode)) {		iput(dev_i);		return -EPERM;	}	iput(dev_i);	if (!(dir_i=namei(dir_name)))		return -ENOENT;	if (dir_i->i_count != 1 || dir_i->i_num == ROOT_INO) {		iput(dir_i);		return -EBUSY;	}	if (!S_ISDIR(dir_i->i_mode)) {		iput(dir_i);		return -EPERM;	}	if (!(sb=read_super(dev))) {		iput(dir_i);		return -EBUSY;	}	if (sb->s_imount) {		iput(dir_i);		return -EBUSY;	}	if (dir_i->i_mount) {		iput(dir_i);		return -EPERM;	}	sb->s_imount=dir_i;	dir_i->i_mount=1;	dir_i->i_dirt=1;		/* NOTE! we don't iput(dir_i) */	return 0;			/* we do that in umount */}void mount_root(void){	int i,free;	struct super_block * p;	struct m_inode * mi;	if (32 != sizeof (struct d_inode))		panic("bad i-node size");	for(i=0;i<NR_FILE;i++)		file_table[i].f_count=0;	if (MAJOR(ROOT_DEV) == 2) {		printk("Insert root floppy and press ENTER");		wait_for_keypress();	}	for(p = &super_block[0] ; p < &super_block[NR_SUPER] ; p++) {		p->s_dev = 0;		p->s_lock = 0;		p->s_wait = NULL;	}	if (!(p=read_super(ROOT_DEV)))		panic("Unable to mount root");	if (!(mi=iget(ROOT_DEV,ROOT_INO)))		panic("Unable to read root i-node");	mi->i_count += 3 ;	/* NOTE! it is logically used 4 times, not 1 */	p->s_isup = p->s_imount = mi;	current->pwd = mi;	current->root = mi;	free=0;	i=p->s_nzones;	while (-- i >= 0)		if (!set_bit(i&8191,p->s_zmap[i>>13]->b_data))			free++;	printk("%d/%d free blocks\n\r",free,p->s_nzones);	free=0;	i=p->s_ninodes+1;	while (-- i >= 0)		if (!set_bit(i&8191,p->s_imap[i>>13]->b_data))			free++;	printk("%d/%d free inodes\n\r",free,p->s_ninodes);}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久精品视频一区二区三区| 亚洲欧美在线aaa| 成人黄色免费短视频| 亚洲欧美一区二区三区极速播放| 欧美一级艳片视频免费观看| 99久久精品免费精品国产| 欧美a级一区二区| 一区二区在线观看免费| 久久精品欧美日韩精品 | 精品制服美女丁香| 亚洲特级片在线| 久久久精品影视| 欧美一级欧美一级在线播放| 日本高清成人免费播放| 高清beeg欧美| 精品一二三四区| 日韩国产欧美在线视频| 亚洲卡通动漫在线| 中文字幕亚洲一区二区av在线| 久久久影院官网| 精品99999| 欧美mv日韩mv国产| 日韩一区二区三区电影在线观看 | 欧美性xxxxxx少妇| 国产一区视频在线看| 亚洲国产一二三| 亚洲欧美日韩成人高清在线一区| 国产欧美1区2区3区| 欧美不卡一区二区三区| 在线成人av网站| 欧美日韩视频不卡| 欧美日韩高清一区| 欧美日韩国产不卡| 欧美日韩久久一区二区| 欧美在线播放高清精品| 欧美亚洲一区三区| 国产午夜久久久久| 国产免费观看久久| 国产喂奶挤奶一区二区三区| 国产亚洲欧美日韩俺去了| 精品国产乱码久久久久久蜜臀| 欧美一区二区三区在线看| 在线不卡一区二区| 欧美一区二区三区视频免费播放| 91精品久久久久久蜜臀| 欧美欧美欧美欧美| 日韩一区和二区| 欧美一区永久视频免费观看| 亚洲国产岛国毛片在线| 精品国一区二区三区| 精品久久久久久久久久久院品网| 日韩欧美123| 国产网站一区二区| 国产精品污污网站在线观看| 日韩毛片一二三区| 一个色在线综合| 婷婷开心激情综合| 麻豆精品一区二区av白丝在线 | 成人一区在线看| 99精品在线免费| 欧美日韩精品一区视频| 日韩欧美一二三| 国产欧美一区二区精品仙草咪| 中文字幕av不卡| 一区二区三区欧美亚洲| 视频一区二区国产| 国产精品原创巨作av| 97久久人人超碰| 欧美日韩国产美女| 久久久影院官网| 樱花草国产18久久久久| 秋霞影院一区二区| 成人午夜伦理影院| 欧美日韩午夜在线| 日韩专区一卡二卡| 91精品国产入口在线| 精品国产一区二区亚洲人成毛片| 久久久久国色av免费看影院| 久久久久久久久久久久久久久99| 国产精品久久久久久久久快鸭| 一区二区不卡在线视频 午夜欧美不卡在 | 亚洲国产精品自拍| 国产专区综合网| 91高清在线观看| 精品国产免费视频| 亚洲蜜臀av乱码久久精品蜜桃| 日韩高清在线电影| av成人动漫在线观看| 日韩视频一区在线观看| 99天天综合性| 亚洲成人第一页| 精品剧情v国产在线观看在线| 久色婷婷小香蕉久久| 欧美日韩一本到| 国产精品第一页第二页第三页| 麻豆91精品91久久久的内涵| 一本在线高清不卡dvd| 亚洲国产精品成人综合| 香港成人在线视频| 高清国产午夜精品久久久久久| 欧美精品v国产精品v日韩精品| 欧美在线色视频| 色综合久久综合| 精品福利二区三区| 亚洲成人久久影院| 91视频你懂的| 国产丝袜欧美中文另类| 日本视频免费一区| 欧美丝袜丝交足nylons图片| 国产精品久久久一本精品| 精品一区二区三区久久| 欧美精品v国产精品v日韩精品| 亚洲精品一二三| 波多野洁衣一区| 日本一区二区免费在线| 国产中文字幕精品| 春色校园综合激情亚洲| 91久久精品一区二区| 国产日韩欧美高清| 日本欧美韩国一区三区| 欧美亚洲另类激情小说| 日韩理论电影院| 成人手机电影网| 国产人伦精品一区二区| 国精产品一区一区三区mba视频| 91精品国产aⅴ一区二区| 亚洲gay无套男同| 欧美探花视频资源| 亚洲一区二区黄色| 91福利视频在线| 亚洲另类春色国产| 99精品久久只有精品| 国产片一区二区| 成人av网站免费观看| 国产精品久久777777| jlzzjlzz欧美大全| 中文字幕佐山爱一区二区免费| 99视频精品免费视频| 日韩一区在线免费观看| 99久久99久久精品免费观看| 综合久久国产九一剧情麻豆| 97aⅴ精品视频一二三区| 一区二区三区中文在线| 欧洲视频一区二区| 亚洲成av人片观看| 欧美视频日韩视频在线观看| **欧美大码日韩| 在线观看一区二区精品视频| 夜夜精品浪潮av一区二区三区| 欧美日韩精品欧美日韩精品一综合 | 国内精品嫩模私拍在线| 久久精品一区二区三区不卡牛牛 | 日韩电影免费在线看| 日韩欧美国产一区在线观看| 国产精品自拍在线| 亚洲天堂av一区| 91麻豆精品国产91久久久资源速度 | 欧美系列一区二区| 视频在线观看一区| 久久九九99视频| 99久久婷婷国产| 日韩国产在线一| 久久亚洲一区二区三区明星换脸| 成人综合在线观看| 亚洲v日本v欧美v久久精品| 欧美精品日韩综合在线| 国产在线视频不卡二| 亚洲丝袜精品丝袜在线| 5858s免费视频成人| 国产福利一区二区三区在线视频| 亚洲天堂2014| 欧美刺激午夜性久久久久久久 | 色婷婷久久综合| 看电视剧不卡顿的网站| 综合久久久久久久| 日韩一卡二卡三卡| 99麻豆久久久国产精品免费| 日韩高清中文字幕一区| 国产精品天美传媒| 日韩亚洲欧美成人一区| 成人ar影院免费观看视频| 午夜激情一区二区| 国产精品日产欧美久久久久| 91超碰这里只有精品国产| 成人蜜臀av电影| 麻豆91免费观看| 亚洲自拍另类综合| 国产欧美一区二区精品仙草咪| 欧美美女喷水视频| eeuss鲁片一区二区三区在线看| 视频一区在线播放| 亚洲三级在线播放| 欧美mv和日韩mv国产网站| 欧美色欧美亚洲另类二区| 成人晚上爱看视频| 蓝色福利精品导航| 石原莉奈一区二区三区在线观看 | 亚洲午夜一二三区视频| 久久精品欧美日韩| 欧美一区二区三区在|