Insted of exposing the full sat-math.h API, only the macros
used in headers is exposed through <openvswitch/util.h>
Signed-off-by: Thomas Graf <tgraf@noironetworks.com>
Acked-by: Ben Pfaff <blp@nicira.com>
#define OVS_STRINGIZE(ARG) OVS_STRINGIZE2(ARG)
#define OVS_STRINGIZE2(ARG) #ARG
+/* Saturating multiplication of "unsigned int"s: overflow yields UINT_MAX. */
+#define OVS_SAT_MUL(X, Y) \
+ ((Y) == 0 ? 0 \
+ : (X) <= UINT_MAX / (Y) ? (unsigned int) (X) * (unsigned int) (Y) \
+ : UINT_MAX)
+
#ifdef __cplusplus
}
#endif
#define SAT_MATH_H 1
#include <limits.h>
+#include "openvswitch/util.h"
/* Saturating addition: overflow yields UINT_MAX. */
static inline unsigned int
return x >= y ? x - y : 0;
}
-/* Saturating multiplication of "unsigned int"s: overflow yields UINT_MAX. */
-#define SAT_MUL(X, Y) \
- ((Y) == 0 ? 0 \
- : (X) <= UINT_MAX / (Y) ? (unsigned int) (X) * (unsigned int) (Y) \
- : UINT_MAX)
static inline unsigned int
sat_mul(unsigned int x, unsigned int y)
{
- return SAT_MUL(x, y);
+ return OVS_SAT_MUL(x, y);
}
#endif /* sat-math.h */
* messages per minute and a maximum burst size of BURST messages. */
#define VLOG_RATE_LIMIT_INIT(RATE, BURST) \
{ \
- TOKEN_BUCKET_INIT(RATE, SAT_MUL(BURST, VLOG_MSG_TOKENS)), \
+ TOKEN_BUCKET_INIT(RATE, OVS_SAT_MUL(BURST, VLOG_MSG_TOKENS)),\
0, /* first_dropped */ \
0, /* last_dropped */ \
0, /* n_dropped */ \