|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [xen master] tools: Create xc_domain_getinfo_single()
commit 7c7c436ccb9c684f44a184324fd8920b12f93a4d
Author: Alejandro Vallejo <alejandro.vallejo@xxxxxxxxx>
AuthorDate: Fri Apr 28 11:41:19 2023 +0100
Commit: Andrew Cooper <andrew.cooper3@xxxxxxxxxx>
CommitDate: Fri Apr 28 14:34:40 2023 +0100
tools: Create xc_domain_getinfo_single()
It's a stricter version of xc_domain_getinfo() where the returned domid
always matches the requested domid or the error code shows an error instead.
A few patches ahead usages of xc_domain_getinfo() are removed until only
xc_domain_getinfo_single() and xc_domain_getinfolist() remain.
Signed-off-by: Alejandro Vallejo <alejandro.vallejo@xxxxxxxxx>
Reviewed-by: Andrew Cooper <andrew.cooper3@xxxxxxxxxx>
---
tools/include/xenctrl.h | 16 ++++++++++++++++
tools/libs/ctrl/xc_domain.c | 24 ++++++++++++++++++++++++
2 files changed, 40 insertions(+)
diff --git a/tools/include/xenctrl.h b/tools/include/xenctrl.h
index 5d709386b6..752fc87580 100644
--- a/tools/include/xenctrl.h
+++ b/tools/include/xenctrl.h
@@ -704,6 +704,22 @@ int xc_vcpu_getaffinity(xc_interface *xch,
int xc_domain_get_guest_width(xc_interface *xch, uint32_t domid,
unsigned int *guest_width);
+/**
+ * This function will return information about a single domain. It looks
+ * up the domain by the provided domid and succeeds if the domain exists
+ * and is accesible by the current domain, or fails otherwise. A buffer
+ * may optionally passed on the `info` parameter in order to retrieve
+ * information about the domain. The buffer is ignored if NULL is
+ * passed instead.
+ *
+ * @parm xch a handle to an open hypervisor interface
+ * @parm domid domid to lookup
+ * @parm info Optional domain information buffer (may be NULL)
+ * @return 0 on success, otherwise the call failed and info is undefined
+ */
+int xc_domain_getinfo_single(xc_interface *xch,
+ uint32_t domid,
+ xc_domaininfo_t *info);
/**
* This function will return information about one or more domains. It is
diff --git a/tools/libs/ctrl/xc_domain.c b/tools/libs/ctrl/xc_domain.c
index e939d07157..d5f0923088 100644
--- a/tools/libs/ctrl/xc_domain.c
+++ b/tools/libs/ctrl/xc_domain.c
@@ -345,6 +345,30 @@ int xc_dom_vuart_init(xc_interface *xch,
return rc;
}
+int xc_domain_getinfo_single(xc_interface *xch,
+ uint32_t domid,
+ xc_domaininfo_t *info)
+{
+ struct xen_domctl domctl = {
+ .cmd = XEN_DOMCTL_getdomaininfo,
+ .domain = domid,
+ };
+
+ if ( do_domctl(xch, &domctl) < 0 )
+ return -1;
+
+ if ( domctl.u.getdomaininfo.domain != domid )
+ {
+ errno = ESRCH;
+ return -1;
+ }
+
+ if ( info )
+ *info = domctl.u.getdomaininfo;
+
+ return 0;
+}
+
int xc_domain_getinfo(xc_interface *xch,
uint32_t first_domid,
unsigned int max_doms,
--
generated by git-patchbot for /home/xen/git/xen.git#master
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |