[CRIU] [PATCH] protobuf: proto-file for IPC semaphores, build and link of facility introduced

Kinsbursky Stanislav skinsbursky at openvz.org
Mon May 28 08:09:31 EDT 2012


From: Stanislav Kinsbursky <skinsbursky at openvz.org>

Signed-off-by: Stanislav Kinsbursky <skinsbursky at openvz.org>
---
 Makefile               |   12 ++++++++---
 protobuf/Makefile      |   51 ++++++++++++++++++++++++++++++++++++++++++++++++
 protobuf/README        |    3 +++
 protobuf/ipc_sem.proto |   11 ++++++++++
 4 files changed, 74 insertions(+), 3 deletions(-)
 create mode 100644 protobuf/Makefile
 create mode 100644 protobuf/README
 create mode 100644 protobuf/ipc_sem.proto
-------------- next part --------------
diff --git a/Makefile b/Makefile
index aa6e37a..3112466 100644
--- a/Makefile
+++ b/Makefile
@@ -3,7 +3,7 @@
 CFLAGS		+= -I./include
 CFLAGS		+= -O0 -ggdb3
 
-LIBS		+= -lrt -lpthread
+LIBS		+= -lrt -lpthread -lprotobuf-c
 
 DEFINES		+= -D_FILE_OFFSET_BITS=64
 DEFINES		+= -D_GNU_SOURCE
@@ -56,6 +56,8 @@ OBJS		+= eventpoll.o
 OBJS		+= mount.o
 OBJS		+= inotify.o
 
+PROTOBUF	:= protobuf/protobuf-lib.o
+
 DEPS		:= $(patsubst %.o,%.d,$(OBJS))
 
 include Makefile.syscall
@@ -77,15 +79,18 @@ all: $(PROGRAM)
 	$(E) "  CC      " $@
 	$(Q) $(CC) -S $(CFLAGS) -fverbose-asm $< -o $@
 
-$(DEPS) $(OBJS): $(SYS-OBJ) $(PIE-GEN)
+$(DEPS) $(OBJS): $(PROTOBUF) $(SYS-OBJ) $(PIE-GEN)
 
 $(PROGRAM): $(OBJS)
 	$(E) "  LINK    " $@
-	$(Q) $(CC) $(CFLAGS) $(OBJS) $(LIBS) $(SYS-OBJ) -o $@
+	$(Q) $(CC) $(CFLAGS) $(OBJS) $(LIBS) $(SYS-OBJ) $(PROTOBUF) -o $@
 
 %.d: %.c
 	$(Q) $(CC) -M -MT $(patsubst %.d,%.o,$@) $(CFLAGS) $< -o $@
 
+$(PROTOBUF):
+	$(Q) $(MAKE) -C protobuf/ all
+
 test-legacy: $(PROGRAM)
 	$(Q) $(MAKE) -C test/legacy all
 
@@ -111,6 +116,7 @@ clean: cleanpie cleansyscall
 	$(Q) $(RM) -f ./*.bin
 	$(Q) $(RM) -f ./$(PROGRAM)
 	$(Q) $(RM) -rf ./test/dump/
+	$(Q) $(MAKE) -C protobuf/ clean
 	$(Q) $(MAKE) -C test/legacy clean
 	$(Q) $(MAKE) -C test/zdtm cleandep
 	$(Q) $(MAKE) -C test/zdtm clean
diff --git a/protobuf/Makefile b/protobuf/Makefile
new file mode 100644
index 0000000..4ec9f61
--- /dev/null
+++ b/protobuf/Makefile
@@ -0,0 +1,51 @@
+-include ../Makefile.inc
+
+CFLAGS		+= -I./include
+CFLAGS		+= -O0 -ggdb3
+
+DEFINES		+= -D_FILE_OFFSET_BITS=64
+DEFINES		+= -D_GNU_SOURCE
+
+ifneq ($(WERROR),0)
+	WARNINGS += -Werror
+endif
+
+ifeq ($(DEBUG),1)
+	DEFINES += -DCR_DEBUG
+endif
+
+WARNINGS	+= -Wall
+CFLAGS		+= $(WARNINGS) $(DEFINES)
+
+LIBRARY		:= protobuf-lib.o
+
+PROTO_FILES	+= ipc_sem.proto
+
+HDRS	:= $(patsubst %.proto,%.pb-c.h,$(PROTO_FILES))
+SRCS	:= $(patsubst %.proto,%.pb-c.c,$(PROTO_FILES))
+OBJS	:= $(patsubst %.c,%.o,$(SRCS))
+
+.DEFAULT_GOAL	:= $(LIBRARY)
+
+%.pb-c.c: %.proto
+	$(E) "  PROTOBUF "$@
+	$(Q) protoc-c --c_out=./ $<
+
+%.o: %.c
+	$(E) "  CC       "$@
+	$(Q) $(CC) -c $(CFLAGS) $< -o $@
+
+.SECONDARY:
+
+$(LIBRARY): $(OBJS)
+	$(E) "  LINK     "$@
+	$(Q) ld -r -o $@ $(OBJS)
+
+.PHONY: all clean
+
+all: $(LIBRARY)
+
+clean:
+	$(E) "  CLEAN"
+	$(Q) rm -f $(SRCS) $(HDRS) $(OBJS) $(LIBRARY)
+
diff --git a/protobuf/README b/protobuf/README
new file mode 100644
index 0000000..ae6eb1c
--- /dev/null
+++ b/protobuf/README
@@ -0,0 +1,3 @@
+Protobuf depends on packages:
+"protobuf-c"
+"protobuf-c-devel"
diff --git a/protobuf/ipc_sem.proto b/protobuf/ipc_sem.proto
new file mode 100644
index 0000000..9e59b4b
--- /dev/null
+++ b/protobuf/ipc_sem.proto
@@ -0,0 +1,11 @@
+message ipc_sem_entry
+{
+	required uint32 key = 1;
+	required uint32 uid = 2;
+	required uint32 gid = 3;
+	required uint32 cuid = 4;
+	required uint32 cgid = 5;
+	required uint32 mode = 6;
+	required uint32 id = 7;
+	required bytes values=8;
+}


More information about the CRIU mailing list