Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
X
xv6-public
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
统计图
问题
0
问题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
银宸时代
OS Lab Group
奖励实验
xv6-public
提交
c6b099ce
提交
c6b099ce
2月 14, 2012
创建
作者:
Nickolai Zeldovich
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
use a virtual do_gc() function instead of virtual destructor; gives more freedom…
use a virtual do_gc() function instead of virtual destructor; gives more freedom in choice of memory allocation
上级
6b85612e
隐藏空白字符变更
内嵌
并排
正在显示
11 个修改的文件
包含
27 行增加
和
11 行删除
+27
-11
buf.hh
buf.hh
+1
-1
cpprt.cc
cpprt.cc
+6
-0
crange.cc
crange.cc
+2
-1
file.hh
file.hh
+2
-1
fs.cc
fs.cc
+2
-1
gc.cc
gc.cc
+1
-1
gc.hh
gc.hh
+1
-1
lockstat.h
lockstat.h
+1
-1
ns.hh
ns.hh
+5
-1
proc.cc
proc.cc
+2
-1
vm.hh
vm.hh
+4
-2
没有找到文件。
buf.hh
浏览文件 @
c6b099ce
...
...
@@ -13,7 +13,7 @@ struct buf : public rcu_freed {
u8
data
[
512
];
buf
()
:
rcu_freed
(
"buf"
)
{}
virtual
~
buf
()
{
}
virtual
void
do_gc
()
{
delete
this
;
}
};
#define B_BUSY 0x1 // buffer is locked by some process
#define B_VALID 0x2 // buffer has been read from disk
...
...
cpprt.cc
浏览文件 @
c6b099ce
...
...
@@ -14,3 +14,9 @@ operator delete(void *p)
{
kmfree
(
p
);
}
extern
"C"
void
__cxa_pure_virtual
(
void
)
{
panic
(
"__cxa_pure_virtual"
);
}
crange.cc
浏览文件 @
c6b099ce
...
...
@@ -111,8 +111,9 @@ class range_delayed : public rcu_freed {
public
:
range_delayed
(
range
*
e
)
:
rcu_freed
(
"range_delayed"
),
_e
(
e
)
{}
virtual
~
range_delayed
()
{
virtual
void
do_gc
()
{
range_free
(
_e
);
delete
this
;
}
};
...
...
file.hh
浏览文件 @
c6b099ce
...
...
@@ -39,7 +39,8 @@ struct inode : public rcu_freed {
u32
addrs
[
NDIRECT
+
1
];
inode
();
virtual
~
inode
();
~
inode
();
virtual
void
do_gc
()
{
delete
this
;
}
};
#define I_BUSYR 0x1
...
...
fs.cc
浏览文件 @
c6b099ce
...
...
@@ -485,8 +485,9 @@ class diskblock : public rcu_freed {
public
:
diskblock
(
int
dev
,
u64
block
)
:
rcu_freed
(
"diskblock"
),
_dev
(
dev
),
_block
(
block
)
{}
virtual
~
diskblock
()
{
virtual
void
do_gc
()
{
bfree
(
_dev
,
_block
);
delete
this
;
}
};
...
...
gc.cc
浏览文件 @
c6b099ce
...
...
@@ -63,7 +63,7 @@ gc_free_tofreelist(rcu_freed **head, u64 epoch)
assert
(
0
);
}
nr
=
r
->
_rcu_next
;
delete
r
;
r
->
do_gc
()
;
nfree
++
;
}
*
head
=
r
;
...
...
gc.hh
浏览文件 @
c6b099ce
...
...
@@ -16,5 +16,5 @@ class rcu_freed {
#endif
{}
virtual
~
rcu_freed
()
{}
virtual
void
do_gc
(
void
)
=
0
;
}
__mpalign__
;
lockstat.h
浏览文件 @
c6b099ce
...
...
@@ -27,7 +27,7 @@ struct klockstat : public rcu_freed {
struct
lockstat
s
;
klockstat
()
:
rcu_freed
(
"klockstat"
)
{}
virtual
~
klockstat
()
{
}
virtual
void
do_gc
()
{
delete
this
;
}
};
#else
struct
klockstat
;
...
...
ns.hh
浏览文件 @
c6b099ce
...
...
@@ -26,7 +26,7 @@ class xelem : public rcu_freed {
K
key
;
xelem
(
const
K
&
k
,
const
V
&
v
)
:
rcu_freed
(
"xelem"
),
val
(
v
),
next_lock
(
0
),
next
(
0
),
key
(
k
)
{}
virtual
~
xelem
()
{
}
virtual
void
do_gc
()
{
delete
this
;
}
};
template
<
class
K
,
class
V
>
...
...
@@ -55,6 +55,10 @@ class xns : public rcu_freed {
panic
(
"~xns: not empty"
);
}
virtual
void
do_gc
()
{
delete
this
;
}
u64
allockey
()
{
return
__sync_fetch_and_add
(
&
nextkey
,
1
);
}
...
...
proc.cc
浏览文件 @
c6b099ce
...
...
@@ -185,8 +185,9 @@ class delayedfree : public rcu_freed {
public
:
delayedfree
(
proc
*
p
)
:
rcu_freed
(
"delayed proc free"
),
_p
(
p
)
{}
virtual
~
delayedfree
()
{
virtual
void
do_gc
()
{
kmfree
(
_p
);
delete
this
;
}
};
...
...
vm.hh
浏览文件 @
c6b099ce
//
#define TREE
#define TREE
#include "gc.hh"
...
...
@@ -18,7 +18,9 @@ struct vma : public rcu_freed {
initlock
(
&
lock
,
lockname
,
LOCKSTAT_VM
);
}
virtual
~
vma
();
~
vma
();
virtual
void
do_gc
()
{
delete
this
;
}
};
// A memory object (physical pages or inode).
...
...
编写
预览
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论