[CRIU] [PATCH v2 10/13] forking: Introduce last_pid_mutex and helpers

Kirill Tkhai ktkhai at virtuozzo.com
Tue May 16 09:26:59 PDT 2017


Introduce mutex for synchronization ns_last_pid file
on restore.

Signed-off-by: Kirill Tkhai <ktkhai at virtuozzo.com>
---
 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 7a27ed5b2..e042137bd 100644
--- a/criu/cr-restore.c
+++ b/criu/cr-restore.c
@@ -2342,6 +2342,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 c3dbe2dd3..78b1f64d9 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 {
@@ -64,4 +65,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__ */



More information about the CRIU mailing list