Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
X
xv6-public
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
统计图
问题
0
问题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
银宸时代
OS Lab Group
奖励实验
xv6-public
提交
48b82470
提交
48b82470
9月 06, 2006
创建
作者:
rsc
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
break single-line if statements
上级
96d467b3
隐藏空白字符变更
内嵌
并排
正在显示
4 个修改的文件
包含
20 行增加
和
10 行删除
+20
-10
fs.c
fs.c
+14
-7
mp.c
mp.c
+2
-1
sh.c
sh.c
+2
-1
ulib.c
ulib.c
+2
-1
没有找到文件。
fs.c
浏览文件 @
48b82470
...
...
@@ -371,20 +371,23 @@ newblock(struct inode *ip, uint lbn)
if
(
lbn
<
NDIRECT
)
{
if
(
ip
->
addrs
[
lbn
]
==
0
)
{
b
=
balloc
(
ip
->
dev
);
if
(
b
<=
0
)
return
-
1
;
if
(
b
<=
0
)
return
-
1
;
ip
->
addrs
[
lbn
]
=
b
;
}
}
else
{
if
(
ip
->
addrs
[
INDIRECT
]
==
0
)
{
b
=
balloc
(
ip
->
dev
);
if
(
b
<=
0
)
return
-
1
;
if
(
b
<=
0
)
return
-
1
;
ip
->
addrs
[
INDIRECT
]
=
b
;
}
inbp
=
bread
(
ip
->
dev
,
ip
->
addrs
[
INDIRECT
]);
inaddrs
=
(
uint
*
)
inbp
->
data
;
if
(
inaddrs
[
lbn
-
NDIRECT
]
==
0
)
{
b
=
balloc
(
ip
->
dev
);
if
(
b
<=
0
)
return
-
1
;
if
(
b
<=
0
)
return
-
1
;
inaddrs
[
lbn
-
NDIRECT
]
=
b
;
bwrite
(
inbp
,
ip
->
addrs
[
INDIRECT
]);
}
...
...
@@ -407,7 +410,8 @@ writei(struct inode *ip, char *addr, uint off, uint n)
int
lbn
;
while
(
r
<
n
)
{
lbn
=
off
/
BSIZE
;
if
(
lbn
>=
MAXFILE
)
return
r
;
if
(
lbn
>=
MAXFILE
)
return
r
;
if
(
newblock
(
ip
,
lbn
)
<
0
)
{
cprintf
(
"newblock failed
\n
"
);
return
r
;
...
...
@@ -422,8 +426,10 @@ writei(struct inode *ip, char *addr, uint off, uint n)
}
if
(
r
>
0
)
{
if
(
off
>
ip
->
size
)
{
if
(
ip
->
type
==
T_DIR
)
ip
->
size
=
((
off
/
BSIZE
)
+
1
)
*
BSIZE
;
else
ip
->
size
=
off
;
if
(
ip
->
type
==
T_DIR
)
ip
->
size
=
((
off
/
BSIZE
)
+
1
)
*
BSIZE
;
else
ip
->
size
=
off
;
}
iupdate
(
ip
);
}
...
...
@@ -462,7 +468,8 @@ namei(char *path, int mode, uint *ret_off, char **ret_last, struct inode **ret_i
if
(
ret_ip
)
*
ret_ip
=
0
;
if
(
*
cp
==
'/'
)
dp
=
iget
(
rootdev
,
1
);
if
(
*
cp
==
'/'
)
dp
=
iget
(
rootdev
,
1
);
else
{
dp
=
p
->
cwd
;
iincref
(
dp
);
...
...
mp.c
浏览文件 @
48b82470
...
...
@@ -204,7 +204,8 @@ mp_startthem(void)
(
uint
)
_binary_bootother_size
);
for
(
c
=
0
;
c
<
ncpu
;
c
++
){
if
(
c
==
cpu
())
continue
;
if
(
c
==
cpu
())
continue
;
*
(
uint
*
)(
APBOOTCODE
-
4
)
=
(
uint
)
(
cpus
[
c
].
mpstack
)
+
MPSTACK
;
// tell it what to use for %esp
*
(
uint
*
)(
APBOOTCODE
-
8
)
=
(
uint
)
mpmain
;
// tell it where to jump to
lapic_startap
(
cpus
[
c
].
apicid
,
(
uint
)
APBOOTCODE
);
...
...
sh.c
浏览文件 @
48b82470
...
...
@@ -149,7 +149,8 @@ runcmd(void)
}
if
(
strcmp
(
cmdlist
[
c
].
argv
[
0
],
"/cd"
)
==
0
)
{
if
(
debug
)
printf
(
2
,
"/cd %s is build in
\n
"
,
cmdlist
[
c
].
argv
[
1
]);
if
(
debug
)
printf
(
2
,
"/cd %s is build in
\n
"
,
cmdlist
[
c
].
argv
[
1
]);
chdir
(
cmdlist
[
c
].
argv
[
1
]);
return
;
}
...
...
ulib.c
浏览文件 @
48b82470
...
...
@@ -82,7 +82,8 @@ stat(char *n, struct stat *st)
int
r
;
fd
=
open
(
n
,
O_RDONLY
);
if
(
fd
<
0
)
return
-
1
;
if
(
fd
<
0
)
return
-
1
;
r
=
fstat
(
fd
,
st
);
close
(
fd
);
return
r
;
...
...
编写
预览
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论