Module: xenomai-2.5
Branch: master
Commit: 63552fbc2af38b18b22a5bf8b32c91f64c3f9ac7
URL:    
http://git.xenomai.org/?p=xenomai-2.5.git;a=commit;h=63552fbc2af38b18b22a5bf8b32c91f64c3f9ac7

Author: Philippe Gerum <r...@xenomai.org>
Date:   Fri Jan 21 15:14:55 2011 +0100

nucleus/types.h: fix for uClibc/C++ inclusion (via stdio.h)

uClibc may cause early inclusion of nucleus/types.h from stdio.h, thus
leading to a chicken-and-egg issue when inline routines in the former
refer to stdio symbols (e.g. C++ via mutex support dragged in by
stdio.h).

Turn those inlines into to macros to defer actual references.

---

 include/nucleus/types.h |   17 ++++++++---------
 1 files changed, 8 insertions(+), 9 deletions(-)

diff --git a/include/nucleus/types.h b/include/nucleus/types.h
index f49131c..28726df 100644
--- a/include/nucleus/types.h
+++ b/include/nucleus/types.h
@@ -29,6 +29,7 @@
 #endif /* !CONFIG_PREEMPT_RT */
 #else /* !__KERNEL__ */
 #include <stdio.h>
+#include <string.h>
 #include <sys/types.h>
 #include <errno.h>
 #ifndef BITS_PER_LONG
@@ -107,16 +108,14 @@ typedef atomic_flags_t xnflags_t;
 
 #define XNOBJECT_NAME_LEN 32
 
-static inline void xnobject_copy_name(char *dst, const char *src)
-{
-    if (src)
-       snprintf(dst, XNOBJECT_NAME_LEN, "%s", src);
-    else
-        *dst = '\0';
-}
+#define xnobject_copy_name(dst, src)                                   \
+       do {                                                            \
+               strncpy((dst), (src) ?: "", XNOBJECT_NAME_LEN-1)        \
+                       [XNOBJECT_NAME_LEN-1] = '\0';                   \
+       } while (0)
 
-#define xnobject_create_name(dst, n, obj) \
-    snprintf(dst, n, "%p", obj)
+#define xnobject_create_name(dst, n, obj)      \
+       snprintf(dst, n, "%p", obj)
 
 #define minval(a,b) ((a) < (b) ? (a) : (b))
 #define maxval(a,b) ((a) > (b) ? (a) : (b))


_______________________________________________
Xenomai-git mailing list
Xenomai-git@gna.org
https://mail.gna.org/listinfo/xenomai-git

Reply via email to