From 6a1e745bb2d882a6d65a57de2d8aef97cb540842 Mon Sep 17 00:00:00 2001 From: Steffen Vogel Date: Wed, 8 Jun 2016 22:32:53 +0200 Subject: [PATCH] added some utility macros --- include/utils.h | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/include/utils.h b/include/utils.h index cdb3adf85..324ed236f 100644 --- a/include/utils.h +++ b/include/utils.h @@ -17,9 +17,11 @@ #include "log.h" #ifdef __GNUC__ - #define EXPECT(x, v) __builtin_expect(x, v) + #define LIKELY(x) __builtin_expect((x),1) + #define UNLIKELY(x) __builtin_expect((x),0) #else - #define EXPECT(x, v) (x) + #define LIKELY(x) (x) + #define UNLIKELY(x) (x) #endif /* Some color escape codes for pretty log messages */ @@ -69,6 +71,16 @@ __typeof__ (b) _b = (b); \ _a < _b ? _a : _b; }) +#ifndef offsetof + #define offsetof(type, member) __builtin_offsetof(type, member) +#endif + +#ifndef container_of + #define container_of(ptr, type, member) ({ const typeof( ((type *) 0)->member ) *__mptr = (ptr); \ + (type *) ( (char *) __mptr - offsetof(type, member) ); \ + }) +#endif + /* Forward declarations */ struct settings; struct timespec;