Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openeuler
qemu
提交
6a146eba
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看板
提交
6a146eba
编写于
12月 12, 2011
作者:
A
Anthony Liguori
1
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
qom: add string property type
Signed-off-by:
N
Anthony Liguori
<
aliguori@us.ibm.com
>
上级
ad6d45fa
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
81 addition
and
0 deletion
+81
-0
hw/qdev.c
hw/qdev.c
+59
-0
hw/qdev.h
hw/qdev.h
+22
-0
未找到文件。
hw/qdev.c
浏览文件 @
6a146eba
...
@@ -1449,3 +1449,62 @@ DeviceState *qdev_resolve_path(const char *path, bool *ambiguous)
...
@@ -1449,3 +1449,62 @@ DeviceState *qdev_resolve_path(const char *path, bool *ambiguous)
return
dev
;
return
dev
;
}
}
typedef
struct
StringProperty
{
char
*
(
*
get
)(
DeviceState
*
,
Error
**
);
void
(
*
set
)(
DeviceState
*
,
const
char
*
,
Error
**
);
}
StringProperty
;
static
void
qdev_property_get_str
(
DeviceState
*
dev
,
Visitor
*
v
,
void
*
opaque
,
const
char
*
name
,
Error
**
errp
)
{
StringProperty
*
prop
=
opaque
;
char
*
value
;
value
=
prop
->
get
(
dev
,
errp
);
if
(
value
)
{
visit_type_str
(
v
,
&
value
,
name
,
errp
);
g_free
(
value
);
}
}
static
void
qdev_property_set_str
(
DeviceState
*
dev
,
Visitor
*
v
,
void
*
opaque
,
const
char
*
name
,
Error
**
errp
)
{
StringProperty
*
prop
=
opaque
;
char
*
value
;
Error
*
local_err
=
NULL
;
visit_type_str
(
v
,
&
value
,
name
,
&
local_err
);
if
(
local_err
)
{
error_propagate
(
errp
,
local_err
);
return
;
}
prop
->
set
(
dev
,
value
,
errp
);
g_free
(
value
);
}
static
void
qdev_property_release_str
(
DeviceState
*
dev
,
const
char
*
name
,
void
*
opaque
)
{
StringProperty
*
prop
=
opaque
;
g_free
(
prop
);
}
void
qdev_property_add_str
(
DeviceState
*
dev
,
const
char
*
name
,
char
*
(
*
get
)(
DeviceState
*
,
Error
**
),
void
(
*
set
)(
DeviceState
*
,
const
char
*
,
Error
**
),
Error
**
errp
)
{
StringProperty
*
prop
=
g_malloc0
(
sizeof
(
*
prop
));
prop
->
get
=
get
;
prop
->
set
=
set
;
qdev_property_add
(
dev
,
name
,
"string"
,
get
?
qdev_property_get_str
:
NULL
,
set
?
qdev_property_set_str
:
NULL
,
qdev_property_release_str
,
prop
,
errp
);
}
hw/qdev.h
浏览文件 @
6a146eba
...
@@ -574,4 +574,26 @@ void qdev_property_add_link(DeviceState *dev, const char *name,
...
@@ -574,4 +574,26 @@ void qdev_property_add_link(DeviceState *dev, const char *name,
const
char
*
type
,
DeviceState
**
child
,
const
char
*
type
,
DeviceState
**
child
,
Error
**
errp
);
Error
**
errp
);
/**
* @qdev_property_add_str
*
* Add a string property using getters/setters. This function will add a
* property of type 'string'.
*
* @dev - the device to add a property to
*
* @name - the name of the property
*
* @get - the getter or NULL if the property is write-only. This function must
* return a string to be freed by @g_free().
*
* @set - the setter or NULL if the property is read-only
*
* @errp - if an error occurs, a pointer to an area to store the error
*/
void
qdev_property_add_str
(
DeviceState
*
dev
,
const
char
*
name
,
char
*
(
*
get
)(
DeviceState
*
,
Error
**
),
void
(
*
set
)(
DeviceState
*
,
const
char
*
,
Error
**
),
Error
**
errp
);
#endif
#endif
tester丶
🤺
@ssszwink
mentioned in commit
a479b21c
·
9月 10, 2020
mentioned in commit
a479b21c
mentioned in commit a479b21c111a87a50203a7413c4e5ec419fc88dd
开关提交列表
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录