[CRIU] [PATCH 01/10] criu: lock -- Use systemwide uintX types
Cyrill Gorcunov
gorcunov at openvz.org
Mon Oct 24 04:58:01 PDT 2016
For portability sake, we gonna share this header.
Signed-off-by: Cyrill Gorcunov <gorcunov at openvz.org>
---
criu/include/lock.h | 35 ++++++++++++++++++-----------------
1 file changed, 18 insertions(+), 17 deletions(-)
diff --git a/criu/include/lock.h b/criu/include/lock.h
index 641fa1dc2af2..fe087f182fb8 100644
--- a/criu/include/lock.h
+++ b/criu/include/lock.h
@@ -1,6 +1,7 @@
#ifndef __CR_LOCK_H__
#define __CR_LOCK_H__
+#include <stdint.h>
#include <linux/futex.h>
#include <sys/time.h>
#include <limits.h>
@@ -31,13 +32,13 @@ typedef struct {
#define FUTEX_ABORT_RAW (-1U)
/* Get current futex @f value */
-static inline u32 futex_get(futex_t *f)
+static inline uint32_t futex_get(futex_t *f)
{
return atomic_read(&f->raw);
}
/* Set futex @f value to @v */
-static inline void futex_set(futex_t *f, u32 v)
+static inline void futex_set(futex_t *f, uint32_t v)
{
atomic_set(&f->raw, (int)v);
}
@@ -48,7 +49,7 @@ static inline void futex_set(futex_t *f, u32 v)
#define futex_wait_if_cond(__f, __v, __cond) \
do { \
int ret; \
- u32 tmp; \
+ uint32_t tmp; \
\
while (1) { \
struct timespec to = {.tv_sec = 120}; \
@@ -56,7 +57,7 @@ static inline void futex_set(futex_t *f, u32 v)
if ((tmp & FUTEX_ABORT_FLAG) || \
(tmp __cond (__v))) \
break; \
- ret = sys_futex((u32 *)&(__f)->raw.counter, FUTEX_WAIT,\
+ ret = sys_futex((uint32_t *)&(__f)->raw.counter, FUTEX_WAIT,\
tmp, &to, NULL, 0); \
if (ret == -ETIMEDOUT) { \
pr_warn("blocked for more than 120 seconds\n"); \
@@ -72,10 +73,10 @@ static inline void futex_set(futex_t *f, u32 v)
} while (0)
/* Set futex @f to @v and wake up all waiters */
-static inline void futex_set_and_wake(futex_t *f, u32 v)
+static inline void futex_set_and_wake(futex_t *f, uint32_t v)
{
atomic_set(&f->raw, (int)v);
- BUG_ON(sys_futex((u32 *)&f->raw.counter, FUTEX_WAKE, INT_MAX, NULL, NULL, 0) < 0);
+ BUG_ON(sys_futex((uint32_t *)&f->raw.counter, FUTEX_WAKE, INT_MAX, NULL, NULL, 0) < 0);
}
/* Mark futex @f as wait abort needed and wake up all waiters */
@@ -89,14 +90,14 @@ static inline void futex_abort_and_wake(futex_t *f)
static inline void futex_dec_and_wake(futex_t *f)
{
atomic_dec(&f->raw);
- BUG_ON(sys_futex((u32 *)&f->raw.counter, FUTEX_WAKE, INT_MAX, NULL, NULL, 0) < 0);
+ BUG_ON(sys_futex((uint32_t *)&f->raw.counter, FUTEX_WAKE, INT_MAX, NULL, NULL, 0) < 0);
}
/* Increment futex @f value and wake up all waiters */
static inline void futex_inc_and_wake(futex_t *f)
{
atomic_inc(&f->raw);
- BUG_ON(sys_futex((u32 *)&f->raw.counter, FUTEX_WAKE, INT_MAX, NULL, NULL, 0) < 0);
+ BUG_ON(sys_futex((uint32_t *)&f->raw.counter, FUTEX_WAKE, INT_MAX, NULL, NULL, 0) < 0);
}
/* Plain increment futex @f value */
@@ -118,10 +119,10 @@ static inline void futex_dec(futex_t *f) { atomic_dec(&f->raw); }
#define futex_wait_while_eq(f, v) futex_wait_if_cond(f, v, !=)
/* Wait while futex @f value is @v */
-static inline void futex_wait_while(futex_t *f, u32 v)
+static inline void futex_wait_while(futex_t *f, uint32_t v)
{
- while ((u32)atomic_read(&f->raw) == v) {
- int ret = sys_futex((u32 *)&f->raw.counter, FUTEX_WAIT, v, NULL, NULL, 0);
+ while ((uint32_t)atomic_read(&f->raw) == v) {
+ int ret = sys_futex((uint32_t *)&f->raw.counter, FUTEX_WAIT, v, NULL, NULL, 0);
BUG_ON(ret < 0 && ret != -EWOULDBLOCK);
}
}
@@ -132,26 +133,26 @@ typedef struct {
static inline void mutex_init(mutex_t *m)
{
- u32 c = 0;
+ uint32_t c = 0;
atomic_set(&m->raw, (int)c);
}
static inline void mutex_lock(mutex_t *m)
{
- u32 c;
+ uint32_t c;
int ret;
- while ((c = (u32)atomic_inc_return(&m->raw)) != 1) {
- ret = sys_futex((u32 *)&m->raw.counter, FUTEX_WAIT, c, NULL, NULL, 0);
+ while ((c = (uint32_t)atomic_inc_return(&m->raw)) != 1) {
+ ret = sys_futex((uint32_t *)&m->raw.counter, FUTEX_WAIT, c, NULL, NULL, 0);
BUG_ON(ret < 0 && ret != -EWOULDBLOCK);
}
}
static inline void mutex_unlock(mutex_t *m)
{
- u32 c = 0;
+ uint32_t c = 0;
atomic_set(&m->raw, (int)c);
- BUG_ON(sys_futex((u32 *)&m->raw.counter, FUTEX_WAKE, 1, NULL, NULL, 0) < 0);
+ BUG_ON(sys_futex((uint32_t *)&m->raw.counter, FUTEX_WAKE, 1, NULL, NULL, 0) < 0);
}
#endif /* __CR_LOCK_H__ */
--
2.7.4
More information about the CRIU
mailing list