Mailing List Archive

[PATCH 10 of 32] tools: libxl: remove BitField type class from IDL
# HG changeset patch
# User Ian Campbell <ian.campbell@citrix.com>
# Date 1303134015 -3600
# Node ID 4f5a79bd1170afd940f225b7b3e3a83792f4bca1
# Parent c68e419be515d97aa9cad9575183845caf7fd3a0
tools: libxl: remove BitField type class from IDL

All usages are single bit BitFields, AKA booleans.

In general we prefer to use simple structures (e.g. without packing or
specific layouts) in the libxl API and take care of any require
structure by marshalling within the library instead of expecting users
to do so (e.g. the PCI device BDF is unpacked in the libxl API).

Signed-off-by: Ian Campbell <ian.campbell@citrix.com>

diff -r c68e419be515 -r 4f5a79bd1170 tools/libxl/gentypes.py
--- a/tools/libxl/gentypes.py Mon Apr 18 14:39:43 2011 +0100
+++ b/tools/libxl/gentypes.py Mon Apr 18 14:40:15 2011 +0100
@@ -22,9 +22,7 @@ def libxl_C_type_of(ty):
return ty.typename

def libxl_C_instance_of(ty, instancename):
- if isinstance(ty, libxltypes.BitField):
- return libxl_C_type_of(ty) + " " + instancename + ":%d" % ty.width
- elif isinstance(ty, libxltypes.Aggregate) and ty.typename is None:
+ if isinstance(ty, libxltypes.Aggregate) and ty.typename is None:
if instancename is None:
return libxl_C_type_define(ty)
else:
diff -r c68e419be515 -r 4f5a79bd1170 tools/libxl/idl.txt
--- a/tools/libxl/idl.txt Mon Apr 18 14:39:43 2011 +0100
+++ b/tools/libxl/idl.txt Mon Apr 18 14:40:15 2011 +0100
@@ -64,14 +64,6 @@ libxltype.UInt
The <N> for a given instance must be passed to the constructor and is
then available in UInt.width

-libxltype.BitField
-
- Instances of this class represent bitfield type classes.
-
- The base type and desired width for a given instance must be passed
- to the contructor. The base type becomes the type of the instance and
- width is contained in BitField.width
-
libxltype.Reference

Instances of this type represent a reference to another type
diff -r c68e419be515 -r 4f5a79bd1170 tools/libxl/libxl.idl
--- a/tools/libxl/libxl.idl Mon Apr 18 14:39:43 2011 +0100
+++ b/tools/libxl/libxl.idl Mon Apr 18 14:40:15 2011 +0100
@@ -89,11 +89,11 @@ libxl_button = Enumeration("button", [.
libxl_dominfo = Struct("dominfo",[.
("uuid", libxl_uuid),
("domid", libxl_domid),
- ("running", BitField(uint8, 1)),
- ("blocked", BitField(uint8, 1)),
- ("paused", BitField(uint8, 1)),
- ("shutdown", BitField(uint8, 1)),
- ("dying", BitField(uint8, 1)),
+ ("running", bool),
+ ("blocked", bool),
+ ("paused", bool),
+ ("shutdown", bool),
+ ("dying", bool),

("shutdown_reason", unsigned, False,
"""Valid SHUTDOWN_* value from xen/sched.h iff (shutdown||dying).
@@ -326,9 +326,9 @@ libxl_nicinfo = Struct("nicinfo", [.
libxl_vcpuinfo = Struct("vcpuinfo", [.
("vcpuid", uint32, False, "vcpu's id"),
("cpu", uint32, False, "current mapping"),
- ("online", BitField(uint8, 1), False, "currently online (not hotplugged)?"),
- ("blocked", BitField(uint8, 1), False, "blocked waiting for an event?"),
- ("running", BitField(uint8, 1), False, "currently scheduled on its CPU?"),
+ ("online", bool, False, "currently online (not hotplugged)?"),
+ ("blocked", bool, False, "blocked waiting for an event?"),
+ ("running", bool, False, "currently scheduled on its CPU?"),
("vcpu_time", uint64, False, "total vcpu time ran (ns)"),
("cpumap", libxl_cpumap, False, "current cpu's affinities"),
])
diff -r c68e419be515 -r 4f5a79bd1170 tools/libxl/libxltypes.py
--- a/tools/libxl/libxltypes.py Mon Apr 18 14:39:43 2011 +0100
+++ b/tools/libxl/libxltypes.py Mon Apr 18 14:40:15 2011 +0100
@@ -91,14 +91,6 @@ class Enumeration(Type):
namespace=self.namespace,
typename=self.rawname))

-class BitField(Type):
- def __init__(self, ty, w, **kwargs):
- kwargs.setdefault('namespace', None)
- kwargs.setdefault('destructor_fn', None)
- Type.__init__(self, ty.typename, **kwargs)
-
- self.width = w
-
class Field(object):
"""An element of an Aggregate type"""
def __init__(self, type, name, **kwargs):
diff -r c68e419be515 -r 4f5a79bd1170 tools/python/genwrap.py
--- a/tools/python/genwrap.py Mon Apr 18 14:39:43 2011 +0100
+++ b/tools/python/genwrap.py Mon Apr 18 14:40:15 2011 +0100
@@ -7,7 +7,7 @@ import libxltypes
(TYPE_BOOL, TYPE_INT, TYPE_UINT, TYPE_STRING) = range(4)

def py_type(ty):
- if ty == libxltypes.bool or isinstance(ty, libxltypes.BitField) and ty.width == 1:
+ if ty == libxltypes.bool:
return TYPE_BOOL
if isinstance(ty, libxltypes.Enumeration):
return TYPE_UINT

_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xensource.com
http://lists.xensource.com/xen-devel
[PATCH 10 of 32] tools: libxl: remove BitField type class from IDL [ In reply to ]
# HG changeset patch
# User Ian Campbell <ian.campbell@citrix.com>
# Date 1303315987 -3600
# Node ID 099e9d1f9a7dece291365b43d28291d8849afd2a
# Parent e19934c3d1c1c5daff74ea2f3b304fd873b3094c
tools: libxl: remove BitField type class from IDL

All usages are single bit BitFields, AKA booleans.

In general we prefer to use simple structures (e.g. without packing or
specific layouts) in the libxl API and take care of any require
structure by marshalling within the library instead of expecting users
to do so (e.g. the PCI device BDF is unpacked in the libxl API).

Signed-off-by: Ian Campbell <ian.campbell@citrix.com>

diff -r e19934c3d1c1 -r 099e9d1f9a7d tools/libxl/gentypes.py
--- a/tools/libxl/gentypes.py Wed Apr 20 17:13:07 2011 +0100
+++ b/tools/libxl/gentypes.py Wed Apr 20 17:13:07 2011 +0100
@@ -22,9 +22,7 @@ def libxl_C_type_of(ty):
return ty.typename

def libxl_C_instance_of(ty, instancename):
- if isinstance(ty, libxltypes.BitField):
- return libxl_C_type_of(ty) + " " + instancename + ":%d" % ty.width
- elif isinstance(ty, libxltypes.Aggregate) and ty.typename is None:
+ if isinstance(ty, libxltypes.Aggregate) and ty.typename is None:
if instancename is None:
return libxl_C_type_define(ty)
else:
diff -r e19934c3d1c1 -r 099e9d1f9a7d tools/libxl/idl.txt
--- a/tools/libxl/idl.txt Wed Apr 20 17:13:07 2011 +0100
+++ b/tools/libxl/idl.txt Wed Apr 20 17:13:07 2011 +0100
@@ -64,14 +64,6 @@ libxltype.UInt
The <N> for a given instance must be passed to the constructor and is
then available in UInt.width

-libxltype.BitField
-
- Instances of this class represent bitfield type classes.
-
- The base type and desired width for a given instance must be passed
- to the contructor. The base type becomes the type of the instance and
- width is contained in BitField.width
-
libxltype.Reference

Instances of this type represent a reference to another type
diff -r e19934c3d1c1 -r 099e9d1f9a7d tools/libxl/libxl.idl
--- a/tools/libxl/libxl.idl Wed Apr 20 17:13:07 2011 +0100
+++ b/tools/libxl/libxl.idl Wed Apr 20 17:13:07 2011 +0100
@@ -89,11 +89,11 @@ libxl_button = Enumeration("button", [.
libxl_dominfo = Struct("dominfo",[.
("uuid", libxl_uuid),
("domid", libxl_domid),
- ("running", BitField(uint8, 1)),
- ("blocked", BitField(uint8, 1)),
- ("paused", BitField(uint8, 1)),
- ("shutdown", BitField(uint8, 1)),
- ("dying", BitField(uint8, 1)),
+ ("running", bool),
+ ("blocked", bool),
+ ("paused", bool),
+ ("shutdown", bool),
+ ("dying", bool),

("shutdown_reason", unsigned, False,
"""Valid SHUTDOWN_* value from xen/sched.h iff (shutdown||dying).
@@ -326,9 +326,9 @@ libxl_nicinfo = Struct("nicinfo", [.
libxl_vcpuinfo = Struct("vcpuinfo", [.
("vcpuid", uint32, False, "vcpu's id"),
("cpu", uint32, False, "current mapping"),
- ("online", BitField(uint8, 1), False, "currently online (not hotplugged)?"),
- ("blocked", BitField(uint8, 1), False, "blocked waiting for an event?"),
- ("running", BitField(uint8, 1), False, "currently scheduled on its CPU?"),
+ ("online", bool, False, "currently online (not hotplugged)?"),
+ ("blocked", bool, False, "blocked waiting for an event?"),
+ ("running", bool, False, "currently scheduled on its CPU?"),
("vcpu_time", uint64, False, "total vcpu time ran (ns)"),
("cpumap", libxl_cpumap, False, "current cpu's affinities"),
])
diff -r e19934c3d1c1 -r 099e9d1f9a7d tools/libxl/libxltypes.py
--- a/tools/libxl/libxltypes.py Wed Apr 20 17:13:07 2011 +0100
+++ b/tools/libxl/libxltypes.py Wed Apr 20 17:13:07 2011 +0100
@@ -81,14 +81,6 @@ class Enumeration(Type):
comment=comment,
typename=self.rawname))

-class BitField(Type):
- def __init__(self, ty, w, **kwargs):
- kwargs.setdefault('namespace', None)
- kwargs.setdefault('destructor_fn', None)
- Type.__init__(self, ty.typename, **kwargs)
-
- self.width = w
-
class Field(object):
"""An element of an Aggregate type"""
def __init__(self, type, name, **kwargs):
diff -r e19934c3d1c1 -r 099e9d1f9a7d tools/python/genwrap.py
--- a/tools/python/genwrap.py Wed Apr 20 17:13:07 2011 +0100
+++ b/tools/python/genwrap.py Wed Apr 20 17:13:07 2011 +0100
@@ -7,7 +7,7 @@ import libxltypes
(TYPE_BOOL, TYPE_INT, TYPE_UINT, TYPE_STRING) = range(4)

def py_type(ty):
- if ty == libxltypes.bool or isinstance(ty, libxltypes.BitField) and ty.width == 1:
+ if ty == libxltypes.bool:
return TYPE_BOOL
if isinstance(ty, libxltypes.Enumeration):
return TYPE_UINT

_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xensource.com
http://lists.xensource.com/xen-devel