X-Git-Url: https://review.openocd.org/gitweb?p=openocd.git;a=blobdiff_plain;f=src%2Fhelper%2Ftypes.h;h=04b005945939fb8925633b5762b25bc2f1442ae0;hp=a8753c5f149115c539e2e39d3eeb07256344f172;hb=f6a3fc818bc6a24b6c5bbcc6057f72d2b0b2e2ab;hpb=f0ce88b3af9a6090ac986160950d66317de5087e diff --git a/src/helper/types.h b/src/helper/types.h index a8753c5f14..04b0059459 100644 --- a/src/helper/types.h +++ b/src/helper/types.h @@ -60,6 +60,16 @@ typedef bool _Bool; #define __stringify(s) #s +/** + * Compute the number of elements of a variable length array. + * + * const char *strs[] = { "a", "b", "c" }; + * unsigned num_strs = ARRAY_SIZE(strs); + * + */ +#define ARRAY_SIZE(x) (sizeof(x) / sizeof(*(x))) + + /** * Cast a member of a structure out to the containing structure. * @param ptr The pointer to the member. @@ -70,7 +80,16 @@ typedef bool _Bool; */ #define container_of(ptr, type, member) ({ \ const typeof( ((type *)0)->member ) *__mptr = (ptr); \ - (type *)( (char *)__mptr - offsetof(type,member) );}) + (type *)( (void *) ( (char *)__mptr - offsetof(type,member) ) );}) + + +/** + * Rounds @c m up to the nearest multiple of @c n using division. + * @param m The value to round up to @c n. + * @param n Round @c m up to a multiple of this number. + * @returns The rounded integer value. + */ +#define DIV_ROUND_UP(m, n) (((m) + (n) - 1) / (n)) /* DANGER!!!! here be dragons! @@ -153,6 +172,7 @@ static inline void h_u16_to_be(uint8_t* buf, int val) #define SCNx32 "x" #define PRIi32 "i" #define PRIu32 "u" +#define PRId8 PRId32 typedef CYG_ADDRWORD intptr_t; typedef int64_t intmax_t;