in case of dynamic type variable, it could be needed to compute at compile time its maximal value. This macro helps in doing that for unsigned integer types
Signed-off-by: Antonio Quartulli ordex@autistici.org --- main.h | 3 +++ 1 files changed, 3 insertions(+), 0 deletions(-)
diff --git a/main.h b/main.h index 464439f..3c58235 100644 --- a/main.h +++ b/main.h @@ -210,6 +210,9 @@ static inline int compare_eth(const void *data1, const void *data2) /* Returns the smallest signed integer in two's complement with the sizeof x */ #define smallest_signed_int(x) (1u << (7u + 8u * (sizeof(x) - 1u)))
+/* Returns the biggest unsigned integer with the sizeof x */ +#define biggest_unsigned_int(x) (~(x)0) + /* Checks if a sequence number x is a predecessor/successor of y. * they handle overflows/underflows and can correctly check for a * predecessor/successor unless the variable sequence number has grown by
On Wednesday, November 23, 2011 18:35:44 Antonio Quartulli wrote:
in case of dynamic type variable, it could be needed to compute at compile time its maximal value. This macro helps in doing that for unsigned integer types
Signed-off-by: Antonio Quartulli ordex@autistici.org
main.h | 3 +++ 1 files changed, 3 insertions(+), 0 deletions(-)
diff --git a/main.h b/main.h index 464439f..3c58235 100644 --- a/main.h +++ b/main.h @@ -210,6 +210,9 @@ static inline int compare_eth(const void *data1, const void *data2) /* Returns the smallest signed integer in two's complement with the sizeof x */ #define smallest_signed_int(x) (1u << (7u + 8u * (sizeof(x) - 1u))) +/* Returns the biggest unsigned integer with the sizeof x */ +#define biggest_unsigned_int(x) (~(x)0)
The final conclusion of the IRC discussion might have escaped me but wasn't there supposed to be a cast somewhere ?
Regards, Marek
On Friday 25 November 2011 09:08:47 Marek Lindner wrote: [...]
+/* Returns the biggest unsigned integer with the sizeof x */ +#define biggest_unsigned_int(x) (~(x)0)
The final conclusion of the IRC discussion might have escaped me but wasn't there supposed to be a cast somewhere ?
There is a cast. The part "(x)" of "(~(x)0)" is the cast. And I don't think that there was a final conclusion. I am not really convinced that this should be part of batman-adv. Just look at include/linux/kernel.h for similar functionality (but with predefined types). Maybe this would be the correct position for such a macro? (I don't know it... just thinking out loud).
Kind regards, Sven
On Fri, Nov 25, 2011 at 09:50:41AM +0100, Sven Eckelmann wrote:
On Friday 25 November 2011 09:08:47 Marek Lindner wrote: [...]
+/* Returns the biggest unsigned integer with the sizeof x */ +#define biggest_unsigned_int(x) (~(x)0)
The final conclusion of the IRC discussion might have escaped me but wasn't there supposed to be a cast somewhere ?
There is a cast. The part "(x)" of "(~(x)0)" is the cast. And I don't think that there was a final conclusion. I am not really convinced that this should be part of batman-adv. Just look at include/linux/kernel.h for similar functionality (but with predefined types). Maybe this would be the correct position for such a macro? (I don't know it... just thinking out loud).
Might be a good idea to send it to the kernel ml, but as usual, I think we should first include it in the batman-adv code (am I wrong or we are still waiting for seq_before/after to be included somewhere?).
But I agree with you, I should also send this patch to the kerel ml.
Cheers,
On Wednesday, November 23, 2011 18:35:44 Antonio Quartulli wrote:
in case of dynamic type variable, it could be needed to compute at compile time its maximal value. This macro helps in doing that for unsigned integer types
Applied in revision 9c7df12.
Thanks, Marek
b.a.t.m.a.n@lists.open-mesh.org