diff options
author | José Pekkarinen <jose.pekkarinen@nokia.com> | 2016-05-18 13:18:31 +0300 |
---|---|---|
committer | José Pekkarinen <jose.pekkarinen@nokia.com> | 2016-05-18 13:42:15 +0300 |
commit | 437fd90c0250dee670290f9b714253671a990160 (patch) | |
tree | b871786c360704244a07411c69fb58da9ead4a06 /qemu/roms/ipxe/src/include/stddef.h | |
parent | 5bbd6fe9b8bab2a93e548c5a53b032d1939eec05 (diff) |
These changes are the raw update to qemu-2.6.
Collission happened in the following patches:
migration: do cleanup operation after completion(738df5b9)
Bug fix.(1750c932f86)
kvmclock: add a new function to update env->tsc.(b52baab2)
The code provided by the patches was already in the upstreamed
version.
Change-Id: I3cc11841a6a76ae20887b2e245710199e1ea7f9a
Signed-off-by: José Pekkarinen <jose.pekkarinen@nokia.com>
Diffstat (limited to 'qemu/roms/ipxe/src/include/stddef.h')
-rw-r--r-- | qemu/roms/ipxe/src/include/stddef.h | 40 |
1 files changed, 29 insertions, 11 deletions
diff --git a/qemu/roms/ipxe/src/include/stddef.h b/qemu/roms/ipxe/src/include/stddef.h index bf792771f..3c056294f 100644 --- a/qemu/roms/ipxe/src/include/stddef.h +++ b/qemu/roms/ipxe/src/include/stddef.h @@ -1,25 +1,43 @@ #ifndef STDDEF_H #define STDDEF_H -FILE_LICENCE ( GPL2_ONLY ); +FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL ); -/* for size_t */ #include <stdint.h> +/** EFI headers also define NULL */ #undef NULL -#define NULL ((void *)0) -#undef offsetof -#if ( defined ( __GNUC__ ) && ( __GNUC__ > 3 ) ) -#define offsetof(TYPE, MEMBER) __builtin_offsetof(TYPE, MEMBER) +/** Null pointer */ +#define NULL ( ( void * ) 0 ) + +/** + * Get offset of a field within a structure + * + * @v type Structure type + * @v field Field within structure + * @ret offset Offset within structure + */ +#if defined ( __GNUC__ ) && ( __GNUC__ > 3 ) +#define offsetof( type, field ) __builtin_offsetof ( type, field ) #else -#define offsetof(TYPE, MEMBER) ((size_t) &((TYPE *)0)->MEMBER) +#define offsetof( type, field ) ( ( size_t ) &( ( ( type * ) NULL )->field ) ) #endif -#undef container_of -#define container_of(ptr, type, member) ({ \ - const typeof( ((type *)0)->member ) *__mptr = (ptr); \ - (type *)( (char *)__mptr - offsetof(type,member) );}) +/** + * Get containing structure + * + * @v ptr Pointer to contained field + * @v type Containing structure type + * @v field Field within containing structure + * @ret container Pointer to containing structure + */ +#define container_of( ptr, type, field ) ( { \ + type *__container; \ + const typeof ( __container->field ) *__field = (ptr); \ + __container = ( ( ( void * ) __field ) - \ + offsetof ( type, field ) ); \ + __container; } ) /* __WCHAR_TYPE__ is defined by gcc and will change if -fshort-wchar is used */ #ifndef __WCHAR_TYPE__ |