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

Reply via email to