diff options
author | laforge <laforge> | 2004-08-29 23:32:14 +0000 |
---|---|---|
committer | laforge <laforge> | 2004-08-29 23:32:14 +0000 |
commit | ae93d3941c8667f36ce378354bd3d2a0a0128344 (patch) | |
tree | 50397ccff19cae81d8b3b9a6101c75eb1e35d522 /libiptc/linux_stddef.h | |
parent | 5e3acbf8cc2dc646d7d485a5fe93520086fecd7f (diff) |
complete libiptc rewrite. Time to load 10k rules goes down from 2.20 minutes to 1.255 seconds (!). Might still contain bugs, use with caution.
Diffstat (limited to 'libiptc/linux_stddef.h')
-rw-r--r-- | libiptc/linux_stddef.h | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/libiptc/linux_stddef.h b/libiptc/linux_stddef.h new file mode 100644 index 0000000..56416f1 --- /dev/null +++ b/libiptc/linux_stddef.h @@ -0,0 +1,39 @@ +#ifndef _LINUX_STDDEF_H +#define _LINUX_STDDEF_H + +#undef NULL +#if defined(__cplusplus) +#define NULL 0 +#else +#define NULL ((void *)0) +#endif + +#undef offsetof +#define offsetof(TYPE, MEMBER) ((size_t) &((TYPE *)0)->MEMBER) + + +/** + * container_of - cast a member of a structure out to the containing structure + * + * @ptr: the pointer to the member. + * @type: the type of the container struct this is embedded in. + * @member: the name of the member within the struct. + * + */ +#define container_of(ptr, type, member) ({ \ + const typeof( ((type *)0)->member ) *__mptr = (ptr); \ + (type *)( (char *)__mptr - offsetof(type,member) );}) + +/* + * Check at compile time that something is of a particular type. + * Always evaluates to 1 so you may use it easily in comparisons. + */ +#define typecheck(type,x) \ +({ type __dummy; \ + typeof(x) __dummy2; \ + (void)(&__dummy == &__dummy2); \ + 1; \ +}) + + +#endif |