]> git.kernelconcepts.de Git - karo-tx-uboot.git/commitdiff
Add a way of checking the position of a structure member
authorSimon Glass <sjg@chromium.org>
Tue, 23 Jun 2015 21:38:31 +0000 (15:38 -0600)
committerLothar Waßmann <LW@KARO-electronics.de>
Wed, 9 Sep 2015 11:36:28 +0000 (13:36 +0200)
U-Boot uses structures for hardware access so it is important that these
structures are correct. Add a way of asserting that a structure member is
at a particular offset. This can be created using the datasheet for the
hardware.

This implementation uses Static_assert() since BUILD_BUG_ON() only works
within functions.

Signed-off-by: Simon Glass <sjg@chromium.org>
include/common.h

index 8f4b2ec21277d82977f59f4e50749eaa578cdfa7..4566bd11111c97061856a4386e883fa53f784bab 100644 (file)
@@ -1010,6 +1010,17 @@ int cpu_release(int nr, int argc, char * const argv[]);
 #define DEFINE_CACHE_ALIGN_BUFFER(type, name, size)                    \
        DEFINE_ALIGN_BUFFER(type, name, size, ARCH_DMA_MINALIGN)
 
+/*
+ * check_member() - Check the offset of a structure member
+ *
+ * @structure: Name of structure (e.g. global_data)
+ * @member:    Name of member (e.g. baudrate)
+ * @offset:    Expected offset in bytes
+ */
+#define check_member(structure, member, offset) _Static_assert( \
+       offsetof(struct structure, member) == offset, \
+       "`struct " #structure "` offset for `" #member "` is not " #offset)
+
 /* Pull in stuff for the build system */
 #ifdef DO_DEPS_ONLY
 # include <environment.h>