aboutsummaryrefslogtreecommitdiffstats
path: root/tools/libxl/xl.c
diff options
context:
space:
mode:
authorIan Jackson <ian.jackson@eu.citrix.com>2012-05-11 18:59:06 +0100
committerIan Jackson <ian.jackson@eu.citrix.com>2012-05-11 18:59:06 +0100
commit2fe033acfc82d768fd7b91016bc6205e1c44d7a3 (patch)
tree796ddfb68ed4298f01699b8c0bc60e97fa6d11f2 /tools/libxl/xl.c
parent99e96537fdac1d2ca36d6ce60532eebd3ae52657 (diff)
downloadxen-2fe033acfc82d768fd7b91016bc6205e1c44d7a3.tar.gz
xen-2fe033acfc82d768fd7b91016bc6205e1c44d7a3.tar.bz2
xen-2fe033acfc82d768fd7b91016bc6205e1c44d7a3.zip
libxl: child processes cleanups
Abolish libxl_fork. Its only callers were in xl. Its functionality is now moved elsewhere, as follows: * The "logging version of fork", which is what it was billed as, is now xl_fork, which also dies on failure. * Closing the xenstore handle in the child is now done in libxl__ev_child_fork, which is the only remaining place where fork is called in libxl. * We provide a new function libxl__ev_child_xenstore_reopen for in-libxl children to make the ctx useable for xenstore again. * Consequently libxl__spawn_record_pid now no longer needs to mess about with its own xenstore handle. As a bonus it can now just use libxl__xs_write. Also, since we have now converted all the forkers in libxl, we can always honour the fork_replacement childproc hook - so do so. Signed-off-by: Ian Jackson <ian.jackson@eu.citrix.com> Acked-by: Ian Campbell <ian.campbell@citrix.com> Committed-by: Ian Jackson <Ian.Jackson@eu.citrix.com>
Diffstat (limited to 'tools/libxl/xl.c')
-rw-r--r--tools/libxl/xl.c12
1 files changed, 12 insertions, 0 deletions
diff --git a/tools/libxl/xl.c b/tools/libxl/xl.c
index a6ffd25ff7..d4db1f8b8b 100644
--- a/tools/libxl/xl.c
+++ b/tools/libxl/xl.c
@@ -105,6 +105,18 @@ void postfork(void)
}
}
+pid_t xl_fork(libxl_ctx *ctx) {
+ pid_t pid;
+
+ pid = fork();
+ if (pid == -1) {
+ perror("fork failed");
+ exit(-1);
+ }
+
+ return pid;
+}
+
int main(int argc, char **argv)
{
int opt = 0;