[Devel] [PATCH 06/14][user-cr] Create common.h
Sukadev Bhattiprolu
sukadev at linux.vnet.ibm.com
Thu Mar 18 23:32:54 PDT 2010
From: Sukadev Bhattiprolu <sukadev at linux.vnet.ibm.com>
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 <sukadev at linux.vnet.ibm.com>
---
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
Containers at lists.linux-foundation.org
https://lists.linux-foundation.org/mailman/listinfo/containers
More information about the Devel
mailing list