[CRIU] [PATCH 2/3] forking: Introduce last_pid_mutex and helpers

Kirill Tkhai ktkhai at virtuozzo.com
Thu May 11 07:55:12 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 66c0a376d..ec80c54b4 100644
--- a/criu/cr-restore.c
+++ b/criu/cr-restore.c
@@ -2378,6 +2378,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 92dfc9d93..e415e8d29 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 {
@@ -62,4 +63,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