12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152 |
- #ifndef STDDEF_H
- #define STDDEF_H
-
- FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL );
-
- #include <stdint.h>
-
- /** EFI headers also define NULL */
- #undef NULL
-
- /** 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, field ) ( ( size_t ) &( ( ( type * ) NULL )->field ) )
- #endif
-
- /**
- * 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 volatile 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__
- #define __WCHAR_TYPE__ uint16_t
- #endif
- #ifndef __WINT_TYPE__
- #define __WINT_TYPE__ int
- #endif
- typedef __WCHAR_TYPE__ wchar_t;
- typedef __WINT_TYPE__ wint_t;
-
- #endif /* STDDEF_H */
|