* sysdeps/unix/sysv/linux/s390/lowlevelsem.h: Likewise.
	* sysdeps/unix/sysv/linux/s390/sem_post.c: Include lowlevellock.h
	instead of lowlevelsem.h.
	* sysdeps/unix/sysv/linux/s390/sem_timedwait.c: Likewise.
	* sysdeps/unix/sysv/linux/s390/sem_trywait.c: Likewise.
	* sysdeps/unix/sysv/linux/s390/sem_wait.c: Likewise.
This commit is contained in:
Ulrich Drepper 2003-03-10 21:42:52 +00:00
parent 0be8ee21f0
commit 106f6f9d9d
6 changed files with 16 additions and 81 deletions

View File

@ -1,6 +1,12 @@
2003-03-10 Ulrich Drepper <drepper@redhat.com>
* sysdeps/unix/sysv/linux/i386/lowlevelsem.h: New needed anymore.
* sysdeps/unix/sysv/linux/s390/lowlevelsem.h: Likewise.
* sysdeps/unix/sysv/linux/s390/sem_post.c: Include lowlevellock.h
instead of lowlevelsem.h.
* sysdeps/unix/sysv/linux/s390/sem_timedwait.c: Likewise.
* sysdeps/unix/sysv/linux/s390/sem_trywait.c: Likewise.
* sysdeps/unix/sysv/linux/s390/sem_wait.c: Likewise.
* sysdeps/unix/sysv/linux/Makefile (gen-as-const-headers): Add
lowlevelrwlock.sym.

View File

@ -1,71 +0,0 @@
/* Copyright (C) 2003 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Martin Schwidefsky <schwidefsky@de.ibm.com>, 2003.
The GNU C Library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
The GNU C Library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with the GNU C Library; if not, write to the Free
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
02111-1307 USA. */
#ifndef _LOWLEVELSEM_H
#define _LOWLEVELSEM_H 1
#include <dl-sysdep.h>
#include <tls.h>
#include <lowlevellock.h>
#include <semaphore.h>
static inline int
__attribute__ ((always_inline))
lll_sem_wait (sem_t *sem)
{
int oldval;
int newval;
while (1)
{
/* Atomically decrement semaphore counter if it is > 0. */
lll_compare_and_swap ((int *) sem, oldval, newval,
"ltr %2,%1; jnp 1f; ahi %2,-1");
/* oldval != newval if the semaphore count has been decremented. */
if (oldval != newval)
return 0;
int err = lll_futex_wait ((int *) sem, 0);
if (err != 0 && err != -EWOULDBLOCK)
return -err;
}
return 0;
}
#if 0
/* Not defined anywhere. */
extern int __lll_sem_timedwait (sem_t *sem, const struct timespec *ts)
attribute_hidden;
#define lll_sem_timedwait(sem, timeout) \
__lll_sem_timedwait (sem, timeout)
#endif
static inline void
__attribute__ ((always_inline))
lll_sem_post(sem_t *sem)
{
int oldval;
int newval;
lll_compare_and_swap ((int *) sem, oldval, newval, "lr %2,%1; ahi %2,1");
lll_futex_wake ((int *) sem, newval);
}
#endif /* lowlevelsem.h */

View File

@ -19,7 +19,7 @@
#include <errno.h>
#include <sysdep.h>
#include <lowlevelsem.h>
#include <lowlevellock.h>
#include <internaltypes.h>
#include <shlib-compat.h>
@ -33,10 +33,10 @@ __new_sem_post (sem_t *sem)
int err;
lll_compare_and_swap ((int *) sem, oldval, newval, "lr %2,%1; ahi %2,1");
err = lll_futex_wake(((int *) sem), newval);
err = lll_futex_wake ((int *) sem, newval);
if (err < 0)
{
__set_errno(-err);
__set_errno (-err);
return -1;
}
return 0;

View File

@ -19,7 +19,7 @@
#include <errno.h>
#include <sysdep.h>
#include <lowlevelsem.h>
#include <lowlevellock.h>
#include <internaltypes.h>
#include <shlib-compat.h>
@ -44,13 +44,13 @@ sem_timedwait (sem, abstime)
/* Check for invalid timeout values. */
if (abstime->tv_nsec >= 1000000000)
{
__set_errno(EINVAL);
__set_errno (EINVAL);
return -1;
}
/* Get the current time. */
struct timeval tv;
gettimeofday(&tv, NULL);
(void) gettimeofday (&tv, NULL);
/* Compute the relative timeout. */
struct timespec rt;
@ -59,12 +59,12 @@ sem_timedwait (sem, abstime)
if (rt.tv_nsec < 0)
{
rt.tv_nsec += 1000000000;
rt.tv_sec--;
--rt.tv_sec;
}
/* Already timed out. */
if (rt.tv_sec < 0)
{
__set_errno(ETIMEDOUT);
__set_errno (ETIMEDOUT);
return -1;
}

View File

@ -19,7 +19,7 @@
#include <errno.h>
#include <sysdep.h>
#include <lowlevelsem.h>
#include <lowlevellock.h>
#include <internaltypes.h>
#include <shlib-compat.h>

View File

@ -19,7 +19,7 @@
#include <errno.h>
#include <sysdep.h>
#include <lowlevelsem.h>
#include <lowlevellock.h>
#include <internaltypes.h>
#include <shlib-compat.h>