On 10/19/16 15:09, Petri Savolainen wrote:
Added a macro to round up a value to the next power of two,
if it's not already a power of two. Also removed duplicated
code from the same file.

Signed-off-by: Petri Savolainen <petri.savolai...@nokia.com>
---
  .../linux-generic/include/odp_align_internal.h     | 34 +++++-----------------
  1 file changed, 7 insertions(+), 27 deletions(-)

diff --git a/platform/linux-generic/include/odp_align_internal.h 
b/platform/linux-generic/include/odp_align_internal.h
index 9ccde53..d2e9f4f 100644
--- a/platform/linux-generic/include/odp_align_internal.h
+++ b/platform/linux-generic/include/odp_align_internal.h
@@ -29,24 +29,18 @@ extern "C" {
/**
   * @internal
- * Round up pointer 'x' to alignment 'align'
- */
-#define ODP_ALIGN_ROUNDUP_PTR(x, align)\
-       ((void *)ODP_ALIGN_ROUNDUP((uintptr_t)(x), (uintptr_t)(align)))
-
-/**
- * @internal
- * Round up pointer 'x' to cache line size alignment
+ * Round up 'x' to alignment 'align'
   */
-#define ODP_CACHE_LINE_SIZE_ROUNDUP_PTR(x)\
-       ((void *)ODP_CACHE_LINE_SIZE_ROUNDUP((uintptr_t)(x)))
+#define ODP_ALIGN_ROUNDUP(x, align)\
+       ((align) * (((x) + align - 1) / (align)))

name has to be _ODP_ALIGN_ROUNDUP as it's not public API. This patch is easy to review,
but it will be good to change naming also.

Maxim.


  /**
   * @internal
- * Round up 'x' to alignment 'align'
+ * When 'x' is not already a power of two, round it up to the next
+ * power of two value. Zero is not supported as an input value.
   */
-#define ODP_ALIGN_ROUNDUP(x, align)\
-       ((align) * (((x) + align - 1) / (align)))
+#define ODP_ROUNDUP_POWER_2(x)\
+       (1 << (((int)(8 * sizeof(x))) - __builtin_clz(x - 1)))
/**
   * @internal
@@ -82,20 +76,6 @@ extern "C" {
/**
   * @internal
- * Round down pointer 'x' to 'align' alignment, which is a power of two
- */
-#define ODP_ALIGN_ROUNDDOWN_PTR_POWER_2(x, align)\
-((void *)ODP_ALIGN_ROUNDDOWN_POWER_2((uintptr_t)(x), (uintptr_t)(align)))
-
-/**
- * @internal
- * Round down pointer 'x' to cache line size alignment
- */
-#define ODP_CACHE_LINE_SIZE_ROUNDDOWN_PTR(x)\
-       ((void *)ODP_CACHE_LINE_SIZE_ROUNDDOWN((uintptr_t)(x)))
-
-/**
- * @internal
   * Round down 'x' to 'align' alignment, which is a power of two
   */
  #define ODP_ALIGN_ROUNDDOWN_POWER_2(x, align)\

Reply via email to