Hi,
applying the patch below to sigsuspend.c and compiling with undefined NOIN or
defined, the size goes down from 137 to 114. Is there some specific reason to
inline all these syscalls (yes, I know, that glibc does it the same way...)?
Curiously, without __attribute__((__noinline__)) or with [__always_]inline it
becomes 139.
If there are no problems expected when not inlined, would it be acceptable to
change all of these?
Thanks, Peter
--- libc/sysdeps/linux/common/sigsuspend.c 2011-03-09 18:22:17.000000000
+0100
+++ libc/sysdeps/linux/common/sigsuspend.c 2011-03-10 16:50:43.000000000
+0100
@@ -22,16 +22,30 @@
# include <errno.h>
# include <sysdep-cancel.h>
+#define NOIN
+
+#ifdef NOIN
+static __attribute__((__noinline__)) _syscall2(int, __rt_sigsuspend, const
sigset_t *, set, size_t, size)
+#endif
+
/* Change the set of blocked signals to SET,
wait until a signal arrives, and restore the set of blocked signals. */
int sigsuspend (const sigset_t *set)
{
if (SINGLE_THREAD_P)
+#ifndef NOIN
return INLINE_SYSCALL (rt_sigsuspend, 2, set, _NSIG / 8);
+#else
+ return __rt_sigsuspend(set, _NSIG / 8);
+#endif
int oldtype = LIBC_CANCEL_ASYNC ();
+#ifndef NOIN
int result = INLINE_SYSCALL (rt_sigsuspend, 2, set, _NSIG / 8);
+#else
+ int result = __rt_sigsuspend(set, _NSIG / 8);
+#endif
LIBC_CANCEL_RESET (oldtype);
--
NEU: FreePhone - kostenlos mobil telefonieren und surfen!
Jetzt informieren: http://www.gmx.net/de/go/freephone
_______________________________________________
uClibc mailing list
[email protected]
http://lists.busybox.net/mailman/listinfo/uclibc