[CRIU] [PATCH 03/10] lock: Get rid of logging dep
Pavel Emelyanov
xemul at virtuozzo.com
Tue Oct 25 04:49:41 PDT 2016
On 10/24/2016 02:58 PM, Cyrill Gorcunov wrote:
> We gonna share this file between subprojects
> so lets minimize deps on headers, only syscalls
> are left here for non libc compiling.
Add #ifndef BUG_ON() here, so that criu can wire in its own implementation
from bug.h
> Signed-off-by: Cyrill Gorcunov <gorcunov at openvz.org>
> ---
> criu/include/lock.h | 28 ++++++++++++++--------------
> 1 file changed, 14 insertions(+), 14 deletions(-)
>
> diff --git a/criu/include/lock.h b/criu/include/lock.h
> index fe087f182fb8..0a9921186d52 100644
> --- a/criu/include/lock.h
> +++ b/criu/include/lock.h
> @@ -8,7 +8,11 @@
> #include <errno.h>
>
> #include "atomic.h"
> -#include "bug.h"
> +
> +#define LOCK_BUG_ON(condition) \
> + if ((condition)) \
> + *(volatile unsigned long *)NULL = 0xdead0000 + __LINE__
> +#define LOCK_BUG() LOCK_BUG_ON(1)
>
> #ifdef CR_NOGLIBC
> # include "uapi/std/syscall.h"
> @@ -59,16 +63,12 @@ static inline void futex_set(futex_t *f, uint32_t v)
> break; \
> 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"); \
> + if (ret == -ETIMEDOUT) \
> continue; \
> - } \
> if (ret == -EINTR || ret == -EWOULDBLOCK) \
> continue; \
> - if (ret < 0) { \
> - pr_err("futex() returned an unexpected error: %d\n", ret); \
> - BUG(); \
> - } \
> + if (ret < 0) \
> + LOCK_BUG(); \
> } \
> } while (0)
>
> @@ -76,7 +76,7 @@ static inline void futex_set(futex_t *f, uint32_t v)
> static inline void futex_set_and_wake(futex_t *f, uint32_t v)
> {
> atomic_set(&f->raw, (int)v);
> - BUG_ON(sys_futex((uint32_t *)&f->raw.counter, FUTEX_WAKE, INT_MAX, NULL, NULL, 0) < 0);
> + LOCK_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 */
> @@ -90,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((uint32_t *)&f->raw.counter, FUTEX_WAKE, INT_MAX, NULL, NULL, 0) < 0);
> + LOCK_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((uint32_t *)&f->raw.counter, FUTEX_WAKE, INT_MAX, NULL, NULL, 0) < 0);
> + LOCK_BUG_ON(sys_futex((uint32_t *)&f->raw.counter, FUTEX_WAKE, INT_MAX, NULL, NULL, 0) < 0);
> }
>
> /* Plain increment futex @f value */
> @@ -123,7 +123,7 @@ static inline void futex_wait_while(futex_t *f, uint32_t v)
> {
> 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);
> + LOCK_BUG_ON(ret < 0 && ret != -EWOULDBLOCK);
> }
> }
>
> @@ -144,7 +144,7 @@ static inline void mutex_lock(mutex_t *m)
>
> 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);
> + LOCK_BUG_ON(ret < 0 && ret != -EWOULDBLOCK);
> }
> }
>
> @@ -152,7 +152,7 @@ static inline void mutex_unlock(mutex_t *m)
> {
> uint32_t c = 0;
> atomic_set(&m->raw, (int)c);
> - BUG_ON(sys_futex((uint32_t *)&m->raw.counter, FUTEX_WAKE, 1, NULL, NULL, 0) < 0);
> + LOCK_BUG_ON(sys_futex((uint32_t *)&m->raw.counter, FUTEX_WAKE, 1, NULL, NULL, 0) < 0);
> }
>
> #endif /* __CR_LOCK_H__ */
>
More information about the CRIU
mailing list