Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
X
xv6-public
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
统计图
问题
0
问题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
银宸时代
OS Lab Group
奖励实验
xv6-public
提交
4c1ef7b0
提交
4c1ef7b0
10月 26, 2011
创建
作者:
Silas Boyd-Wickizer
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Build init.
上级
7bbae2fb
隐藏空白字符变更
内嵌
并排
正在显示
5 个修改的文件
包含
52 行增加
和
38 行删除
+52
-38
Makefile
Makefile
+31
-17
printf.c
printf.c
+9
-9
ulib.c
ulib.c
+4
-4
umalloc.c
umalloc.c
+4
-4
user.h
user.h
+4
-4
没有找到文件。
Makefile
浏览文件 @
4c1ef7b0
#
# XXX compiling user progs with -mcmodel=kernel
#
# Custom config file? Set the default below..
-include
config.mk
TOOLPREFIX
?=
x86_64-jos-elf-
QEMU
?=
qemu-system-x86_64
CPUS
?=
2
NM
=
$(TOOLPREFIX)
nm
CC
=
$(TOOLPREFIX)
gcc
AS
=
$(TOOLPREFIX)
gas
LD
=
$(TOOLPREFIX)
ld
OBJCOPY
=
$(TOOLPREFIX)
objcopy
OBJDUMP
=
$(TOOLPREFIX)
objdump
CFLAGS
=
-fno-pic
-static
-fno-builtin
-fno-strict-aliasing
-O2
-Wall
-MD
-ggdb
-m64
\
-Werror
-std
=
c99
-fms-extensions
-mno-sse
-mcmodel
=
kernel
CFLAGS
+=
$(
shell
$(CC)
-fno-stack-protector
-E
-x
c /dev/null
>
/dev/null 2>&1
&&
echo
-fno-stack-protector
)
ASFLAGS
=
-m64
-gdwarf-2
LDFLAGS
+=
-m
elf_x86_64
OBJS
=
\
asm.o
\
bio.o
\
...
...
@@ -26,24 +49,10 @@ OBJS = \
trap.o
\
trapasm.o
# Custom config file? Set the default below..
-include
config.mk
ULIB
=
ulib.o usys.o printf.o umalloc.o
TOOLPREFIX
?=
x86_64-jos-elf-
QEMU
?=
qemu-system-x86_64
CPUS
?=
2
NM
=
$(TOOLPREFIX)
nm
CC
=
$(TOOLPREFIX)
gcc
AS
=
$(TOOLPREFIX)
gas
LD
=
$(TOOLPREFIX)
ld
OBJCOPY
=
$(TOOLPREFIX)
objcopy
OBJDUMP
=
$(TOOLPREFIX)
objdump
CFLAGS
=
-fno-pic
-static
-fno-builtin
-fno-strict-aliasing
-O2
-Wall
-MD
-ggdb
-m64
\
-Werror
-std
=
c99
-fms-extensions
-mno-sse
-mcmodel
=
kernel
CFLAGS
+=
$(
shell
$(CC)
-fno-stack-protector
-E
-x
c /dev/null
>
/dev/null 2>&1
&&
echo
-fno-stack-protector
)
ASFLAGS
=
-m64
-gdwarf-2
LDFLAGS
+=
-m
elf_x86_64
UPROGS
=
\
_init
\
kernel
:
boot.o $(OBJS) initcode bootother fs.img
$(LD)
$(LDFLAGS)
-T
kernel.ld
-z
max-page-size
=
4096
-e
start
\
...
...
@@ -66,6 +75,11 @@ xv6memfs.img: bootblock kernelmemfs
dd
if
=
bootblock
of
=
xv6memfs.img
conv
=
notrunc
dd
if
=
kernelmemfs
of
=
xv6memfs.img
seek
=
1
conv
=
notrunc
_%
:
%.o $(ULIB)
$(LD)
$(LDFLAGS)
-N
-e
main
-Ttext
0
-o
$@
$^
$(OBJDUMP)
-S
$@
>
$*
.asm
$(OBJDUMP)
-t
$@
|
sed
'1,/SYMBOL TABLE/d; s/ .* / /; /^$$/d'
>
$*
.sym
mkfs
:
mkfs.c fs.h
gcc
-m32
-Werror
-Wall
-o
mkfs mkfs.c
...
...
printf.c
浏览文件 @
4c1ef7b0
...
...
@@ -11,7 +11,7 @@ printint(void (*putch) (void*, char), void *putarg,
static
char
digits
[]
=
"0123456789ABCDEF"
;
char
buf
[
16
];
int
i
,
neg
;
u
int
x
;
int
x
;
neg
=
0
;
if
(
sgn
&&
xx
<
0
){
...
...
@@ -51,9 +51,9 @@ vprintfmt(void (*putch) (void*, char), void *putarg,
}
}
else
if
(
state
==
'%'
){
if
(
c
==
'd'
){
printint
(
putch
,
putarg
,
va_arg
(
ap
,
u
int
),
10
,
1
);
}
else
if
(
c
==
'x'
||
c
==
'p'
)
{
printint
(
putch
,
putarg
,
va_arg
(
ap
,
u
int
),
16
,
0
);
printint
(
putch
,
putarg
,
va_arg
(
ap
,
u
32
),
10
,
1
);
}
else
if
(
c
==
'x'
)
{
printint
(
putch
,
putarg
,
va_arg
(
ap
,
u
32
),
16
,
0
);
}
else
if
(
c
==
's'
){
s
=
(
char
*
)
va_arg
(
ap
,
char
*
);
if
(
s
==
0
)
...
...
@@ -63,7 +63,7 @@ vprintfmt(void (*putch) (void*, char), void *putarg,
s
++
;
}
}
else
if
(
c
==
'c'
){
putch
(
putarg
,
va_arg
(
ap
,
u
int
));
putch
(
putarg
,
va_arg
(
ap
,
u
32
));
}
else
if
(
c
==
'%'
){
putch
(
putarg
,
c
);
}
else
{
...
...
@@ -80,7 +80,7 @@ vprintfmt(void (*putch) (void*, char), void *putarg,
static
void
writec
(
void
*
arg
,
char
c
)
{
int
fd
=
(
int
)
arg
;
int
fd
=
(
int
)
(
u64
)
arg
;
write
(
fd
,
&
c
,
1
);
}
...
...
@@ -90,7 +90,7 @@ printf(int fd, char *fmt, ...)
va_list
ap
;
va_start
(
ap
,
fmt
);
vprintfmt
(
writec
,
(
void
*
)
fd
,
fmt
,
ap
);
vprintfmt
(
writec
,
(
void
*
)
(
u64
)
fd
,
fmt
,
ap
);
va_end
(
ap
);
}
...
...
@@ -111,7 +111,7 @@ writebuf(void *arg, char c)
}
void
vsnprintf
(
char
*
buf
,
u
int
n
,
char
*
fmt
,
va_list
ap
)
vsnprintf
(
char
*
buf
,
u
32
n
,
char
*
fmt
,
va_list
ap
)
{
struct
bufstate
bs
=
{
buf
,
buf
+
n
-
1
};
vprintfmt
(
writebuf
,
(
void
*
)
&
bs
,
fmt
,
ap
);
...
...
@@ -119,7 +119,7 @@ vsnprintf(char *buf, uint n, char *fmt, va_list ap)
}
void
snprintf
(
char
*
buf
,
u
int
n
,
char
*
fmt
,
...)
snprintf
(
char
*
buf
,
u
32
n
,
char
*
fmt
,
...)
{
va_list
ap
;
...
...
ulib.c
浏览文件 @
4c1ef7b0
...
...
@@ -30,10 +30,10 @@ strcmp(const char *p, const char *q)
{
while
(
*
p
&&
*
p
==
*
q
)
p
++
,
q
++
;
return
(
u
char
)
*
p
-
(
uchar
)
*
q
;
return
(
u
8
)
*
p
-
(
u8
)
*
q
;
}
uint
u
nsigned
int
strlen
(
char
*
s
)
{
int
n
;
...
...
@@ -44,7 +44,7 @@ strlen(char *s)
}
void
*
memset
(
void
*
dst
,
int
c
,
uint
n
)
memset
(
void
*
dst
,
int
c
,
u
nsigned
int
n
)
{
stosb
(
dst
,
c
,
n
);
return
dst
;
...
...
@@ -103,7 +103,7 @@ atoi(const char *s)
}
void
*
memcpy
(
void
*
dst
,
const
void
*
src
,
uint
n
)
memcpy
(
void
*
dst
,
const
void
*
src
,
u
nsigned
int
n
)
{
return
memmove
(
dst
,
(
void
*
)
src
,
n
);
}
...
...
umalloc.c
浏览文件 @
4c1ef7b0
...
...
@@ -11,7 +11,7 @@ typedef long Align;
union
header
{
struct
{
union
header
*
ptr
;
u
int
size
;
u
32
size
;
}
s
;
Align
x
;
};
...
...
@@ -44,7 +44,7 @@ free(void *ap)
}
static
Header
*
morecore
(
u
int
nu
)
morecore
(
u
32
nu
)
{
char
*
p
;
Header
*
hp
;
...
...
@@ -61,10 +61,10 @@ morecore(uint nu)
}
void
*
malloc
(
u
int
nbytes
)
malloc
(
u
32
nbytes
)
{
Header
*
p
,
*
prevp
;
u
int
nunits
;
u
32
nunits
;
nunits
=
(
nbytes
+
sizeof
(
Header
)
-
1
)
/
sizeof
(
Header
)
+
1
;
if
((
prevp
=
freep
)
==
0
){
...
...
user.h
浏览文件 @
4c1ef7b0
...
...
@@ -33,11 +33,11 @@ void *memmove(void*, void*, int);
char
*
strchr
(
const
char
*
,
char
c
);
int
strcmp
(
const
char
*
,
const
char
*
);
void
printf
(
int
,
char
*
,
...);
void
snprintf
(
char
*
buf
,
uint
n
,
char
*
fmt
,
...);
void
snprintf
(
char
*
buf
,
u
nsigned
int
n
,
char
*
fmt
,
...);
char
*
gets
(
char
*
,
int
max
);
uint
strlen
(
char
*
);
void
*
memset
(
void
*
,
int
,
uint
);
void
*
malloc
(
uint
);
u
nsigned
int
strlen
(
char
*
);
void
*
memset
(
void
*
,
int
,
u
nsigned
int
);
void
*
malloc
(
u
nsigned
int
);
void
free
(
void
*
);
int
atoi
(
const
char
*
);
...
...
编写
预览
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论