From: Jason Andryuk <jason.andryuk@amd.com>
To: <xen-devel@lists.xenproject.org>
Cc: Jason Andryuk <jason.andryuk@amd.com>,
Anthony PERARD <anthony.perard@vates.tech>,
Juergen Gross <jgross@suse.com>
Subject: [PATCH v3 1/8] tools/init-dom0less: Make handles global
Date: Tue, 26 Aug 2025 17:08:40 -0400 [thread overview]
Message-ID: <20250826210847.126015-2-jason.andryuk@amd.com> (raw)
In-Reply-To: <20250826210847.126015-1-jason.andryuk@amd.com>
init-dom0less passes the assorted xen library handles from main
downward. This is a little excessive in places with 4 handles passed
into configure_xenstore().
Replace the handle passing with file-scoped variables.
The xenstore helpers are not changed. This keeps their implementation
common with the libxenstore functions that take a handle, transation,
and then additional arguments.
Suggested-by: Juergen Gross <jgross@suse.com>
Signed-off-by: Jason Andryuk <jason.andryuk@amd.com>
---
v3:
New
---
tools/helpers/init-dom0less.c | 37 +++++++++++++++--------------------
1 file changed, 16 insertions(+), 21 deletions(-)
diff --git a/tools/helpers/init-dom0less.c b/tools/helpers/init-dom0less.c
index a182dce563..0b0be08449 100644
--- a/tools/helpers/init-dom0less.c
+++ b/tools/helpers/init-dom0less.c
@@ -18,8 +18,12 @@
#define XENSTORE_PFN_OFFSET 1
#define STR_MAX_LENGTH 128
-static int alloc_xs_page(struct xc_interface_core *xch,
- libxl_dominfo *info,
+static libxl_ctx *ctx;
+static struct xs_handle *xsh;
+static struct xc_interface_core *xch;
+static xenforeignmemory_handle *xfh;
+
+static int alloc_xs_page(libxl_dominfo *info,
uint64_t *xenstore_pfn)
{
int rc;
@@ -43,8 +47,7 @@ static int alloc_xs_page(struct xc_interface_core *xch,
return 0;
}
-static int get_xs_page(struct xc_interface_core *xch, libxl_dominfo *info,
- uint64_t *xenstore_pfn)
+static int get_xs_page(libxl_dominfo *info, uint64_t *xenstore_pfn)
{
int rc;
@@ -111,8 +114,7 @@ static bool do_xs_write_vm(struct xs_handle *xsh, xs_transaction_t t,
* The list was retrieved by running xenstore-ls on a corresponding
* domain started by xl/libxl.
*/
-static int create_xenstore(struct xs_handle *xsh,
- libxl_dominfo *info, libxl_uuid uuid,
+static int create_xenstore(libxl_dominfo *info, libxl_uuid uuid,
uint64_t xenstore_pfn,
evtchn_port_t xenstore_port)
{
@@ -235,10 +237,7 @@ err:
return rc;
}
-static int init_domain(struct xs_handle *xsh,
- struct xc_interface_core *xch,
- xenforeignmemory_handle *xfh,
- libxl_dominfo *info)
+static int init_domain(libxl_dominfo *info)
{
libxl_uuid uuid;
uint64_t xenstore_evtchn, xenstore_pfn;
@@ -258,13 +257,13 @@ static int init_domain(struct xs_handle *xsh,
return 0;
/* Get xenstore page */
- if (get_xs_page(xch, info, &xenstore_pfn) != 0)
+ if (get_xs_page(info, &xenstore_pfn) != 0)
return 1;
if (xenstore_pfn == ~0ULL) {
struct xenstore_domain_interface *intf;
- rc = alloc_xs_page(xch, info, &xenstore_pfn);
+ rc = alloc_xs_page(info, &xenstore_pfn);
if (rc != 0) {
printf("Error on getting xenstore page\n");
return 1;
@@ -299,7 +298,7 @@ static int init_domain(struct xs_handle *xsh,
if (rc)
err(1, "gen_stub_json_config");
- rc = create_xenstore(xsh, info, uuid, xenstore_pfn, xenstore_evtchn);
+ rc = create_xenstore(info, uuid, xenstore_pfn, xenstore_evtchn);
if (rc)
err(1, "writing to xenstore");
@@ -310,7 +309,7 @@ static int init_domain(struct xs_handle *xsh,
}
/* Check if domain has been configured in XS */
-static bool domain_exists(struct xs_handle *xsh, int domid)
+static bool domain_exists(int domid)
{
return xs_is_domain_introduced(xsh, domid);
}
@@ -318,11 +317,7 @@ static bool domain_exists(struct xs_handle *xsh, int domid)
int main(int argc, char **argv)
{
libxl_dominfo *info = NULL;
- libxl_ctx *ctx;
int nb_vm = 0, rc = 0, i;
- struct xs_handle *xsh = NULL;
- struct xc_interface_core *xch = NULL;
- xenforeignmemory_handle *xfh = NULL;
/* TODO reuse libxl xsh connection */
xsh = xs_open(0);
@@ -355,9 +350,9 @@ int main(int argc, char **argv)
continue;
printf("Checking domid: %u\n", domid);
- if (!domain_exists(xsh, domid)) {
- rc = init_domain(xsh, xch, xfh, &info[i]);
- if (rc < 0) {
+ if (!domain_exists(domid)) {
+ rc = init_domain(&info[i]);
+ if (rc) {
fprintf(stderr, "init_domain failed.\n");
goto out;
}
--
2.50.1
next prev parent reply other threads:[~2025-08-26 21:09 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-08-26 21:08 [PATCH v3 0/8] init-dom0less and dom0less xenstore evtchn Jason Andryuk
2025-08-26 21:08 ` Jason Andryuk [this message]
2025-08-27 15:12 ` [PATCH v3 1/8] tools/init-dom0less: Make handles global Jürgen Groß
2025-08-26 21:08 ` [PATCH v3 2/8] tools/init-dom0less: Factor out xenstore setup Jason Andryuk
2025-08-26 21:08 ` [PATCH v3 3/8] tools/init-dom0less: Only introduce un-introduced domains Jason Andryuk
2025-08-26 21:08 ` [PATCH v3 4/8] tools/init-dom0less: Switch domain_exists to check xenstore name Jason Andryuk
2025-08-26 21:08 ` [PATCH v3 5/8] tools/init-dom0less: Use introduced to determine no-enhanced Jason Andryuk
2025-08-26 21:08 ` [PATCH v3 6/8] tools/init-dom0less: Remove use of err() Jason Andryuk
2025-08-26 21:08 ` [PATCH v3 7/8] tools/init-dom0less: Continue on error Jason Andryuk
2025-08-26 21:08 ` [PATCH v3 8/8] xen/dom0less: store xenstore event channel in page Jason Andryuk
2025-08-27 7:58 ` Jan Beulich
2025-08-27 13:19 ` Jason Andryuk
2025-08-27 14:00 ` Jan Beulich
2025-08-27 8:03 ` Orzel, Michal
2025-08-27 13:24 ` Jason Andryuk
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20250826210847.126015-2-jason.andryuk@amd.com \
--to=jason.andryuk@amd.com \
--cc=anthony.perard@vates.tech \
--cc=jgross@suse.com \
--cc=xen-devel@lists.xenproject.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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.