[CRIU] [PATCH 2/9] compel: remove not needed from uapi

Cyrill Gorcunov gorcunov at openvz.org
Wed Aug 24 09:47:32 PDT 2016


From: Dmitry Safonov <dsafonov at virtuozzo.com>

Delete plugins/include/asm/std directory - let it be without plugin
name.
Make symlinks to reuse criu's files, except those, which will
be deleted after libcompel from criu (like syscalls).

Signed-off-by: Dmitry Safonov <dsafonov at virtuozzo.com>
---
 compel/arch/x86/plugins/include/asm/linkage.h      |  1 +
 .../plugins/include/asm/{std => }/syscall-types.h  |  0
 compel/arch/x86/plugins/std/call32.S               | 72 +---------------------
 compel/include/int.h                               |  1 +
 compel/include/uapi/int.h                          | 15 -----
 compel/plugins/Makefile                            | 21 ++++---
 compel/plugins/include/uapi/plugin-std.h           |  9 +++
 compel/plugins/include/uapi/std/syscall-types.h    |  4 +-
 compel/plugins/std/std.c                           |  2 +-
 9 files changed, 28 insertions(+), 97 deletions(-)
 create mode 120000 compel/arch/x86/plugins/include/asm/linkage.h
 rename compel/arch/x86/plugins/include/asm/{std => }/syscall-types.h (100%)
 mode change 100644 => 120000 compel/arch/x86/plugins/std/call32.S
 create mode 120000 compel/include/int.h
 delete mode 100644 compel/include/uapi/int.h

diff --git a/compel/arch/x86/plugins/include/asm/linkage.h b/compel/arch/x86/plugins/include/asm/linkage.h
new file mode 120000
index 000000000000..b1b2fe3ee342
--- /dev/null
+++ b/compel/arch/x86/plugins/include/asm/linkage.h
@@ -0,0 +1 @@
+../../../../../../criu/arch/x86/include/asm/linkage.h
\ No newline at end of file
diff --git a/compel/arch/x86/plugins/include/asm/std/syscall-types.h b/compel/arch/x86/plugins/include/asm/syscall-types.h
similarity index 100%
rename from compel/arch/x86/plugins/include/asm/std/syscall-types.h
rename to compel/arch/x86/plugins/include/asm/syscall-types.h
diff --git a/compel/arch/x86/plugins/std/call32.S b/compel/arch/x86/plugins/std/call32.S
deleted file mode 100644
index 935461dcdc86..000000000000
--- a/compel/arch/x86/plugins/std/call32.S
+++ /dev/null
@@ -1,71 +0,0 @@
-/*
- * call32.S - assembly helpers for mixed-bitness code
- * From kernel selftests originally: tools/testing/selftests/x86/thunks.S
- * Copyright (c) 2015 Andrew Lutomirski
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms and conditions of the GNU General Public License,
- * version 2, as published by the Free Software Foundation.
- *
- * This program is distributed in the hope it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * General Public License for more details.
- *
- * These are little helpers that make it easier to switch bitness on
- * the fly.
- */
-
-#include "asm/linkage.h"
-
-#define __USER32_CS	0x23
-#define __USER_CS	0x33
-
-	.text
-
-/*
- * @rdi: Stack to use
- * @esi: Pointer to function for calling
- */
-ENTRY(call32_from_64)
-	/* Callee-saving registers due to ABI */
-	pushq %rbx
-	pushq %rbp
-	pushq %r12
-	pushq %r13
-	pushq %r14
-	pushq %r15
-	pushfq
-
-	/* Switch stacks */
-	sub $8, %rdi
-	mov %rsp,(%rdi)
-	mov %rdi,%rsp
-
-	/* Switch into compatibility mode */
-	pushq $__USER32_CS
-	pushq $1f
-	lretq
-
-1:
-	.code32
-	/* Run function and switch back */
-	call *%esi
-	jmp $__USER_CS,$1f
-	.code64
-
-1:
-	/* Restore the stack */
-	mov (%rsp),%rsp
-	add $8, %rdi
-
-	/* Restore registers */
-	popfq
-	popq %r15
-	popq %r14
-	popq %r13
-	popq %r12
-	popq %rbp
-	popq %rbx
-	ret
-END(call32_from_64)
diff --git a/compel/arch/x86/plugins/std/call32.S b/compel/arch/x86/plugins/std/call32.S
new file mode 120000
index 000000000000..b0fd67bc0ef3
--- /dev/null
+++ b/compel/arch/x86/plugins/std/call32.S
@@ -0,0 +1 @@
+../../../../../criu/arch/x86/call32.S
\ No newline at end of file
diff --git a/compel/include/int.h b/compel/include/int.h
new file mode 120000
index 000000000000..5c118d596759
--- /dev/null
+++ b/compel/include/int.h
@@ -0,0 +1 @@
+../../criu/include/asm-generic/int.h
\ No newline at end of file
diff --git a/compel/include/uapi/int.h b/compel/include/uapi/int.h
deleted file mode 100644
index ac3088d5ac3b..000000000000
--- a/compel/include/uapi/int.h
+++ /dev/null
@@ -1,15 +0,0 @@
-#ifndef __CR_INT_H__
-#define __CR_INT_H__
-
-#include <stdint.h>
-
-typedef uint64_t	u64;
-typedef int64_t		s64;
-typedef uint32_t	u32;
-typedef int32_t		s32;
-typedef uint16_t	u16;
-typedef int16_t		s16;
-typedef uint8_t		u8;
-typedef int8_t		s8;
-
-#endif /* __CR_INT_H__ */
diff --git a/compel/plugins/Makefile b/compel/plugins/Makefile
index f0b1de802368..626a9782f934 100644
--- a/compel/plugins/Makefile
+++ b/compel/plugins/Makefile
@@ -2,24 +2,27 @@
 
 ARCH_DIR		:= compel/arch/$(ARCH)/plugins
 
-ccflags-y		+= -iquote $(obj)/include/
-ccflags-y		+= -iquote $(obj)/include/uapi
-ccflags-y		+= -iquote $(SRC_DIR)/criu/include
-ccflags-y		+= -iquote $(SRC_DIR)/criu/arch/$(ARCH)/include
+# General compel includes
 ccflags-y		+= -iquote $(SRC_DIR)/compel/include
-ccflags-y		+= -iquote $(SRC_DIR)/$(ARCH_DIR)/include
 
-asflags-y		+= -iquote $(SRC_DIR)/criu/arch/$(ARCH)/include
-asflags-y		+= -iquote $(SRC_DIR)/compel/plugins/include/uapi
+# General compel/plugins includes
+ccflags-y		+= -iquote $(obj)/include
+ccflags-y		+= -iquote $(obj)/include/uapi
+asflags-y		+= -iquote $(obj)/include/uapi
+
+# Arch compel/plugins includes
+ccflags-y		+= -iquote $(SRC_DIR)/$(ARCH_DIR)/include
+asflags-y		+= -iquote $(SRC_DIR)/$(ARCH_DIR)/include
 asflags-y		+= -iquote $(SRC_DIR)/$(ARCH_DIR)
 
+
 #
 # STD plugin
 target			+= std
 std-obj-y		+= std/std.o
 std-obj-y		+= std/string.o
-std-obj-y		+= arch/$(ARCH)/plugins/std/syscalls-64.o
-std-obj-y		+= arch/$(ARCH)/plugins/std/calls32.o
+std-obj-y		+= ./$(ARCH_DIR)/std/syscalls-64.o
+std-obj-y		+= ./$(ARCH_DIR)/std/call32.o
 
 sys-proto-generic	:= $(obj)/include/uapi/std/syscall.h
 sys-codes-generic	:= $(obj)/include/uapi/std/syscall-codes.h
diff --git a/compel/plugins/include/uapi/plugin-std.h b/compel/plugins/include/uapi/plugin-std.h
index 292db8839383..5eaa31f04e45 100644
--- a/compel/plugins/include/uapi/plugin-std.h
+++ b/compel/plugins/include/uapi/plugin-std.h
@@ -1,6 +1,15 @@
 #ifndef COMPEL_PLUGIN_STD_STD_H__
 #define COMPEL_PLUGIN_STD_STD_H__
 
+#include "uapi/plugins.h"
 #include "uapi/std/syscall.h"
 
+struct prologue_init_args {
+	struct sockaddr		*ctl_sock_addr;
+	socklen_t		ctl_sock_addr_len;
+
+	unsigned int		arg_s;
+	void			*arg_p;
+};
+
 #endif /* COMPEL_PLUGIN_STD_STD_H__ */
diff --git a/compel/plugins/include/uapi/std/syscall-types.h b/compel/plugins/include/uapi/std/syscall-types.h
index 1b8188299103..564d027f206d 100644
--- a/compel/plugins/include/uapi/std/syscall-types.h
+++ b/compel/plugins/include/uapi/std/syscall-types.h
@@ -14,6 +14,8 @@
 #include <fcntl.h>
 #include <time.h>
 
+#include "int.h"
+
 struct cap_header {
 	u32 version;
 	int pid;
@@ -50,6 +52,6 @@ struct krlimit {
 /* Type of timers in the kernel.  */
 typedef int kernel_timer_t;
 
-#include "asm/std/syscall-types.h"
+#include "asm/syscall-types.h"
 
 #endif /* COMPEL_SYSCALL_TYPES_H__ */
diff --git a/compel/plugins/std/std.c b/compel/plugins/std/std.c
index b3ea971f9079..69bbb9bed20a 100644
--- a/compel/plugins/std/std.c
+++ b/compel/plugins/std/std.c
@@ -1,6 +1,6 @@
 #include <sys/types.h>
 
-#include "uapi/int.h"
+#include "int.h"
 #include "uapi/plugins.h"
 #include "uapi/plugin-std.h"
 
-- 
2.7.4



More information about the CRIU mailing list