56 lines
1.6 KiB
C
56 lines
1.6 KiB
C
/*
|
|
* types.h
|
|
*
|
|
* Written & released by Keir Fraser <keir.xen@gmail.com>
|
|
*
|
|
* This is free and unencumbered software released into the public domain.
|
|
* See the file COPYING for more details, or visit <http://unlicense.org>.
|
|
*/
|
|
|
|
#ifndef NDEBUG
|
|
#define ASSERT(p) do { if (!(p)) illegal(); } while (0)
|
|
#else
|
|
#define ASSERT(p) do { if (0 && (p)) {} } while (0)
|
|
#endif
|
|
|
|
typedef char bool_t;
|
|
#define TRUE 1
|
|
#define FALSE 0
|
|
|
|
#ifndef offsetof
|
|
#define offsetof(a,b) __builtin_offsetof(a,b)
|
|
#endif
|
|
#define container_of(ptr, type, member) ({ \
|
|
typeof( ((type *)0)->member ) *__mptr = (ptr); \
|
|
(type *)( (char *)__mptr - offsetof(type,member) );})
|
|
#define ARRAY_SIZE(x) (sizeof(x) / sizeof((x)[0]))
|
|
|
|
#define min(x,y) ({ \
|
|
const typeof(x) _x = (x); \
|
|
const typeof(y) _y = (y); \
|
|
(void) (&_x == &_y); \
|
|
_x < _y ? _x : _y; })
|
|
|
|
#define max(x,y) ({ \
|
|
const typeof(x) _x = (x); \
|
|
const typeof(y) _y = (y); \
|
|
(void) (&_x == &_y); \
|
|
_x > _y ? _x : _y; })
|
|
|
|
#define min_t(type,x,y) \
|
|
({ type __x = (x); type __y = (y); __x < __y ? __x: __y; })
|
|
#define max_t(type,x,y) \
|
|
({ type __x = (x); type __y = (y); __x > __y ? __x: __y; })
|
|
#define range_t(type,x,a,b) min_t(type, max_t(type, x, a), b)
|
|
|
|
#define m(bitnr) (1u<<(bitnr))
|
|
|
|
/*
|
|
* Local variables:
|
|
* mode: C
|
|
* c-file-style: "Linux"
|
|
* c-basic-offset: 4
|
|
* tab-width: 4
|
|
* indent-tabs-mode: nil
|
|
* End:
|
|
*/
|