From e032b85c51cbb0421bae2bc7b2a94b0077b3048b Mon Sep 17 00:00:00 2001 From: Kirill Tkhai Date: Tue, 16 May 2017 19:26:59 +0300 Subject: [PATCH] forking: Introduce last_pid_mutex and helpers Introduce mutex for synchronization ns_last_pid file on restore. Signed-off-by: Kirill Tkhai Signed-off-by: Andrei Vagin --- criu/cr-restore.c | 1 + criu/include/rst_info.h | 13 +++++++++++++ 2 files changed, 14 insertions(+) diff --git a/criu/cr-restore.c b/criu/cr-restore.c index d2491ad76..72daf6697 100644 --- a/criu/cr-restore.c +++ b/criu/cr-restore.c @@ -2403,6 +2403,7 @@ int prepare_task_entries(void) task_entries->nr_helpers = 0; futex_set(&task_entries->start, CR_STATE_FAIL); mutex_init(&task_entries->userns_sync_lock); + mutex_init(&task_entries->last_pid_mutex); return 0; } diff --git a/criu/include/rst_info.h b/criu/include/rst_info.h index 336c08b6b..f9840d168 100644 --- a/criu/include/rst_info.h +++ b/criu/include/rst_info.h @@ -11,6 +11,7 @@ struct task_entries { futex_t start; atomic_t cr_err; mutex_t userns_sync_lock; + mutex_t last_pid_mutex; }; struct fdt { @@ -66,4 +67,16 @@ struct rst_info { void *breakpoint; }; +extern struct task_entries *task_entries; + +static inline void lock_last_pid(void) +{ + mutex_lock(&task_entries->last_pid_mutex); +} + +static inline void unlock_last_pid(void) +{ + mutex_unlock(&task_entries->last_pid_mutex); +} + #endif /* __CR_RST_INFO_H__ */