mirror of
https://github.com/CTCaer/switch-l4t-atf.git
synced 2025-02-03 16:52:34 +00:00
Introduce round_up/down() macros
This patch introduces the round_up() and round_down() macros, which round up (respectively down) a value to a given boundary. The boundary must be a power of two. Change-Id: I589dd1074aeb5ec730dd523b4ebf098d55a7e967
This commit is contained in:
parent
ed81f3ebbf
commit
0146ae64c0
@ -38,4 +38,21 @@
|
||||
#define IS_POWER_OF_TWO(x) \
|
||||
(((x) & ((x) - 1)) == 0)
|
||||
|
||||
/*
|
||||
* The round_up() macro rounds up a value to the given boundary in a
|
||||
* type-agnostic yet type-safe manner. The boundary must be a power of two.
|
||||
* In other words, it computes the smallest multiple of boundary which is
|
||||
* greater than or equal to value.
|
||||
*
|
||||
* round_down() is similar but rounds the value down instead.
|
||||
*/
|
||||
#define round_boundary(value, boundary) \
|
||||
((__typeof__(value))((boundary) - 1))
|
||||
|
||||
#define round_up(value, boundary) \
|
||||
((((value) - 1) | round_boundary(value, boundary)) + 1)
|
||||
|
||||
#define round_down(value, boundary) \
|
||||
((value) & ~round_boundary(value, boundary))
|
||||
|
||||
#endif /* __UTILS_H__ */
|
||||
|
Loading…
x
Reference in New Issue
Block a user