summaryrefslogtreecommitdiff
path: root/os/drivers/include/macro_util.h
blob: 0c447476db8173d605134fd4fad5338c45025f27 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#ifndef __DD_COMMON_H__
#define __DD_COMMON_H__

#include <stddef.h>

#define Z_STRINGIFY(x) #x
#define STRINGIFY(s) Z_STRINGIFY(s)

/* concatenate the values of the arguments into one */
#define _DO_CONCAT(x, y) x ## y
#define _CONCAT(x, y) _DO_CONCAT(x, y)

#define OFFSETOF(TYPE, MEMBER) ((size_t) &((TYPE *)0)->MEMBER)

#define CONTAINER_OF(ptr, type, member) ({                      \
      const typeof( ((type *)0)->member ) *__mptr = (ptr);      \
      (type *)((char *)__mptr - OFFSETOF(type,member));})

#endif/*__DD_COMMON_H__*/