From 7a7f977d4363fc6240a2db2fd36cd614c5bd2c68 Mon Sep 17 00:00:00 2001 From: David Herrmann Date: Sun, 22 Apr 2012 15:40:39 +0200 Subject: [PATCH] misc: add type-safe "offsetof" This uses the GCC extension "typeof" to implement a type-safe "offsetof" similar to the implementation in the linux kernel. Signed-off-by: David Herrmann --- src/misc.h | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/misc.h b/src/misc.h index d0a68e2..2f53994 100644 --- a/src/misc.h +++ b/src/misc.h @@ -34,6 +34,14 @@ #include #include +#include + +/* miscellaneous */ + +#define kmscon_offsetof(pointer, type, member) ({ \ + const typeof(((type*)0)->member) *__ptr = (pointer); \ + (type*)(((char*)__ptr) - offsetof(type, member)); \ + }) /* ring buffer for arbitrary byte-streams */