Linux Container Development
 help / color / mirror / Atom feed
From: "Serge E. Hallyn" <serue-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org>
To: Sukadev Bhattiprolu
	<sukadev-23VcF4HTsmIX0ybBhKVfKdBPR1lH4CV8@public.gmane.org>
Cc: Containers
	<containers-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA@public.gmane.org>
Subject: Re: [PATCH 08/12][user-cr] Create common.h
Date: Mon, 8 Mar 2010 13:44:27 -0600	[thread overview]
Message-ID: <20100308194427.GB20030@us.ibm.com> (raw)
In-Reply-To: <20100305223907.GH15939-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org>

Quoting Sukadev Bhattiprolu (sukadev-23VcF4HTsmIX0ybBhKVfKdBPR1lH4CV8@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.

There is already user-cr.h and restart.h...  a 'common.h' filename
isn't particularly helpful.  Should they all get combined?

Not NACking the patch, btw, just something to consider for a future
patch.

> 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
> 
> _______________________________________________
> Containers mailing list
> Containers-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA@public.gmane.org
> https://lists.linux-foundation.org/mailman/listinfo/containers

  parent reply	other threads:[~2010-03-08 19:44 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   ` [PATCH 08/12][user-cr] Create common.h Sukadev Bhattiprolu
     [not found]     ` <20100305223907.GH15939-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org>
2010-03-08 19:44       ` Serge E. Hallyn [this message]
     [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=20100308194427.GB20030@us.ibm.com \
    --to=serue-r/jw6+rmf7hqt0dzr+alfa@public.gmane.org \
    --cc=containers-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA@public.gmane.org \
    --cc=sukadev-23VcF4HTsmIX0ybBhKVfKdBPR1lH4CV8@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