summaryrefslogtreecommitdiff
path: root/nptl/sysdeps/unix/sysv/linux/s390/sem_post.c
diff options
context:
space:
mode:
Diffstat (limited to 'nptl/sysdeps/unix/sysv/linux/s390/sem_post.c')
-rw-r--r--nptl/sysdeps/unix/sysv/linux/s390/sem_post.c9
1 files changed, 8 insertions, 1 deletions
diff --git a/nptl/sysdeps/unix/sysv/linux/s390/sem_post.c b/nptl/sysdeps/unix/sysv/linux/s390/sem_post.c
index 4c26857f50..df64c03ba6 100644
--- a/nptl/sysdeps/unix/sysv/linux/s390/sem_post.c
+++ b/nptl/sysdeps/unix/sysv/linux/s390/sem_post.c
@@ -30,9 +30,16 @@ __new_sem_post (sem_t *sem)
{
int oldval;
int newval;
+ int err;
lll_compare_and_swap ((int *) sem, oldval, newval, "lr %2,%1; ahi %2,1");
- lll_futex_wake ((int *) sem, newval);
+ err = lll_futex_wake(((int *) sem), newval);
+ if (err != 0)
+ {
+ __set_errno(-err);
+ return -1;
+ }
+ return 0;
}
versioned_symbol (libpthread, __new_sem_post, sem_post, GLIBC_2_1);
#if SHLIB_COMPAT(libpthread, GLIBC_2_0, GLIBC_2_1)