diff options
author | Jakub Jelinek <jakub@redhat.com> | 2007-07-12 13:29:44 +0000 |
---|---|---|
committer | Jakub Jelinek <jakub@redhat.com> | 2007-07-12 13:29:44 +0000 |
commit | 13a4ee0bb4ccb6691729bde67233f5ca66209c7c (patch) | |
tree | 72d62fed4d091a1f38c021d9c3eab5e50044e8c4 /nptl/sem_init.c | |
parent | 0923a2c896f09795cca4a6d800a336a56b0ee42c (diff) | |
download | glibc-13a4ee0bb4ccb6691729bde67233f5ca66209c7c.tar glibc-13a4ee0bb4ccb6691729bde67233f5ca66209c7c.tar.gz glibc-13a4ee0bb4ccb6691729bde67233f5ca66209c7c.tar.bz2 glibc-13a4ee0bb4ccb6691729bde67233f5ca66209c7c.zip |
[BZ #4745]
[BZ #4586]
[BZ #4702]
[BZ #4525]
[BZ #4514]
[BZ #4512]
Merge selected bugfixes from the trunk.
Diffstat (limited to 'nptl/sem_init.c')
-rw-r--r-- | nptl/sem_init.c | 47 |
1 files changed, 7 insertions, 40 deletions
diff --git a/nptl/sem_init.c b/nptl/sem_init.c index e29d900588..8709911ac3 100644 --- a/nptl/sem_init.c +++ b/nptl/sem_init.c @@ -1,4 +1,4 @@ -/* Copyright (C) 2002, 2007 Free Software Foundation, Inc. +/* Copyright (C) 2002 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Ulrich Drepper <drepper@redhat.com>, 2002. @@ -22,7 +22,6 @@ #include <lowlevellock.h> #include <shlib-compat.h> #include "semaphoreP.h" -#include <kernel-features.h> int @@ -39,50 +38,18 @@ __new_sem_init (sem, pshared, value) } /* Map to the internal type. */ - struct new_sem *isem = (struct new_sem *) sem; + struct sem *isem = (struct sem *) sem; - /* Use the values the user provided. */ - isem->value = value; -#ifdef __ASSUME_PRIVATE_FUTEX - isem->private = pshared ? 0 : FUTEX_PRIVATE_FLAG; -#else - isem->private = pshared ? 0 : THREAD_GETMEM (THREAD_SELF, - header.private_futex); -#endif + /* Use the value the user provided. */ + isem->count = value; - isem->nwaiters = 0; + /* We can completely ignore the PSHARED parameter since inter-process + use needs no special preparation. */ return 0; } versioned_symbol (libpthread, __new_sem_init, sem_init, GLIBC_2_1); - - - #if SHLIB_COMPAT(libpthread, GLIBC_2_0, GLIBC_2_1) -int -attribute_compat_text_section -__old_sem_init (sem, pshared, value) - sem_t *sem; - int pshared; - unsigned int value; -{ - /* Parameter sanity check. */ - if (__builtin_expect (value > SEM_VALUE_MAX, 0)) - { - __set_errno (EINVAL); - return -1; - } - - /* Map to the internal type. */ - struct old_sem *isem = (struct old_sem *) sem; - - /* Use the value the user provided. */ - isem->value = value; - - /* We cannot store the PSHARED attribute. So we always use the - operations needed for shared semaphores. */ - - return 0; -} +strong_alias (__new_sem_init, __old_sem_init) compat_symbol (libpthread, __old_sem_init, sem_init, GLIBC_2_0); #endif |