diff options
author | Ulrich Drepper <drepper@redhat.com> | 1999-04-15 13:54:57 +0000 |
---|---|---|
committer | Ulrich Drepper <drepper@redhat.com> | 1999-04-15 13:54:57 +0000 |
commit | f8afba91cf8bf8f8324c3c88b8c368e7c2bd5894 (patch) | |
tree | dbdd5f960cf217c76d495ba44173feafae9d184f /linuxthreads/semaphore.c | |
parent | a5486962345290853d7d42ef4a799f16bd6764e2 (diff) | |
download | glibc-f8afba91cf8bf8f8324c3c88b8c368e7c2bd5894.zip glibc-f8afba91cf8bf8f8324c3c88b8c368e7c2bd5894.tar.gz glibc-f8afba91cf8bf8f8324c3c88b8c368e7c2bd5894.tar.bz2 |
Update.
* Versions.def: Add GLIBC_2.1.1 to libpthread.
* iconvdata/Makefile (modules): Add KOI8-U.
(distribute): Add koi8-u.c.
(gen-8bit-gap-modules): Add koi8-u.
* iconvdata/gconv-modules: Add KOI8-U entries.
* iconvdata/koi8-u.c: New file.
1999-04-13 Thorsten Kukuk <kukuk@suse.de>
* sunrpc/auth_des.c: 64bit fixes, security fixes.
* sunrpc/auth_none.c: Pretty print.
* sunrpc/auth_unix.c: Likewise.
* sunrpc/authdes_prot.c: Likewise.
* sunrpc/authuxprot.c: Likewise.
* sunrpc/bindrsvprt.c: Likewise.
* sunrpc/clnt_gen.c: Likewise.
* sunrpc/rpc/xdr.h: Likewise.
* sunrpc/rpc/auth_des.h: Add rpc_timeval struct.
* sunrpc/rpc_cmsg.c: Don't use *long pointers.
* sunrpc/rtime.c: Use new rpc_timeval.
* sunrpc/svc_authux.c: Don't use *long pointers.
* sunrpc/svcauth_des.c: Likewise + security fixes.
* sunrpc/xdr_mem.c: Don't use *long pointers.
* sunrpc/xdr_rec.c: Likewise.
* sunrpc/xdr_sizeof.c: Likewise.
* sunrpc/xdr_stdio.c: Likewise.
1999-04-15 Ulrich Drepper <drepper@cygnus.com>
Diffstat (limited to 'linuxthreads/semaphore.c')
-rw-r--r-- | linuxthreads/semaphore.c | 72 |
1 files changed, 45 insertions, 27 deletions
diff --git a/linuxthreads/semaphore.c b/linuxthreads/semaphore.c index eca68d2..1753021 100644 --- a/linuxthreads/semaphore.c +++ b/linuxthreads/semaphore.c @@ -32,9 +32,9 @@ int sem_init(sem_t *sem, int pshared, unsigned int value) errno = ENOSYS; return -1; } - __pthread_init_lock((struct _pthread_fastlock *) &sem->sem_lock); - sem->sem_value = value; - sem->sem_waiting = NULL; + __pthread_init_lock((struct _pthread_fastlock *) &sem->__sem_lock); + sem->__sem_value = value; + sem->__sem_waiting = NULL; return 0; } @@ -42,23 +42,23 @@ int sem_wait(sem_t * sem) { volatile pthread_descr self = thread_self(); - __pthread_lock((struct _pthread_fastlock *) &sem->sem_lock, self); - if (sem->sem_value > 0) { - sem->sem_value--; - __pthread_unlock((struct _pthread_fastlock *) &sem->sem_lock); + __pthread_lock((struct _pthread_fastlock *) &sem->__sem_lock, self); + if (sem->__sem_value > 0) { + sem->__sem_value--; + __pthread_unlock((struct _pthread_fastlock *) &sem->__sem_lock); return 0; } - enqueue(&sem->sem_waiting, self); + enqueue(&sem->__sem_waiting, self); /* Wait for sem_post or cancellation */ - __pthread_unlock((struct _pthread_fastlock *) &sem->sem_lock); + __pthread_unlock((struct _pthread_fastlock *) &sem->__sem_lock); suspend_with_cancellation(self); /* This is a cancellation point */ if (THREAD_GETMEM(self, p_canceled) && THREAD_GETMEM(self, p_cancelstate) == PTHREAD_CANCEL_ENABLE) { /* Remove ourselves from the waiting list if we're still on it */ - __pthread_lock((struct _pthread_fastlock *) &sem->sem_lock, self); - remove_from_queue(&sem->sem_waiting, self); - __pthread_unlock((struct _pthread_fastlock *) &sem->sem_lock); + __pthread_lock((struct _pthread_fastlock *) &sem->__sem_lock, self); + remove_from_queue(&sem->__sem_waiting, self); + __pthread_unlock((struct _pthread_fastlock *) &sem->__sem_lock); pthread_exit(PTHREAD_CANCELED); } /* We got the semaphore */ @@ -69,15 +69,15 @@ int sem_trywait(sem_t * sem) { int retval; - __pthread_lock((struct _pthread_fastlock *) &sem->sem_lock, NULL); - if (sem->sem_value == 0) { + __pthread_lock((struct _pthread_fastlock *) &sem->__sem_lock, NULL); + if (sem->__sem_value == 0) { errno = EAGAIN; retval = -1; } else { - sem->sem_value--; + sem->__sem_value--; retval = 0; } - __pthread_unlock((struct _pthread_fastlock *) &sem->sem_lock); + __pthread_unlock((struct _pthread_fastlock *) &sem->__sem_lock); return retval; } @@ -88,19 +88,19 @@ int sem_post(sem_t * sem) struct pthread_request request; if (THREAD_GETMEM(self, p_in_sighandler) == NULL) { - __pthread_lock((struct _pthread_fastlock *) &sem->sem_lock, self); - if (sem->sem_waiting == NULL) { - if (sem->sem_value >= SEM_VALUE_MAX) { + __pthread_lock((struct _pthread_fastlock *) &sem->__sem_lock, self); + if (sem->__sem_waiting == NULL) { + if (sem->__sem_value >= SEM_VALUE_MAX) { /* Overflow */ errno = ERANGE; - __pthread_unlock((struct _pthread_fastlock *) &sem->sem_lock); + __pthread_unlock((struct _pthread_fastlock *) &sem->__sem_lock); return -1; } - sem->sem_value++; - __pthread_unlock((struct _pthread_fastlock *) &sem->sem_lock); + sem->__sem_value++; + __pthread_unlock((struct _pthread_fastlock *) &sem->__sem_lock); } else { - th = dequeue(&sem->sem_waiting); - __pthread_unlock((struct _pthread_fastlock *) &sem->sem_lock); + th = dequeue(&sem->__sem_waiting); + __pthread_unlock((struct _pthread_fastlock *) &sem->__sem_lock); restart(th); } } else { @@ -122,15 +122,33 @@ int sem_post(sem_t * sem) int sem_getvalue(sem_t * sem, int * sval) { - *sval = sem->sem_value; + *sval = sem->__sem_value; return 0; } int sem_destroy(sem_t * sem) { - if (sem->sem_waiting != NULL) { - errno = EBUSY; + if (sem->__sem_waiting != NULL) { + __set_errno (EBUSY); return -1; } return 0; } + +sem_t *sem_open(const char *name, int oflag, ...) +{ + __set_errno (ENOSYS); + return SEM_FAILED; +} + +int sem_close(sem_t *sem) +{ + __set_errno (ENOSYS); + return -1; +} + +int sem_unlink(const char *name) +{ + __set_errno (ENOSYS); + return -1; +} |