From: Sukadev Bhattiprolu <[email protected]>
Date: Mon, 29 Mar 2010 23:53:55 -0700
Subject: [PATCH 4/6][lxc][v3] Move get_init_pid() into checkpoint.c

lxc_attach.c is currently not included in liblxc.so. In  afollowon
patch, checkpoint() function needs to also use the get_init_pid()
interface. So move the defintions into checkpoint.c - which would
then be accessible to both lxc_attach and lxc-checkpoint.

Signed-off-by: Sukadev Bhattiprolu <[email protected]>
---
 src/lxc/checkpoint.c |   29 +++++++++++++++++++++++++++++
 src/lxc/lxc.h        |    6 ++++++
 src/lxc/lxc_attach.c |   29 +----------------------------
 3 files changed, 36 insertions(+), 28 deletions(-)

diff --git a/src/lxc/checkpoint.c b/src/lxc/checkpoint.c
index 7e8a93e..4e75cb6 100644
--- a/src/lxc/checkpoint.c
+++ b/src/lxc/checkpoint.c
@@ -22,9 +22,38 @@
  */
 #include <lxc/lxc.h>
 #include <lxc/log.h>
+#include <lxc/commands.h>
 
 lxc_log_define(lxc_checkpoint, lxc);
 
+pid_t get_init_pid(const char *name)
+{
+       struct lxc_command command = {
+               .request = { .type = LXC_COMMAND_PID },
+       };
+
+       int ret, stopped = 0;
+
+       ret = lxc_command(name, &command, &stopped);
+       if (ret < 0 && stopped) {
+               INFO("'%s' is already stopped", name);
+               return 0;
+       }
+
+       if (ret < 0) {
+               ERROR("failed to send command");
+               return -1;
+       }
+
+       if (command.answer.ret) {
+               ERROR("failed to retrieve the init pid: %s",
+                     strerror(-command.answer.ret));
+               return -1;
+       }
+
+       return command.answer.pid;
+}
+
 int lxc_checkpoint(const char *name, const char *statefile, int flags)
 {
        return 0;
diff --git a/src/lxc/lxc.h b/src/lxc/lxc.h
index b0b9f4e..bd87bdb 100644
--- a/src/lxc/lxc.h
+++ b/src/lxc/lxc.h
@@ -27,6 +27,7 @@
 extern "C" {
 #endif
 
+#include <unistd.h>
 #include <stddef.h>
 #include <lxc/state.h>
 
@@ -56,6 +57,11 @@ extern int lxc_start(const char *name, char *const argv[], 
struct lxc_conf *);
 extern int lxc_stop(const char *name);
 
 /*
+ * Get the pid of the root application process tree in parent-pid namespace
+ */
+extern pid_t get_init_pid(const char *name);
+
+/*
  * Open the monitoring mechanism for a specific container
  * The function will return an fd corresponding to the events
  * Returns a file descriptor on success, < 0 otherwise
diff --git a/src/lxc/lxc_attach.c b/src/lxc/lxc_attach.c
index a012c2c..3d2cdd5 100644
--- a/src/lxc/lxc_attach.c
+++ b/src/lxc/lxc_attach.c
@@ -28,6 +28,7 @@
 #include "commands.h"
 #include "arguments.h"
 #include "namespace.h"
+#include "lxc.h"
 #include "log.h"
 
 lxc_log_define(lxc_attach_ui, lxc);
@@ -50,34 +51,6 @@ Options :\n\
        .checker  = NULL,
 };
 
-pid_t get_init_pid(const char *name)
-{
-       struct lxc_command command = {
-               .request = { .type = LXC_COMMAND_PID },
-       };
-
-       int ret, stopped = 0;
-
-       ret = lxc_command(name, &command, &stopped);
-       if (ret < 0 && stopped) {
-               INFO("'%s' is already stopped", name);
-               return 0;
-       }
-
-       if (ret < 0) {
-               ERROR("failed to send command");
-               return -1;
-       }
-
-       if (command.answer.ret) {
-               ERROR("failed to retrieve the init pid: %s",
-                     strerror(-command.answer.ret));
-               return -1;
-       }
-
-       return command.answer.pid;
-}
-
 int main(int argc, char *argv[], char *envp[])
 {
        int ret;
-- 
1.6.6.1

_______________________________________________
Containers mailing list
[email protected]
https://lists.linux-foundation.org/mailman/listinfo/containers

_______________________________________________
Devel mailing list
[email protected]
https://openvz.org/mailman/listinfo/devel

Reply via email to