ight.go
@@ -118,6 +118,103 @@ type Context struct {
logger *C.xentoollog_logger_stdiostream
}
=20
+type Hwcap []C.uint32_t
+
+func (chwcap C.libxl_hwcap) CToGo() (ghwcap Hwcap) {
+ // Alloc a Go slice for the bytes
+ size :=3D 8
+ ghwcap =3D make([]C.uint32_t, size)
+
+ // Make a slice pointing to the C array
+ mapslice :=3D (*[1 << 30]C.uint32_t)(unsafe.Pointer(&chwcap[0]))[:size:si=
ze]
+
+ // And copy the C array into the Go array
+ copy(ghwcap, mapslice)
+
+ return
+}
+
+/*
+ * Types: IDL
+ *
+ * FIXME: Generate these automatically from the IDL
+ */
+
+type Physinfo struct {
+ ThreadsPerCore uint32
+ CoresPerSocket uint32
+ MaxCpuId uint32
+ NrCpus uint32
+ CpuKhz uint32
+ TotalPages uint64
+ FreePages uint64
+ ScrubPages uint64
+ OutstandingPages uint64
+ SharingFreedPages uint64
+ SharingUsedFrames uint64
+ NrNodes uint32
+ HwCap Hwcap
+ CapHvm bool
+ CapHvmDirectio bool
+}
+
+func (cphys *C.libxl_physinfo) toGo() (physinfo *Physinfo) {
+
+ physinfo =3D &Physinfo{}
+ physinfo.ThreadsPerCore =3D uint32(cphys.threads_per_core)
+ physinfo.CoresPerSocket =3D uint32(cphys.cores_per_socket)
+ physinfo.MaxCpuId =3D uint32(cphys.max_cpu_id)
+ physinfo.NrCpus =3D uint32(cphys.nr_cpus)
+ physinfo.CpuKhz =3D uint32(cphys.cpu_khz)
+ physinfo.TotalPages =3D uint64(cphys.total_pages)
+ physinfo.FreePages =3D uint64(cphys.free_pages)
+ physinfo.ScrubPages =3D uint64(cphys.scrub_pages)
+ physinfo.ScrubPages =3D uint64(cphys.scrub_pages)
+ physinfo.SharingFreedPages =3D uint64(cphys.sharing_freed_pages)
+ physinfo.SharingUsedFrames =3D uint64(cphys.sharing_used_frames)
+ physinfo.NrNodes =3D uint32(cphys.nr_nodes)
+ physinfo.HwCap =3D cphys.hw_cap.CToGo()
+ physinfo.CapHvm =3D bool(cphys.cap_hvm)
+ physinfo.CapHvmDirectio =3D bool(cphys.cap_hvm_directio)
+
+ return
+}
+
+type VersionInfo struct {
+ XenVersionMajor int
+ XenVersionMinor int
+ XenVersionExtra string
+ Compiler string
+ CompileBy string
+ CompileDomain string
+ CompileDate string
+ Capabilities string
+ Changeset string
+ VirtStart uint64
+ Pagesize int
+ Commandline string
+ BuildId string
+}
+
+func (cinfo *C.libxl_version_info) toGo() (info *VersionInfo) {
+ info =3D=20
----- Message truncated -----