Create libeclone.a
PATCH 1/1 Create libeclone.a
Tested the changes on x86_32 with a stub to simulate the special case for powerpc below. Appreciate if it could be tested on other architectures specially powerpc.
Also, can we push genstack.o into libeclone.a to simplify the Makefile ?
thanks,
Sukadev
---
From: Sukadev Bhattiprolu <[email protected]>
Date: Sat, 6 Feb 2010 10:45:10 -0800
Subject: [PATCH][user-cr] Create libeclone.a
The user-api to the eclone() system call is architecture dependent.
Besides checkpoint/restart code, this api could be used by eclone() test cases (see cr-tests.git tree) and possibly other users of eclone().
To avoid duplication of the arch dependent code, move the api into libeclone.a (as suggested by Serge Hallyn).
--- Makefile | 28 +++++++++++++++++++--------- 1 files changed, 19 insertions(+), 9 deletions(-)
Makefile +19 -9
@@ -5,7 +5,7 @@ CKPT_HEADERS = include/linux/checkpoint.h \ include/linux/checkpoint_hdr.h \ include/asm/checkpoint_hdr.h -# detect architecture (for clone_with_pids) +# detect architecture (for eclone) SUBARCH = $(patsubst i%86,x86_32,$(shell uname -m)) # compile with debug ?
@@ -19,8 +19,11 @@ CFLAGS += -g $(WARNS) $(CKPT_INCLUDE) $(DEBUG) # install dir INSTALL_DIR = /bin +LIB_INSTALL_DIR = /lib -PROGS = checkpoint restart ckptinfo nsexeccwp +ECLONE_PROGS = restart nsexeccwp +PROGS = checkpoint ckptinfo $(ECLONE_PROGS) +LIB_ECLONE = libeclone.a # other cleanup OTHER = ckptinfo_types.c
@@ -32,21 +35,26 @@ LDLIBS = -lm all: $(PROGS) @make -C test +$(LIB_ECLONE): + ar ruv $(LIB_ECLONE) $^ + # restart needs to be thread-safe restart: CFLAGS += -D__REENTRANT -pthread # eclone() is architecture specific +# +# TODO: We could push genstack.o also into $(LIB_ECLONE), but it would make +# the 'genstack()' symbol public and not sure if it will cause problems +# for other applications. ifneq ($(SUBARCH),) -restart: clone_$(SUBARCH).o genstack.o -restart: CFLAGS += -DARCH_HAS_ECLONE -nsexeccwp: clone_$(SUBARCH).o genstack.o -nsexeccwp: CFLAGS += -DARCH_HAS_ECLONE +$(ECLONE_PROGS): $(LIB_ECLONE) genstack.o +$(ECLONE_PROGS): CFLAGS += -DARCH_HAS_ECLONE +$(LIB_ECLONE): clone_$(SUBARCH).o endif # on powerpc, need also assembly file ifeq ($(SUBARCH),ppc) -restart: clone_$(SUBARCH)_.o -nsexeccwp: clone_$(SUBARCH)_.o +$(LIB_ECLONE): clone_$(SUBARCH)_.o endif # ckptinfo dependencies
@@ -56,6 +64,8 @@ ckptinfo_types.c: $(CKPT_HEADERS) ckptinfo.py cat $(CKPT_HEADERS) | ./ckptinfo.py > ckptinfo_types.c install: + @echo /usr/bin/install -m 755 $(LIB_ECLONE) $(LIB_INSTALL_DIR) + @/usr/bin/install -m 755 $(LIB_ECLONE) $(LIB_INSTALL_DIR) @echo /usr/bin/install -m 755 checkpoint restart ckptinfo $(INSTALL_DIR) @/usr/bin/install -m 755 checkpoint restart ckptinfo $(INSTALL_DIR)
@@ -68,5 +78,5 @@ distclean: clean @rm -f $(CKPT_HEADERS) clean: - @rm -f $(PROGS) $(OTHER) *~ *.o headers.h + @rm -f $(PROGS) $(OTHER) $(LIB_ECLONE) *~ *.o headers.h @make -C test clean
Signature · 1 line
1.6.0.4
Serge E. Hallyn
Acked-byQuoted 19 lines · Sukadev Bhattiprolu
Tested the changes on
x86_32with a stub to simulate the special case for powerpc below. Appreciate if it could be tested on other architectures specially powerpc.Also, can we push genstack.o into libeclone.a to simplify the
Makefile?thanks,
Sukadev
---
From: Sukadev Bhattiprolu <[email protected]>
Date: Sat, 6 Feb 2010 10:45:10 -0800
Subject: [PATCH][user-cr] Create libeclone.aThe user-api to the
eclone()system call is architecture dependent.
Quoted 7 lines
Besides checkpoint/restart code, this api could be used by
eclone()test cases (see cr-tests.git tree) and possibly other users ofeclone().To avoid duplication of the arch dependent code, move the api into libeclone.a (as suggested by Serge Hallyn).
Signed-off-by Sukadev Bhattiprolu <[email protected]>
Thanks, Suka, this looks good to me, and will be useful to cr_tests.
Quoted 81 lines
--- Makefile | 28 +++++++++++++++++++--------- 1 files changed, 19 insertions(+), 9 deletions(-)Makefile +19
-9@@ -5,7 +5,7 @@ CKPT_HEADERS = include/linux/checkpoint.h \ include/linux/checkpoint_hdr.h \ include/asm/checkpoint_hdr.h -# detect architecture (for clone_with_pids) +# detect architecture (for eclone) SUBARCH = $(patsubst i%86,x86_32,$(shell uname -m)) # compile with debug ?@@ -19,8 +19,11 @@ CFLAGS += -g $(WARNS) $(CKPT_INCLUDE) $(DEBUG) # install dir INSTALL_DIR = /bin +LIB_INSTALL_DIR = /lib -PROGS = checkpoint restart ckptinfo nsexeccwp +ECLONE_PROGS = restart nsexeccwp +PROGS = checkpoint ckptinfo $(ECLONE_PROGS) +LIB_ECLONE = libeclone.a # other cleanup OTHER = ckptinfo_types.c@@ -32,21 +35,26 @@ LDLIBS = -lm all: $(PROGS) @make -C test +$(LIB_ECLONE): + ar ruv $(LIB_ECLONE) $^ + # restart needs to be thread-safe restart: CFLAGS += -D__REENTRANT -pthread # eclone() is architecture specific +# +# TODO: We could push genstack.o also into $(LIB_ECLONE), but it would make +# the 'genstack()' symbol public and not sure if it will cause problems +# for other applications. ifneq ($(SUBARCH),) -restart: clone_$(SUBARCH).o genstack.o -restart: CFLAGS += -DARCH_HAS_ECLONE -nsexeccwp: clone_$(SUBARCH).o genstack.o -nsexeccwp: CFLAGS += -DARCH_HAS_ECLONE +$(ECLONE_PROGS): $(LIB_ECLONE) genstack.o +$(ECLONE_PROGS): CFLAGS += -DARCH_HAS_ECLONE +$(LIB_ECLONE): clone_$(SUBARCH).o endif # on powerpc, need also assembly file ifeq ($(SUBARCH),ppc) -restart: clone_$(SUBARCH)_.o -nsexeccwp: clone_$(SUBARCH)_.o +$(LIB_ECLONE): clone_$(SUBARCH)_.o endif # ckptinfo dependencies@@ -56,6 +64,8 @@ ckptinfo_types.c: $(CKPT_HEADERS) ckptinfo.py cat $(CKPT_HEADERS) | ./ckptinfo.py > ckptinfo_types.c install: + @echo /usr/bin/install -m 755 $(LIB_ECLONE) $(LIB_INSTALL_DIR) + @/usr/bin/install -m 755 $(LIB_ECLONE) $(LIB_INSTALL_DIR) @echo /usr/bin/install -m 755 checkpoint restart ckptinfo $(INSTALL_DIR) @/usr/bin/install -m 755 checkpoint restart ckptinfo $(INSTALL_DIR)@@ -68,5 +78,5 @@ distclean: clean @rm -f $(CKPT_HEADERS) clean: - @rm -f $(PROGS) $(OTHER) *~ *.o headers.h + @rm -f $(PROGS) $(OTHER) $(LIB_ECLONE) *~ *.o headers.h @make -C test cleanSignature · 1 line
1.6.0.4
Quoted 3 lines · Sukadev Bhattiprolu
Tested the changes on
x86_32with a stub to simulate the special case for powerpc below. Appreciate if it could be tested on other architectures specially powerpc.
Look good, I'll add it.
Quoted 2 lines
Also, can we push genstack.o into libeclone.a to simplify the
Makefile?
That too.
Oren.
Quoted 99 lines
thanks,
Sukadev
---
From: Sukadev Bhattiprolu <[email protected]>
Date: Sat, 6 Feb 2010 10:45:10 -0800
Subject: [PATCH][user-cr] Create libeclone.aThe user-api to the
eclone()system call is architecture dependent.Besides checkpoint/restart code, this api could be used by
eclone()test cases (see cr-tests.git tree) and possibly other users ofeclone().To avoid duplication of the arch dependent code, move the api into libeclone.a (as suggested by Serge Hallyn).
Signed-off-by Sukadev Bhattiprolu <[email protected]>--- Makefile | 28 +++++++++++++++++++--------- 1 files changed, 19 insertions(+), 9 deletions(-)Makefile +19
-9@@ -5,7 +5,7 @@ CKPT_HEADERS = include/linux/checkpoint.h \ include/linux/checkpoint_hdr.h \ include/asm/checkpoint_hdr.h -# detect architecture (for clone_with_pids) +# detect architecture (for eclone) SUBARCH = $(patsubst i%86,x86_32,$(shell uname -m)) # compile with debug ?@@ -19,8 +19,11 @@ CFLAGS += -g $(WARNS) $(CKPT_INCLUDE) $(DEBUG) # install dir INSTALL_DIR = /bin +LIB_INSTALL_DIR = /lib -PROGS = checkpoint restart ckptinfo nsexeccwp +ECLONE_PROGS = restart nsexeccwp +PROGS = checkpoint ckptinfo $(ECLONE_PROGS) +LIB_ECLONE = libeclone.a # other cleanup OTHER = ckptinfo_types.c@@ -32,21 +35,26 @@ LDLIBS = -lm all: $(PROGS) @make -C test +$(LIB_ECLONE): + ar ruv $(LIB_ECLONE) $^ + # restart needs to be thread-safe restart: CFLAGS += -D__REENTRANT -pthread # eclone() is architecture specific +# +# TODO: We could push genstack.o also into $(LIB_ECLONE), but it would make +# the 'genstack()' symbol public and not sure if it will cause problems +# for other applications. ifneq ($(SUBARCH),) -restart: clone_$(SUBARCH).o genstack.o -restart: CFLAGS += -DARCH_HAS_ECLONE -nsexeccwp: clone_$(SUBARCH).o genstack.o -nsexeccwp: CFLAGS += -DARCH_HAS_ECLONE +$(ECLONE_PROGS): $(LIB_ECLONE) genstack.o +$(ECLONE_PROGS): CFLAGS += -DARCH_HAS_ECLONE +$(LIB_ECLONE): clone_$(SUBARCH).o endif # on powerpc, need also assembly file ifeq ($(SUBARCH),ppc) -restart: clone_$(SUBARCH)_.o -nsexeccwp: clone_$(SUBARCH)_.o +$(LIB_ECLONE): clone_$(SUBARCH)_.o endif # ckptinfo dependencies@@ -56,6 +64,8 @@ ckptinfo_types.c: $(CKPT_HEADERS) ckptinfo.py cat $(CKPT_HEADERS) | ./ckptinfo.py > ckptinfo_types.c install: + @echo /usr/bin/install -m 755 $(LIB_ECLONE) $(LIB_INSTALL_DIR) + @/usr/bin/install -m 755 $(LIB_ECLONE) $(LIB_INSTALL_DIR) @echo /usr/bin/install -m 755 checkpoint restart ckptinfo $(INSTALL_DIR) @/usr/bin/install -m 755 checkpoint restart ckptinfo $(INSTALL_DIR)@@ -68,5 +78,5 @@ distclean: clean @rm -f $(CKPT_HEADERS) clean: - @rm -f $(PROGS) $(OTHER) *~ *.o headers.h + @rm -f $(PROGS) $(OTHER) $(LIB_ECLONE) *~ *.o headers.h @make -C test clean