if returning errno value directly from a syscall, we need to negate it.
authorRich Felker <dalias@aerifal.cx>
Sun, 20 Mar 2011 03:18:34 +0000 (23:18 -0400)
committerRich Felker <dalias@aerifal.cx>
Sun, 20 Mar 2011 03:18:34 +0000 (23:18 -0400)
src/thread/__timedwait.c
src/thread/pthread_kill.c
src/time/clock_nanosleep.c

index b38ea9901ad5080383059b8e4606271262e51797..28b777bc225289343c7da5e1e9eed54b578e70f4 100644 (file)
@@ -17,7 +17,7 @@ int __timedwait(volatile int *addr, int val, clockid_t clk, const struct timespe
                if (to.tv_sec < 0) return ETIMEDOUT;
        }
        if (priv) priv = 128; priv=0;
-       r = __syscall(__NR_futex, (long)addr, FUTEX_WAIT | priv, val, at ? (long)&to : 0);
+       r = -__syscall(__NR_futex, (long)addr, FUTEX_WAIT | priv, val, at ? (long)&to : 0);
        if (r == ETIMEDOUT) return r;
        return 0;
 }
index 6448d978d1257a0f3fd07a4454b116317b26015e..17aa5c4bdba2dd2af3d7a2368e72b5c8e9b132ea 100644 (file)
@@ -2,5 +2,5 @@
 
 int pthread_kill(pthread_t t, int sig)
 {
-       return __syscall(__NR_tgkill, t->pid, t->tid, sig);
+       return -__syscall(__NR_tgkill, t->pid, t->tid, sig);
 }
index c777c179ba8a7dbfb18be040740522012df6bde7..721e7941b558bc0d93260242fc76bee901894043 100644 (file)
@@ -6,7 +6,7 @@ int clock_nanosleep(clockid_t clk, int flags, const struct timespec *req, struct
 {
        int ret;
        CANCELPT_BEGIN;
-       ret = __syscall(__NR_clock_nanosleep, clk, flags, req, rem);
+       ret = -__syscall(__NR_clock_nanosleep, clk, flags, req, rem);
        CANCELPT_END;
        return ret;
 }