Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openanolis
cloud-kernel
提交
64d09888
cloud-kernel
项目概览
openanolis
/
cloud-kernel
1 年多 前同步成功
通知
160
Star
36
Fork
7
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
10
列表
看板
标记
里程碑
合并请求
2
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
cloud-kernel
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
10
Issue
10
列表
看板
标记
里程碑
合并请求
2
合并请求
2
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
提交
64d09888
编写于
4月 16, 2012
作者:
M
Michael S. Tsirkin
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
virtio/tools: add delayed interupt mode
Signed-off-by:
N
Michael S. Tsirkin
<
mst@redhat.com
>
上级
e4ae004b
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
23 addition
and
4 deletion
+23
-4
tools/virtio/linux/virtio.h
tools/virtio/linux/virtio.h
+1
-0
tools/virtio/virtio_test.c
tools/virtio/virtio_test.c
+22
-4
未找到文件。
tools/virtio/linux/virtio.h
浏览文件 @
64d09888
...
...
@@ -203,6 +203,7 @@ void *virtqueue_get_buf(struct virtqueue *vq, unsigned int *len);
void
virtqueue_disable_cb
(
struct
virtqueue
*
vq
);
bool
virtqueue_enable_cb
(
struct
virtqueue
*
vq
);
bool
virtqueue_enable_cb_delayed
(
struct
virtqueue
*
vq
);
void
*
virtqueue_detach_unused_buf
(
struct
virtqueue
*
vq
);
struct
virtqueue
*
vring_new_virtqueue
(
unsigned
int
num
,
...
...
tools/virtio/virtio_test.c
浏览文件 @
64d09888
...
...
@@ -144,7 +144,8 @@ static void wait_for_interrupt(struct vdev_info *dev)
}
}
static
void
run_test
(
struct
vdev_info
*
dev
,
struct
vq_info
*
vq
,
int
bufs
)
static
void
run_test
(
struct
vdev_info
*
dev
,
struct
vq_info
*
vq
,
bool
delayed
,
int
bufs
)
{
struct
scatterlist
sl
;
long
started
=
0
,
completed
=
0
;
...
...
@@ -183,8 +184,12 @@ static void run_test(struct vdev_info *dev, struct vq_info *vq, int bufs)
assert
(
started
<=
bufs
);
if
(
completed
==
bufs
)
break
;
if
(
virtqueue_enable_cb
(
vq
->
vq
))
{
wait_for_interrupt
(
dev
);
if
(
delayed
)
{
if
(
virtqueue_enable_cb_delayed
(
vq
->
vq
))
wait_for_interrupt
(
dev
);
}
else
{
if
(
virtqueue_enable_cb
(
vq
->
vq
))
wait_for_interrupt
(
dev
);
}
}
test
=
0
;
...
...
@@ -215,6 +220,14 @@ const struct option longopts[] = {
.
name
=
"no-indirect"
,
.
val
=
'i'
,
},
{
.
name
=
"delayed-interrupt"
,
.
val
=
'D'
,
},
{
.
name
=
"no-delayed-interrupt"
,
.
val
=
'd'
,
},
{
}
};
...
...
@@ -224,6 +237,7 @@ static void help()
fprintf
(
stderr
,
"Usage: virtio_test [--help]"
" [--no-indirect]"
" [--no-event-idx]"
" [--delayed-interrupt]"
"
\n
"
);
}
...
...
@@ -233,6 +247,7 @@ int main(int argc, char **argv)
unsigned
long
long
features
=
(
1ULL
<<
VIRTIO_RING_F_INDIRECT_DESC
)
|
(
1ULL
<<
VIRTIO_RING_F_EVENT_IDX
);
int
o
;
bool
delayed
=
false
;
for
(;;)
{
o
=
getopt_long
(
argc
,
argv
,
optstring
,
longopts
,
NULL
);
...
...
@@ -251,6 +266,9 @@ int main(int argc, char **argv)
case
'i'
:
features
&=
~
(
1ULL
<<
VIRTIO_RING_F_INDIRECT_DESC
);
break
;
case
'D'
:
delayed
=
true
;
break
;
default:
assert
(
0
);
break
;
...
...
@@ -260,6 +278,6 @@ int main(int argc, char **argv)
done:
vdev_info_init
(
&
dev
,
features
);
vq_info_add
(
&
dev
,
256
);
run_test
(
&
dev
,
&
dev
.
vqs
[
0
],
0x100000
);
run_test
(
&
dev
,
&
dev
.
vqs
[
0
],
delayed
,
0x100000
);
return
0
;
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录