[CRIU] [PATCH 13/15] restore: Cleanup ptrs remapping code done so far
Pavel Emelyanov
xemul at virtuozzo.com
Tue May 24 04:36:47 PDT 2016
After all arrays remapping is reworked, the remap_array() can
be dropped from code and in-place ptr fixup helper can appear.
Signed-off-by: Pavel Emelyanov <xemul at virtuozzo.com>
---
criu/cr-restore.c | 27 ++++++++++-----------------
criu/include/rst-malloc.h | 4 ++++
2 files changed, 14 insertions(+), 17 deletions(-)
diff --git a/criu/cr-restore.c b/criu/cr-restore.c
index b920cdd..948b4a0 100644
--- a/criu/cr-restore.c
+++ b/criu/cr-restore.c
@@ -2856,23 +2856,16 @@ static int sigreturn_restore(pid_t pid, unsigned long ta_cp, CoreEntry *core)
task_args->task_size = kdat.task_size;
- task_args->vmas = rst_mem_remap_ptr((unsigned long)task_args->vmas, RM_PRIVATE);
- task_args->rings = rst_mem_remap_ptr((unsigned long)task_args->rings, RM_PRIVATE);
- task_args->tcp_socks = rst_mem_remap_ptr((unsigned long)task_args->tcp_socks, RM_PRIVATE);
- task_args->timerfd = rst_mem_remap_ptr((unsigned long)task_args->timerfd, RM_PRIVATE);
- task_args->posix_timers = rst_mem_remap_ptr((unsigned long)task_args->posix_timers, RM_PRIVATE);
- task_args->siginfo = rst_mem_remap_ptr((unsigned long)task_args->siginfo, RM_PRIVATE);
- task_args->rlims = rst_mem_remap_ptr((unsigned long)task_args->rlims, RM_PRIVATE);
- task_args->helpers = rst_mem_remap_ptr((unsigned long)task_args->helpers, RM_PRIVATE);
- task_args->zombies = rst_mem_remap_ptr((unsigned long)task_args->zombies, RM_PRIVATE);
- task_args->seccomp_filters = rst_mem_remap_ptr((unsigned long)task_args->seccomp_filters, RM_PRIVATE);
-
-#define remap_array(name, nr, cpos) do { \
- task_args->name##_n = nr; \
- task_args->name = rst_mem_remap_ptr(cpos, RM_PRIVATE); \
- } while (0)
-
-#undef remap_array
+ RST_MEM_FIXUP_PPTR(task_args->vmas);
+ RST_MEM_FIXUP_PPTR(task_args->rings);
+ RST_MEM_FIXUP_PPTR(task_args->tcp_socks);
+ RST_MEM_FIXUP_PPTR(task_args->timerfd);
+ RST_MEM_FIXUP_PPTR(task_args->posix_timers);
+ RST_MEM_FIXUP_PPTR(task_args->siginfo);
+ RST_MEM_FIXUP_PPTR(task_args->rlims);
+ RST_MEM_FIXUP_PPTR(task_args->helpers);
+ RST_MEM_FIXUP_PPTR(task_args->zombies);
+ RST_MEM_FIXUP_PPTR(task_args->seccomp_filters);
if (core->tc->has_seccomp_mode)
task_args->seccomp_mode = core->tc->seccomp_mode;
diff --git a/criu/include/rst-malloc.h b/criu/include/rst-malloc.h
index fafef2b..67391ba 100644
--- a/criu/include/rst-malloc.h
+++ b/criu/include/rst-malloc.h
@@ -52,6 +52,10 @@ extern void rst_mem_switch_to_private(void);
*/
extern unsigned long rst_mem_align_cpos(int type);
extern void *rst_mem_remap_ptr(unsigned long pos, int type);
+#define RST_MEM_FIXUP_PPTR(ptr) do { \
+ ptr = rst_mem_remap_ptr((unsigned long)ptr, RM_PRIVATE);\
+} while (0)
+
/*
* Allocate and free objects. We don't need to free arbitrary
* object, thus allocation is simple (linear) and only the
--
2.5.0
More information about the CRIU
mailing list