Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
X
xv6-public
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
统计图
问题
0
问题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
银宸时代
OS Lab Group
奖励实验
xv6-public
提交
1dca3afb
提交
1dca3afb
9月 07, 2006
创建
作者:
rsc
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
remove _ prefixes
上级
05a7bbe0
隐藏空白字符变更
内嵌
并排
正在显示
5 个修改的文件
包含
23 行增加
和
25 行删除
+23
-25
console.c
console.c
+3
-3
dev.h
dev.h
+2
-4
fs.c
fs.c
+9
-9
ls.c
ls.c
+4
-4
stat.h
stat.h
+5
-5
没有找到文件。
console.c
浏览文件 @
1dca3afb
...
@@ -356,7 +356,7 @@ kbd_intr()
...
@@ -356,7 +356,7 @@ kbd_intr()
c
+=
'a'
-
'A'
;
c
+=
'a'
-
'A'
;
}
}
//
xxx hack
//
Ignore unknown keystrokes.
if
(
c
==
0x0
)
{
if
(
c
==
0x0
)
{
release
(
&
kbd_lock
);
release
(
&
kbd_lock
);
return
;
return
;
...
@@ -406,8 +406,8 @@ console_init()
...
@@ -406,8 +406,8 @@ console_init()
initlock
(
&
console_lock
,
"console"
);
initlock
(
&
console_lock
,
"console"
);
initlock
(
&
kbd_lock
,
"kbd"
);
initlock
(
&
kbd_lock
,
"kbd"
);
devsw
[
CONSOLE
].
d_
write
=
console_write
;
devsw
[
CONSOLE
].
write
=
console_write
;
devsw
[
CONSOLE
].
d_
read
=
console_read
;
devsw
[
CONSOLE
].
read
=
console_read
;
irq_setmask_8259A
(
irq_mask_8259A
&
~
(
1
<<
IRQ_KBD
));
irq_setmask_8259A
(
irq_mask_8259A
&
~
(
1
<<
IRQ_KBD
));
ioapic_enable
(
IRQ_KBD
,
0
);
ioapic_enable
(
IRQ_KBD
,
0
);
...
...
dev.h
浏览文件 @
1dca3afb
struct
devsw
{
struct
devsw
{
int
(
*
d_open
)(
char
*
,
int
);
int
(
*
read
)(
int
,
char
*
,
int
);
int
(
*
d_read
)(
int
,
char
*
,
int
);
int
(
*
write
)(
int
,
char
*
,
int
);
int
(
*
d_write
)(
int
,
char
*
,
int
);
int
(
*
d_close
)(
int
);
};
};
extern
struct
devsw
devsw
[];
extern
struct
devsw
devsw
[];
...
...
fs.c
浏览文件 @
1dca3afb
...
@@ -326,11 +326,11 @@ iincref(struct inode *ip)
...
@@ -326,11 +326,11 @@ iincref(struct inode *ip)
void
void
stati
(
struct
inode
*
ip
,
struct
stat
*
st
)
stati
(
struct
inode
*
ip
,
struct
stat
*
st
)
{
{
st
->
st_
dev
=
ip
->
dev
;
st
->
dev
=
ip
->
dev
;
st
->
st_
ino
=
ip
->
inum
;
st
->
ino
=
ip
->
inum
;
st
->
st_
type
=
ip
->
type
;
st
->
type
=
ip
->
type
;
st
->
st_
nlink
=
ip
->
nlink
;
st
->
nlink
=
ip
->
nlink
;
st
->
s
t_s
ize
=
ip
->
size
;
st
->
size
=
ip
->
size
;
}
}
#define min(a, b) ((a) < (b) ? (a) : (b))
#define min(a, b) ((a) < (b) ? (a) : (b))
...
@@ -342,9 +342,9 @@ readi(struct inode *ip, char *dst, uint off, uint n)
...
@@ -342,9 +342,9 @@ readi(struct inode *ip, char *dst, uint off, uint n)
struct
buf
*
bp
;
struct
buf
*
bp
;
if
(
ip
->
type
==
T_DEV
)
{
if
(
ip
->
type
==
T_DEV
)
{
if
(
ip
->
major
<
0
||
ip
->
major
>=
NDEV
||
!
devsw
[
ip
->
major
].
d_
read
)
if
(
ip
->
major
<
0
||
ip
->
major
>=
NDEV
||
!
devsw
[
ip
->
major
].
read
)
return
-
1
;
return
-
1
;
return
devsw
[
ip
->
major
].
d_
read
(
ip
->
minor
,
dst
,
n
);
return
devsw
[
ip
->
major
].
read
(
ip
->
minor
,
dst
,
n
);
}
}
while
(
n
>
0
&&
off
<
ip
->
size
){
while
(
n
>
0
&&
off
<
ip
->
size
){
...
@@ -400,9 +400,9 @@ int
...
@@ -400,9 +400,9 @@ int
writei
(
struct
inode
*
ip
,
char
*
addr
,
uint
off
,
uint
n
)
writei
(
struct
inode
*
ip
,
char
*
addr
,
uint
off
,
uint
n
)
{
{
if
(
ip
->
type
==
T_DEV
)
{
if
(
ip
->
type
==
T_DEV
)
{
if
(
ip
->
major
<
0
||
ip
->
major
>=
NDEV
||
!
devsw
[
ip
->
major
].
d_
write
)
if
(
ip
->
major
<
0
||
ip
->
major
>=
NDEV
||
!
devsw
[
ip
->
major
].
write
)
return
-
1
;
return
-
1
;
return
devsw
[
ip
->
major
].
d_
write
(
ip
->
minor
,
addr
,
n
);
return
devsw
[
ip
->
major
].
write
(
ip
->
minor
,
addr
,
n
);
}
else
if
(
ip
->
type
==
T_FILE
||
ip
->
type
==
T_DIR
)
{
}
else
if
(
ip
->
type
==
T_FILE
||
ip
->
type
==
T_DIR
)
{
struct
buf
*
bp
;
struct
buf
*
bp
;
int
r
=
0
;
int
r
=
0
;
...
...
ls.c
浏览文件 @
1dca3afb
...
@@ -50,13 +50,13 @@ main(int argc, char *argv[])
...
@@ -50,13 +50,13 @@ main(int argc, char *argv[])
exit
();
exit
();
}
}
switch
(
st
.
st_
type
)
{
switch
(
st
.
type
)
{
case
T_FILE
:
case
T_FILE
:
pname
(
argv
[
1
]);
pname
(
argv
[
1
]);
printf
(
1
,
"%d %d %d
\n
"
,
st
.
st_type
,
st
.
st_ino
,
st
.
st_
size
);
printf
(
1
,
"%d %d %d
\n
"
,
st
.
type
,
st
.
ino
,
st
.
size
);
break
;
break
;
case
T_DIR
:
case
T_DIR
:
sz
=
st
.
s
t_s
ize
;
sz
=
st
.
size
;
for
(
off
=
0
;
off
<
sz
;
off
+=
sizeof
(
struct
dirent
))
{
for
(
off
=
0
;
off
<
sz
;
off
+=
sizeof
(
struct
dirent
))
{
if
(
read
(
fd
,
&
dirent
,
sizeof
dirent
)
!=
sizeof
dirent
)
{
if
(
read
(
fd
,
&
dirent
,
sizeof
dirent
)
!=
sizeof
dirent
)
{
printf
(
1
,
"ls: read error
\n
"
);
printf
(
1
,
"ls: read error
\n
"
);
...
@@ -69,7 +69,7 @@ main(int argc, char *argv[])
...
@@ -69,7 +69,7 @@ main(int argc, char *argv[])
continue
;
continue
;
}
}
pname
(
dirent
.
name
);
pname
(
dirent
.
name
);
printf
(
1
,
"%d %d %d
\n
"
,
st
.
st_type
,
dirent
.
inum
,
st
.
st_
size
);
printf
(
1
,
"%d %d %d
\n
"
,
st
.
type
,
dirent
.
inum
,
st
.
size
);
}
}
}
}
break
;
break
;
...
...
stat.h
浏览文件 @
1dca3afb
struct
stat
{
struct
stat
{
int
st_
dev
;
int
dev
;
uint
st_
ino
;
uint
ino
;
short
st_
type
;
short
type
;
short
st_
nlink
;
short
nlink
;
uint
s
t_s
ize
;
uint
size
;
};
};
编写
预览
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论