Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
X
xv6-public
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
统计图
问题
0
问题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
银宸时代
OS Lab Group
奖励实验
xv6-public
提交
9fc24f92
提交
9fc24f92
3月 18, 2012
创建
作者:
Austin Clements
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Record type names of kalloc'd memory
上级
44c215b1
隐藏空白字符变更
内嵌
并排
正在显示
6 个修改的文件
包含
21 行增加
和
15 行删除
+21
-15
kernel.hh
include/kernel.hh
+1
-1
hwvm.cc
kernel/hwvm.cc
+6
-2
kalloc.cc
kernel/kalloc.cc
+6
-5
kmalloc.cc
kernel/kmalloc.cc
+4
-3
net.cc
kernel/net.cc
+3
-3
vm.cc
kernel/vm.cc
+1
-1
没有找到文件。
include/kernel.hh
浏览文件 @
9fc24f92
...
@@ -125,7 +125,7 @@ void idlezombie(struct proc*);
...
@@ -125,7 +125,7 @@ void idlezombie(struct proc*);
void
ioapicenable
(
int
irq
,
int
cpu
);
void
ioapicenable
(
int
irq
,
int
cpu
);
// kalloc.c
// kalloc.c
char
*
kalloc
(
void
);
char
*
kalloc
(
const
char
*
name
);
void
kfree
(
void
*
);
void
kfree
(
void
*
);
void
*
ksalloc
(
int
slabtype
);
void
*
ksalloc
(
int
slabtype
);
void
ksfree
(
int
slabtype
,
void
*
);
void
ksfree
(
int
slabtype
,
void
*
);
...
...
kernel/hwvm.cc
浏览文件 @
9fc24f92
...
@@ -13,6 +13,10 @@
...
@@ -13,6 +13,10 @@
using
namespace
std
;
using
namespace
std
;
static
const
char
*
levelnames
[]
=
{
"PT"
,
"PD"
,
"PDP"
,
"PML4"
};
static
pgmap
*
static
pgmap
*
descend
(
pgmap
*
dir
,
u64
va
,
u64
flags
,
int
create
,
int
level
)
descend
(
pgmap
*
dir
,
u64
va
,
u64
flags
,
int
create
,
int
level
)
{
{
...
@@ -28,7 +32,7 @@ retry:
...
@@ -28,7 +32,7 @@ retry:
}
else
{
}
else
{
if
(
!
create
)
if
(
!
create
)
return
nullptr
;
return
nullptr
;
next
=
(
pgmap
*
)
kalloc
();
next
=
(
pgmap
*
)
kalloc
(
levelnames
[
level
-
1
]
);
if
(
!
next
)
if
(
!
next
)
return
nullptr
;
return
nullptr
;
memset
(
next
,
0
,
PGSIZE
);
memset
(
next
,
0
,
PGSIZE
);
...
@@ -83,7 +87,7 @@ setupkvm(void)
...
@@ -83,7 +87,7 @@ setupkvm(void)
pgmap
*
pml4
;
pgmap
*
pml4
;
int
k
;
int
k
;
if
((
pml4
=
(
pgmap
*
)
kalloc
())
==
0
)
if
((
pml4
=
(
pgmap
*
)
kalloc
(
"PML4"
))
==
0
)
return
0
;
return
0
;
k
=
PX
(
3
,
KBASE
);
k
=
PX
(
3
,
KBASE
);
memset
(
&
pml4
->
e
[
0
],
0
,
8
*
k
);
memset
(
&
pml4
->
e
[
0
],
0
,
8
*
k
);
...
...
kernel/kalloc.cc
浏览文件 @
9fc24f92
...
@@ -160,7 +160,7 @@ kmemprint()
...
@@ -160,7 +160,7 @@ kmemprint()
}
}
static
char
*
static
char
*
kalloc_pool
(
struct
kmem
*
km
)
kalloc_pool
(
struct
kmem
*
km
,
const
char
*
name
)
{
{
struct
run
*
r
=
0
;
struct
run
*
r
=
0
;
struct
kmem
*
m
;
struct
kmem
*
m
;
...
@@ -196,7 +196,8 @@ kalloc_pool(struct kmem *km)
...
@@ -196,7 +196,8 @@ kalloc_pool(struct kmem *km)
return
0
;
return
0
;
}
}
mtlabel
(
mtrace_label_block
,
r
,
m
->
size
,
"kalloc"
,
sizeof
(
"kalloc"
));
if
(
name
)
mtlabel
(
mtrace_label_block
,
r
,
m
->
size
,
name
,
strlen
(
name
));
if
(
ALLOC_MEMSET
&&
m
->
size
<=
16384
)
if
(
ALLOC_MEMSET
&&
m
->
size
<=
16384
)
memset
(
r
,
2
,
m
->
size
);
memset
(
r
,
2
,
m
->
size
);
...
@@ -207,17 +208,17 @@ kalloc_pool(struct kmem *km)
...
@@ -207,17 +208,17 @@ kalloc_pool(struct kmem *km)
// Returns a pointer that the kernel can use.
// Returns a pointer that the kernel can use.
// Returns 0 if the memory cannot be allocated.
// Returns 0 if the memory cannot be allocated.
char
*
char
*
kalloc
(
void
)
kalloc
(
const
char
*
name
)
{
{
if
(
!
kinited
)
if
(
!
kinited
)
return
pgalloc
();
return
pgalloc
();
return
kalloc_pool
(
kmems
);
return
kalloc_pool
(
kmems
,
name
);
}
}
void
*
void
*
ksalloc
(
int
slab
)
ksalloc
(
int
slab
)
{
{
return
kalloc_pool
(
slabmem
[
slab
]);
return
kalloc_pool
(
slabmem
[
slab
]
,
slabmem
[
slab
]
->
name
);
}
}
void
void
...
...
kernel/kmalloc.cc
浏览文件 @
9fc24f92
...
@@ -34,10 +34,10 @@ kminit(void)
...
@@ -34,10 +34,10 @@ kminit(void)
}
}
// get more space for freelists[c].buckets[b]
// get more space for freelists[c].buckets[b]
int
static
int
morecore
(
int
c
,
int
b
)
morecore
(
int
c
,
int
b
)
{
{
char
*
p
=
kalloc
();
char
*
p
=
kalloc
(
nullptr
);
if
(
p
==
0
)
if
(
p
==
0
)
return
-
1
;
return
-
1
;
...
@@ -103,10 +103,11 @@ kmalloc(u64 nbytes, const char *name)
...
@@ -103,10 +103,11 @@ kmalloc(u64 nbytes, const char *name)
}
}
}
}
mtlabel
(
mtrace_label_heap
,
(
void
*
)
h
,
nbytes
,
name
,
strlen
(
name
));
if
(
ALLOC_MEMSET
)
if
(
ALLOC_MEMSET
)
memset
(
h
,
4
,
(
1
<<
b
));
memset
(
h
,
4
,
(
1
<<
b
));
mtlabel
(
mtrace_label_heap
,
(
void
*
)
h
,
nbytes
,
name
,
strlen
(
name
));
return
h
;
return
h
;
}
}
...
...
kernel/net.cc
浏览文件 @
9fc24f92
...
@@ -32,7 +32,7 @@ netfree(void *va)
...
@@ -32,7 +32,7 @@ netfree(void *va)
void
*
void
*
netalloc
(
void
)
netalloc
(
void
)
{
{
return
kalloc
();
return
kalloc
(
"(netalloc)"
);
}
}
int
int
...
@@ -352,7 +352,7 @@ netwrite(int sock, char *ubuf, int len)
...
@@ -352,7 +352,7 @@ netwrite(int sock, char *ubuf, int len)
int
cc
;
int
cc
;
int
r
;
int
r
;
kbuf
=
kalloc
();
kbuf
=
kalloc
(
"(netwrite)"
);
if
(
kbuf
==
nullptr
)
if
(
kbuf
==
nullptr
)
return
-
1
;
return
-
1
;
...
@@ -375,7 +375,7 @@ netread(int sock, char *ubuf, int len)
...
@@ -375,7 +375,7 @@ netread(int sock, char *ubuf, int len)
int
cc
;
int
cc
;
int
r
;
int
r
;
kbuf
=
kalloc
();
kbuf
=
kalloc
(
"(netread)"
);
if
(
kbuf
==
nullptr
)
if
(
kbuf
==
nullptr
)
return
-
1
;
return
-
1
;
...
...
kernel/vm.cc
浏览文件 @
9fc24f92
...
@@ -56,7 +56,7 @@ vmnode::allocpg()
...
@@ -56,7 +56,7 @@ vmnode::allocpg()
if
(
page
[
i
])
if
(
page
[
i
])
continue
;
continue
;
char
*
p
=
kalloc
();
char
*
p
=
kalloc
(
"(vmnode::allocpg)"
);
if
(
!
p
)
{
if
(
!
p
)
{
cprintf
(
"allocpg: out of memory, leaving half-filled vmnode
\n
"
);
cprintf
(
"allocpg: out of memory, leaving half-filled vmnode
\n
"
);
return
-
1
;
return
-
1
;
...
...
编写
预览
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论