diff options
Diffstat (limited to 'src/common')
-rw-r--r-- | src/common/util.c | 30 | ||||
-rw-r--r-- | src/common/util.h | 3 |
2 files changed, 33 insertions, 0 deletions
diff --git a/src/common/util.c b/src/common/util.c index 7b9e5eb562..0e7f59e620 100644 --- a/src/common/util.c +++ b/src/common/util.c @@ -345,6 +345,36 @@ round_to_power_of_2(uint64_t u64) return low; } +/** Return the lowest x such that x is at least <b>number</b>, and x modulo + * <b>divisor</b> == 0. */ +unsigned +round_to_next_multiple_of(unsigned number, unsigned divisor) +{ + number += divisor - 1; + number -= number % divisor; + return number; +} + +/** Return the lowest x such that x is at least <b>number</b>, and x modulo + * <b>divisor</b> == 0. */ +uint32_t +round_uint32_to_next_multiple_of(uint32_t number, uint32_t divisor) +{ + number += divisor - 1; + number -= number % divisor; + return number; +} + +/** Return the lowest x such that x is at least <b>number</b>, and x modulo + * <b>divisor</b> == 0. */ +uint64_t +round_uint64_to_next_multiple_of(uint64_t number, uint64_t divisor) +{ + number += divisor - 1; + number -= number % divisor; + return number; +} + /* ===== * String manipulation * ===== */ diff --git a/src/common/util.h b/src/common/util.h index 18033f39df..1c5643be39 100644 --- a/src/common/util.h +++ b/src/common/util.h @@ -154,6 +154,9 @@ void tor_log_mallinfo(int severity); /* Math functions */ int tor_log2(uint64_t u64) ATTR_CONST; uint64_t round_to_power_of_2(uint64_t u64); +unsigned round_to_next_multiple_of(unsigned number, unsigned divisor); +uint32_t round_uint32_to_next_multiple_of(uint32_t number, uint32_t divisor); +uint64_t round_uint64_to_next_multiple_of(uint64_t number, uint64_t divisor); /* String manipulation */ |