Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openeuler
libvirt
提交
3f08212c
L
libvirt
项目概览
openeuler
/
libvirt
通知
3
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
L
libvirt
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
提交
3f08212c
编写于
7月 27, 2011
作者:
H
Hu Tao
提交者:
Michal Privoznik
7月 28, 2011
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
python: add python binding for virDomainSetBlkioParameters
上级
9d5cef18
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
92 addition
and
3 deletion
+92
-3
python/libvirt-override-api.xml
python/libvirt-override-api.xml
+1
-0
python/libvirt-override.c
python/libvirt-override.c
+91
-3
未找到文件。
python/libvirt-override-api.xml
浏览文件 @
3f08212c
...
...
@@ -206,6 +206,7 @@
<return
type=
'int'
info=
'-1 in case of error, 0 in case of success.'
/>
<arg
name=
'domain'
type=
'virDomainPtr'
info=
'pointer to domain object'
/>
<arg
name=
'params'
type=
'virBlkioParameterPtr'
info=
'pointer to blkio tunable objects'
/>
<arg
name=
'flags'
type=
'int'
info=
'an OR'ed set of virDomainModificationImpact'
/>
</function>
<function
name=
'virDomainGetBlkioParameters'
file=
'python'
>
<info>
Get the blkio parameters
</info>
...
...
python/libvirt-override.c
浏览文件 @
3f08212c
...
...
@@ -565,11 +565,99 @@ libvirt_virDomainSetSchedulerParametersFlags(PyObject *self ATTRIBUTE_UNUSED,
}
/* FIXME: This is a place holder for the implementation. */
static
PyObject
*
libvirt_virDomainSetBlkioParameters
(
PyObject
*
self
ATTRIBUTE_UNUSED
,
PyObject
*
args
ATTRIBUTE_UNUSED
)
{
return
VIR_PY_INT_FAIL
;
PyObject
*
args
)
{
virDomainPtr
domain
;
PyObject
*
pyobj_domain
,
*
info
;
int
i_retval
;
int
nparams
=
0
,
i
;
unsigned
int
flags
;
virTypedParameterPtr
params
;
if
(
!
PyArg_ParseTuple
(
args
,
(
char
*
)
"OOi:virDomainSetBlkioParameters"
,
&
pyobj_domain
,
&
info
,
&
flags
))
return
(
NULL
);
domain
=
(
virDomainPtr
)
PyvirDomain_Get
(
pyobj_domain
);
LIBVIRT_BEGIN_ALLOW_THREADS
;
i_retval
=
virDomainGetBlkioParameters
(
domain
,
NULL
,
&
nparams
,
flags
);
LIBVIRT_END_ALLOW_THREADS
;
if
(
i_retval
<
0
)
return
VIR_PY_INT_FAIL
;
if
((
params
=
malloc
(
sizeof
(
*
params
)
*
nparams
))
==
NULL
)
return
VIR_PY_INT_FAIL
;
LIBVIRT_BEGIN_ALLOW_THREADS
;
i_retval
=
virDomainGetBlkioParameters
(
domain
,
params
,
&
nparams
,
flags
);
LIBVIRT_END_ALLOW_THREADS
;
if
(
i_retval
<
0
)
{
free
(
params
);
return
VIR_PY_INT_FAIL
;
}
/* convert to a Python tuple of long objects */
for
(
i
=
0
;
i
<
nparams
;
i
++
)
{
PyObject
*
key
,
*
val
;
key
=
libvirt_constcharPtrWrap
(
params
[
i
].
field
);
val
=
PyDict_GetItem
(
info
,
key
);
Py_DECREF
(
key
);
if
(
val
==
NULL
)
continue
;
switch
(
params
[
i
].
type
)
{
case
VIR_TYPED_PARAM_INT
:
params
[
i
].
value
.
i
=
(
int
)
PyInt_AS_LONG
(
val
);
break
;
case
VIR_TYPED_PARAM_UINT
:
params
[
i
].
value
.
ui
=
(
unsigned
int
)
PyInt_AS_LONG
(
val
);
break
;
case
VIR_TYPED_PARAM_LLONG
:
params
[
i
].
value
.
l
=
(
long
long
)
PyLong_AsLongLong
(
val
);
break
;
case
VIR_TYPED_PARAM_ULLONG
:
params
[
i
].
value
.
ul
=
(
unsigned
long
long
)
PyLong_AsLongLong
(
val
);
break
;
case
VIR_TYPED_PARAM_DOUBLE
:
params
[
i
].
value
.
d
=
(
double
)
PyFloat_AsDouble
(
val
);
break
;
case
VIR_TYPED_PARAM_BOOLEAN
:
{
/* Hack - Python's definition of Py_True breaks strict
* aliasing rules, so can't directly compare :-(
*/
PyObject
*
hacktrue
=
PyBool_FromLong
(
1
);
params
[
i
].
value
.
b
=
hacktrue
==
val
?
1
:
0
;
Py_DECREF
(
hacktrue
);
}
break
;
default:
free
(
params
);
return
VIR_PY_INT_FAIL
;
}
}
LIBVIRT_BEGIN_ALLOW_THREADS
;
i_retval
=
virDomainSetBlkioParameters
(
domain
,
params
,
nparams
,
flags
);
LIBVIRT_END_ALLOW_THREADS
;
if
(
i_retval
<
0
)
{
free
(
params
);
return
VIR_PY_INT_FAIL
;
}
free
(
params
);
return
VIR_PY_INT_SUCCESS
;
}
static
PyObject
*
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录