rc = libxl_spawn_spawn(ctx, p, "device model", dm_xenstore_record_pid);
if (rc < 0) goto xit;
if (!rc) { /* inner child */
- libxl_exec(ctx, null, logfile_w, logfile_w,
+ libxl_exec(null, logfile_w, logfile_w,
info->device_model, args);
}
null_r = open("/dev/null", O_RDONLY);
null_w = open("/dev/null", O_WRONLY);
- libxl_exec(ctx, null_r, p[1], null_w, "/usr/sbin/tapdisk2", args);
+ libxl_exec(null_r, p[1], null_w, "/usr/sbin/tapdisk2", args);
XL_LOG(ctx, XL_LOG_ERROR, "Error execing tapdisk2");
}
close(p[1]);
return (waitpid_cb) ? waitpid_cb(pid, status, options) : waitpid(pid, status, options);
}
-void libxl_exec(struct libxl_ctx *ctx, int stdinfd, int stdoutfd, int stderrfd,
- char *arg0, char **args)
+void libxl_exec(int stdinfd, int stdoutfd, int stderrfd, char *arg0, char **args)
/* call this in the child */
{
int i;
for (i = 4; i < 256; i++)
close(i);
execv(arg0, args);
- XL_LOG_ERRNO(ctx, XL_LOG_ERROR, "exec %s failed", arg0);
_exit(-1);
}
/* low-level stuff, for synchronous subprocesses etc. */
-void libxl_exec(struct libxl_ctx *ctx, int stdinfd, int stdoutfd, int stderrfd,
- char *arg0, char **args); // logs errors, never returns
+void libxl_exec(int stdinfd, int stdoutfd, int stderrfd, char *arg0, char **args); // logs errors, never returns
void libxl_log_child_exitstatus(struct libxl_ctx *ctx,
const char *what, pid_t pid, int status);