All of lore.kernel.org
 help / color / mirror / Atom feed
* (no subject)
@ 2019-04-10 11:17 Norbert Lange
  2019-04-10 11:17 ` [PATCH v2 1/2] Rename __ctz to xenomai_count_trailing_zeros Norbert Lange
                   ` (2 more replies)
  0 siblings, 3 replies; 4+ messages in thread
From: Norbert Lange @ 2019-04-10 11:17 UTC (permalink / raw)
  To: xenomai

V2 of the patchset. Fixed checkstyle issues, better identation,
and aded casts to silence (false) pedantic warnings.




^ permalink raw reply	[flat|nested] 4+ messages in thread

* [PATCH v2 1/2] Rename __ctz to xenomai_count_trailing_zeros
  2019-04-10 11:17 Norbert Lange
@ 2019-04-10 11:17 ` Norbert Lange
  2019-04-10 11:17 ` [PATCH v2 2/2] Simplify xenomai_count_leading_zeros Norbert Lange
  2019-04-10 14:15 ` (unknown) Jan Kiszka
  2 siblings, 0 replies; 4+ messages in thread
From: Norbert Lange @ 2019-04-10 11:17 UTC (permalink / raw)
  To: xenomai

Because of conflicts with libc++ (v1/bit include file).
Simplify the macro as there shouldn't be any bad cornercases

Signed-off-by: Norbert Lange <norbert.lange@andritz.com>
---
 include/boilerplate/compiler.h    | 31 ++++++++++---------------------
 lib/boilerplate/heapmem.c         |  2 +-
 lib/copperplate/heapobj-pshared.c |  2 +-
 3 files changed, 12 insertions(+), 23 deletions(-)

diff --git a/include/boilerplate/compiler.h b/include/boilerplate/compiler.h
index 0fcc17be1..0cd71b80a 100644
--- a/include/boilerplate/compiler.h
+++ b/include/boilerplate/compiler.h
@@ -71,27 +71,16 @@
 #ifdef __cplusplus
 extern "C" {
 #endif
-	
+
 void __invalid_operand_size(void);
 
-#define __ctz(__v)							\
-	({								\
-		int __ret;						\
-		if (!__v)						\
-			__ret = sizeof(__v) * 8;			\
-		else							\
-			switch (sizeof(__v)) {				\
-			case sizeof(int):				\
-				__ret = __builtin_ctz((unsigned int)__v); \
-				break;					\
-			case sizeof(long long):				\
-				__ret = __builtin_ctzll(__v);		\
-				break;					\
-			default:					\
-				__invalid_operand_size();		\
-			}						\
-		__ret;							\
-	})
+#define xenomai_count_trailing_zeros(x)					\
+	((x) == 0 ? (int)(sizeof(x) * __CHAR_BIT__)			\
+	: sizeof(x) <= sizeof(unsigned int) ?				\
+		__builtin_ctz((unsigned int)x)				\
+	: sizeof(x) <= sizeof(unsigned long) ?				\
+		__builtin_ctzl((unsigned long)x)			\
+	: __builtin_ctzll(x))
 
 #define xenomai_count_leading_zeros(__v)				\
 	({								\
@@ -111,9 +100,9 @@ void __invalid_operand_size(void);
 			}						\
 		__ret;							\
 	})
-	
+
 #ifdef __cplusplus
 }
 #endif
-	
+
 #endif /* _BOILERPLATE_COMPILER_H */
diff --git a/lib/boilerplate/heapmem.c b/lib/boilerplate/heapmem.c
index 8728e0d15..e6369c715 100644
--- a/lib/boilerplate/heapmem.c
+++ b/lib/boilerplate/heapmem.c
@@ -476,7 +476,7 @@ void *heapmem_alloc(struct heap_memory *heap, size_t size)
 			bmask = ext->pagemap[pg].map;
 			if (bmask == -1U)
 				break;
-			b = __ctz(~bmask);
+			b = xenomai_count_trailing_zeros(~bmask);
 
 			/*
 			 * Got one block from the heading per-bucket
diff --git a/lib/copperplate/heapobj-pshared.c b/lib/copperplate/heapobj-pshared.c
index 5310d9092..d6cc51ae9 100644
--- a/lib/copperplate/heapobj-pshared.c
+++ b/lib/copperplate/heapobj-pshared.c
@@ -529,7 +529,7 @@ static void *sheapmem_alloc(struct shared_heap_memory *heap, size_t size)
 			bmask = ext->pagemap[pg].map;
 			if (bmask == -1U)
 				break;
-			b = __ctz(~bmask);
+			b = xenomai_count_trailing_zeros(~bmask);
 
 			/*
 			 * Got one block from the heading per-bucket
-- 
2.20.1



^ permalink raw reply related	[flat|nested] 4+ messages in thread

* [PATCH v2 2/2] Simplify xenomai_count_leading_zeros
  2019-04-10 11:17 Norbert Lange
  2019-04-10 11:17 ` [PATCH v2 1/2] Rename __ctz to xenomai_count_trailing_zeros Norbert Lange
@ 2019-04-10 11:17 ` Norbert Lange
  2019-04-10 14:15 ` (unknown) Jan Kiszka
  2 siblings, 0 replies; 4+ messages in thread
From: Norbert Lange @ 2019-04-10 11:17 UTC (permalink / raw)
  To: xenomai

Covers now all standard integer types,
no need for corner cases.

Signed-off-by: Norbert Lange <norbert.lange@andritz.com>
---
 include/boilerplate/compiler.h | 28 ++++++++--------------------
 1 file changed, 8 insertions(+), 20 deletions(-)

diff --git a/include/boilerplate/compiler.h b/include/boilerplate/compiler.h
index 0cd71b80a..94b9f8cad 100644
--- a/include/boilerplate/compiler.h
+++ b/include/boilerplate/compiler.h
@@ -72,8 +72,6 @@
 extern "C" {
 #endif
 
-void __invalid_operand_size(void);
-
 #define xenomai_count_trailing_zeros(x)					\
 	((x) == 0 ? (int)(sizeof(x) * __CHAR_BIT__)			\
 	: sizeof(x) <= sizeof(unsigned int) ?				\
@@ -82,24 +80,14 @@ void __invalid_operand_size(void);
 		__builtin_ctzl((unsigned long)x)			\
 	: __builtin_ctzll(x))
 
-#define xenomai_count_leading_zeros(__v)				\
-	({								\
-		int __ret;						\
-		if (!__v)						\
-			__ret = sizeof(__v) * 8;			\
-		else							\
-			switch (sizeof(__v)) {				\
-			case sizeof(int):				\
-				__ret = __builtin_clz((unsigned int)__v); \
-				break;					\
-			case sizeof(long long):				\
-				__ret = __builtin_clzll(__v);		\
-				break;					\
-			default:					\
-				__invalid_operand_size();		\
-			}						\
-		__ret;							\
-	})
+#define xenomai_count_leading_zeros(x)					\
+	((x) == 0 ? (int)(sizeof(x) * __CHAR_BIT__)			\
+	: sizeof(x) <= sizeof(unsigned int) ?				\
+		__builtin_clz((unsigned int)x) +			\
+			(int)(sizeof(unsigned int) - sizeof(x))		\
+	: sizeof(x) <= sizeof(unsigned long) ?				\
+		__builtin_clzl((unsigned long)x)			\
+	: __builtin_clzll(x))
 
 #ifdef __cplusplus
 }
-- 
2.20.1



^ permalink raw reply related	[flat|nested] 4+ messages in thread

* Re: (unknown)
  2019-04-10 11:17 Norbert Lange
  2019-04-10 11:17 ` [PATCH v2 1/2] Rename __ctz to xenomai_count_trailing_zeros Norbert Lange
  2019-04-10 11:17 ` [PATCH v2 2/2] Simplify xenomai_count_leading_zeros Norbert Lange
@ 2019-04-10 14:15 ` Jan Kiszka
  2 siblings, 0 replies; 4+ messages in thread
From: Jan Kiszka @ 2019-04-10 14:15 UTC (permalink / raw)
  To: Norbert Lange, xenomai

On 10.04.19 13:17, Norbert Lange via Xenomai wrote:
> V2 of the patchset. Fixed checkstyle issues, better identation,
> and aded casts to silence (false) pedantic warnings.
> 

Both applied to next, thanks.

You probably want to edit your cover letter subject as well - or use git 
format-patch.

Jan

-- 
Siemens AG, Corporate Technology, CT RDA IOT SES-DE
Corporate Competence Center Embedded Linux


^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2019-04-10 14:15 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-04-10 11:17 Norbert Lange
2019-04-10 11:17 ` [PATCH v2 1/2] Rename __ctz to xenomai_count_trailing_zeros Norbert Lange
2019-04-10 11:17 ` [PATCH v2 2/2] Simplify xenomai_count_leading_zeros Norbert Lange
2019-04-10 14:15 ` (unknown) Jan Kiszka

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.