Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
X
xv6-public
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
统计图
问题
0
问题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
银宸时代
OS Lab Group
奖励实验
xv6-public
提交
c62bb255
提交
c62bb255
2月 28, 2012
创建
作者:
Silas Boyd-Wickizer
浏览文件
操作
浏览文件
下载
差异文件
Merge branch 'scale-amd64' of
git+ssh://amsterdam.csail.mit.edu/home/am0/6.828/xv6
into scale-amd64
上级
32c58813
bbb74797
隐藏空白字符变更
内嵌
并排
正在显示
12 个修改的文件
包含
40 行增加
和
25 行删除
+40
-25
Makefile
Makefile
+1
-1
README
README
+1
-0
arc4.hh
include/arc4.hh
+2
-2
atomic.hh
include/atomic.hh
+1
-4
atomic_2.h
include/atomic_2.h
+16
-8
cpputil.hh
include/cpputil.hh
+3
-3
fs.cc
kernel/fs.cc
+4
-0
gc.cc
kernel/gc.cc
+2
-1
stddef.h
stdinc/stddef.h
+0
-0
Makefrag.user
user/Makefrag.user
+4
-2
umain.cc
user/umain.cc
+6
-4
uscopedperf.hh
user/uscopedperf.hh
+0
-0
没有找到文件。
Makefile
浏览文件 @
c62bb255
...
...
@@ -26,7 +26,7 @@ NM = $(TOOLPREFIX)nm
OBJCOPY
=
$(TOOLPREFIX)
objcopy
STRIP
=
$(TOOLPREFIX)
strip
INCLUDES
=
-Iinclude
-I
$(QEMUSRC)
-include
param.h
-include
include/compiler.h
INCLUDES
=
-Iinclude
-I
stdinc
-I
$(QEMUSRC)
-include
param.h
-include
include/compiler.h
COMFLAGS
=
-static
-g
-MD
-m64
-O3
-Wall
-Werror
-DHW_
$(HW)
-DXV6
\
-fno-builtin
-fno-strict-aliasing
-fno-omit-frame-pointer
-fms-extensions
\
-mno-sse
-mcx16
-mno-red-zone
$(INCLUDES)
...
...
README
浏览文件 @
c62bb255
...
...
@@ -54,5 +54,6 @@
* user-space version
$ apt-get install libjemalloc-dev
$ make HW=user o.user/utest
include/arc4.hh
浏览文件 @
c62bb255
...
...
@@ -3,7 +3,7 @@ class arc4 {
arc4
(
const
u8
*
key
,
size_t
nbytes
)
{
reset
();
for
(
size_t
n
=
0
;
n
<
nbytes
;
n
+=
128
)
addkey
(
&
key
[
n
],
nbytes
>
n
+
128
?
128
:
n
+
128
-
nbytes
);
addkey
(
&
key
[
n
],
nbytes
-
n
>
128
?
128
:
nbytes
-
n
);
j
=
i
;
}
...
...
@@ -21,7 +21,7 @@ class arc4 {
template
<
class
T
>
T
rand
()
{
T
v
;
for
(
u32
i
=
0
;
i
<
sizeof
(
v
);
i
++
)
*
(
u8
*
)
&
v
=
getbyte
();
i
[(
u8
*
)
&
v
]
=
getbyte
();
return
v
;
}
...
...
include/atomic.hh
浏览文件 @
c62bb255
#pragma once
#if 0
#define __sync_synchronize() do { __asm__ __volatile__("" ::: "memory"); } while (0)
#endif
#define _GLIBCXX_VISIBILITY(x)
#define _GLIBCXX_BEGIN_NAMESPACE_VERSION
#define _GLIBCXX_END_NAMESPACE_VERSION
#define _GLIBCXX_BEGIN_EXTERN_C extern "C" {
#define _GLIBCXX_END_EXTERN_C }
#define __glibcxx_assert(x)
#define __barrier() do { __asm__ __volatile__("" ::: "memory"); } while (0)
#define _GLIBCXX_ATOMIC_BUILTINS_1 1
#define _GLIBCXX_ATOMIC_BUILTINS_2 1
...
...
include/atomic_2.h
浏览文件 @
c62bb255
...
...
@@ -284,9 +284,11 @@ namespace __atomic2
__glibcxx_assert
(
__m
!=
memory_order_release
);
__glibcxx_assert
(
__m
!=
memory_order_acq_rel
);
__sync_synchronize
();
// __sync_synchronize();
__barrier
();
__int_type
__ret
=
_M_i
;
__sync_synchronize
();
// __sync_synchronize();
__barrier
();
return
__ret
;
}
...
...
@@ -296,9 +298,11 @@ namespace __atomic2
__glibcxx_assert
(
__m
!=
memory_order_release
);
__glibcxx_assert
(
__m
!=
memory_order_acq_rel
);
__sync_synchronize
();
// __sync_synchronize();
__barrier
();
__int_type
__ret
=
_M_i
;
__sync_synchronize
();
// __sync_synchronize();
__barrier
();
return
__ret
;
}
...
...
@@ -576,9 +580,11 @@ namespace __atomic2
__glibcxx_assert
(
__m
!=
memory_order_release
);
__glibcxx_assert
(
__m
!=
memory_order_acq_rel
);
__sync_synchronize
();
// __sync_synchronize();
__barrier
();
__pointer_type
__ret
=
_M_p
;
__sync_synchronize
();
// __sync_synchronize();
__barrier
();
return
__ret
;
}
...
...
@@ -588,9 +594,11 @@ namespace __atomic2
__glibcxx_assert
(
__m
!=
memory_order_release
);
__glibcxx_assert
(
__m
!=
memory_order_acq_rel
);
__sync_synchronize
();
// __sync_synchronize();
__barrier
();
__pointer_type
__ret
=
_M_p
;
__sync_synchronize
();
// __sync_synchronize();
__barrier
();
return
__ret
;
}
...
...
include/cpputil.hh
浏览文件 @
c62bb255
...
...
@@ -116,10 +116,10 @@ namespace std {
}
/* C++ runtime */
//
void *operator new(unsigned long nbytes);
//
void *operator new(unsigned long nbytes, void *buf);
void
*
operator
new
(
unsigned
long
nbytes
);
void
*
operator
new
(
unsigned
long
nbytes
,
void
*
buf
);
void
*
operator
new
[](
unsigned
long
nbytes
);
//
void operator delete(void *p);
void
operator
delete
(
void
*
p
);
void
operator
delete
[](
void
*
p
);
/* Ref: http://sourcery.mentor.com/public/cxx-abi/abi.html */
...
...
kernel/fs.cc
浏览文件 @
c62bb255
...
...
@@ -666,6 +666,10 @@ dir_flush(struct inode *dp)
off
+=
sizeof
(
de
);
return
false
;
});
if
(
dp
->
size
!=
off
)
{
dp
->
size
=
off
;
iupdate
(
dp
);
}
}
// Look for a directory entry in a directory.
...
...
kernel/gc.cc
浏览文件 @
c62bb255
...
...
@@ -183,7 +183,8 @@ gc_begin_epoch(void)
return
;
cmpxch
(
&
myproc
()
->
epoch
,
v
+
1
,
(
global_epoch
.
load
()
<<
8
)
+
1
);
// __sync_synchronize();
// We effectively need an mfence here, and cmpxch provides one
// by virtue of being a LOCK instuction.
}
void
...
...
include
/stddef.h
→
stdinc
/stddef.h
浏览文件 @
c62bb255
移动文件
user/Makefrag.user
浏览文件 @
c62bb255
CXXFLAGS := -Iuser $(filter-out -nostdinc++, $(CXXFLAGS)) -msse
CXXFLAGS := -Iuser $(filter-out -nostdinc++
-Istdinc
, $(CXXFLAGS)) -msse
$(O)/utest: $(O)/kernel/crange.o \
$(O)/kernel/gc.o \
...
...
@@ -6,5 +6,7 @@ $(O)/utest: $(O)/kernel/crange.o \
$(O)/user/umain.o
@echo " LD $@"
$(Q)mkdir -p $(@D)
$(Q)$(CXX) -o $@ $^ -lpthread -lrt
$(Q)$(CXX) -o $@ $^ -l
jemalloc -l
pthread -lrt
.PRECIOUS: $(O)/user/%.o
-include $(O)/user/*.d
user/umain.cc
浏览文件 @
c62bb255
...
...
@@ -7,7 +7,7 @@
#include "crange.hh"
#include "atomic_util.hh"
#include "ns.hh"
#include "scopedperf.hh"
#include "
u
scopedperf.hh"
#include "intelctr.hh"
#include "arc4.hh"
#include "amd64.h"
...
...
@@ -60,7 +60,7 @@ proc_start(void *arg)
return
0
;
}
void
static
void
makeproc
(
proc
*
p
)
{
pthread_t
tid
;
...
...
@@ -87,8 +87,9 @@ struct my_range : public range {
static
pthread_barrier_t
worker_b
,
populate_b
;
enum
{
iter_total
=
1000000
};
enum
{
iter_total
=
1000000
0
};
enum
{
crange_items
=
1024
};
enum
{
random_keys
=
0
};
static
void
worker
(
void
*
arg
)
...
...
@@ -97,7 +98,8 @@ worker(void *arg)
for
(
u32
i
=
0
;
i
<
iter_total
/
ncpu
;
i
++
)
{
ANON_REGION
(
"worker op"
,
&
perfgroup
);
u64
k
=
1
+
rnd
<
u32
>
()
%
(
crange_items
*
2
);
u64
rval
=
random_keys
?
rnd
<
u32
>
()
:
myproc
()
->
cpuid
;
u64
k
=
1
+
rval
%
(
crange_items
*
2
);
auto
span
=
cr
->
search_lock
(
k
,
1
);
if
(
rnd
<
u8
>
()
&
1
)
{
ANON_REGION
(
"worker del"
,
&
perfgroup
);
...
...
user/scopedperf.hh
→
user/
u
scopedperf.hh
浏览文件 @
c62bb255
移动文件
编写
预览
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论