From: Sukadev Bhattiprolu <[email protected]>
Date: Thu, 4 Mar 2010 21:30:50 -0800
Subject: [PATCH 06/14][user-cr] Create common.h

Code in common.h can be shared by checkpoint.c and restart.c for now.

Signed-off-by: Sukadev Bhattiprolu <[email protected]>
---
 Makefile     |    4 ++
 checkpoint.c |   31 +---------------
 common.h     |  112 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 restart.c    |  110 +--------------------------------------------------------
 4 files changed, 119 insertions(+), 138 deletions(-)
 create mode 100644 common.h

diff --git a/Makefile b/Makefile
index 64b5f73..406f685 100644
--- a/Makefile
+++ b/Makefile
@@ -13,6 +13,8 @@ CKPT_HEADERS = include/linux/checkpoint.h \
                include/linux/checkpoint_hdr.h \
                include/asm/checkpoint_hdr.h
 
+CR_OBJS = checkpoint.o restart.o
+
 # detect architecture (for eclone)
 SUBARCH ?= $(patsubst i%86,x86_32,$(shell uname -m))
 
@@ -50,6 +52,8 @@ $(LIB_ECLONE):
 # restart needs to be thread-safe
 restart: CFLAGS += -D__REENTRANT -pthread
 
+$(CR_OBJS): common.h
+
 # eclone() is architecture specific
 ifneq ($(SUBARCH),)
 $(ECLONE_PROGS): $(LIB_ECLONE) 
diff --git a/checkpoint.c b/checkpoint.c
index 86608b1..6e91149 100644
--- a/checkpoint.c
+++ b/checkpoint.c
@@ -21,6 +21,8 @@
 
 #include <linux/checkpoint.h>
 
+#include "common.h"
+
 static char usage_str[] =
 "usage: ckpt [opts] PID\n"
 "  'checkpoint' takes a checkpoint of the task indicated by PID, and all\n"
@@ -55,35 +57,6 @@ inline static int checkpoint(pid_t pid, int fd, unsigned 
long flags, int logfd)
        return syscall(__NR_checkpoint, pid, fd, flags, logfd);
 }
 
-#define BUFSIZE  (4 * 4096)
-static inline void ckpt_msg(int fd, char *format, ...)
-{
-       va_list ap;
-       char *bufp;
-       if (fd < 0)
-               return;
-
-       va_start(ap, format);
-
-       bufp = malloc(BUFSIZE);
-       if(bufp) {
-               vsnprintf(bufp, BUFSIZE, format, ap);
-               write(fd, bufp, strlen(bufp));
-       }
-       free(bufp);
-
-       va_end(ap);
-}
-
-#define ckpt_err(...)                          \
-       ckpt_msg(global_uerrfd, __VA_ARGS__)
-
-#define ckpt_perror(s)                                                  \
-       do {                                                            \
-               ckpt_msg(global_uerrfd, s);                             \
-               ckpt_msg(global_uerrfd, ": %s\n", strerror(errno));     \
-       } while (0)
-
 static void usage(char *str)
 {
        ckpt_err("%s", str);
diff --git a/common.h b/common.h
new file mode 100644
index 0000000..99b224d
--- /dev/null
+++ b/common.h
@@ -0,0 +1,112 @@
+#include <stdio.h>
+#include <signal.h>
+
+#define BUFSIZE  (4 * 4096)
+
+static inline void ckpt_msg(int fd, char *format, ...)
+{
+       va_list ap;
+       char *bufp;
+       if (fd < 0)
+               return;
+
+       va_start(ap, format);
+
+       bufp = malloc(BUFSIZE);
+       if(bufp) {
+               vsnprintf(bufp, BUFSIZE, format, ap);
+               write(fd, bufp, strlen(bufp));
+       }
+       free(bufp);
+
+       va_end(ap);
+}
+
+#define ckpt_perror(s)                                                         
\
+       do {                                                            \
+               ckpt_msg(global_uerrfd, s);                             \
+               ckpt_msg(global_uerrfd, ": %s\n", strerror(errno));     \
+       } while (0)
+
+#ifdef CHECKPOINT_DEBUG
+#define ckpt_dbg(_format, _args...)                                    \
+       do {                                                            \
+               if (global_debug)                                       \
+                       ckpt_msg(global_uerrfd, "<%d>" _format,         \
+                                       _gettid(), ##_args);            \
+       } while (0)
+#define ckpt_dbg_cont(_format, _args...)                               \
+       do {                                                            \
+               if (global_debug)                                       \
+                       ckpt_msg(global_uerrfd, _format, ##_args);      \
+       } while (0)
+#else
+#define ckpt_dbg(_format, _args...)  \
+       do { } while (0)
+#define ckpt_dbg_cont(_format, _args...)  \
+       do { } while (0)
+#endif
+
+#define ckpt_err(...)  \
+       ckpt_msg(global_uerrfd, __VA_ARGS__)
+
+#define ckpt_verbose(...)                                      \
+       do {                                                    \
+               if (global_verbose)                             \
+                       ckpt_msg(global_ulogfd, __VA_ARGS__);   \
+       } while(0)
+
+struct signal_array {
+       int signum;
+       char *sigstr;
+};
+
+#define SIGNAL_ENTRY(signal)  { SIG ## signal, #signal }
+
+#define INIT_SIGNAL_ARRAY {    \
+       { 0, "NONE" },          \
+       SIGNAL_ENTRY(ALRM),     \
+       SIGNAL_ENTRY(HUP),      \
+       SIGNAL_ENTRY(INT),      \
+       SIGNAL_ENTRY(KILL),     \
+       SIGNAL_ENTRY(PIPE),     \
+       SIGNAL_ENTRY(POLL),     \
+       SIGNAL_ENTRY(PROF),     \
+       SIGNAL_ENTRY(TERM),     \
+       SIGNAL_ENTRY(USR1),     \
+       SIGNAL_ENTRY(USR2),     \
+       SIGNAL_ENTRY(VTALRM),   \
+       SIGNAL_ENTRY(STKFLT),   \
+       SIGNAL_ENTRY(PWR),      \
+       SIGNAL_ENTRY(WINCH),    \
+       SIGNAL_ENTRY(CHLD),     \
+       SIGNAL_ENTRY(URG),      \
+       SIGNAL_ENTRY(TTIN),     \
+       SIGNAL_ENTRY(TTOU),     \
+       SIGNAL_ENTRY(STOP),     \
+       SIGNAL_ENTRY(CONT),     \
+       SIGNAL_ENTRY(ABRT),     \
+       SIGNAL_ENTRY(FPE),      \
+       SIGNAL_ENTRY(ILL),      \
+       SIGNAL_ENTRY(QUIT),     \
+       SIGNAL_ENTRY(SEGV),     \
+       SIGNAL_ENTRY(TRAP),     \
+       SIGNAL_ENTRY(SYS),      \
+       SIGNAL_ENTRY(BUS),      \
+       SIGNAL_ENTRY(XCPU),     \
+       SIGNAL_ENTRY(XFSZ),     \
+       { -1, "LAST" },         \
+}
+
+#define CKPT_COND_PIDZERO  0x1
+#define CKPT_COND_MNTPROC  0x2
+#define CKPT_COND_MNTPTY   0x4
+
+#define CKPT_COND_NONE     0
+#define CKPT_COND_ANY      ULONG_MAX
+
+/* default for skip/warn/fail */
+#define CKPT_COND_WARN     (CKPT_COND_MNTPROC | \
+                           CKPT_COND_MNTPTY)
+#define CKPT_COND_FAIL     (CKPT_COND_NONE)
+
diff --git a/restart.c b/restart.c
index 4cd0bad..7c9db80 100644
--- a/restart.c
+++ b/restart.c
@@ -40,6 +40,7 @@
 #include "eclone.h"
 #include "genstack.h"
 #include "compat.h"
+#include "common.h"
 
 static char usage_str[] =
 "usage: restart [opts]\n"
@@ -102,103 +103,6 @@ static char usage_str[] =
  * of the checkpoint image stream.
  */
 
-#define BUFSIZE  (4 * 4096)
-
-static inline void ckpt_msg(int fd, char *format, ...)
-{
-       va_list ap;
-       char *bufp;
-       if (fd < 0)
-               return;
-
-       va_start(ap, format);
-
-       bufp = malloc(BUFSIZE);
-       if(bufp) {
-               vsnprintf(bufp, BUFSIZE, format, ap);
-               write(fd, bufp, strlen(bufp));
-       }
-       free(bufp);
-
-       va_end(ap);
-}
-
-#define ckpt_perror(s)                                                         
\
-       do {                                                            \
-               ckpt_msg(global_uerrfd, s);                             \
-               ckpt_msg(global_uerrfd, ": %s\n", strerror(errno));     \
-       } while (0)
-
-#ifdef CHECKPOINT_DEBUG
-#define ckpt_dbg(_format, _args...)                                    \
-       do {                                                            \
-               if (global_debug)                                       \
-                       ckpt_msg(global_uerrfd, "<%d>" _format,         \
-                                       _gettid(), ##_args);            \
-       } while (0)
-#define ckpt_dbg_cont(_format, _args...)                               \
-       do {                                                            \
-               if (global_debug)                                       \
-                       ckpt_msg(global_uerrfd, _format, ##_args);      \
-       } while (0)
-#else
-#define ckpt_dbg(_format, _args...)  \
-       do { } while (0)
-#define ckpt_dbg_cont(_format, _args...)  \
-       do { } while (0)
-#endif
-
-#define ckpt_err(...)  \
-       ckpt_msg(global_uerrfd, __VA_ARGS__)
-
-#define ckpt_verbose(...)                                      \
-       do {                                                    \
-               if (global_verbose)                             \
-                       ckpt_msg(global_ulogfd, __VA_ARGS__);   \
-       } while(0)
-
-struct signal_array {
-       int signum;
-       char *sigstr;
-};
-
-#define SIGNAL_ENTRY(signal)  { SIG ## signal, #signal }
-
-#define INIT_SIGNAL_ARRAY {    \
-       { 0, "NONE" },          \
-       SIGNAL_ENTRY(ALRM),     \
-       SIGNAL_ENTRY(HUP),      \
-       SIGNAL_ENTRY(INT),      \
-       SIGNAL_ENTRY(KILL),     \
-       SIGNAL_ENTRY(PIPE),     \
-       SIGNAL_ENTRY(POLL),     \
-       SIGNAL_ENTRY(PROF),     \
-       SIGNAL_ENTRY(TERM),     \
-       SIGNAL_ENTRY(USR1),     \
-       SIGNAL_ENTRY(USR2),     \
-       SIGNAL_ENTRY(VTALRM),   \
-       SIGNAL_ENTRY(STKFLT),   \
-       SIGNAL_ENTRY(PWR),      \
-       SIGNAL_ENTRY(WINCH),    \
-       SIGNAL_ENTRY(CHLD),     \
-       SIGNAL_ENTRY(URG),      \
-       SIGNAL_ENTRY(TTIN),     \
-       SIGNAL_ENTRY(TTOU),     \
-       SIGNAL_ENTRY(STOP),     \
-       SIGNAL_ENTRY(CONT),     \
-       SIGNAL_ENTRY(ABRT),     \
-       SIGNAL_ENTRY(FPE),      \
-       SIGNAL_ENTRY(ILL),      \
-       SIGNAL_ENTRY(QUIT),     \
-       SIGNAL_ENTRY(SEGV),     \
-       SIGNAL_ENTRY(TRAP),     \
-       SIGNAL_ENTRY(SYS),      \
-       SIGNAL_ENTRY(BUS),      \
-       SIGNAL_ENTRY(XCPU),     \
-       SIGNAL_ENTRY(XFSZ),     \
-       { -1, "LAST" },         \
-}
-
 static struct signal_array signal_array[] = INIT_SIGNAL_ARRAY;
 
 static char *sig2str(int sig)
@@ -398,18 +302,6 @@ struct app_restart_args {
        int keep_lsm;
 };
 
-#define CKPT_COND_PIDZERO  0x1
-#define CKPT_COND_MNTPROC  0x2
-#define CKPT_COND_MNTPTY   0x4
-
-#define CKPT_COND_NONE     0
-#define CKPT_COND_ANY      ULONG_MAX
-
-/* default for skip/warn/fail */
-#define CKPT_COND_WARN     (CKPT_COND_MNTPROC | \
-                           CKPT_COND_MNTPTY)
-#define CKPT_COND_FAIL     (CKPT_COND_NONE)
-
 static void usage(char *str)
 {
        ckpt_err("%s", str);
-- 
1.6.0.4

_______________________________________________
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