commonlib/clamp.h: Add more clamping functions
Add more clamping functions that work with different types. Change-Id: I14cf335d5a54f769f8fd9184450957e876affd6b Signed-off-by: Angel Pons <th3fanbus@gmail.com> Reviewed-on: https://review.coreboot.org/c/coreboot/+/64175 Reviewed-by: Arthur Heymans <arthur@aheymans.xyz> Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
This commit is contained in:
@@ -8,15 +8,25 @@
|
|||||||
/*
|
/*
|
||||||
* Clamp a value, so that it is between a lower and an upper bound.
|
* Clamp a value, so that it is between a lower and an upper bound.
|
||||||
*/
|
*/
|
||||||
static inline u32 clamp_u32(const u32 min, const u32 val, const u32 max)
|
#define __MAKE_CLAMP_FUNC(type) \
|
||||||
{
|
static inline type clamp_##type(const type min, const type val, const type max) \
|
||||||
if (val > max)
|
{ \
|
||||||
return max;
|
if (val > max) \
|
||||||
|
return max; \
|
||||||
|
if (val < min) \
|
||||||
|
return min; \
|
||||||
|
return val; \
|
||||||
|
} \
|
||||||
|
|
||||||
if (val < min)
|
__MAKE_CLAMP_FUNC(s8) /* clamp_s8 */
|
||||||
return min;
|
__MAKE_CLAMP_FUNC(u8) /* clamp_u8 */
|
||||||
|
__MAKE_CLAMP_FUNC(s16) /* clamp_s16 */
|
||||||
|
__MAKE_CLAMP_FUNC(u16) /* clamp_u16 */
|
||||||
|
__MAKE_CLAMP_FUNC(s32) /* clamp_s32 */
|
||||||
|
__MAKE_CLAMP_FUNC(u32) /* clamp_u32 */
|
||||||
|
__MAKE_CLAMP_FUNC(s64) /* clamp_s64 */
|
||||||
|
__MAKE_CLAMP_FUNC(u64) /* clamp_u64 */
|
||||||
|
|
||||||
return val;
|
#undef __MAKE_CLAMP_FUNC
|
||||||
}
|
|
||||||
|
|
||||||
#endif /* COMMONLIB_BSD_CLAMP_H */
|
#endif /* COMMONLIB_BSD_CLAMP_H */
|
||||||
|
Reference in New Issue
Block a user