[Devel] [PATCH 4/4][user-cr] Rename libeclone.a to libcheckpoint.a

Sukadev Bhattiprolu sukadev at linux.vnet.ibm.com
Wed Feb 24 00:37:26 PST 2010


>From c4063a8976fd8eca9b8d62a12b95c3125c8471c7 Mon Sep 17 00:00:00 2001
From: Sukadev Bhattiprolu <sukadev at linux.vnet.ibm.com>
Date: Tue, 23 Feb 2010 16:25:36 -0800
Subject: [PATCH 4/4][user-cr] Rename libeclone.a to libcheckpoint.a

Export app_restart() and usercr.h to user in a new library libcheckpoint.a.
Until eclone() makes it into glibc, include eclone() also in this new library
and remove the libeclone.a.

TODO:
	- cr-tests should be modified to look for libcheckpoint.a instead
	  of libeclone.a

	- libcheckpoint.a should eventually include the app_checkpoint()
	  interface.  I am guessing extracting the app_checkpoint() from
	  checkpoint.c would be similar to (or somewhat easier than) the
	  way we extracted app_restart() from restart.c

Signed-off-by: Sukadev Bhattiprolu <sukadev at linux.vnet.ibm.com>
---
 Makefile  |   33 ++++++++++++++++++++-------------
 restart.c |    6 ++++++
 2 files changed, 26 insertions(+), 13 deletions(-)

diff --git a/Makefile b/Makefile
index 4449081..090914a 100644
--- a/Makefile
+++ b/Makefile
@@ -18,14 +18,14 @@ WARNS := -Wall -Wstrict-prototypes -Wno-trigraphs
 CFLAGS += -g $(WARNS) $(CKPT_INCLUDE) $(DEBUG)
 
 # install dir
+INC_INSTALL_DIR = /usr/include
 BIN_INSTALL_DIR = /bin
 LIB_INSTALL_DIR = /lib
 
-restart: restart.o restart-main.o
-
 ECLONE_PROGS = restart nsexec
 PROGS =	checkpoint ckptinfo $(ECLONE_PROGS)
-LIB_ECLONE = libeclone.a
+LIB_CHECKPOINT = libcheckpoint.a
+INC_CHECKPOINT = usercr.h
 
 # other cleanup
 OTHER = ckptinfo_types.c
@@ -34,32 +34,37 @@ LDLIBS = -lm
 
 .PHONY: all distclean clean headers install
 
-all: $(PROGS)
+all: $(PROGS) $(LIB_CHECKPOINT)
 	@make -C test
 
-$(LIB_ECLONE):
-	ar ruv $(LIB_ECLONE) $^
+restart: restart-main.o
+
+$(PROGS): $(LIB_CHECKPOINT) 
+
+$(LIB_CHECKPOINT):
+	ar ruv $(LIB_CHECKPOINT) $^
 
 # restart needs to be thread-safe
 restart: CFLAGS += -D__REENTRANT -pthread
 
+$(LIB_CHECKPOINT): restart.o
+
 # eclone() is architecture specific
 ifneq ($(SUBARCH),)
-$(ECLONE_PROGS): $(LIB_ECLONE) 
 $(ECLONE_PROGS): CFLAGS += -DARCH_HAS_ECLONE
-$(LIB_ECLONE): clone_$(SUBARCH).o genstack.o
+$(LIB_CHECKPOINT): clone_$(SUBARCH).o genstack.o
 endif
 
 # on powerpc, need also assembly file
 ifeq ($(SUBARCH),ppc)
 CFLAGS += -m32
 ASFLAGS += -m32
-$(LIB_ECLONE): clone_$(SUBARCH)_.o
+$(LIB_CHECKPOINT): clone_$(SUBARCH)_.o
 endif
 ifeq ($(SUBARCH),ppc64)
 CFLAGS += -m64
 ASFLAGS += -m64
-$(LIB_ECLONE): clone_$(SUBARCH)_.o
+$(LIB_CHECKPOINT): clone_$(SUBARCH)_.o
 endif
 
 # ckptinfo dependencies
@@ -71,8 +76,10 @@ ckptinfo_types.c: $(CKPT_HEADERS) ckptinfo.py
 install:
 	@echo /usr/bin/install -m 755 checkpoint restart nsexec ckptinfo $(BIN_INSTALL_DIR)
 	@/usr/bin/install -m 755 checkpoint restart ckptinfo nsexec $(BIN_INSTALL_DIR)
-	@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 $(INC_CHECKPOINT) $(INC_INSTALL_DIR)
+	@/usr/bin/install -m 755 $(INC_CHECKPOINT) $(INC_INSTALL_DIR)
+	@echo /usr/bin/install -m 755 $(LIB_CHECKPOINT) $(LIB_INSTALL_DIR)
+	@/usr/bin/install -m 755 $(LIB_CHECKPOINT) $(LIB_INSTALL_DIR)
 
 $(CKPT_HEADERS): %:
 	./scripts/extract-headers.sh -s $(KERNELSRC) -o ./include
@@ -83,5 +90,5 @@ distclean: clean
 	@rm -f $(CKPT_HEADERS)
 
 clean:
-	@rm -f $(PROGS) $(LIB_ECLONE) $(OTHER) *~ *.o headers.h
+	@rm -f $(PROGS) $(LIB_CHECKPOINT) $(OTHER) *~ *.o headers.h
 	@make -C test clean
diff --git a/restart.c b/restart.c
index b1518f2..a163862 100644
--- a/restart.c
+++ b/restart.c
@@ -530,6 +530,12 @@ int app_restart(struct restart_args *args)
 		ret = ckpt_coordinator(&ctx);
 	}
 
+	/*
+	 * Hack for LXC - which currently only uses pidns == 1, pid0 == 1;
+	 */
+	if (ret >= 0)
+		ret = global_child_pid;
+
 	return ret;
 }
 
-- 
1.6.6.1

_______________________________________________
Containers mailing list
Containers at lists.linux-foundation.org
https://lists.linux-foundation.org/mailman/listinfo/containers




More information about the Devel mailing list