From: Sukadev Bhattiprolu <sukadev-23VcF4HTsmIX0ybBhKVfKdBPR1lH4CV8@public.gmane.org>
To: Oren Laadan <orenl-eQaUEPhvms7ENvBUuze7eA@public.gmane.org>
Cc: Containers
<containers-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA@public.gmane.org>
Subject: [PATCH 08/12][user-cr] Create common.h
Date: Fri, 5 Mar 2010 14:39:07 -0800 [thread overview]
Message-ID: <20100305223907.GH15939@us.ibm.com> (raw)
In-Reply-To: <20100305223439.GA15300-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org>
From: Sukadev Bhattiprolu <sukadev-23VcF4HTsmIX0ybBhKVfKdBPR1lH4CV8@public.gmane.org>
Date: Thu, 4 Mar 2010 21:30:50 -0800
Subject: [PATCH 08/12][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-23VcF4HTsmIX0ybBhKVfKdBPR1lH4CV8@public.gmane.org>
---
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 b312358..acebdd5 100644
--- a/Makefile
+++ b/Makefile
@@ -5,6 +5,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))
@@ -41,6 +43,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 ace17e2..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 b37bf81..f65eafb 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)
@@ -399,18 +303,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
next prev parent reply other threads:[~2010-03-05 22:39 UTC|newest]
Thread overview: 19+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-03-05 22:34 [PATCH 0/12][user-cr]: Second set of cleanups Sukadev Bhattiprolu
[not found] ` <20100305223439.GA15300-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org>
2010-03-05 22:36 ` [PATCH 01/12][user-cr] restart: Mark globals as static Sukadev Bhattiprolu
2010-03-05 22:36 ` [PATCH 02/12][user-cr] restart: Add args->send_sigint Sukadev Bhattiprolu
[not found] ` <20100305223658.GB15939-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org>
2010-03-15 3:52 ` Oren Laadan
2010-03-05 22:37 ` [PATCH 03/12][user-cr] Add app_restart_args->debug Sukadev Bhattiprolu
[not found] ` <20100305223723.GC15939-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org>
2010-03-08 19:39 ` Serge E. Hallyn
[not found] ` <20100308193929.GA20030-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org>
2010-03-08 20:42 ` Sukadev Bhattiprolu
2010-03-05 22:37 ` [PATCH 04/12][user-cr] Add app_restart_args->verbose Sukadev Bhattiprolu
2010-03-05 22:38 ` [PATCH 05/12][user-cr] Add app_restart_args->ulogfd Sukadev Bhattiprolu
2010-03-05 22:38 ` [PATCH 06/12][user-cr] Add app_restart_args->uerrfd Sukadev Bhattiprolu
2010-03-05 22:38 ` [PATCH 07/12][user-cr] Define INIT_SIGNAL_ARRAY Sukadev Bhattiprolu
2010-03-05 22:39 ` Sukadev Bhattiprolu [this message]
[not found] ` <20100305223907.GH15939-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org>
2010-03-08 19:44 ` [PATCH 08/12][user-cr] Create common.h Serge E. Hallyn
[not found] ` <20100308194427.GB20030-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org>
2010-03-08 20:22 ` Sukadev Bhattiprolu
2010-03-05 22:39 ` [PATCH 09/12][user-cr] Create app-checkpoint.h Sukadev Bhattiprolu
2010-03-05 22:39 ` [PATCH 10/12][user-cr] restart: Move main() to restart-main.c Sukadev Bhattiprolu
2010-03-05 22:40 ` [PATCH 11/12][user-cr] checkpoint: Move main() to checkpoint-main.c Sukadev Bhattiprolu
2010-03-05 22:40 ` [PATCH 12/12][user-cr] Have app_restart() return pid Sukadev Bhattiprolu
2010-03-08 19:49 ` [PATCH 0/12][user-cr]: Second set of cleanups Serge E. Hallyn
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20100305223907.GH15939@us.ibm.com \
--to=sukadev-23vcf4htsmix0ybbhkvfkdbpr1lh4cv8@public.gmane.org \
--cc=containers-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA@public.gmane.org \
--cc=orenl-eQaUEPhvms7ENvBUuze7eA@public.gmane.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox