Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
X
xv6-public
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
统计图
问题
0
问题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
银宸时代
OS Lab Group
奖励实验
xv6-public
提交
4fa8614d
提交
4fa8614d
1月 11, 2011
创建
作者:
Russ Cox
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
missing file memide.c
上级
417c3711
隐藏空白字符变更
内嵌
并排
正在显示
1 个修改的文件
包含
58 行增加
和
0 行删除
+58
-0
memide.c
memide.c
+58
-0
没有找到文件。
memide.c
0 → 100644
浏览文件 @
4fa8614d
// Fake IDE disk; stores blocks in memory.
// Useful for running kernel without scratch disk.
#include "types.h"
#include "defs.h"
#include "param.h"
#include "mmu.h"
#include "proc.h"
#include "x86.h"
#include "traps.h"
#include "spinlock.h"
#include "buf.h"
extern
uchar
_binary_fs_img_start
[],
_binary_fs_img_size
[];
static
int
disksize
;
static
uchar
*
memdisk
;
void
ideinit
(
void
)
{
memdisk
=
_binary_fs_img_start
;
disksize
=
(
uint
)
_binary_fs_img_size
/
512
;
}
// Interrupt handler.
void
ideintr
(
void
)
{
// no-op
}
// Sync buf with disk.
// If B_DIRTY is set, write buf to disk, clear B_DIRTY, set B_VALID.
// Else if B_VALID is not set, read buf from disk, set B_VALID.
void
iderw
(
struct
buf
*
b
)
{
uchar
*
p
;
if
(
!
(
b
->
flags
&
B_BUSY
))
panic
(
"iderw: buf not busy"
);
if
((
b
->
flags
&
(
B_VALID
|
B_DIRTY
))
==
B_VALID
)
panic
(
"iderw: nothing to do"
);
if
(
b
->
dev
!=
1
)
panic
(
"iderw: request not for disk 1"
);
if
(
b
->
sector
>=
disksize
)
panic
(
"iderw: sector out of range"
);
p
=
memdisk
+
b
->
sector
*
512
;
if
(
b
->
flags
&
B_DIRTY
){
b
->
flags
&=
~
B_DIRTY
;
memmove
(
p
,
b
->
data
,
512
);
}
else
memmove
(
b
->
data
,
p
,
512
);
b
->
flags
|=
B_VALID
;
}
编写
预览
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论