aboutsummaryrefslogtreecommitdiffstats
path: root/tools/libxl/libxl_exec.c
diff options
context:
space:
mode:
authorIan Campbell <ian.campbell@citrix.com>2011-03-15 18:20:46 +0000
committerIan Campbell <ian.campbell@citrix.com>2011-03-15 18:20:46 +0000
commiteca0cebba197edbc6aa452c86e8019ab8b955c81 (patch)
treec247db45b9291d2e8f66aee6416242413150a622 /tools/libxl/libxl_exec.c
parentd9e46835ab53a135e979cb7eb6febc5dc6f71a85 (diff)
downloadxen-eca0cebba197edbc6aa452c86e8019ab8b955c81.tar.gz
xen-eca0cebba197edbc6aa452c86e8019ab8b955c81.tar.bz2
xen-eca0cebba197edbc6aa452c86e8019ab8b955c81.zip
libxl: Make all hidden/static functions take a gc not a ctx
Also ensure that static and hidden functions use the libxl__ prefix not just libxl_ (in the case of static functions only when they use a libxl prefix to start with). This follows the policy described in libxl.h "libxl memory management". Based on a manual audit of: grep ^static tools/libxl/libxl*.[ch]| grep libxl_ctx grep libxl__ tools/libxl/*.h| grep libxl_ctx Signed-off-by: Ian Campbell <ian.campbell@citrix.com> Committed-by: Ian Jackson <ian.jackson@eu.citrix.com>
Diffstat (limited to 'tools/libxl/libxl_exec.c')
-rw-r--r--tools/libxl/libxl_exec.c20
1 files changed, 12 insertions, 8 deletions
diff --git a/tools/libxl/libxl_exec.c b/tools/libxl/libxl_exec.c
index e770fd3e09..a72cb83bee 100644
--- a/tools/libxl/libxl_exec.c
+++ b/tools/libxl/libxl_exec.c
@@ -91,12 +91,13 @@ void libxl_report_child_exitstatus(libxl_ctx *ctx,
}
}
-int libxl__spawn_spawn(libxl_ctx *ctx,
+int libxl__spawn_spawn(libxl__gc *gc,
libxl__device_model_starting *starting,
const char *what,
void (*intermediate_hook)(void *for_spawn,
pid_t innerchild))
{
+ libxl_ctx *ctx = libxl__gc_owner(gc);
pid_t child, got;
int status;
pid_t intermediate;
@@ -138,11 +139,12 @@ int libxl__spawn_spawn(libxl_ctx *ctx,
? WTERMSIG(status)+128 : -1);
}
-static void report_spawn_intermediate_status(libxl_ctx *ctx,
- libxl__spawn_starting *for_spawn,
- int status)
+static void report_spawn_intermediate_status(libxl__gc *gc,
+ libxl__spawn_starting *for_spawn,
+ int status)
{
if (!WIFEXITED(status)) {
+ libxl_ctx *ctx = libxl__gc_owner(gc);
char *intermediate_what;
/* intermediate process did the logging itself if it exited */
if ( asprintf(&intermediate_what,
@@ -154,9 +156,10 @@ static void report_spawn_intermediate_status(libxl_ctx *ctx,
}
}
-int libxl__spawn_detach(libxl_ctx *ctx,
+int libxl__spawn_detach(libxl__gc *gc,
libxl__spawn_starting *for_spawn)
{
+ libxl_ctx *ctx = libxl__gc_owner(gc);
int r, status;
pid_t got;
int rc = 0;
@@ -175,7 +178,7 @@ int libxl__spawn_detach(libxl_ctx *ctx,
got = call_waitpid(ctx->waitpid_instead, for_spawn->intermediate, &status, 0);
assert(got == for_spawn->intermediate);
if (!(WIFSIGNALED(status) && WTERMSIG(status) == SIGKILL)) {
- report_spawn_intermediate_status(ctx, for_spawn, status);
+ report_spawn_intermediate_status(gc, for_spawn, status);
rc = ERROR_FAIL;
}
for_spawn->intermediate = 0;
@@ -187,8 +190,9 @@ int libxl__spawn_detach(libxl_ctx *ctx,
return rc;
}
-int libxl__spawn_check(libxl_ctx *ctx, void *for_spawn_void)
+int libxl__spawn_check(libxl__gc *gc, void *for_spawn_void)
{
+ libxl_ctx *ctx = libxl__gc_owner(gc);
libxl__spawn_starting *for_spawn = for_spawn_void;
pid_t got;
int status;
@@ -200,7 +204,7 @@ int libxl__spawn_check(libxl_ctx *ctx, void *for_spawn_void)
if (!got) return 0;
assert(got == for_spawn->intermediate);
- report_spawn_intermediate_status(ctx, for_spawn, status);
+ report_spawn_intermediate_status(gc, for_spawn, status);
for_spawn->intermediate = 0;
return ERROR_FAIL;