[dpdk-stable] patch 'eal: introduce rte version of fls' has been queued to LTS release 16.11.9
Luca Boccassi
bluca at debian.org
Mon Nov 19 13:25:18 CET 2018
Hi,
FYI, your patch has been queued to LTS release 16.11.9
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 11/21/18. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the patch applied
to the branch. If the code is different (ie: not only metadata diffs), due for example to
a change in context or macro names, please double check it.
Note that this patch has been cherry-picked to allow the backporting of
Fixes: 5d08fecdd39f ("eal: fix build")
Thanks.
Luca Boccassi
---
>From 35072ede1f49874059f563c0b2be8e1d8f56691b Mon Sep 17 00:00:00 2001
From: Jerin Jacob <jerin.jacob at caviumnetworks.com>
Date: Wed, 7 Nov 2018 06:59:03 +0000
Subject: [PATCH] eal: introduce rte version of fls
[ upstream commit 3a6f2c50b9dc27a958af87d7ca9533b51a36477b ]
The function returns the last (most-significant) bit set.
Added unit testcase to verify rte_fls_u32().
Signed-off-by: Jerin Jacob <jerin.jacob at caviumnetworks.com>
---
app/test/test_common.c | 32 ++++++++++++++++++++++
lib/librte_eal/common/include/rte_common.h | 17 ++++++++++++
2 files changed, 49 insertions(+)
diff --git a/app/test/test_common.c b/app/test/test_common.c
index 8effa2f9e..afd2b99f9 100644
--- a/app/test/test_common.c
+++ b/app/test/test_common.c
@@ -158,6 +158,37 @@ test_align(void)
return 0;
}
+static int
+test_fls(void)
+{
+ struct fls_test_vector {
+ uint32_t arg;
+ int rc;
+ };
+ int expected, rc;
+ uint32_t i, arg;
+
+ const struct fls_test_vector test[] = {
+ {0x0, 0},
+ {0x1, 1},
+ {0x4000, 15},
+ {0x80000000, 32},
+ };
+
+ for (i = 0; i < RTE_DIM(test); i++) {
+ arg = test[i].arg;
+ rc = rte_fls_u32(arg);
+ expected = test[i].rc;
+ if (rc != expected) {
+ printf("Wrong rte_fls_u32(0x%x) rc=%d, expected=%d\n",
+ arg, rc, expected);
+ return TEST_FAILED;
+ }
+ }
+
+ return 0;
+}
+
static int
test_common(void)
{
@@ -165,6 +196,7 @@ test_common(void)
ret |= test_align();
ret |= test_macros(0);
ret |= test_misc();
+ ret |= test_fls();
return ret;
}
diff --git a/lib/librte_eal/common/include/rte_common.h b/lib/librte_eal/common/include/rte_common.h
index f5e2f8861..9ae584717 100644
--- a/lib/librte_eal/common/include/rte_common.h
+++ b/lib/librte_eal/common/include/rte_common.h
@@ -326,6 +326,23 @@ rte_bsf32(uint32_t v)
return (uint32_t)__builtin_ctz(v);
}
+/**
+ * Return the last (most-significant) bit set.
+ *
+ * @note The last (most significant) bit is at position 32.
+ * @note rte_fls_u32(0) = 0, rte_fls_u32(1) = 1, rte_fls_u32(0x80000000) = 32
+ *
+ * @param x
+ * The input parameter.
+ * @return
+ * The last (most-significant) bit set, or 0 if the input is 0.
+ */
+static inline int
+rte_fls_u32(uint32_t x)
+{
+ return (x == 0) ? 0 : 32 - __builtin_clz(x);
+}
+
#ifndef offsetof
/** Return the offset of a field in a structure. */
#define offsetof(TYPE, MEMBER) __builtin_offsetof (TYPE, MEMBER)
--
2.19.1
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2018-11-19 12:15:18.168290468 +0000
+++ 0002-eal-introduce-rte-version-of-fls.patch 2018-11-19 12:15:18.067611434 +0000
@@ -1,52 +1,24 @@
-From 3a6f2c50b9dc27a958af87d7ca9533b51a36477b Mon Sep 17 00:00:00 2001
+From 35072ede1f49874059f563c0b2be8e1d8f56691b Mon Sep 17 00:00:00 2001
From: Jerin Jacob <jerin.jacob at caviumnetworks.com>
Date: Wed, 7 Nov 2018 06:59:03 +0000
Subject: [PATCH] eal: introduce rte version of fls
+[ upstream commit 3a6f2c50b9dc27a958af87d7ca9533b51a36477b ]
+
The function returns the last (most-significant) bit set.
Added unit testcase to verify rte_fls_u32().
Signed-off-by: Jerin Jacob <jerin.jacob at caviumnetworks.com>
---
- lib/librte_eal/common/include/rte_common.h | 19 +++++++++++++
- test/test/test_common.c | 32 ++++++++++++++++++++++
- 2 files changed, 51 insertions(+)
+ app/test/test_common.c | 32 ++++++++++++++++++++++
+ lib/librte_eal/common/include/rte_common.h | 17 ++++++++++++
+ 2 files changed, 49 insertions(+)
-diff --git a/lib/librte_eal/common/include/rte_common.h b/lib/librte_eal/common/include/rte_common.h
-index cba7bbc1d..87f0f6302 100644
---- a/lib/librte_eal/common/include/rte_common.h
-+++ b/lib/librte_eal/common/include/rte_common.h
-@@ -473,6 +473,25 @@ rte_log2_u32(uint32_t v)
- return rte_bsf32(v);
- }
-
-+
-+/**
-+ * Return the last (most-significant) bit set.
-+ *
-+ * @note The last (most significant) bit is at position 32.
-+ * @note rte_fls_u32(0) = 0, rte_fls_u32(1) = 1, rte_fls_u32(0x80000000) = 32
-+ *
-+ * @param x
-+ * The input parameter.
-+ * @return
-+ * The last (most-significant) bit set, or 0 if the input is 0.
-+ */
-+static inline int
-+rte_fls_u32(uint32_t x)
-+{
-+ return (x == 0) ? 0 : 32 - __builtin_clz(x);
-+}
-+
-+
- #ifndef offsetof
- /** Return the offset of a field in a structure. */
- #define offsetof(TYPE, MEMBER) __builtin_offsetof (TYPE, MEMBER)
-diff --git a/test/test/test_common.c b/test/test/test_common.c
-index 7a67e458e..c6d17baae 100644
---- a/test/test/test_common.c
-+++ b/test/test/test_common.c
-@@ -188,6 +188,37 @@ test_log2(void)
+diff --git a/app/test/test_common.c b/app/test/test_common.c
+index 8effa2f9e..afd2b99f9 100644
+--- a/app/test/test_common.c
++++ b/app/test/test_common.c
+@@ -158,6 +158,37 @@ test_align(void)
return 0;
}
@@ -84,14 +56,42 @@
static int
test_common(void)
{
-@@ -196,6 +227,7 @@ test_common(void)
+@@ -165,6 +196,7 @@ test_common(void)
+ ret |= test_align();
ret |= test_macros(0);
ret |= test_misc();
- ret |= test_log2();
+ ret |= test_fls();
return ret;
}
+diff --git a/lib/librte_eal/common/include/rte_common.h b/lib/librte_eal/common/include/rte_common.h
+index f5e2f8861..9ae584717 100644
+--- a/lib/librte_eal/common/include/rte_common.h
++++ b/lib/librte_eal/common/include/rte_common.h
+@@ -326,6 +326,23 @@ rte_bsf32(uint32_t v)
+ return (uint32_t)__builtin_ctz(v);
+ }
+
++/**
++ * Return the last (most-significant) bit set.
++ *
++ * @note The last (most significant) bit is at position 32.
++ * @note rte_fls_u32(0) = 0, rte_fls_u32(1) = 1, rte_fls_u32(0x80000000) = 32
++ *
++ * @param x
++ * The input parameter.
++ * @return
++ * The last (most-significant) bit set, or 0 if the input is 0.
++ */
++static inline int
++rte_fls_u32(uint32_t x)
++{
++ return (x == 0) ? 0 : 32 - __builtin_clz(x);
++}
++
+ #ifndef offsetof
+ /** Return the offset of a field in a structure. */
+ #define offsetof(TYPE, MEMBER) __builtin_offsetof (TYPE, MEMBER)
--
2.19.1
More information about the stable
mailing list