Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
X
xv6-public
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
统计图
问题
0
问题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
银宸时代
OS Lab Group
奖励实验
xv6-public
提交
5a71f933
提交
5a71f933
9月 07, 2006
创建
作者:
rsc
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
debugging rearrangements
上级
ab17e319
隐藏空白字符变更
内嵌
并排
正在显示
1 个修改的文件
包含
12 行增加
和
10 行删除
+12
-10
console.c
console.c
+12
-10
没有找到文件。
console.c
浏览文件 @
5a71f933
...
...
@@ -5,6 +5,7 @@
#include "spinlock.h"
#include "dev.h"
#include "param.h"
#include "mmu.h"
struct
spinlock
console_lock
;
int
panicked
=
0
;
...
...
@@ -151,11 +152,17 @@ cprintf(char *fmt, ...)
void
panic
(
char
*
s
)
{
int
i
;
uint
pcs
[
10
];
__asm
__volatile
(
"cli"
);
use_console_lock
=
0
;
cprintf
(
"panic (%d): "
,
cpu
());
cprintf
(
s
,
0
);
cprintf
(
"
\n
"
,
0
);
getcallerpcs
(
&
s
,
pcs
);
for
(
i
=
0
;
i
<
10
;
i
++
)
cprintf
(
" %p"
,
pcs
[
i
]);
panicked
=
1
;
// freeze other CPU
for
(;;)
;
...
...
@@ -323,22 +330,18 @@ kbd_intr()
acquire
(
&
kbd_lock
);
st
=
inb
(
KBSTATP
);
if
((
st
&
KBS_DIB
)
==
0
){
release
(
&
kbd_lock
);
return
;
}
if
((
st
&
KBS_DIB
)
==
0
)
goto
out
;
data
=
inb
(
KBDATAP
);
if
(
data
==
0xE0
)
{
shift
|=
E0ESC
;
release
(
&
kbd_lock
);
return
;
goto
out
;
}
else
if
(
data
&
0x80
)
{
// Key released
data
=
(
shift
&
E0ESC
?
data
:
data
&
0x7F
);
shift
&=
~
(
shiftcode
[
data
]
|
E0ESC
);
release
(
&
kbd_lock
);
return
;
goto
out
;
}
else
if
(
shift
&
E0ESC
)
{
// Last character was an E0 escape; or with 0x80
data
|=
0x80
;
...
...
@@ -375,12 +378,11 @@ kbd_intr()
if
(
kbd_w
>=
KBD_BUF
)
kbd_w
=
0
;
wakeup
(
&
kbd_r
);
}
else
{
cprintf
(
"kbd overflow
\n
"
);
}
break
;
}
out:
release
(
&
kbd_lock
);
}
...
...
编写
预览
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论