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

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

?? super.c

?? 適合linux的新手使用,很經典,簡單,方便.
?? 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__("ax"); \__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一区二区三区免费野_久草精品视频
日韩国产精品久久| 欧美一区二区三区免费视频| 成人免费在线视频观看| 在线一区二区视频| 日日骚欧美日韩| 2021中文字幕一区亚洲| 91在线精品秘密一区二区| 天堂成人国产精品一区| 国产区在线观看成人精品 | 欧美羞羞免费网站| 国产在线精品免费| 亚洲成a天堂v人片| 欧美成人video| 色综合 综合色| 成人综合婷婷国产精品久久| 免费看精品久久片| 亚洲国产精品影院| 亚洲精品久久久蜜桃| 国产精品的网站| 国产精品色婷婷久久58| 日韩美女在线视频 | av电影一区二区| 极品少妇xxxx精品少妇| 美女一区二区在线观看| 天天做天天摸天天爽国产一区| 亚洲欧美一区二区三区孕妇| 国产精品灌醉下药二区| 亚洲最大的成人av| 日韩精品电影在线| 男女激情视频一区| 国产一区二三区好的| 国产69精品久久777的优势| 成人丝袜视频网| 一本大道综合伊人精品热热| 97久久超碰国产精品电影| 欧美四级电影网| 精品久久一区二区| 国产精品久久久99| 亚洲国产欧美另类丝袜| 免费精品视频在线| 不卡电影免费在线播放一区| 色拍拍在线精品视频8848| 88在线观看91蜜桃国自产| 久久久不卡网国产精品一区| 国产精品久久久久影院色老大| 亚洲午夜免费视频| 国产99久久久精品| 在线不卡一区二区| 亚洲欧美一区二区三区久本道91| 天天做天天摸天天爽国产一区| 国产一区二区电影| 欧美精品高清视频| 亚洲伊人色欲综合网| 国产69精品一区二区亚洲孕妇| 日本韩国欧美在线| 成年人国产精品| 日日嗨av一区二区三区四区| 国产成人综合精品三级| 精品视频一区三区九区| 国产精品每日更新在线播放网址| 午夜精品久久久久久久99樱桃| 欧美日韩不卡在线| 欧美成人性战久久| 亚洲国产精品久久久久婷婷884| 狠狠色丁香久久婷婷综合_中| 在线看日韩精品电影| 欧美一区二区高清| 青青草一区二区三区| 欧美一区二区播放| 国产老妇另类xxxxx| 欧美一区二区三区四区高清| 亚洲一区日韩精品中文字幕| 欧美亚洲自拍偷拍| 午夜影院久久久| 色婷婷久久一区二区三区麻豆| 久久久久久久久97黄色工厂| 婷婷亚洲久悠悠色悠在线播放| 在线视频观看一区| 一个色在线综合| 678五月天丁香亚洲综合网| 一区二区在线观看视频| 亚洲欧美在线另类| 高清shemale亚洲人妖| 国产欧美综合在线观看第十页 | 欧美亚日韩国产aⅴ精品中极品| 综合分类小说区另类春色亚洲小说欧美| 男人的天堂亚洲一区| 精品久久久三级丝袜| 国产精品一区三区| 国产精品电影一区二区| 欧美日韩视频在线第一区| 国产成人三级在线观看| 亚洲在线成人精品| 久久久久久久久蜜桃| www.日韩在线| 青青草国产成人99久久| 中文字幕人成不卡一区| 欧美成人官网二区| 91黄视频在线| 色94色欧美sute亚洲线路一ni| 天堂成人免费av电影一区| 久久精品亚洲麻豆av一区二区 | 欧美精品一卡二卡| 色综合久久天天| av不卡在线观看| 大白屁股一区二区视频| 国产在线视频不卡二| 裸体一区二区三区| 亚洲成人中文在线| 视频在线在亚洲| 亚洲另类中文字| 伊人婷婷欧美激情| 亚洲乱码日产精品bd| 国产精品麻豆99久久久久久| 欧美一区二区三区喷汁尤物| 91麻豆精品在线观看| 国产乱码精品一区二区三区av | 国产精品久久久久婷婷| 亚洲欧洲色图综合| 亚洲国产成人高清精品| 日本欧美一区二区在线观看| 久久成人免费电影| 成人av在线网| 欧美色倩网站大全免费| 91精品在线一区二区| 久久久欧美精品sm网站| 国产精品福利一区| 一区二区高清免费观看影视大全| 亚洲免费av观看| 婷婷一区二区三区| 国内外成人在线| 99精品久久只有精品| 欧美电影一区二区三区| 亚洲国产精品二十页| 日韩影院在线观看| 91丨porny丨首页| 久久日一线二线三线suv| 亚洲综合丁香婷婷六月香| 国产精品一区二区果冻传媒| 欧美视频一区在线观看| 国产亚洲精品aa| 紧缚奴在线一区二区三区| 欧美日韩精品专区| 国产精品毛片久久久久久| 亚洲电影激情视频网站| 91一区在线观看| 亚洲国产精品成人综合| 久久99久久99| 欧美一区二区三区电影| 日韩在线播放一区二区| 日韩亚洲欧美综合| 日本美女视频一区二区| 欧美r级在线观看| 免费成人小视频| 91精品欧美综合在线观看最新 | 国产欧美日韩在线看| 精品一区二区三区久久| 欧美日韩国产免费| 性感美女极品91精品| 欧美一区二区在线免费观看| 亚洲一区欧美一区| 日韩欧美在线综合网| 精品亚洲国产成人av制服丝袜| 7777精品伊人久久久大香线蕉完整版| 成人免费在线观看入口| 91久久久免费一区二区| 夜夜操天天操亚洲| 日韩亚洲电影在线| 精品一区二区三区不卡| 久久久91精品国产一区二区三区| 激情综合色播激情啊| 国产精品家庭影院| 欧美亚洲国产一卡| 国产激情一区二区三区桃花岛亚洲| 中文字幕在线免费不卡| 日本高清不卡一区| 亚洲综合激情另类小说区| 精品国产一区二区三区不卡 | 男男成人高潮片免费网站| 久久精品一区二区| 欧美精品色综合| 91福利小视频| av高清久久久| 经典三级视频一区| 麻豆视频一区二区| 奇米影视一区二区三区小说| 亚洲女与黑人做爰| 一区免费观看视频| 国产欧美日韩综合精品一区二区| 91视视频在线观看入口直接观看www | 99精品在线观看视频| 精品影院一区二区久久久| 蜜臀av一区二区在线免费观看| 亚洲一级二级在线| 亚洲综合免费观看高清完整版| 久久综合九色综合欧美亚洲| 欧美一区二区性放荡片| 色欧美乱欧美15图片| 成人国产精品免费观看| 国产福利一区在线|