All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH xm/xl enhancements for vptm 1/6] xl make devid a libxl type
@ 2012-09-18 18:09 Matthew Fioravante
  2012-09-19 12:19 ` Ian Campbell
  0 siblings, 1 reply; 4+ messages in thread
From: Matthew Fioravante @ 2012-09-18 18:09 UTC (permalink / raw)
  To: Ian Campbell, xen-devel@lists.xensource.com


[-- Attachment #1.1: Type: text/plain, Size: 7402 bytes --]

Previously device ids in libxl were treated as integers meaning they
were being initialized to 0, which is a valid device id. This patch
makes devid its own type in libxl and initializes it to -1, an invalid
value.

Signed off by Matthew Fioravante matthew.fioravante@jhuapl.edu

diff --git a/tools/libxl/gentest.py b/tools/libxl/gentest.py
--- a/tools/libxl/gentest.py
+++ b/tools/libxl/gentest.py
@@ -48,7 +48,7 @@ def gen_rand_init(ty, v, indent = "    ", parent = None):
                                         passby=idl.PASS_BY_REFERENCE))
     elif ty.typename in ["libxl_uuid", "libxl_mac", "libxl_hwcap"]:
         s += "rand_bytes((uint8_t *)%s, sizeof(*%s));\n" % (v,v)
-    elif ty.typename in ["libxl_domid"] or isinstance(ty, idl.Number):
+    elif ty.typename in ["libxl_domid", "libxl_devid"] or
isinstance(ty, idl.Number):
         s += "%s = rand() %% (sizeof(%s)*8);\n" % \
              (ty.pass_arg(v, parent is None),
               ty.pass_arg(v, parent is None))
diff --git a/tools/libxl/libxl.h b/tools/libxl/libxl.h
--- a/tools/libxl/libxl.h
+++ b/tools/libxl/libxl.h
@@ -299,6 +299,7 @@ void libxl_cpuid_dispose(libxl_cpuid_policy_list
*cpuid_list);
 #define LIBXL_PCI_FUNC_ALL (~0U)
 
 typedef uint32_t libxl_domid;
+typedef int libxl_devid;
 
 /*
  * Formatting Enumerations.
diff --git a/tools/libxl/libxl_types.idl b/tools/libxl/libxl_types.idl
--- a/tools/libxl/libxl_types.idl
+++ b/tools/libxl/libxl_types.idl
@@ -8,6 +8,7 @@ namespace("libxl_")
 libxl_defbool = Builtin("defbool", passby=PASS_BY_REFERENCE)
 
 libxl_domid = Builtin("domid", json_fn = "yajl_gen_integer",
autogenerate_json = False)
+libxl_devid = Builtin("devid", json_fn = "yajl_gen_integer",
autogenerate_json = False, signed = True, init_val="-1")
 libxl_uuid = Builtin("uuid", passby=PASS_BY_REFERENCE)
 libxl_mac = Builtin("mac", passby=PASS_BY_REFERENCE)
 libxl_cpumap = Builtin("cpumap", dispose_fn="libxl_cpumap_dispose",
passby=PASS_BY_REFERENCE)
@@ -318,7 +319,7 @@ libxl_domain_build_info = Struct("domain_build_info",[
 
 libxl_device_vfb = Struct("device_vfb", [
     ("backend_domid", libxl_domid),
-    ("devid",         integer),
+    ("devid",         libxl_devid),
     ("vnc",           libxl_vnc_info),
     ("sdl",           libxl_sdl_info),
     # set keyboard layout, default is en-us keyboard
@@ -327,7 +328,7 @@ libxl_device_vfb = Struct("device_vfb", [
 
 libxl_device_vkb = Struct("device_vkb", [
     ("backend_domid", libxl_domid),
-    ("devid", integer),
+    ("devid", libxl_devid),
     ])
 
 libxl_device_disk = Struct("device_disk", [
@@ -344,7 +345,7 @@ libxl_device_disk = Struct("device_disk", [
 
 libxl_device_nic = Struct("device_nic", [
     ("backend_domid", libxl_domid),
-    ("devid", integer),
+    ("devid", libxl_devid),
     ("mtu", integer),
     ("model", string),
     ("mac", libxl_mac),
@@ -374,7 +375,7 @@ libxl_diskinfo = Struct("diskinfo", [
     ("backend_id", uint32),
     ("frontend", string),
     ("frontend_id", uint32),
-    ("devid", integer),
+    ("devid", libxl_devid),
     ("state", integer),
     ("evtch", integer),
     ("rref", integer),
@@ -385,7 +386,7 @@ libxl_nicinfo = Struct("nicinfo", [
     ("backend_id", uint32),
     ("frontend", string),
     ("frontend_id", uint32),
-    ("devid", integer),
+    ("devid", libxl_devid),
     ("state", integer),
     ("evtch", integer),
     ("rref_tx", integer),
diff --git a/tools/ocaml/libs/xc/xenctrl.ml b/tools/ocaml/libs/xc/xenctrl.ml
--- a/tools/ocaml/libs/xc/xenctrl.ml
+++ b/tools/ocaml/libs/xc/xenctrl.ml
@@ -16,6 +16,7 @@
 
 (** *)
 type domid = int
+type devid = int
 
 (* ** xenctrl.h ** *)
 
diff --git a/tools/ocaml/libs/xc/xenctrl.mli
b/tools/ocaml/libs/xc/xenctrl.mli
--- a/tools/ocaml/libs/xc/xenctrl.mli
+++ b/tools/ocaml/libs/xc/xenctrl.mli
@@ -15,6 +15,7 @@
  *)
 
 type domid = int
+type devid = int
 type vcpuinfo = {
   online : bool;
   blocked : bool;
diff --git a/tools/ocaml/libs/xl/genwrap.py b/tools/ocaml/libs/xl/genwrap.py
--- a/tools/ocaml/libs/xl/genwrap.py
+++ b/tools/ocaml/libs/xl/genwrap.py
@@ -10,6 +10,7 @@ builtins = {
     "int":                  ("int",                    "%(c)s =
Int_val(%(o)s)",            "Val_int(%(c)s)"  ),
     "char *":               ("string",                 "%(c)s =
dup_String_val(gc, %(o)s)", "caml_copy_string(%(c)s)"),
     "libxl_domid":          ("domid",                  "%(c)s =
Int_val(%(o)s)",            "Val_int(%(c)s)"  ),
+    "libxl_devid":          ("devid",                  "%(c)s =
Int_val(%(o)s)",            "Val_int(%(c)s)"  ),
     "libxl_defbool":        ("bool option",            "%(c)s =
Defbool_val(%(o)s)",        "Val_defbool(%(c)s)" ),
     "libxl_uuid":           ("int array",              "Uuid_val(gc,
lg, &%(c)s, %(o)s)",   "Val_uuid(&%(c)s)"),
     "libxl_key_value_list": ("(string * string) list",
None,                                None),
@@ -41,8 +42,8 @@ def stub_fn_name(ty, name):
     return "stub_xl_%s_%s" % (ty.rawname,name)
    
 def ocaml_type_of(ty):
-    if ty.rawname == "domid":
-        return "domid"
+    if ty.rawname in ["domid","devid"]:
+        return ty.rawname
     elif isinstance(ty,idl.UInt):
         if ty.width in [8, 16]:
             # handle as ints
diff --git a/tools/ocaml/libs/xl/xenlight.ml.in
b/tools/ocaml/libs/xl/xenlight.ml.in
--- a/tools/ocaml/libs/xl/xenlight.ml.in
+++ b/tools/ocaml/libs/xl/xenlight.ml.in
@@ -16,6 +16,7 @@
 exception Error of string
 
 type domid = int
+type devid = int
 
 (* @@LIBXL_TYPES@@ *)
 
diff --git a/tools/ocaml/libs/xl/xenlight.mli.in
b/tools/ocaml/libs/xl/xenlight.mli.in
--- a/tools/ocaml/libs/xl/xenlight.mli.in
+++ b/tools/ocaml/libs/xl/xenlight.mli.in
@@ -16,6 +16,7 @@
 exception Error of string
 
 type domid = int
+type devid = int
 
 (* @@LIBXL_TYPES@@ *)
 
diff --git a/tools/ocaml/libs/xs/xs.ml b/tools/ocaml/libs/xs/xs.ml
--- a/tools/ocaml/libs/xs/xs.ml
+++ b/tools/ocaml/libs/xs/xs.ml
@@ -17,6 +17,7 @@
 type perms = Xsraw.perms
 type con = Xsraw.con
 type domid = int
+type devid = int
 
 type xsh =
 {
diff --git a/tools/ocaml/libs/xs/xs.mli b/tools/ocaml/libs/xs/xs.mli
--- a/tools/ocaml/libs/xs/xs.mli
+++ b/tools/ocaml/libs/xs/xs.mli
@@ -27,6 +27,7 @@ exception Failed_to_connect
 type perms = Xsraw.perms
 
 type domid = int
+type devid = int
 type con
 
 type xsh = {
diff --git a/tools/python/xen/lowlevel/xl/xl.c
b/tools/python/xen/lowlevel/xl/xl.c
--- a/tools/python/xen/lowlevel/xl/xl.c
+++ b/tools/python/xen/lowlevel/xl/xl.c
@@ -281,6 +281,11 @@ int attrib__libxl_domid_set(PyObject *v,
libxl_domid *domid) {
     return 0;
 }
 
+int attrib__libxl_devid_set(PyObject *v, libxl_devid *devid) {
+   *devid = PyInt_AsLong(v);
+   return 0;
+}
+
 int attrib__struct_in_addr_set(PyObject *v, struct in_addr *pptr)
 {
     PyErr_SetString(PyExc_NotImplementedError, "Setting in_addr");
@@ -342,6 +347,10 @@ PyObject *attrib__libxl_domid_get(libxl_domid *domid) {
     return PyInt_FromLong(*domid);
 }
 
+PyObject *attrib__libxl_devid_get(libxl_devid *devid) {
+    return PyInt_FromLong(*devid);
+}
+
 PyObject *attrib__struct_in_addr_get(struct in_addr *pptr)
 {
     PyErr_SetString(PyExc_NotImplementedError, "Getting in_addr");
-- 
1.7.4.4



[-- Attachment #1.2: S/MIME Cryptographic Signature --]
[-- Type: application/pkcs7-signature, Size: 1459 bytes --]

[-- Attachment #2: Type: text/plain, Size: 126 bytes --]

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

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PATCH xm/xl enhancements for vptm 1/6] xl make devid a libxl type
  2012-09-18 18:09 [PATCH xm/xl enhancements for vptm 1/6] xl make devid a libxl type Matthew Fioravante
@ 2012-09-19 12:19 ` Ian Campbell
  2012-09-21 19:26   ` Matthew Fioravante
  0 siblings, 1 reply; 4+ messages in thread
From: Ian Campbell @ 2012-09-19 12:19 UTC (permalink / raw)
  To: Matthew Fioravante; +Cc: xen-devel@lists.xensource.com

On Tue, 2012-09-18 at 19:09 +0100, Matthew Fioravante wrote:
> diff --git a/tools/ocaml/libs/xc/xenctrl.ml b/tools/ocaml/libs/xc/xenctrl.ml
> --- a/tools/ocaml/libs/xc/xenctrl.ml
> +++ b/tools/ocaml/libs/xc/xenctrl.ml
> @@ -16,6 +16,7 @@
>  
>  (** *)
>  type domid = int
> +type devid = int

I don't think libxc exposes the notion of a devid, does it?

In which case there's no need to have a type for it here or in the .mli.
> diff --git a/tools/ocaml/libs/xs/xs.ml b/tools/ocaml/libs/xs/xs.ml
> --- a/tools/ocaml/libs/xs/xs.ml
> +++ b/tools/ocaml/libs/xs/xs.ml
> @@ -17,6 +17,7 @@
>  type perms = Xsraw.perms
>  type con = Xsraw.con
>  type domid = int
> +type devid = int

Likewise xenstore doesn't have a devid either AFAIK.

> diff --git a/tools/python/xen/lowlevel/xl/xl.c
> b/tools/python/xen/lowlevel/xl/xl.c
> --- a/tools/python/xen/lowlevel/xl/xl.c
> +++ b/tools/python/xen/lowlevel/xl/xl.c

Are you basing your patches on xen-unstable? I ask because this file
isn't built there and so I wonder how you noticed it to change it.

Ian.

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PATCH xm/xl enhancements for vptm 1/6] xl make devid a libxl type
  2012-09-19 12:19 ` Ian Campbell
@ 2012-09-21 19:26   ` Matthew Fioravante
  2012-09-25 10:51     ` Ian Campbell
  0 siblings, 1 reply; 4+ messages in thread
From: Matthew Fioravante @ 2012-09-21 19:26 UTC (permalink / raw)
  To: Ian Campbell; +Cc: xen-devel@lists.xensource.com


[-- Attachment #1.1: Type: text/plain, Size: 1784 bytes --]

On 09/19/2012 08:19 AM, Ian Campbell wrote:
> On Tue, 2012-09-18 at 19:09 +0100, Matthew Fioravante wrote:
>> diff --git a/tools/ocaml/libs/xc/xenctrl.ml b/tools/ocaml/libs/xc/xenctrl.ml
>> --- a/tools/ocaml/libs/xc/xenctrl.ml
>> +++ b/tools/ocaml/libs/xc/xenctrl.ml
>> @@ -16,6 +16,7 @@
>>  
>>  (** *)
>>  type domid = int
>> +type devid = int
> I don't think libxc exposes the notion of a devid, does it?
>
> In which case there's no need to have a type for it here or in the .mli.
Unfortunately it looks like the ocaml makefiles build their list of
types by using the libxl_types.idl system. Ocaml xs currently won't
compile without this.
>> diff --git a/tools/ocaml/libs/xs/xs.ml b/tools/ocaml/libs/xs/xs.ml
>> --- a/tools/ocaml/libs/xs/xs.ml
>> +++ b/tools/ocaml/libs/xs/xs.ml
>> @@ -17,6 +17,7 @@
>>  type perms = Xsraw.perms
>>  type con = Xsraw.con
>>  type domid = int
>> +type devid = int
> Likewise xenstore doesn't have a devid either AFAIK.
Same as above
>> diff --git a/tools/python/xen/lowlevel/xl/xl.c
>> b/tools/python/xen/lowlevel/xl/xl.c
>> --- a/tools/python/xen/lowlevel/xl/xl.c
>> +++ b/tools/python/xen/lowlevel/xl/xl.c
> Are you basing your patches on xen-unstable? I ask because this file
> isn't built there and so I wonder how you noticed it to change it.
I based it off of the xen-unstable tree on git, which I now realize is
the wrong tree.
> Ian.
>
The whole purpose of this patch is initialize device ids to -1 instead
of zero and the only way I could come up to do that cleanly within
libxl's type system was to create a new type. Is there another better
way to fix this problem? As long as device ids are initialized to zero,
all the xl DEVICE-attach commands will fail for attaching more than 1
device.



[-- Attachment #1.2: S/MIME Cryptographic Signature --]
[-- Type: application/pkcs7-signature, Size: 1459 bytes --]

[-- Attachment #2: Type: text/plain, Size: 126 bytes --]

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

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PATCH xm/xl enhancements for vptm 1/6] xl make devid a libxl type
  2012-09-21 19:26   ` Matthew Fioravante
@ 2012-09-25 10:51     ` Ian Campbell
  0 siblings, 0 replies; 4+ messages in thread
From: Ian Campbell @ 2012-09-25 10:51 UTC (permalink / raw)
  To: Matthew Fioravante; +Cc: xen-devel@lists.xensource.com

On Fri, 2012-09-21 at 20:26 +0100, Matthew Fioravante wrote:
> The whole purpose of this patch is initialize device ids to -1 instead
> of zero and the only way I could come up to do that cleanly within
> libxl's type system was to create a new type. 

I think that's the right thing to do.

Ian.

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2012-09-25 10:51 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2012-09-18 18:09 [PATCH xm/xl enhancements for vptm 1/6] xl make devid a libxl type Matthew Fioravante
2012-09-19 12:19 ` Ian Campbell
2012-09-21 19:26   ` Matthew Fioravante
2012-09-25 10:51     ` Ian Campbell

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.