Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
X
xv6-public
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
统计图
问题
0
问题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
银宸时代
OS Lab Group
奖励实验
xv6-public
提交
637baf23
提交
637baf23
2月 19, 2012
创建
作者:
Nickolai Zeldovich
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
misc fixes
上级
ab119414
隐藏空白字符变更
内嵌
并排
正在显示
3 个修改的文件
包含
7 行增加
和
7 行删除
+7
-7
crange.hh
crange.hh
+1
-1
hwvm.cc
hwvm.cc
+2
-2
vm.cc
vm.cc
+4
-4
没有找到文件。
crange.hh
浏览文件 @
637baf23
...
@@ -172,7 +172,7 @@ struct crange_locked {
...
@@ -172,7 +172,7 @@ struct crange_locked {
crange_locked
(
crange_locked
&&
x
);
crange_locked
(
crange_locked
&&
x
);
~
crange_locked
();
~
crange_locked
();
range_iterator
begin
()
const
{
return
range_iterator
(
first_
);
};
range_iterator
begin
()
const
{
return
range_iterator
(
first_
?:
succ_
);
};
range_iterator
end
()
const
{
return
range_iterator
(
succ_
);
};
range_iterator
end
()
const
{
return
range_iterator
(
succ_
);
};
void
replace
(
range
*
r
);
void
replace
(
range
*
r
);
};
};
...
...
hwvm.cc
浏览文件 @
637baf23
...
@@ -218,13 +218,13 @@ tlbflush()
...
@@ -218,13 +218,13 @@ tlbflush()
{
{
u64
myreq
=
tlbflush_req
++
;
u64
myreq
=
tlbflush_req
++
;
cli
();
push
cli
();
int
myid
=
mycpu
()
->
id
;
int
myid
=
mycpu
()
->
id
;
lcr3
(
rcr3
());
lcr3
(
rcr3
());
for
(
int
i
=
0
;
i
<
ncpu
;
i
++
)
for
(
int
i
=
0
;
i
<
ncpu
;
i
++
)
if
(
i
!=
myid
)
if
(
i
!=
myid
)
lapic_tlbflush
(
i
);
lapic_tlbflush
(
i
);
st
i
();
popcl
i
();
for
(
int
i
=
0
;
i
<
ncpu
;
i
++
)
for
(
int
i
=
0
;
i
<
ncpu
;
i
++
)
if
(
i
!=
myid
)
if
(
i
!=
myid
)
...
...
vm.cc
浏览文件 @
637baf23
...
@@ -269,8 +269,8 @@ vmap::insert(vmnode *n, uptr vma_start)
...
@@ -269,8 +269,8 @@ vmap::insert(vmnode *n, uptr vma_start)
u64
len
=
n
->
npages
*
PGSIZE
;
u64
len
=
n
->
npages
*
PGSIZE
;
auto
span
=
cr
.
search_lock
(
vma_start
,
len
);
auto
span
=
cr
.
search_lock
(
vma_start
,
len
);
for
(
auto
x
__attribute__
((
unused
))
:
span
)
{
for
(
auto
e
:
span
)
{
cprintf
(
"vmap::insert: overlap
\n
"
);
cprintf
(
"vmap::insert: overlap
0x%lx @ 0x%lx
\n
"
,
e
->
size
,
e
->
key
);
return
-
1
;
return
-
1
;
}
}
...
@@ -297,8 +297,8 @@ vmap::remove(uptr vma_start, uptr len)
...
@@ -297,8 +297,8 @@ vmap::remove(uptr vma_start, uptr len)
uptr
vma_end
=
vma_start
+
len
;
uptr
vma_end
=
vma_start
+
len
;
auto
span
=
cr
.
search_lock
(
vma_start
,
len
);
auto
span
=
cr
.
search_lock
(
vma_start
,
len
);
for
(
auto
x
:
span
)
{
for
(
auto
e
:
span
)
{
if
(
x
->
key
<
vma_start
||
x
->
key
+
x
->
size
>
vma_end
)
{
if
(
e
->
key
<
vma_start
||
e
->
key
+
e
->
size
>
vma_end
)
{
cprintf
(
"vmap::remove: partial unmap not supported
\n
"
);
cprintf
(
"vmap::remove: partial unmap not supported
\n
"
);
return
-
1
;
return
-
1
;
}
}
...
...
编写
预览
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论