END_TEST
/*******************************************************************************
- * round_up/down
+ * pad_len/round_up/down
*/
START_TEST(test_round)
{
+ ck_assert_int_eq(pad_len(0, 4), 0);
+ ck_assert_int_eq(pad_len(1, 4), 3);
+ ck_assert_int_eq(pad_len(2, 4), 2);
+ ck_assert_int_eq(pad_len(3, 4), 1);
+ ck_assert_int_eq(pad_len(4, 4), 0);
+ ck_assert_int_eq(pad_len(5, 4), 3);
+
ck_assert_int_eq(round_up(0, 4), 0);
ck_assert_int_eq(round_up(1, 4), 4);
ck_assert_int_eq(round_up(2, 4), 4);
}
/**
- * Round up size to be multiple of alignement
+ * Get the padding required to make size a multiple of alignment
*/
-static inline size_t round_up(size_t size, int alignement)
+static inline size_t pad_len(size_t size, size_t alignment)
{
- int remainder;
+ size_t remainder;
- remainder = size % alignement;
- if (remainder)
- {
- size += alignement - remainder;
- }
- return size;
+ remainder = size % alignment;
+ return remainder ? alignment - remainder : 0;
+}
+
+/**
+ * Round up size to be multiple of alignment
+ */
+static inline size_t round_up(size_t size, size_t alignment)
+{
+ return size + pad_len(size, alignment);
}
/**
- * Round down size to be a multiple of alignement
+ * Round down size to be a multiple of alignment
*/
-static inline size_t round_down(size_t size, int alignement)
+static inline size_t round_down(size_t size, size_t alignment)
{
- return size - (size % alignement);
+ return size - (size % alignment);
}
/**