diff options
author | Ian Jackson <ian.jackson@eu.citrix.com> | 2012-05-11 18:59:06 +0100 |
---|---|---|
committer | Ian Jackson <ian.jackson@eu.citrix.com> | 2012-05-11 18:59:06 +0100 |
commit | 2fe033acfc82d768fd7b91016bc6205e1c44d7a3 (patch) | |
tree | 796ddfb68ed4298f01699b8c0bc60e97fa6d11f2 /tools/libxl/xl.c | |
parent | 99e96537fdac1d2ca36d6ce60532eebd3ae52657 (diff) | |
download | xen-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.c | 12 |
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; |