Re: [Xen-devel] [PATCH v4 11/14] golang/xenlight: Implement get console path operations

2017-04-05 Thread George Dunlap
On Thu, Mar 16, 2017 at 7:08 PM, Ronald Rojas  wrote:
> Implement Golang enumeration of libxl_console_type
> as ConsoleType
>
> Implement the following libxl functions:
> - libxl_console_get_tty
> - libxl_primary_console_get_tty
>
> Signed-off-by: Ronald Rojas 
> ---
> CC: xen-devel@lists.xen.org
> CC: george.dun...@citrix.com
> CC: ian.jack...@eu.citrix.com
> CC: wei.l...@citrix.com
> ---
> ---
>  tools/golang/xenlight/xenlight.go | 57 
> +++
>  1 file changed, 57 insertions(+)
>
> diff --git a/tools/golang/xenlight/xenlight.go 
> b/tools/golang/xenlight/xenlight.go
> index 61d7f8f..d520f74 100644
> --- a/tools/golang/xenlight/xenlight.go
> +++ b/tools/golang/xenlight/xenlight.go
> @@ -1080,3 +1080,60 @@ func (Ctx *Context) ListVcpu(id Domid) (glist 
> []Vcpuinfo) {
>
> return
>  }
> +
> +type ConsoleType int
> +
> +const (
> +   ConsoleTypeUnknown = ConsoleType(C.LIBXL_CONSOLE_TYPE_UNKNOWN)
> +   ConsoleTypeSerial  = ConsoleType(C.LIBXL_CONSOLE_TYPE_SERIAL)
> +   ConsoleTypePV  = ConsoleType(C.LIBXL_CONSOLE_TYPE_PV)
> +)
> +
> +func (ct ConsoleType) String() (str string) {
> +   cstr := C.libxl_console_type_to_string(C.libxl_console_type(ct))
> +   str = C.GoString(cstr)
> +
> +   return
> +}
> +
> +//int libxl_console_get_tty(libxl_ctx *ctx, uint32_t domid, int cons_num,
> +//libxl_console_type type, char **path);
> +func (Ctx *Context) ConsoleGetTty(id Domid, consNum int, conType 
> ConsoleType) (path string, err error) {
> +   err = Ctx.CheckOpen()
> +   if err != nil {
> +   return
> +   }
> +
> +   var cpath *C.char
> +   defer C.free(cpath)
> +   ret := C.libxl_console_get_tty(Ctx.ctx, C.uint32_t(id), 
> C.int(consNum), C.libxl_console_type(conType), &cpath)
> +
> +   if ret != 0 {
> +   err = Error(-ret)
> +   return
> +   }

You can't call `defer C.free()` until you're certain that cpath will
contain a non-NULL pointer (here and in PrimaryConsole...)

Everything else looks fine.

 -George

___
Xen-devel mailing list
Xen-devel@lists.xen.org
https://lists.xen.org/xen-devel


[Xen-devel] [PATCH v4 11/14] golang/xenlight: Implement get console path operations

2017-03-16 Thread Ronald Rojas
Implement Golang enumeration of libxl_console_type
as ConsoleType

Implement the following libxl functions:
- libxl_console_get_tty
- libxl_primary_console_get_tty

Signed-off-by: Ronald Rojas 
---
CC: xen-devel@lists.xen.org
CC: george.dun...@citrix.com
CC: ian.jack...@eu.citrix.com
CC: wei.l...@citrix.com
---
---
 tools/golang/xenlight/xenlight.go | 57 +++
 1 file changed, 57 insertions(+)

diff --git a/tools/golang/xenlight/xenlight.go 
b/tools/golang/xenlight/xenlight.go
index 61d7f8f..d520f74 100644
--- a/tools/golang/xenlight/xenlight.go
+++ b/tools/golang/xenlight/xenlight.go
@@ -1080,3 +1080,60 @@ func (Ctx *Context) ListVcpu(id Domid) (glist 
[]Vcpuinfo) {
 
return
 }
+
+type ConsoleType int
+
+const (
+   ConsoleTypeUnknown = ConsoleType(C.LIBXL_CONSOLE_TYPE_UNKNOWN)
+   ConsoleTypeSerial  = ConsoleType(C.LIBXL_CONSOLE_TYPE_SERIAL)
+   ConsoleTypePV  = ConsoleType(C.LIBXL_CONSOLE_TYPE_PV)
+)
+
+func (ct ConsoleType) String() (str string) {
+   cstr := C.libxl_console_type_to_string(C.libxl_console_type(ct))
+   str = C.GoString(cstr)
+
+   return
+}
+
+//int libxl_console_get_tty(libxl_ctx *ctx, uint32_t domid, int cons_num,
+//libxl_console_type type, char **path);
+func (Ctx *Context) ConsoleGetTty(id Domid, consNum int, conType ConsoleType) 
(path string, err error) {
+   err = Ctx.CheckOpen()
+   if err != nil {
+   return
+   }
+
+   var cpath *C.char
+   defer C.free(cpath)
+   ret := C.libxl_console_get_tty(Ctx.ctx, C.uint32_t(id), C.int(consNum), 
C.libxl_console_type(conType), &cpath)
+
+   if ret != 0 {
+   err = Error(-ret)
+   return
+   }
+
+   path = C.GoString(cpath)
+   return
+}
+
+//int libxl_primary_console_get_tty(libxl_ctx *ctx, uint32_t domid_vm,
+// char **path);
+func (Ctx *Context) PrimaryConsoleGetTty(domid uint32) (path string, err 
error) {
+   err = Ctx.CheckOpen()
+   if err != nil {
+   return
+   }
+
+   var cpath *C.char
+   ret := C.libxl_primary_console_get_tty(Ctx.ctx, C.uint32_t(domid), 
&cpath)
+   defer C.free(cpath)
+
+   if ret != 0 {
+   err = Error(-ret)
+   return
+   }
+
+   path = C.GoString(cpath)
+   return
+}
-- 
2.7.3


___
Xen-devel mailing list
Xen-devel@lists.xen.org
https://lists.xen.org/xen-devel