⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 buffer.c

📁 os arm os arm os arm os arm os arm os arm os arm os arm os arm os arm os arm os arm os arm os arm
💻 C
字号:
#include "../include/fs/fs.h"
#include "../include/s3c2410/cpu.h"

/*
 *	文件系统中的大部分代码是运行在system级别下的,所以我们必须考虑竞争条件。
 *	或许你要问为什么不跟其他系统调用一样运行在SVC级别下?那样就不用考虑竞争
 *	条件啦。这是因为考虑到任务切换的公平性问题,我们知道在SVC下的程序是不可
 *	中断的,一个任务一旦运行在SVC级别下,那他就拥有了所有的系统资源,对于临
 *	界区域的访问,进入SVC级别确实是个好注意,毕竟对临界区域的操作一般只是读
 *	取判断或是赋值,这些操作耗时很小,进入SVC级别后系统很快就能恢复到User级
 *	别,这样不会影响任务切换的速度。但是对文件系统的块操作来说就不是这么回事
 *	了,块操作涉及到搜索,甚至是遍历,又涉及到IO,这些操作是十分耗时的,如果
 *	让一个任务在SVC模式下进行这些操作,那其他任务将等待很长的时间才能被切换
 *	到,这样就大大降低了系统的公平性,所以我们必须让这些耗时的同时又是需要被
 *	保护的操作运行在system级别,这样就能照顾到任务调度的公平性,又考虑到安全性,
 *	一举两得,比较郁闷的是我们必须考虑烦人的竞争条件问题... :(
 */

int buffer_init(unsigned int buffer_start,
	unsigned int buffer_end)
{
	
}

struct buffer_head* gblk(int dev,int block)
{
	
}

struct buffer_head* bread(int dev,int block)
{
	/*struct buffer_head*	bh;
	
	ENTER_CRITICAL;
	bh=gblk(dev,block);
	
	if(bh==0)
		panic("bread: gblk return NULL.\n");
	if(bh->b_uptodate)
	{
		EXIT_CRITICAL;
		return bh;
	}
	
	EXIT_CRITICAL;*/
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -