]> sourceware.org Git - glibc.git/commitdiff
* sysdeps/unix/sysv/linux/kernel-features.h (__ASSUME_PSELECT, cvs/fedora-glibc-20070814T0643 cvs/fedora-glibc-20070814T0725
authorUlrich Drepper <drepper@redhat.com>
Tue, 14 Aug 2007 03:21:23 +0000 (03:21 +0000)
committerUlrich Drepper <drepper@redhat.com>
Tue, 14 Aug 2007 03:21:23 +0000 (03:21 +0000)
__ASSUME_PPOLL, __ASSUME_ATFCTS, __ASSUME_SET_ROBUST_LIST,
__ASSUME_UTIMENSAT, __ASSUME_FALLOCATE): Update per-arch conditions
when each feature was introduced.

* sysdeps/unix/sysv/linux/dl-vdso.c: Don't include dl-hash.h.
* sysdeps/unix/sysv/linux/dl-vdso.h: Don't include dl-hash.h if NDEBUG.
(CHECK_HASH): New macro.
(PREPARE_VERSION): Use it.

* sysdeps/unix/sysv/linux/pselect.c (__generic_pselect): Only provide
prototype if not __ASSUME_PSELECT.
* sysdeps/unix/sysv/linux/ppoll.c (__generic_ppoll): Only provide
prototype if not __ASSUME_PPOLL.

* sysdeps/unix/sysv/linux/dl-osinfo.h (ROUND): #undef after use.

* sysdeps/unix/clock_settime.c (freq, __pthread_clock_settime,
hp_timing_settime): Don't define or declare if HANDLED_CPUTIME
is defined.

21 files changed:
ChangeLog
nptl/ChangeLog
nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_cond_broadcast.S
nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_cond_signal.S
nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_cond_timedwait.S
nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_cond_wait.S
nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_rdlock.S
nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_timedrdlock.S
nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_timedwrlock.S
nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_unlock.S
nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_wrlock.S
nptl/sysdeps/unix/sysv/linux/i386/lowlevellock.h
nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_broadcast.S
nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_signal.S
sysdeps/unix/clock_settime.c
sysdeps/unix/sysv/linux/dl-osinfo.h
sysdeps/unix/sysv/linux/dl-vdso.c
sysdeps/unix/sysv/linux/dl-vdso.h
sysdeps/unix/sysv/linux/kernel-features.h
sysdeps/unix/sysv/linux/ppoll.c
sysdeps/unix/sysv/linux/pselect.c

index fa4e943b79b3a5c60c26436f336b8fbd894e434f..88df776c426c39de115884faf25765d81d763fe7 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,26 @@
+2007-08-13  Jakub Jelinek  <jakub@redhat.com>
+
+       * sysdeps/unix/sysv/linux/kernel-features.h (__ASSUME_PSELECT,
+       __ASSUME_PPOLL, __ASSUME_ATFCTS, __ASSUME_SET_ROBUST_LIST,
+       __ASSUME_UTIMENSAT, __ASSUME_FALLOCATE): Update per-arch conditions
+       when each feature was introduced.
+
+       * sysdeps/unix/sysv/linux/dl-vdso.c: Don't include dl-hash.h.
+       * sysdeps/unix/sysv/linux/dl-vdso.h: Don't include dl-hash.h if NDEBUG.
+       (CHECK_HASH): New macro.
+       (PREPARE_VERSION): Use it.
+
+       * sysdeps/unix/sysv/linux/pselect.c (__generic_pselect): Only provide
+       prototype if not __ASSUME_PSELECT.
+       * sysdeps/unix/sysv/linux/ppoll.c (__generic_ppoll): Only provide
+       prototype if not __ASSUME_PPOLL.
+
+       * sysdeps/unix/sysv/linux/dl-osinfo.h (ROUND): #undef after use.
+
+       * sysdeps/unix/clock_settime.c (freq, __pthread_clock_settime,
+       hp_timing_settime): Don't define or declare if HANDLED_CPUTIME
+       is defined.
+
 2007-08-13  Ulrich Drepper  <drepper@redhat.com>
 
        * sysdeps/unix/sysv/linux/x86_64/libc-start.c
index 345829cf499ca118641e6796b00bb5244056f197..e56ece02bd05963f65ffb46e8e9b96615b65afd9 100644 (file)
@@ -1,3 +1,40 @@
+2007-08-13  Jakub Jelinek  <jakub@redhat.com>
+
+       * sysdeps/unix/sysv/linux/i386/lowlevellock.h (__lll_private_flag):
+       Fix a pasto.
+       * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_broadcast.S
+       (__pthread_cond_broadcast): Pass LLL_PRIVATE to lll_* and or
+       FUTEX_PRIVATE_FLAG into SYS_futex op if cv is process private.
+       Don't use FUTEX_CMP_REQUEUE if dep_mutex is not process private.
+       * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_signal.S
+       (__pthread_cond_signal): Pass LLL_PRIVATE to lll_* and or
+       FUTEX_PRIVATE_FLAG into SYS_futex op if cv is process private.
+       * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_wait.S: Include
+       kernel-features.h.
+       (__pthread_cond_wait, __condvar_w_cleanup): Pass LLL_PRIVATE to
+       lll_* and or FUTEX_PRIVATE_FLAG into SYS_futex op if cv is
+       process private.  Switch DW_CFA_advance_loc1 and some
+       DW_CFA_advance_loc .eh_frame opcodes to DW_CFA_advance_loc4.
+       * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_timedwait.S
+       (__pthread_cond_timedwait, __condvar_tw_cleanup): Pass LLL_PRIVATE to
+       lll_* and or FUTEX_PRIVATE_FLAG into SYS_futex op if cv is
+       process private.  Switch DW_CFA_advance_loc{1,2} and some
+       DW_CFA_advance_loc .eh_frame opcodes to DW_CFA_advance_loc4.
+       * sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_rdlock.S: Use
+       #ifdef __ASSUME_PRIVATE_FUTEX instead of #if __ASSUME_PRIVATE_FUTEX.
+       * sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_timedwrlock.S:
+       Likewise.
+       * sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_unlock.S: Likewise.
+       * sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_wrlock.S: Likewise.
+       * sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_timedrdlock.S:
+       Likewise.
+       * sysdeps/unix/sysv/linux/x86_64/pthread_cond_broadcast.S
+       (__pthread_cond_broadcast): Compare %r8 instead of
+       dep_mutex-cond_*(%rdi) with $-1.
+       * sysdeps/unix/sysv/linux/x86_64/pthread_cond_signal.S
+       (__pthread_cond_signal): Xor FUTEX_WAKE_OP with FUTEX_WAKE instead
+       of oring.
+
 2007-08-13  Ulrich Drepper  <drepper@redhat.com>
 
        * sysdeps/unix/sysv/linux/i386/i786/Implies: New file.
index 122d83afee4c41982e6177545883d7538c4a498f..776c47f6cc557c914cacac1dad407c1c932a23db 100644 (file)
@@ -83,11 +83,18 @@ __pthread_cond_broadcast:
        je      9f
 
        /* XXX: The kernel so far doesn't support requeue to PI futex.  */
-       testl   $PI_BIT, MUTEX_KIND(%edi)
+       /* XXX: The kernel only supports FUTEX_CMP_REQUEUE to the same
+          type of futex (private resp. shared).  */
+       testl   $(PI_BIT | PS_BIT), MUTEX_KIND(%edi)
        jne     9f
 
        /* Wake up all threads.  */
-       movl    $FUTEX_CMP_REQUEUE, %ecx
+#ifdef __ASSUME_PRIVATE_FUTEX
+       movl    $(FUTEX_CMP_REQUEUE|FUTEX_PRIVATE_FLAG), %ecx
+#else
+       movl    %gs:PRIVATE_FUTEX, %ecx
+       orl     $FUTEX_CMP_REQUEUE, %ecx
+#endif
        movl    $SYS_futex, %eax
        movl    $0x7fffffff, %esi
        movl    $1, %edx
@@ -132,28 +139,63 @@ __pthread_cond_broadcast:
 #else
        leal    cond_lock(%ebx), %edx
 #endif
-       /* XYZ */
-       movl    $LLL_SHARED, %ecx
+#if (LLL_SHARED-LLL_PRIVATE) > 255
+       xorl    %ecx, %ecx
+#endif
+       cmpl    $-1, dep_mutex(%ebx)
+       setne   %cl
+       subl    $1, %ecx
+       andl    $(LLL_SHARED-LLL_PRIVATE), %ecx
+#if LLL_PRIVATE != 0
+       addl    $LLL_PRIVATE, %ecx
+#endif
        call    __lll_lock_wait
        jmp     2b
 
        /* Unlock in loop requires waekup.  */
 5:     leal    cond_lock-cond_futex(%ebx), %eax
-       /* XYZ */
-       movl    $LLL_SHARED, %ecx
+#if (LLL_SHARED-LLL_PRIVATE) > 255
+       xorl    %ecx, %ecx
+#endif
+       cmpl    $-1, dep_mutex-cond_futex(%ebx)
+       setne   %cl
+       subl    $1, %ecx
+       andl    $(LLL_SHARED-LLL_PRIVATE), %ecx
+#if LLL_PRIVATE != 0
+       addl    $LLL_PRIVATE, %ecx
+#endif
        call    __lll_unlock_wake
        jmp     6b
 
        /* Unlock in loop requires waekup.  */
 7:     leal    cond_lock-cond_futex(%ebx), %eax
-       /* XYZ */
-       movl    $LLL_SHARED, %ecx
+#if (LLL_SHARED-LLL_PRIVATE) > 255
+       xorl    %ecx, %ecx
+#endif
+       cmpl    $-1, dep_mutex-cond_futex(%ebx)
+       setne   %cl
+       subl    $1, %ecx
+       andl    $(LLL_SHARED-LLL_PRIVATE), %ecx
+#if LLL_PRIVATE != 0
+       addl    $LLL_PRIVATE, %ecx
+#endif
        call    __lll_unlock_wake
        jmp     8b
 
 9:     /* The futex requeue functionality is not available.  */
        movl    $0x7fffffff, %edx
-       movl    $FUTEX_WAKE, %ecx
+#if FUTEX_PRIVATE_FLAG > 255
+       xorl    %ecx, %ecx
+#endif
+       cmpl    $-1, dep_mutex-cond_futex(%ebx)
+       sete    %cl
+       subl    $1, %ecx
+#ifdef __ASSUME_PRIVATE_FUTEX
+       andl    $FUTEX_PRIVATE_FLAG, %ecx
+#else
+       andl    %gs:PRIVATE_FUTEX, %ecx
+#endif
+       addl    $FUTEX_WAKE, %ecx
        movl    $SYS_futex, %eax
        ENTER_KERNEL
        jmp     10b
index e3510c8ab102fe1633ad1b664d5cb5905572966c..36a18036c503297c42b9aa754b5d07a0b7afdb1c 100644 (file)
@@ -70,7 +70,18 @@ __pthread_cond_signal:
        /* Wake up one thread.  */
        pushl   %esi
        pushl   %ebp
-       movl    $FUTEX_WAKE_OP, %ecx
+#if FUTEX_PRIVATE_FLAG > 255
+       xorl    %ecx, %ecx
+#endif
+       cmpl    $-1, dep_mutex-cond_futex(%ebx)
+       sete    %cl
+       subl    $1, %ecx
+#ifdef __ASSUME_PRIVATE_FUTEX
+       andl    $FUTEX_PRIVATE_FLAG, %ecx
+#else
+       andl    %gs:PRIVATE_FUTEX, %ecx
+#endif
+       addl    $FUTEX_WAKE_OP, %ecx
        movl    $SYS_futex, %eax
        movl    $1, %edx
        movl    $1, %esi
@@ -92,7 +103,9 @@ __pthread_cond_signal:
        popl    %ebx
        ret
 
-7:     movl    $FUTEX_WAKE, %ecx
+7:     /* %ecx should be either FUTEX_WAKE_OP or
+          FUTEX_WAKE_OP|FUTEX_PRIVATE_FLAG from the previous syscall.  */
+       xorl    $(FUTEX_WAKE ^ FUTEX_WAKE_OP), %ecx
        movl    $SYS_futex, %eax
        /* %edx should be 1 already from $FUTEX_WAKE_OP syscall.
        movl    $1, %edx  */
@@ -106,8 +119,16 @@ __pthread_cond_signal:
 
        /* Unlock in loop requires wakeup.  */
 5:     movl    %edi, %eax
-       /* XYZ */
-       movl    $LLL_SHARED, %ecx
+#if (LLL_SHARED-LLL_PRIVATE) > 255
+       xorl    %ecx, %ecx
+#endif
+       cmpl    $-1, dep_mutex-cond_futex(%ebx)
+       setne   %cl
+       subl    $1, %ecx
+       andl    $(LLL_SHARED-LLL_PRIVATE), %ecx
+#if LLL_PRIVATE != 0
+       addl    $LLL_PRIVATE, %ecx
+#endif
        call    __lll_unlock_wake
        jmp     6b
 
@@ -118,8 +139,16 @@ __pthread_cond_signal:
 #else
        leal    cond_lock(%edi), %edx
 #endif
-       /* XYZ */
-       movl    $LLL_SHARED, %ecx
+#if (LLL_SHARED-LLL_PRIVATE) > 255
+       xorl    %ecx, %ecx
+#endif
+       cmpl    $-1, dep_mutex(%edi)
+       setne   %cl
+       subl    $1, %ecx
+       andl    $(LLL_SHARED-LLL_PRIVATE), %ecx
+#if LLL_PRIVATE != 0
+       addl    $LLL_PRIVATE, %ecx
+#endif
        call    __lll_lock_wait
        jmp     2b
 
index ff56c7ae4a90bb16b4d13262f38b407efee65a05..83f8db25bb99d1197712d50bdd1d406393908c76 100644 (file)
@@ -158,7 +158,20 @@ __pthread_cond_timedwait:
        movl    %eax, (%esp)
 
        leal    4(%esp), %esi
-       xorl    %ecx, %ecx      /* movl $FUTEX_WAIT, %ecx */
+#if FUTEX_PRIVATE_FLAG > 255
+       xorl    %ecx, %ecx
+#endif
+       cmpl    $-1, dep_mutex(%ebx)
+       sete    %cl
+       subl    $1, %ecx
+#ifdef __ASSUME_PRIVATE_FUTEX
+       andl    $FUTEX_PRIVATE_FLAG, %ecx
+#else
+       andl    %gs:PRIVATE_FUTEX, %ecx
+#endif
+#if FUTEX_WAIT != 0
+       addl    $FUTEX_WAIT, %ecx
+#endif
        movl    %edi, %edx
        addl    $cond_futex, %ebx
 .Ladd_cond_futex:
@@ -232,7 +245,18 @@ __pthread_cond_timedwait:
 
        addl    $cond_nwaiters, %ebx
        movl    $SYS_futex, %eax
-       movl    $FUTEX_WAKE, %ecx
+#if FUTEX_PRIVATE_FLAG > 255
+       xorl    %ecx, %ecx
+#endif
+       cmpl    $-1, dep_mutex-cond_nwaiters(%ebx)
+       sete    %cl
+       subl    $1, %ecx
+#ifdef __ASSUME_PRIVATE_FUTEX
+       andl    $FUTEX_PRIVATE_FLAG, %ecx
+#else
+       andl    %gs:PRIVATE_FUTEX, %ecx
+#endif
+       addl    $FUTEX_WAKE, %ecx
        movl    $1, %edx
        ENTER_KERNEL
        subl    $cond_nwaiters, %ebx
@@ -280,8 +304,16 @@ __pthread_cond_timedwait:
 #else
        leal    cond_lock(%ebx), %edx
 #endif
-       /* XYZ */
-       movl    $LLL_SHARED, %ecx
+#if (LLL_SHARED-LLL_PRIVATE) > 255
+       xorl    %ecx, %ecx
+#endif
+       cmpl    $-1, dep_mutex(%ebx)
+       setne   %cl
+       subl    $1, %ecx
+       andl    $(LLL_SHARED-LLL_PRIVATE), %ecx
+#if LLL_PRIVATE != 0
+       addl    $LLL_PRIVATE, %ecx
+#endif
        call    __lll_lock_wait
        jmp     2b
 
@@ -293,8 +325,16 @@ __pthread_cond_timedwait:
 #else
        leal    cond_lock(%ebx), %eax
 #endif
-       /* XYZ */
-       movl    $LLL_SHARED, %ecx
+#if (LLL_SHARED-LLL_PRIVATE) > 255
+       xorl    %ecx, %ecx
+#endif
+       cmpl    $-1, dep_mutex(%ebx)
+       setne   %cl
+       subl    $1, %ecx
+       andl    $(LLL_SHARED-LLL_PRIVATE), %ecx
+#if LLL_PRIVATE != 0
+       addl    $LLL_PRIVATE, %ecx
+#endif
        call    __lll_unlock_wake
        jmp     4b
 
@@ -305,8 +345,16 @@ __pthread_cond_timedwait:
 #else
        leal    cond_lock(%ebx), %edx
 #endif
-       /* XYZ */
-       movl    $LLL_SHARED, %ecx
+#if (LLL_SHARED-LLL_PRIVATE) > 255
+       xorl    %ecx, %ecx
+#endif
+       cmpl    $-1, dep_mutex(%ebx)
+       setne   %cl
+       subl    $1, %ecx
+       andl    $(LLL_SHARED-LLL_PRIVATE), %ecx
+#if LLL_PRIVATE != 0
+       addl    $LLL_PRIVATE, %ecx
+#endif
        call    __lll_lock_wait
        jmp     6b
 
@@ -317,8 +365,16 @@ __pthread_cond_timedwait:
 #else
        leal    cond_lock(%ebx), %eax
 #endif
-       /* XYZ */
-       movl    $LLL_SHARED, %ecx
+#if (LLL_SHARED-LLL_PRIVATE) > 255
+       xorl    %ecx, %ecx
+#endif
+       cmpl    $-1, dep_mutex(%ebx)
+       setne   %cl
+       subl    $1, %ecx
+       andl    $(LLL_SHARED-LLL_PRIVATE), %ecx
+#if LLL_PRIVATE != 0
+       addl    $LLL_PRIVATE, %ecx
+#endif
        call    __lll_unlock_wake
        jmp     11b
 
@@ -339,8 +395,16 @@ __pthread_cond_timedwait:
 #else
        leal    cond_lock(%ebx), %eax
 #endif
-       /* XYZ */
-       movl    $LLL_SHARED, %ecx
+#if (LLL_SHARED-LLL_PRIVATE) > 255
+       xorl    %ecx, %ecx
+#endif
+       cmpl    $-1, dep_mutex(%ebx)
+       setne   %cl
+       subl    $1, %ecx
+       andl    $(LLL_SHARED-LLL_PRIVATE), %ecx
+#if LLL_PRIVATE != 0
+       addl    $LLL_PRIVATE, %ecx
+#endif
        call    __lll_unlock_wake
 
        movl    %esi, %eax
@@ -401,8 +465,16 @@ __condvar_tw_cleanup:
 #else
        leal    cond_lock(%ebx), %edx
 #endif
-       /* XYZ */
-       movl    $LLL_SHARED, %ecx
+#if (LLL_SHARED-LLL_PRIVATE) > 255
+       xorl    %ecx, %ecx
+#endif
+       cmpl    $-1, dep_mutex(%ebx)
+       setne   %cl
+       subl    $1, %ecx
+       andl    $(LLL_SHARED-LLL_PRIVATE), %ecx
+#if LLL_PRIVATE != 0
+       addl    $LLL_PRIVATE, %ecx
+#endif
        call    __lll_lock_wait
 
 1:     movl    broadcast_seq(%ebx), %eax
@@ -441,7 +513,18 @@ __condvar_tw_cleanup:
 
        addl    $cond_nwaiters, %ebx
        movl    $SYS_futex, %eax
-       movl    $FUTEX_WAKE, %ecx
+#if FUTEX_PRIVATE_FLAG > 255
+       xorl    %ecx, %ecx
+#endif
+       cmpl    $-1, dep_mutex-cond_nwaiters(%ebx)
+       sete    %cl
+       subl    $1, %ecx
+#ifdef __ASSUME_PRIVATE_FUTEX
+       andl    $FUTEX_PRIVATE_FLAG, %ecx
+#else
+       andl    %gs:PRIVATE_FUTEX, %ecx
+#endif
+       addl    $FUTEX_WAKE, %ecx
        movl    $1, %edx
        ENTER_KERNEL
        subl    $cond_nwaiters, %ebx
@@ -460,15 +543,34 @@ __condvar_tw_cleanup:
 #else
        leal    cond_lock(%ebx), %eax
 #endif
-       /* XYZ */
-       movl    $LLL_SHARED, %ecx
+#if (LLL_SHARED-LLL_PRIVATE) > 255
+       xorl    %ecx, %ecx
+#endif
+       cmpl    $-1, dep_mutex(%ebx)
+       setne   %cl
+       subl    $1, %ecx
+       andl    $(LLL_SHARED-LLL_PRIVATE), %ecx
+#if LLL_PRIVATE != 0
+       addl    $LLL_PRIVATE, %ecx
+#endif
        call    __lll_unlock_wake
 
        /* Wake up all waiters to make sure no signal gets lost.  */
 2:     testl   %edi, %edi
        jnz     5f
        addl    $cond_futex, %ebx
-       movl    $FUTEX_WAKE, %ecx
+#if FUTEX_PRIVATE_FLAG > 255
+       xorl    %ecx, %ecx
+#endif
+       cmpl    $-1, dep_mutex-cond_futex(%ebx)
+       sete    %cl
+       subl    $1, %ecx
+#ifdef __ASSUME_PRIVATE_FUTEX
+       andl    $FUTEX_PRIVATE_FLAG, %ecx
+#else
+       andl    %gs:PRIVATE_FUTEX, %ecx
+#endif
+       addl    $FUTEX_WAKE, %ecx
        movl    $SYS_futex, %eax
        movl    $0x7fffffff, %edx
        ENTER_KERNEL
@@ -588,12 +690,12 @@ __condvar_tw_cleanup:
        .uleb128 20
        .byte   0x83                            # DW_CFA_offset %ebx
        .uleb128 5
-       .byte   2                               # DW_CFA_advance_loc1
-       .byte   .Lsubl-.Lpush_ebx
+       .byte   4                               # DW_CFA_advance_loc4
+       .4byte  .Lsubl-.Lpush_ebx
        .byte   14                              # DW_CFA_def_cfa_offset
        .uleb128 20+FRAME_SIZE
-       .byte   3                               # DW_CFA_advance_loc2
-       .2byte  .Laddl-.Lsubl
+       .byte   4                               # DW_CFA_advance_loc4
+       .4byte  .Laddl-.Lsubl
        .byte   14                              # DW_CFA_def_cfa_offset
        .uleb128 20
        .byte   0x40+.Lpop_ebx-.Laddl           # DW_CFA_advance_loc+N
@@ -615,7 +717,8 @@ __condvar_tw_cleanup:
        .byte   0x40+.LSbl1-.Lpop_edi           # DW_CFA_advance_loc+N
        .byte   14                              # DW_CFA_def_cfa_offset
        .uleb128 20
-       .byte   0x40+.LSbl2-.LSbl1              # DW_CFA_advance_loc+N
+       .byte   4                               # DW_CFA_advance_loc4
+       .4byte  .LSbl2-.LSbl1
        .byte   14                              # DW_CFA_def_cfa_offset
        .uleb128 20+FRAME_SIZE
        .byte   0x85                            # DW_CFA_offset %ebp
@@ -626,14 +729,15 @@ __condvar_tw_cleanup:
        .uleb128 4
        .byte   0x83                            # DW_CFA_offset %ebx
        .uleb128 5
-       .byte   0x40+.LSbl3-.LSbl2              # DW_CFA_advance_loc+N
+       .byte   4                               # DW_CFA_advance_loc4
+       .4byte  .LSbl3-.LSbl2
        .byte   14                              # DW_CFA_def_cfa_offset
        .uleb128 20
+       .byte   4                               # DW_CFA_advance_loc4
 #if defined __NR_clock_gettime && !defined __ASSUME_POSIX_TIMERS
-       .byte   0x40+.LSbl4-.LSbl3              # DW_CFA_advance_loc+N
+       .4byte  .LSbl4-.LSbl3
 #else
-       .byte   4                               # DW_CFA_advance_loc4
-       .long   .LSbl5-.LSbl3
+       .4byte  .LSbl5-.LSbl3
 #endif
        .byte   14                              # DW_CFA_def_cfa_offset
        .uleb128 20+FRAME_SIZE
index 68741bffe8cc478c3b1b81a5123828a6d55191c2..5b301979b534fdbb45522c19c4f2433c701ae57b 100644 (file)
@@ -22,6 +22,7 @@
 #include <lowlevellock.h>
 #include <lowlevelcond.h>
 #include <tcb-offsets.h>
+#include <kernel-features.h>
 
 
        .text
@@ -100,7 +101,20 @@ __pthread_cond_wait:
 4:     call    __pthread_enable_asynccancel
        movl    %eax, (%esp)
 
-       movl    %esi, %ecx      /* movl $FUTEX_WAIT, %ecx */
+#if FUTEX_PRIVATE_FLAG > 255
+       xorl    %ecx, %ecx
+#endif
+       cmpl    $-1, dep_mutex(%ebx)
+       sete    %cl
+       subl    $1, %ecx
+#ifdef __ASSUME_PRIVATE_FUTEX
+       andl    $FUTEX_PRIVATE_FLAG, %ecx
+#else
+       andl    %gs:PRIVATE_FUTEX, %ecx
+#endif
+#if FUTEX_WAIT != 0
+       addl    $FUTEX_WAIT, %ecx
+#endif
        movl    %edi, %edx
        addl    $cond_futex, %ebx
 .Ladd_cond_futex:
@@ -161,7 +175,18 @@ __pthread_cond_wait:
 
        addl    $cond_nwaiters, %ebx
        movl    $SYS_futex, %eax
-       movl    $FUTEX_WAKE, %ecx
+#if FUTEX_PRIVATE_FLAG > 255
+       xorl    %ecx, %ecx
+#endif
+       cmpl    $-1, dep_mutex-cond_nwaiters(%ebx)
+       sete    %cl
+       subl    $1, %ecx
+#ifdef __ASSUME_PRIVATE_FUTEX
+       andl    $FUTEX_PRIVATE_FLAG, %ecx
+#else
+       andl    %gs:PRIVATE_FUTEX, %ecx
+#endif
+       addl    $FUTEX_WAKE, %ecx
        movl    $1, %edx
        ENTER_KERNEL
        subl    $cond_nwaiters, %ebx
@@ -197,8 +222,16 @@ __pthread_cond_wait:
 #else
        leal    cond_lock(%ebx), %edx
 #endif
-       /* XYZ */
-       movl    $LLL_SHARED, %ecx
+#if (LLL_SHARED-LLL_PRIVATE) > 255
+       xorl    %ecx, %ecx
+#endif
+       cmpl    $-1, dep_mutex(%ebx)
+       setne   %cl
+       subl    $1, %ecx
+       andl    $(LLL_SHARED-LLL_PRIVATE), %ecx
+#if LLL_PRIVATE != 0
+       addl    $LLL_PRIVATE, %ecx
+#endif
        call    __lll_lock_wait
        jmp     2b
 
@@ -210,8 +243,16 @@ __pthread_cond_wait:
 #else
        leal    cond_lock(%ebx), %eax
 #endif
-       /* XYZ */
-       movl    $LLL_SHARED, %ecx
+#if (LLL_SHARED-LLL_PRIVATE) > 255
+       xorl    %ecx, %ecx
+#endif
+       cmpl    $-1, dep_mutex(%ebx)
+       setne   %cl
+       subl    $1, %ecx
+       andl    $(LLL_SHARED-LLL_PRIVATE), %ecx
+#if LLL_PRIVATE != 0
+       addl    $LLL_PRIVATE, %ecx
+#endif
        call    __lll_unlock_wake
        jmp     4b
 
@@ -222,8 +263,16 @@ __pthread_cond_wait:
 #else
        leal    cond_lock(%ebx), %edx
 #endif
-       /* XYZ */
-       movl    $LLL_SHARED, %ecx
+#if (LLL_SHARED-LLL_PRIVATE) > 255
+       xorl    %ecx, %ecx
+#endif
+       cmpl    $-1, dep_mutex(%ebx)
+       setne   %cl
+       subl    $1, %ecx
+       andl    $(LLL_SHARED-LLL_PRIVATE), %ecx
+#if LLL_PRIVATE != 0
+       addl    $LLL_PRIVATE, %ecx
+#endif
        call    __lll_lock_wait
        jmp     6b
 
@@ -234,8 +283,16 @@ __pthread_cond_wait:
 #else
        leal    cond_lock(%ebx), %eax
 #endif
-       /* XYZ */
-       movl    $LLL_SHARED, %ecx
+#if (LLL_SHARED-LLL_PRIVATE) > 255
+       xorl    %ecx, %ecx
+#endif
+       cmpl    $-1, dep_mutex(%ebx)
+       setne   %cl
+       subl    $1, %ecx
+       andl    $(LLL_SHARED-LLL_PRIVATE), %ecx
+#if LLL_PRIVATE != 0
+       addl    $LLL_PRIVATE, %ecx
+#endif
        call    __lll_unlock_wake
        jmp     11b
 
@@ -256,8 +313,16 @@ __pthread_cond_wait:
 #else
        leal    cond_lock(%ebx), %eax
 #endif
-       /* XYZ */
-       movl    $LLL_SHARED, %ecx
+#if (LLL_SHARED-LLL_PRIVATE) > 255
+       xorl    %ecx, %ecx
+#endif
+       cmpl    $-1, dep_mutex(%ebx)
+       setne   %cl
+       subl    $1, %ecx
+       andl    $(LLL_SHARED-LLL_PRIVATE), %ecx
+#if LLL_PRIVATE != 0
+       addl    $LLL_PRIVATE, %ecx
+#endif
        call    __lll_unlock_wake
 
        movl    %esi, %eax
@@ -292,8 +357,16 @@ __condvar_w_cleanup:
 #else
        leal    cond_lock(%ebx), %edx
 #endif
-       /* XYZ */
-       movl    $LLL_SHARED, %ecx
+#if (LLL_SHARED-LLL_PRIVATE) > 255
+       xorl    %ecx, %ecx
+#endif
+       cmpl    $-1, dep_mutex(%ebx)
+       setne   %cl
+       subl    $1, %ecx
+       andl    $(LLL_SHARED-LLL_PRIVATE), %ecx
+#if LLL_PRIVATE != 0
+       addl    $LLL_PRIVATE, %ecx
+#endif
        call    __lll_lock_wait
 
 1:     movl    broadcast_seq(%ebx), %eax
@@ -332,7 +405,18 @@ __condvar_w_cleanup:
 
        addl    $cond_nwaiters, %ebx
        movl    $SYS_futex, %eax
-       movl    $FUTEX_WAKE, %ecx
+#if FUTEX_PRIVATE_FLAG > 255
+       xorl    %ecx, %ecx
+#endif
+       cmpl    $-1, dep_mutex-cond_nwaiters(%ebx)
+       sete    %cl
+       subl    $1, %ecx
+#ifdef __ASSUME_PRIVATE_FUTEX
+       andl    $FUTEX_PRIVATE_FLAG, %ecx
+#else
+       andl    %gs:PRIVATE_FUTEX, %ecx
+#endif
+       addl    $FUTEX_WAKE, %ecx
        movl    $1, %edx
        ENTER_KERNEL
        subl    $cond_nwaiters, %ebx
@@ -351,15 +435,34 @@ __condvar_w_cleanup:
 #else
        leal    cond_lock(%ebx), %eax
 #endif
-       /* XYZ */
-       movl    $LLL_SHARED, %ecx
+#if (LLL_SHARED-LLL_PRIVATE) > 255
+       xorl    %ecx, %ecx
+#endif
+       cmpl    $-1, dep_mutex(%ebx)
+       setne   %cl
+       subl    $1, %ecx
+       andl    $(LLL_SHARED-LLL_PRIVATE), %ecx
+#if LLL_PRIVATE != 0
+       addl    $LLL_PRIVATE, %ecx
+#endif
        call    __lll_unlock_wake
 
        /* Wake up all waiters to make sure no signal gets lost.  */
 2:     testl   %edi, %edi
        jnz     5f
        addl    $cond_futex, %ebx
-       movl    $FUTEX_WAKE, %ecx
+#if FUTEX_PRIVATE_FLAG > 255
+       xorl    %ecx, %ecx
+#endif
+       cmpl    $-1, dep_mutex-cond_futex(%ebx)
+       sete    %cl
+       subl    $1, %ecx
+#ifdef __ASSUME_PRIVATE_FUTEX
+       andl    $FUTEX_PRIVATE_FLAG, %ecx
+#else
+       andl    %gs:PRIVATE_FUTEX, %ecx
+#endif
+       addl    $FUTEX_WAKE, %ecx
        movl    $SYS_futex, %eax
        movl    $0x7fffffff, %edx
        ENTER_KERNEL
@@ -473,12 +576,12 @@ __condvar_w_cleanup:
        .uleb128 16
        .byte   0x83                            # DW_CFA_offset %ebx
        .uleb128 4
-       .byte   2                               # DW_CFA_advance_loc1
-       .byte   .Lsubl-.Lpush_ebx
+       .byte   4                               # DW_CFA_advance_loc4
+       .4byte  .Lsubl-.Lpush_ebx
        .byte   14                              # DW_CFA_def_cfa_offset
        .uleb128 16+FRAME_SIZE
-       .byte   2                               # DW_CFA_advance_loc1
-       .byte   .Laddl-.Lsubl
+       .byte   4                               # DW_CFA_advance_loc4
+       .4byte  .Laddl-.Lsubl
        .byte   14                              # DW_CFA_def_cfa_offset
        .uleb128 16
        .byte   0x40+ .Lpop_ebx-.Laddl          # DW_CFA_advance_loc+N
@@ -502,13 +605,16 @@ __condvar_w_cleanup:
        .uleb128 3
        .byte   0x83                            # DW_CFA_offset %ebx
        .uleb128 4
-       .byte   0x40+.LSbl2-.LSbl1              # DW_CFA_advance_loc+N
+       .byte   4                               # DW_CFA_advance_loc4
+       .4byte  .LSbl2-.LSbl1
        .byte   14                              # DW_CFA_def_cfa_offset
        .uleb128 16+FRAME_SIZE
-       .byte   0x40+.LSbl3-.LSbl2              # DW_CFA_advance_loc+N
+       .byte   4                               # DW_CFA_advance_loc4
+       .4byte  .LSbl3-.LSbl2
        .byte   14                              # DW_CFA_def_cfa_offset
        .uleb128 16
-       .byte   0x40+.LSbl4-.LSbl3              # DW_CFA_advance_loc+N
+       .byte   4                               # DW_CFA_advance_loc4
+       .4byte  .LSbl4-.LSbl3
        .byte   14                              # DW_CFA_def_cfa_offset
        .uleb128 16+FRAME_SIZE
        .align  4
index d30bc459bb4016536206d878471d0c3468813a16..d8f1bd54a2c3948bd63d4b22a14b2976d20cc479 100644 (file)
@@ -69,7 +69,7 @@ __pthread_rwlock_rdlock:
        jne     10f
 
 11:
-#if __ASSUME_PRIVATE_FUTEX
+#ifdef __ASSUME_PRIVATE_FUTEX
        movzbl  PSHARED(%ebx), %ecx
        xorl    $FUTEX_PRIVATE_FLAG|FUTEX_WAIT, %ecx
 #else
index 86c9873ec79caeffb776c8573fe784d32fd6f7d7..0d96e03252d987c6c2f75bdc31d82e08e5e5ee04 100644 (file)
@@ -100,7 +100,7 @@ pthread_rwlock_timedrdlock:
        movl    %edx, 4(%esp)
 
        movl    %esi, %edx
-#if __ASSUME_PRIVATE_FUTEX
+#ifdef __ASSUME_PRIVATE_FUTEX
        movzbl  PSHARED(%ebp), %ecx
        xorl    $FUTEX_PRIVATE_FLAG|FUTEX_WAIT, %ecx
 #else
index 5f6c80f8e5a9bd8d375a2d7937b32c3a2a0d7a4a..e78fdf6dda2dd13ab070c20ea2c86090389d7c24 100644 (file)
@@ -98,7 +98,7 @@ pthread_rwlock_timedwrlock:
        movl    %edx, 4(%esp)
 
        movl    %esi, %edx
-#if __ASSUME_PRIVATE_FUTEX
+#ifdef __ASSUME_PRIVATE_FUTEX
        movzbl  PSHARED(%ebp), %ecx
        xorl    $FUTEX_PRIVATE_FLAG|FUTEX_WAIT, %ecx
 #else
index 3f19cd1802c8607560cdbd8394a41e90dec12a80..a23e1b50a8d1d87a2cafc317182f8b95a21c7845 100644 (file)
@@ -74,7 +74,7 @@ __pthread_rwlock_unlock:
        jne     7f
 
 8:
-#if __ASSUME_PRIVATE_FUTEX
+#ifdef __ASSUME_PRIVATE_FUTEX
        movzbl  PSHARED(%edi), %ecx
        xorl    $FUTEX_PRIVATE_FLAG|FUTEX_WAKE, %ecx
 #else
index 70d0fcfde8b2fae843e78134d2a63bab3ef67944..65b99fe7d392ecf875a56bda7f9f781a8bf2e230 100644 (file)
@@ -67,7 +67,7 @@ __pthread_rwlock_wrlock:
        jne     10f
 
 11:
-#if __ASSUME_PRIVATE_FUTEX
+#ifdef __ASSUME_PRIVATE_FUTEX
        movzbl  PSHARED(%ebx), %ecx
        xorl    $FUTEX_PRIVATE_FLAG|FUTEX_WAIT, %ecx
 #else
index 2f663aa68bc295a72f9d7a97e7bc08bde9b0cd0f..8f67616af704b46cf6777c53364035ebd45983e2 100644 (file)
@@ -83,7 +83,7 @@
       ? ((fl) | THREAD_GETMEM (THREAD_SELF, header.private_futex))           \
       : (fl))                                                                \
    : ({ unsigned int __fl = ((private) ^ FUTEX_PRIVATE_FLAG);                \
-       asm ("andl %%fs:%P1, %0" : "+r" (__fl)                                \
+       asm ("andl %%gs:%P1, %0" : "+r" (__fl)                                \
             : "i" (offsetof (struct pthread, header.private_futex)));        \
        __fl | (fl); }))
 # endif              
index 6b8a29e768140a03958bdb742d0d838aec158dcf..6155255eb0cadb9394a622973ac365cebda3de9c 100644 (file)
@@ -132,7 +132,7 @@ __pthread_cond_broadcast:
 
        /* Unlock in loop requires wakeup.  */
 7:     addq    $cond_lock-cond_futex, %rdi
-       cmpq    $-1, dep_mutex-cond_lock(%rdi)
+       cmpq    $-1, %r8
        movl    $LLL_PRIVATE, %eax
        movl    $LLL_SHARED, %esi
        cmovne  %eax, %esi
@@ -141,7 +141,7 @@ __pthread_cond_broadcast:
        jmp     8b
 
 9:     /* The futex requeue functionality is not available.  */
-       cmpq    $-1, dep_mutex-cond_futex(%rdi)
+       cmpq    $-1, %r8
        movl    $0x7fffffff, %edx
 #ifdef __ASSUME_PRIVATE_FUTEX
        movl    $FUTEX_WAKE, %eax
index 8be6d4a21b692879662a603eb25b6a220d84940b..8f65f2cd69ad1956206d74dc22fb73a386ef6df6 100644 (file)
@@ -87,7 +87,7 @@ __pthread_cond_signal:
 
 7:     /* %esi should be either FUTEX_WAKE_OP or
           FUTEX_WAKE_OP|FUTEX_PRIVATE_FLAG from the previous syscall.  */
-       xorl    $(FUTEX_WAKE | FUTEX_WAKE_OP), %esi
+       xorl    $(FUTEX_WAKE ^ FUTEX_WAKE_OP), %esi
        movl    $SYS_futex, %eax
        /* %rdx should be 1 already from $FUTEX_WAKE_OP syscall.
        movl    $1, %edx  */
index a93be6349b6399e107b8263376d252ed55ce28ba..f3f62cf99042b589a1f91d10cce6dc50482ef00d 100644 (file)
@@ -1,4 +1,4 @@
-/* Copyright (C) 1999-2004, 2006 Free Software Foundation, Inc.
+/* Copyright (C) 1999-2004, 2006, 2007 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
@@ -23,7 +23,7 @@
 #include <ldsodefs.h>
 
 
-#if HP_TIMING_AVAIL
+#if HP_TIMING_AVAIL && !defined HANDLED_CPUTIME
 /* Clock frequency of the processor.  We make it a 64-bit variable
    because some jokers are already playing with processors with more
    than 4GHz.  */
@@ -33,10 +33,8 @@ static hp_timing_t freq;
 /* This function is defined in the thread library.  */
 extern void __pthread_clock_settime (clockid_t clock_id, hp_timing_t offset)
      __attribute__ ((__weak__));
-#endif
 
 
-#if HP_TIMING_AVAIL
 static int
 hp_timing_settime (clockid_t clock_id, const struct timespec *tp)
 {
index 203c828b2142a90c4670fead96b74ea41ed70ec7..e3c605e4c79f299015caf6f8447f36df629c1f9a 100644 (file)
@@ -71,6 +71,7 @@ _dl_discover_osversion (void)
 #define ROUND(len) (((len) + sizeof note->n_type - 1) & -sizeof note->n_type)
                note = ((const void *) (note + 1)
                        + ROUND (note->n_namesz) + ROUND (note->n_descsz));
+#undef ROUND
              }
          }
     }
index f12b4c37fdad1030a2ccfbf51b7cbcfdab3b5a71..28d4bb1d42a2451e5364680ae8a7452daddc58ac 100644 (file)
@@ -18,7 +18,6 @@
    02111-1307 USA.  */
 
 #include "config.h"
-#include <dl-hash.h>
 #include <ldsodefs.h>
 
 
index 0a76dbe6f329404c1e2b37d4807214eeaf9af63c..7e433e03ab1f5b00af6dc76e38e2246a32c43b76 100644 (file)
 #define _DL_VDSO_H     1
 
 #include <assert.h>
-#include <dl-hash.h>
 #include <ldsodefs.h>
 
+#ifdef NDEBUG
+# define CHECK_HASH(var) do {} while (0)
+#else
+# include <dl-hash.h>
+# define CHECK_HASH(var) assert (var.hash == _dl_elf_hash (var.name))
+#endif
 
 /* Create version number record for lookup.  */
 #define PREPARE_VERSION(var, vname, vhash) \
@@ -31,7 +36,7 @@
   var.name = vname;                                                          \
   var.hidden = 1;                                                            \
   var.hash = vhash;                                                          \
-  assert (var.hash == _dl_elf_hash (vname));                                 \
+  CHECK_HASH (var);                                                          \
   /* We don't have a specific file where the symbol can be found.  */        \
   var.filename = NULL
 
index f8116d8885aaea8852ecb599253c212e3299479f..aab3df348e22e83e485ed4815d0b29bd9e82411e 100644 (file)
 # define __ASSUME_TMPFS_NAME   1
 #endif
 
-/* pselect was introduced just after 2.6.16-rc1.  Due to the way the
-   kernel versions are advertised we can only rely on 2.6.17 to have
-   the code.  */
-#if __LINUX_KERNEL_VERSION >= 0x020611 && !defined __x86_64__
+/* pselect/ppoll were introduced just after 2.6.16-rc1.  Due to the way
+   the kernel versions are advertised we can only rely on 2.6.17 to have
+   the code.  On x86_64 and SH this appeared first in 2.6.19-rc1,
+   on ia64 in 2.6.22-rc1 and on alpha just after 2.6.22-rc1.  */
+#if __LINUX_KERNEL_VERSION >= 0x020611 \
+    && ((!defined __x86_64__ && !defined __sh__ && !defined __ia64__ \
+        && !defined __alpha__) \
+       || (__LINUX_KERNEL_VERSION >= 0x020613 \
+           && (defined __x86_64__ || defined __sh__)) \
+       || (__LINUX_KERNEL_VERSION >= 0x020616 && defined __ia64__) \
+       || (__LINUX_KERNEL_VERSION >= 0x020617 && defined __alpha__))
 # define __ASSUME_PSELECT      1
-#endif
-
-/* ppoll was introduced just after 2.6.16-rc1.  Due to the way the
-   kernel versions are advertised we can only rely on 2.6.17 to have
-   the code.  */
-#if __LINUX_KERNEL_VERSION >= 0x020611 && !defined __x86_64__
-# define __ASSUME_PPOLL        1
+# define __ASSUME_PPOLL                1
 #endif
 
 /* The *at syscalls were introduced just after 2.6.16-rc1.  Due to the way the
    kernel versions are advertised we can only rely on 2.6.17 to have
-   the code.  */
-#if __LINUX_KERNEL_VERSION >= 0x020611
+   the code.  On PPC they were introduced in 2.6.17-rc1, on SH in 2.6.19-rc1
+   and on Alpha just after 2.6.22-rc1.  */
+#if __LINUX_KERNEL_VERSION >= 0x020611 \
+    && ((!defined __sh__ && !defined __alpha__) \
+       || (__LINUX_KERNEL_VERSION >= 0x020613 && defined __sh__) \
+       || (__LINUX_KERNEL_VERSION >= 0x020617 && defined __alpha__))
 # define __ASSUME_ATFCTS       1
 #endif
 
 /* Support for inter-process robust mutexes was added in 2.6.17.  */
-#if __LINUX_KERNEL_VERSION >= 0x020611
+#if __LINUX_KERNEL_VERSION >= 0x020611 \
+    && ((!defined __sh__ && !defined __alpha__) \
+       || (__LINUX_KERNEL_VERSION >= 0x020613 && defined __sh__) \
+       || (__LINUX_KERNEL_VERSION >= 0x020617 && defined __alpha__))
 # define __ASSUME_SET_ROBUST_LIST      1
 #endif
 
 # define __ASSUME_FUTEX_LOCK_PI        1
 #endif
 
-/* Support for utimensat syscall was added in 2.6.22.  */
-#if __LINUX_KERNEL_VERSION >= 0x020616
+/* Support for utimensat syscall was added in 2.6.22, on alpha and s390
+   only after 2.6.22-rc1.  */
+#if __LINUX_KERNEL_VERSION >= 0x020616 \
+    && ((!defined __sh__ && !defined __alpha__) \
+       || __LINUX_KERNEL_VERSION >= 0x020617)
 # define __ASSUME_UTIMENSAT    1
 #endif
 
 # define __ASSUME_PRIVATE_FUTEX        1
 #endif
 
-/* Support for fallocate was added in 2.6.23.  */
-#if __LINUX_KERNEL_VERSION >= 0x020617
+/* Support for fallocate was added in 2.6.23, on s390
+   only after 2.6.23-rc1.  */
+#if __LINUX_KERNEL_VERSION >= 0x020617 \
+    && ((!defined __s390__ && !defined __alpha__) \
+       || (__LINUX_KERNEL_VERSION >= 0x020618 && defined __s390__))
 # define __ASSUME_FALLOCATE    1
 #endif
index cfc86ba8066cf6e8f119fa08225d689572a1c909..14eb3111b9f144ff0209f778851d7263dba2463a 100644 (file)
@@ -1,4 +1,4 @@
-/* Copyright (C) 2006 Free Software Foundation, Inc.
+/* Copyright (C) 2006, 2007 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Ulrich Drepper <drepper@redhat.com>, 2006.
 
 
 
 #ifdef __NR_ppoll
+# ifndef __ASSUME_PPOLL
 static int __generic_ppoll (struct pollfd *fds, nfds_t nfds,
                            const struct timespec *timeout,
                            const sigset_t *sigmask);
+# endif
 
 
 int
index 0dd744f52772f930c4549970b3ac130386f38394..f39ee920cd3f46bec0943e8593d759e1c77e509f 100644 (file)
@@ -1,4 +1,4 @@
-/* Copyright (C) 2006 Free Software Foundation, Inc.
+/* Copyright (C) 2006, 2007 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Ulrich Drepper <drepper@redhat.com>, 2006.
 
 
 
 #ifdef __NR_pselect6
+# ifndef __ASSUME_PSELECT
 static int __generic_pselect (int nfds, fd_set *readfds, fd_set *writefds,
                              fd_set *exceptfds,
                              const struct timespec *timeout,
                              const sigset_t *sigmask);
+# endif
 
 
 int
This page took 0.09153 seconds and 5 git commands to generate.