[CRIU] [PATCH v3 08/55] pid: Add equel_pid() helper
Kirill Tkhai
ktkhai at virtuozzo.com
Mon Apr 10 01:16:23 PDT 2017
This allows to compare pids values on the whole hierarhy.
v3: Do not use break as some travis builds don't like it.
Signed-off-by: Kirill Tkhai <ktkhai at virtuozzo.com>
---
criu/include/pid.h | 17 +++++++++++++++++
1 file changed, 17 insertions(+)
diff --git a/criu/include/pid.h b/criu/include/pid.h
index 475b17a39..1a43a3067 100644
--- a/criu/include/pid.h
+++ b/criu/include/pid.h
@@ -4,6 +4,7 @@
#include <compel/task-state.h>
#include "stdbool.h"
#include "rbtree.h"
+#include "log.h"
/*
* Task states, used in e.g. struct pid's state.
@@ -45,6 +46,22 @@ struct pid {
} ns[1]; /* Must be at the end of struct pid */
};
+#define equal_pid(a, b) \
+({ \
+ int ___i, ___ret = true; \
+ if (a->level == b->level) { \
+ for (___i = 0; ___i < a->level; ___i++) \
+ if (a->ns[___i].virt != b->ns[___i].virt) { \
+ ___ret = false; \
+ ___i = a->level; /* break */ \
+ } \
+ } else { \
+ pr_err("Wrong pid nesting level\n"); \
+ ___ret = false; \
+ } \
+ ___ret; \
+})
+
/*
* When we have to restore a shared resource, we mush select which
* task should do it, and make other(s) wait for it. In order to
More information about the CRIU
mailing list