Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openeuler
qemu
提交
e77976a2
Q
qemu
项目概览
openeuler
/
qemu
通知
10
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
Q
qemu
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
e77976a2
编写于
4月 28, 2011
作者:
A
Anthony Liguori
浏览文件
操作
浏览文件
下载
差异文件
Merge remote-tracking branch 'jvrao/for-anthony' into staging
上级
a7d3970d
e14ea479
变更
15
隐藏空白更改
内联
并排
Showing
15 changed file
with
62 addition
and
55 deletion
+62
-55
Makefile.objs
Makefile.objs
+7
-3
Makefile.target
Makefile.target
+4
-2
configure
configure
+2
-0
fsdev/file-op-9p.h
fsdev/file-op-9p.h
+0
-0
fsdev/qemu-fsdev.h
fsdev/qemu-fsdev.h
+1
-1
hw/9pfs/virtio-9p-debug.c
hw/9pfs/virtio-9p-debug.c
+0
-0
hw/9pfs/virtio-9p-debug.h
hw/9pfs/virtio-9p-debug.h
+0
-0
hw/9pfs/virtio-9p-local.c
hw/9pfs/virtio-9p-local.c
+1
-1
hw/9pfs/virtio-9p-posix-acl.c
hw/9pfs/virtio-9p-posix-acl.c
+14
-3
hw/9pfs/virtio-9p-xattr-user.c
hw/9pfs/virtio-9p-xattr-user.c
+1
-1
hw/9pfs/virtio-9p-xattr.c
hw/9pfs/virtio-9p-xattr.c
+1
-1
hw/9pfs/virtio-9p-xattr.h
hw/9pfs/virtio-9p-xattr.h
+0
-0
hw/9pfs/virtio-9p.c
hw/9pfs/virtio-9p.c
+10
-4
hw/9pfs/virtio-9p.h
hw/9pfs/virtio-9p.h
+2
-2
vl.c
vl.c
+19
-37
未找到文件。
Makefile.objs
浏览文件 @
e77976a2
...
@@ -285,9 +285,13 @@ sound-obj-$(CONFIG_HDA) += intel-hda.o hda-audio.o
...
@@ -285,9 +285,13 @@ sound-obj-$(CONFIG_HDA) += intel-hda.o hda-audio.o
adlib.o fmopl.o
:
QEMU_CFLAGS += -DBUILD_Y8950=0
adlib.o fmopl.o
:
QEMU_CFLAGS += -DBUILD_Y8950=0
hw-obj-$(CONFIG_SOUND)
+=
$
(
sound-obj-y
)
hw-obj-$(CONFIG_SOUND)
+=
$
(
sound-obj-y
)
hw-obj-$(CONFIG_REALLY_VIRTFS)
+=
virtio-9p-debug.o
9pfs-nested-$(CONFIG_VIRTFS)
=
virtio-9p-debug.o
hw-obj-$(CONFIG_VIRTFS)
+=
virtio-9p-local.o virtio-9p-xattr.o
9pfs-nested-$(CONFIG_VIRTFS)
+=
virtio-9p-local.o virtio-9p-xattr.o
hw-obj-$(CONFIG_VIRTFS)
+=
virtio-9p-xattr-user.o virtio-9p-posix-acl.o
9pfs-nested-$(CONFIG_VIRTFS)
+=
virtio-9p-xattr-user.o virtio-9p-posix-acl.o
hw-obj-$(CONFIG_REALLY_VIRTFS)
+=
$(
addprefix
9pfs/,
$
(
9pfs-nested-y
))
$(addprefix 9pfs/, $(9pfs-nested-y))
:
CFLAGS += -I$(SRC_PATH)/hw/
######################################################################
######################################################################
# libdis
# libdis
...
...
Makefile.target
浏览文件 @
e77976a2
...
@@ -194,7 +194,7 @@ obj-$(CONFIG_VIRTIO) += virtio-blk.o virtio-balloon.o virtio-net.o virtio-serial
...
@@ -194,7 +194,7 @@ obj-$(CONFIG_VIRTIO) += virtio-blk.o virtio-balloon.o virtio-net.o virtio-serial
obj-$(CONFIG_VIRTIO_PCI)
+=
virtio-pci.o
obj-$(CONFIG_VIRTIO_PCI)
+=
virtio-pci.o
obj-y
+=
vhost_net.o
obj-y
+=
vhost_net.o
obj-$(CONFIG_VHOST_NET)
+=
vhost.o
obj-$(CONFIG_VHOST_NET)
+=
vhost.o
obj-$(CONFIG_REALLY_VIRTFS)
+=
virtio-9p.o
obj-$(CONFIG_REALLY_VIRTFS)
+=
9pfs/
virtio-9p.o
obj-y
+=
rwhandler.o
obj-y
+=
rwhandler.o
obj-$(CONFIG_KVM)
+=
kvm.o kvm-all.o
obj-$(CONFIG_KVM)
+=
kvm.o kvm-all.o
obj-$(CONFIG_NO_KVM)
+=
kvm-stub.o
obj-$(CONFIG_NO_KVM)
+=
kvm-stub.o
...
@@ -401,9 +401,11 @@ hmp-commands.h: $(SRC_PATH)/hmp-commands.hx
...
@@ -401,9 +401,11 @@ hmp-commands.h: $(SRC_PATH)/hmp-commands.hx
qmp-commands.h
:
$(SRC_PATH)/qmp-commands.hx
qmp-commands.h
:
$(SRC_PATH)/qmp-commands.hx
$(
call
quiet-command,sh
$(SRC_PATH)
/scripts/hxtool
-h
<
$<
>
$@
,
" GEN
$(TARGET_DIR)$@
"
)
$(
call
quiet-command,sh
$(SRC_PATH)
/scripts/hxtool
-h
<
$<
>
$@
,
" GEN
$(TARGET_DIR)$@
"
)
9pfs/virtio-9p.o
:
CFLAGS += -I$(SRC_PATH)/hw/
clean
:
clean
:
rm
-f
*
.o
*
.a
*
~
$(PROGS)
nwfpe/
*
.o fpu/
*
.o
rm
-f
*
.o
*
.a
*
~
$(PROGS)
nwfpe/
*
.o fpu/
*
.o
rm
-f
*
.d
*
/
*
.d tcg/
*
.o ide/
*
.o
rm
-f
*
.d
*
/
*
.d tcg/
*
.o ide/
*
.o
9pfs/
*
.o
rm
-f
hmp-commands.h qmp-commands.h gdbstub-xml.c
rm
-f
hmp-commands.h qmp-commands.h gdbstub-xml.c
ifdef
CONFIG_SYSTEMTAP_TRACE
ifdef
CONFIG_SYSTEMTAP_TRACE
rm
-f
*
.stp
rm
-f
*
.stp
...
...
configure
浏览文件 @
e77976a2
...
@@ -3062,6 +3062,7 @@ mkdir -p $target_dir
...
@@ -3062,6 +3062,7 @@ mkdir -p $target_dir
mkdir
-p
$target_dir
/fpu
mkdir
-p
$target_dir
/fpu
mkdir
-p
$target_dir
/tcg
mkdir
-p
$target_dir
/tcg
mkdir
-p
$target_dir
/ide
mkdir
-p
$target_dir
/ide
mkdir
-p
$target_dir
/9pfs
if
test
"
$target
"
=
"arm-linux-user"
-o
"
$target
"
=
"armeb-linux-user"
-o
"
$target
"
=
"arm-bsd-user"
-o
"
$target
"
=
"armeb-bsd-user"
;
then
if
test
"
$target
"
=
"arm-linux-user"
-o
"
$target
"
=
"armeb-linux-user"
-o
"
$target
"
=
"arm-bsd-user"
-o
"
$target
"
=
"armeb-bsd-user"
;
then
mkdir
-p
$target_dir
/nwfpe
mkdir
-p
$target_dir
/nwfpe
fi
fi
...
@@ -3488,6 +3489,7 @@ for hwlib in 32 64; do
...
@@ -3488,6 +3489,7 @@ for hwlib in 32 64; do
mkdir
-p
$d
mkdir
-p
$d
mkdir
-p
$d
/ide
mkdir
-p
$d
/ide
symlink
$source_path
/Makefile.hw
$d
/Makefile
symlink
$source_path
/Makefile.hw
$d
/Makefile
mkdir
-p
$d
/9pfs
echo
"QEMU_CFLAGS+=-DTARGET_PHYS_ADDR_BITS=
$hwlib
"
>
$d
/config.mak
echo
"QEMU_CFLAGS+=-DTARGET_PHYS_ADDR_BITS=
$hwlib
"
>
$d
/config.mak
done
done
...
...
hw
/file-op-9p.h
→
fsdev
/file-op-9p.h
浏览文件 @
e77976a2
文件已移动
fsdev/qemu-fsdev.h
浏览文件 @
e77976a2
...
@@ -13,7 +13,7 @@
...
@@ -13,7 +13,7 @@
#ifndef QEMU_FSDEV_H
#ifndef QEMU_FSDEV_H
#define QEMU_FSDEV_H
#define QEMU_FSDEV_H
#include "qemu-option.h"
#include "qemu-option.h"
#include "
hw/
file-op-9p.h"
#include "file-op-9p.h"
/*
/*
...
...
hw/virtio-9p-debug.c
→
hw/
9pfs/
virtio-9p-debug.c
浏览文件 @
e77976a2
文件已移动
hw/virtio-9p-debug.h
→
hw/
9pfs/
virtio-9p-debug.h
浏览文件 @
e77976a2
文件已移动
hw/virtio-9p-local.c
→
hw/
9pfs/
virtio-9p-local.c
浏览文件 @
e77976a2
...
@@ -370,7 +370,7 @@ static int local_symlink(FsContext *fs_ctx, const char *oldpath,
...
@@ -370,7 +370,7 @@ static int local_symlink(FsContext *fs_ctx, const char *oldpath,
return
fd
;
return
fd
;
}
}
/* Write the oldpath (target) to the file. */
/* Write the oldpath (target) to the file. */
oldpath_size
=
strlen
(
oldpath
)
+
1
;
oldpath_size
=
strlen
(
oldpath
);
do
{
do
{
write_size
=
write
(
fd
,
(
void
*
)
oldpath
,
oldpath_size
);
write_size
=
write
(
fd
,
(
void
*
)
oldpath
,
oldpath_size
);
}
while
(
write_size
==
-
1
&&
errno
==
EINTR
);
}
while
(
write_size
==
-
1
&&
errno
==
EINTR
);
...
...
hw/virtio-9p-posix-acl.c
→
hw/
9pfs/
virtio-9p-posix-acl.c
浏览文件 @
e77976a2
...
@@ -15,7 +15,7 @@
...
@@ -15,7 +15,7 @@
#include <attr/xattr.h>
#include <attr/xattr.h>
#include "virtio.h"
#include "virtio.h"
#include "virtio-9p.h"
#include "virtio-9p.h"
#include "file-op-9p.h"
#include "f
sdev/f
ile-op-9p.h"
#include "virtio-9p-xattr.h"
#include "virtio-9p-xattr.h"
#define MAP_ACL_ACCESS "user.virtfs.system.posix_acl_access"
#define MAP_ACL_ACCESS "user.virtfs.system.posix_acl_access"
...
@@ -60,7 +60,7 @@ static int mp_pacl_removexattr(FsContext *ctx,
...
@@ -60,7 +60,7 @@ static int mp_pacl_removexattr(FsContext *ctx,
ret
=
lremovexattr
(
rpath
(
ctx
,
path
),
MAP_ACL_ACCESS
);
ret
=
lremovexattr
(
rpath
(
ctx
,
path
),
MAP_ACL_ACCESS
);
if
(
ret
==
-
1
&&
errno
==
ENODATA
)
{
if
(
ret
==
-
1
&&
errno
==
ENODATA
)
{
/*
/*
* We don't get ENODATA error when trying to remo
t
e a
* We don't get ENODATA error when trying to remo
v
e a
* posix acl that is not present. So don't throw the error
* posix acl that is not present. So don't throw the error
* even in case of mapped security model
* even in case of mapped security model
*/
*/
...
@@ -103,7 +103,18 @@ static int mp_dacl_setxattr(FsContext *ctx, const char *path, const char *name,
...
@@ -103,7 +103,18 @@ static int mp_dacl_setxattr(FsContext *ctx, const char *path, const char *name,
static
int
mp_dacl_removexattr
(
FsContext
*
ctx
,
static
int
mp_dacl_removexattr
(
FsContext
*
ctx
,
const
char
*
path
,
const
char
*
name
)
const
char
*
path
,
const
char
*
name
)
{
{
return
lremovexattr
(
rpath
(
ctx
,
path
),
MAP_ACL_DEFAULT
);
int
ret
;
ret
=
lremovexattr
(
rpath
(
ctx
,
path
),
MAP_ACL_DEFAULT
);
if
(
ret
==
-
1
&&
errno
==
ENODATA
)
{
/*
* We don't get ENODATA error when trying to remove a
* posix acl that is not present. So don't throw the error
* even in case of mapped security model
*/
errno
=
0
;
ret
=
0
;
}
return
ret
;
}
}
...
...
hw/virtio-9p-xattr-user.c
→
hw/
9pfs/
virtio-9p-xattr-user.c
浏览文件 @
e77976a2
...
@@ -14,7 +14,7 @@
...
@@ -14,7 +14,7 @@
#include <sys/types.h>
#include <sys/types.h>
#include "virtio.h"
#include "virtio.h"
#include "virtio-9p.h"
#include "virtio-9p.h"
#include "file-op-9p.h"
#include "f
sdev/f
ile-op-9p.h"
#include "virtio-9p-xattr.h"
#include "virtio-9p-xattr.h"
...
...
hw/virtio-9p-xattr.c
→
hw/
9pfs/
virtio-9p-xattr.c
浏览文件 @
e77976a2
...
@@ -13,7 +13,7 @@
...
@@ -13,7 +13,7 @@
#include "virtio.h"
#include "virtio.h"
#include "virtio-9p.h"
#include "virtio-9p.h"
#include "file-op-9p.h"
#include "f
sdev/f
ile-op-9p.h"
#include "virtio-9p-xattr.h"
#include "virtio-9p-xattr.h"
...
...
hw/virtio-9p-xattr.h
→
hw/
9pfs/
virtio-9p-xattr.h
浏览文件 @
e77976a2
文件已移动
hw/virtio-9p.c
→
hw/
9pfs/
virtio-9p.c
浏览文件 @
e77976a2
...
@@ -596,7 +596,10 @@ static V9fsPDU *alloc_pdu(V9fsState *s)
...
@@ -596,7 +596,10 @@ static V9fsPDU *alloc_pdu(V9fsState *s)
static
void
free_pdu
(
V9fsState
*
s
,
V9fsPDU
*
pdu
)
static
void
free_pdu
(
V9fsState
*
s
,
V9fsPDU
*
pdu
)
{
{
if
(
pdu
)
{
if
(
pdu
)
{
QLIST_INSERT_HEAD
(
&
s
->
free_list
,
pdu
,
next
);
if
(
debug_9p_pdu
)
{
pprint_pdu
(
pdu
);
}
QLIST_INSERT_HEAD
(
&
s
->
free_list
,
pdu
,
next
);
}
}
}
}
...
@@ -1479,7 +1482,7 @@ static void v9fs_walk_complete(V9fsState *s, V9fsWalkState *vs, int err)
...
@@ -1479,7 +1482,7 @@ static void v9fs_walk_complete(V9fsState *s, V9fsWalkState *vs, int err)
{
{
complete_pdu
(
s
,
vs
->
pdu
,
err
);
complete_pdu
(
s
,
vs
->
pdu
,
err
);
if
(
vs
->
nwnames
)
{
if
(
vs
->
nwnames
&&
vs
->
nwnames
<=
P9_MAXWELEM
)
{
for
(
vs
->
name_idx
=
0
;
vs
->
name_idx
<
vs
->
nwnames
;
vs
->
name_idx
++
)
{
for
(
vs
->
name_idx
=
0
;
vs
->
name_idx
<
vs
->
nwnames
;
vs
->
name_idx
++
)
{
v9fs_string_free
(
&
vs
->
wnames
[
vs
->
name_idx
]);
v9fs_string_free
(
&
vs
->
wnames
[
vs
->
name_idx
]);
}
}
...
@@ -1575,7 +1578,7 @@ static void v9fs_walk(V9fsState *s, V9fsPDU *pdu)
...
@@ -1575,7 +1578,7 @@ static void v9fs_walk(V9fsState *s, V9fsPDU *pdu)
vs
->
offset
+=
pdu_unmarshal
(
vs
->
pdu
,
vs
->
offset
,
"ddw"
,
&
fid
,
vs
->
offset
+=
pdu_unmarshal
(
vs
->
pdu
,
vs
->
offset
,
"ddw"
,
&
fid
,
&
newfid
,
&
vs
->
nwnames
);
&
newfid
,
&
vs
->
nwnames
);
if
(
vs
->
nwnames
)
{
if
(
vs
->
nwnames
&&
vs
->
nwnames
<=
P9_MAXWELEM
)
{
vs
->
wnames
=
qemu_mallocz
(
sizeof
(
vs
->
wnames
[
0
])
*
vs
->
nwnames
);
vs
->
wnames
=
qemu_mallocz
(
sizeof
(
vs
->
wnames
[
0
])
*
vs
->
nwnames
);
vs
->
qids
=
qemu_mallocz
(
sizeof
(
vs
->
qids
[
0
])
*
vs
->
nwnames
);
vs
->
qids
=
qemu_mallocz
(
sizeof
(
vs
->
qids
[
0
])
*
vs
->
nwnames
);
...
@@ -1584,6 +1587,9 @@ static void v9fs_walk(V9fsState *s, V9fsPDU *pdu)
...
@@ -1584,6 +1587,9 @@ static void v9fs_walk(V9fsState *s, V9fsPDU *pdu)
vs
->
offset
+=
pdu_unmarshal
(
vs
->
pdu
,
vs
->
offset
,
"s"
,
vs
->
offset
+=
pdu_unmarshal
(
vs
->
pdu
,
vs
->
offset
,
"s"
,
&
vs
->
wnames
[
i
]);
&
vs
->
wnames
[
i
]);
}
}
}
else
if
(
vs
->
nwnames
>
P9_MAXWELEM
)
{
err
=
-
EINVAL
;
goto
out
;
}
}
vs
->
fidp
=
lookup_fid
(
s
,
fid
);
vs
->
fidp
=
lookup_fid
(
s
,
fid
);
...
@@ -1768,7 +1774,7 @@ static void v9fs_post_lcreate(V9fsState *s, V9fsLcreateState *vs, int err)
...
@@ -1768,7 +1774,7 @@ static void v9fs_post_lcreate(V9fsState *s, V9fsLcreateState *vs, int err)
v9fs_string_copy
(
&
vs
->
fidp
->
path
,
&
vs
->
fullname
);
v9fs_string_copy
(
&
vs
->
fidp
->
path
,
&
vs
->
fullname
);
stat_to_qid
(
&
vs
->
stbuf
,
&
vs
->
qid
);
stat_to_qid
(
&
vs
->
stbuf
,
&
vs
->
qid
);
vs
->
offset
+=
pdu_marshal
(
vs
->
pdu
,
vs
->
offset
,
"Qd"
,
&
vs
->
qid
,
vs
->
offset
+=
pdu_marshal
(
vs
->
pdu
,
vs
->
offset
,
"Qd"
,
&
vs
->
qid
,
&
vs
->
iounit
);
vs
->
iounit
);
err
=
vs
->
offset
;
err
=
vs
->
offset
;
}
else
{
}
else
{
vs
->
fidp
->
fid_type
=
P9_FID_NONE
;
vs
->
fidp
->
fid_type
=
P9_FID_NONE
;
...
...
hw/virtio-9p.h
→
hw/
9pfs/
virtio-9p.h
浏览文件 @
e77976a2
...
@@ -6,7 +6,7 @@
...
@@ -6,7 +6,7 @@
#include <sys/time.h>
#include <sys/time.h>
#include <utime.h>
#include <utime.h>
#include "file-op-9p.h"
#include "f
sdev/f
ile-op-9p.h"
/* The feature bitmap for virtio 9P */
/* The feature bitmap for virtio 9P */
/* The mount point is specified in a config variable */
/* The mount point is specified in a config variable */
...
@@ -282,7 +282,7 @@ typedef struct V9fsStatStateDotl {
...
@@ -282,7 +282,7 @@ typedef struct V9fsStatStateDotl {
typedef
struct
V9fsWalkState
{
typedef
struct
V9fsWalkState
{
V9fsPDU
*
pdu
;
V9fsPDU
*
pdu
;
size_t
offset
;
size_t
offset
;
int16_t
nwnames
;
u
int16_t
nwnames
;
int
name_idx
;
int
name_idx
;
V9fsQID
*
qids
;
V9fsQID
*
qids
;
V9fsFidState
*
fidp
;
V9fsFidState
*
fidp
;
...
...
vl.c
浏览文件 @
e77976a2
...
@@ -2447,9 +2447,8 @@ int main(int argc, char **argv, char **envp)
...
@@ -2447,9 +2447,8 @@ int main(int argc, char **argv, char **envp)
}
}
break
;
break
;
case
QEMU_OPTION_virtfs
:
{
case
QEMU_OPTION_virtfs
:
{
char
*
arg_fsdev
=
NULL
;
QemuOpts
*
fsdev
;
char
*
arg_9p
=
NULL
;
QemuOpts
*
device
;
int
len
=
0
;
olist
=
qemu_find_opts
(
"virtfs"
);
olist
=
qemu_find_opts
(
"virtfs"
);
if
(
!
olist
)
{
if
(
!
olist
)
{
...
@@ -2468,45 +2467,28 @@ int main(int argc, char **argv, char **envp)
...
@@ -2468,45 +2467,28 @@ int main(int argc, char **argv, char **envp)
qemu_opt_get
(
opts
,
"security_model"
)
==
NULL
)
{
qemu_opt_get
(
opts
,
"security_model"
)
==
NULL
)
{
fprintf
(
stderr
,
"Usage: -virtfs fstype,path=/share_path/,"
fprintf
(
stderr
,
"Usage: -virtfs fstype,path=/share_path/,"
"security_model=[mapped|passthrough|none],"
"security_model=[mapped|passthrough|none],"
"mnt_tag=tag.
\n
"
);
"m
ou
nt_tag=tag.
\n
"
);
exit
(
1
);
exit
(
1
);
}
}
len
=
strlen
(
",id=,path=,security_model="
);
fsdev
=
qemu_opts_create
(
qemu_find_opts
(
"fsdev"
),
len
+=
strlen
(
qemu_opt_get
(
opts
,
"fstype"
));
qemu_opt_get
(
opts
,
"mount_tag"
),
1
);
len
+=
strlen
(
qemu_opt_get
(
opts
,
"mount_tag"
));
if
(
!
fsdev
)
{
len
+=
strlen
(
qemu_opt_get
(
opts
,
"path"
));
fprintf
(
stderr
,
"duplicate fsdev id: %s
\n
"
,
len
+=
strlen
(
qemu_opt_get
(
opts
,
"security_model"
));
qemu_opt_get
(
opts
,
"mount_tag"
));
arg_fsdev
=
qemu_malloc
((
len
+
1
)
*
sizeof
(
*
arg_fsdev
));
snprintf
(
arg_fsdev
,
(
len
+
1
)
*
sizeof
(
*
arg_fsdev
),
"%s,id=%s,path=%s,security_model=%s"
,
qemu_opt_get
(
opts
,
"fstype"
),
qemu_opt_get
(
opts
,
"mount_tag"
),
qemu_opt_get
(
opts
,
"path"
),
qemu_opt_get
(
opts
,
"security_model"
));
len
=
strlen
(
"virtio-9p,fsdev=,mount_tag="
);
len
+=
2
*
strlen
(
qemu_opt_get
(
opts
,
"mount_tag"
));
arg_9p
=
qemu_malloc
((
len
+
1
)
*
sizeof
(
*
arg_9p
));
snprintf
(
arg_9p
,
(
len
+
1
)
*
sizeof
(
*
arg_9p
),
"virtio-9p,fsdev=%s,mount_tag=%s"
,
qemu_opt_get
(
opts
,
"mount_tag"
),
qemu_opt_get
(
opts
,
"mount_tag"
));
if
(
!
qemu_opts_parse
(
qemu_find_opts
(
"fsdev"
),
arg_fsdev
,
1
))
{
fprintf
(
stderr
,
"parse error [fsdev]: %s
\n
"
,
optarg
);
exit
(
1
);
exit
(
1
);
}
}
qemu_opt_set
(
fsdev
,
"fstype"
,
qemu_opt_get
(
opts
,
"fstype"
));
if
(
!
qemu_opts_parse
(
qemu_find_opts
(
"device"
),
arg_9p
,
1
))
{
qemu_opt_set
(
fsdev
,
"path"
,
qemu_opt_get
(
opts
,
"path"
));
fprintf
(
stderr
,
"parse error [device]: %s
\n
"
,
optarg
);
qemu_opt_set
(
fsdev
,
"security_model"
,
exit
(
1
);
qemu_opt_get
(
opts
,
"security_model"
));
}
device
=
qemu_opts_create
(
qemu_find_opts
(
"device"
),
NULL
,
0
);
qemu_free
(
arg_fsdev
);
qemu_opt_set
(
device
,
"driver"
,
"virtio-9p-pci"
);
qemu_free
(
arg_9p
);
qemu_opt_set
(
device
,
"fsdev"
,
qemu_opt_get
(
opts
,
"mount_tag"
));
qemu_opt_set
(
device
,
"mount_tag"
,
qemu_opt_get
(
opts
,
"mount_tag"
));
break
;
break
;
}
}
case
QEMU_OPTION_serial
:
case
QEMU_OPTION_serial
:
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录