Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
X
xv6-public
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
统计图
问题
0
问题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
银宸时代
OS Lab Group
奖励实验
xv6-public
提交
fae7779d
提交
fae7779d
9月 05, 2006
创建
作者:
rsc
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
New formatting scripts.
The use/defs extraction in runoff still needs some work for xv6 code style.
上级
a81e0213
显示空白字符变更
内嵌
并排
正在显示
4 个修改的文件
包含
185 行增加
和
9 行删除
+185
-9
.cvsignore
.cvsignore
+1
-0
Makefile
Makefile
+6
-9
runoff
runoff
+128
-0
runoff.list
runoff.list
+50
-0
没有找到文件。
.cvsignore
浏览文件 @
fae7779d
...
...
@@ -11,3 +11,4 @@ bootblock
bootother
bootother.out
parport.out
fmt
Makefile
浏览文件 @
fae7779d
...
...
@@ -58,6 +58,7 @@ tags: $(OBJS) bootother.S init
etags
*
.S
*
.c
PRINT
=
\
runoff.list
\
README
\
types.h param.h defs.h x86.h asm.h elf.h mmu.h spinlock.h
\
bootasm.S bootother.S main.c init.c spinlock.c
\
...
...
@@ -69,15 +70,11 @@ PRINT = \
console.c
\
string.c
\
# make a print, but the resulting xv6.ind need some editing
print
:
$(PRINT)
lgrind
-d
./lgrindef
$(PRINT)
>
xv6.tex
latex xv6.tex
makeindex xv6.idx
latex xv6.tex
dvips
-o
xv61.ps xv6.dvi
psnup
-2
xv61.ps
>
xv6.ps
rm
-f
xv61.ps
# make a printout
xv6.pdf
:
$(PRINT)
./runoff
print
:
xv6.pdf
vectors.S
:
vectors.pl
perl vectors.pl
>
vectors.S
...
...
runoff
0 → 100755
浏览文件 @
fae7779d
#!/bin/sh
echo
This script takes a minute to run. Be patient. 1>&2
# pad stdin to multiple of 120 lines
pad
()
{
awk
'{print} END{for(; NR%120!=0; NR++) print ""}'
}
# create formatted (numbered) files
mkdir
-p
fmt
rm fmt
/
*
cp
README
fmt
files
=
`
grep
-v
'^#'
runoff.list |
awk
'{print $1}'
`
n
=
99
for
i
in
$files
do
awk
-v
'n='
$n
'
BEGIN{n=int((n+49)/50)*50-1; nb=0; nr=0}
NF==0 { nb++; next }
{for(i=0; i<nb; i++) printf("%04d\n", n+ ++nr); nb=0; printf("%04d %s\n", n+ ++nr, $0)}
END{for(nr++; nr%50 != 1; nr++) printf("%04d\n", n+nr);}
'
$i
>
fmt
/
$i
n
=
`
tail
-1
fmt
/
$i
|
awk
'{print $1}'
`
done
# create table of contents
pr
-e8
-t
runoff.list |
awk
'
/^[a-z]/ {
s=$0
f="fmt/"$1
getline<f
close(f)
n=$1
printf("%02d %s\n", n/100, s);
next
}
{
print
}'
>
fmt
/toc
# make definition list
cd fmt
awk
'
/^[0-9]+ [A-Za-z0-9_]+ .*[A-Za-z0-9_].*;/ {
s=$0;
sub(/\[.*/, "", s);
sub(/\(.*/, "", s);
sub(/ *=.*/, "", s);
sub(/.* \**/, "", s);
sub(/;.*/, "", s);
print $1, s
}
$2=="#define" {
if($3 ~ /\(/){
sub(/\(.*/, "", $3); print $1, $3
} else {
s = ""
for(i=4; i<=NF; i++){
s = s $i
}
print $1, $3, s
}
}
$2=="enum" { inenum = 1; v=-1; }
$2 == "};" { inenum = 0; }
inenum && $2 ~ /^[A-Z][a-zA-Z0-9_]+$/ {
if($3 == "="){
s = ""
for(i=4; i<=NF; i++){
s = s " " $i
}
sub(/,$/, "", s);
sub(/^ /, "", s);
v = s;
}else
v++;
print $1, $2, v;
}
$2=="struct" && $3 ~ /^[A-Z][a-zA-Z0-9_]+$/ {
print $1, $3;
}
'
$files
>
defs
9
sed
-n
's/^([0-9]+ [a-zA-Z0-9_]+)(.*)$/\1/p'
$files
|
egrep
-v
' (usage|main|if|for)$'
>>
defs
(
>
s.defs
# make reference list
for
i
in
`
awk
'{print $2}'
defs |
sort
-fu
`
do
defs
=
`
egrep
'^[0-9]+ '
$i
'( |$)'
defs |
awk
'{print $1}'
`
echo
$i
$defs
>>
s.defs
uses
=
`
egrep
-h
'([^a-zA-Z_0-9])'
$i
'($|[^a-zA-Z_0-9])'
$files
|
awk
'{print $1}'
`
echo
$i
$defs
echo
$uses
|fmt
-24
|
sed
's/^/ /'
done
)
>
refs
# build defs list
awk
'
{
printf("%04d %s\n", $2, $1);
for(i=3; i<=NF; i++)
printf("%04d \" \n", $i);
}
'
s.defs
>
t.defs
# format the whole thing
(
pr
-l60
-e4
README
pr
-l60
-e4
toc
pr
-l60
-h
"definitions"
-2
t.defs | pad
pr
-l60
-h
"cross-references"
-2
refs | pad
pr
-l60
-e4
$files
)
| mpage
-m50t50b
-o
-bLetter
-t
-2
-FCourier
-L60
>
all.ps
grep
Pages: all.ps
# if we have the nice font, use it
nicefont
=
/home/am8/rsc/plan9/sys/lib/postscript/font/LucidaSans-Typewriter83
if
[
-f
$nicefont
]
then
(
sed
1q all.ps
;
cat
$nicefont
;
sed
'1d; s/Courier/LucidaSans-Typewriter83/'
all.ps
)
>
allf.ps
else
cp
all.ps allf.ps
fi
ps2pdf allf.ps ../xv6.pdf
runoff.list
0 → 100644
浏览文件 @
fae7779d
# basic headers
types.h
param.h
defs.h
x86.h
asm.h
elf.h
mmu.h
spinlock.h
# low level startup
bootasm.S
bootother.S
main.c
init.c
spinlock.c
proc.h
proc.c
setjmp.S
kalloc.c
syscall.h
trapasm.S
traps.h
trap.c
vectors.pl
syscall.c
# file system
buf.h
dev.h
fcntl.h
stat.h
fd.h
fs.h
fsvar.h
fd.c
fs.c
bio.c
ide.c
pipe.c
# mp and other "uninteresting" things
mp.h
ioapic.h
mp.c
lapic.c
ioapic.c
picirq.c
console.c
string.c
编写
预览
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论