(linenum→info "unix/slp.c:2238")

glibc/2.7/nptl/ChangeLog

    1: 2007-10-17  Jakub Jelinek  <jakub@redhat.com>
    2: 
    3:         * sysdeps/unix/sysv/linux/i386/i486/sem_post.S (__old_sem_post): New
    4:         routine instead of an alias to __new_sem_post.
    5: 
    6: 2007-10-15  Jakub Jelinek  <jakub@redhat.com>
    7: 
    8:         * init.c (__pthread_initialize_minimal): Initialize word to appease
    9:         valgrind.
   10: 
   11: 2007-10-10  Jakub Jelinek  <jakub@redhat.com>
   12: 
   13:         * sysdeps/pthread/bits/libc-lock.h (__libc_rwlock_init): Inside of
   14:         libc.so just clear NAME.
   15:         (__libc_rwlock_fini): Nop inside of libc.so.
   16:         * tst-initializers1.c (main): Test if PTHREAD_RWLOCK_INITIALIZER is
   17:         all zeros.
   18: 
   19: 2007-09-02  Ulrich Drepper  <drepper@redhat.com>
   20: 
   21:         * sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S
   22:         (__pthread_cond_wait): Fix unlocking of internal lock after mutex
   23:         unlocking failed.
   24:         Patch by Luca Barbieri <luca.barbieri@gmail.com>.
   25: 
   26: 2007-08-21  Ulrich Drepper  <drepper@redhat.com>
   27: 
   28:         [BZ #4938]
   29:         * allocatestack.c (__reclaim_stacks): Clear the TSD in the
   30:         reclaimed stack if necessary.
   31:         * Makefile (tests): Add tst-tsd6.
   32:         * tst-tsd6.c: New file.
   33: 
   34: 2007-08-21  Jakub Jelinek  <jakub@redhat.com>
   35: 
   36:         * sysdeps/unix/sysv/linux/alpha/lowlevellock.h (lll_robust_dead):
   37:         Add private argument.
   38: 
   39: 2007-08-20  Ulrich Drepper  <drepper@redhat.com>
   40: 
   41:         * sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S
   42:         (__pthread_cond_timedwait): Use clock_gettime from VDSO if possible.
   43: 
   44: 2007-08-16  Jakub Jelinek  <jakub@redhat.com>
   45: 
   46:         * sysdeps/unix/sysv/linux/alpha/lowlevellock.h
   47:         (__lll_robust_timedlock): Pass private as last argument to
   48:         __lll_robust_timedlock_wait.
   49:         (__lll_unlock): Fix a pasto.
   50: 
   51: 2007-08-15  Jakub Jelinek  <jakub@redhat.com>
   52: 
   53:         * sysdeps/unix/sysv/linux/sparc/internaltypes.h (sparc_new_sem,
   54:         sparc_old_sem): New structs.
   55:         * sysdeps/unix/sysv/linux/sparc/sparc32/sem_wait.c
   56:         (__sem_wait_cleanup): New function.
   57:         (__new_sem_wait): Use sparc_new_sem structure.  Bump and afterwards
   58:         decrease nwaiters.  Register __sem_wait_cleanup as cleanup handler.
   59:         Pass isem->private ^ FUTEX_PRIVATE_FLAG as last argument to
   60:         lll_futex_wait.
   61:         (__old_sem_wait): New function.
   62:         * sysdeps/unix/sysv/linux/sparc/sparc32/sparcv9/sem_wait.c: Include
   63:         nptl/sysdeps/unix/sysv/linux/sparc version.
   64:         * sysdeps/unix/sysv/linux/sparc/sparc32/sparcv9/sem_timedwait.c:
   65:         Likewise.
   66:         * sysdeps/unix/sysv/linux/sparc/sparc32/sparcv9/sem_post.c: Likewise.
   67:         * sysdeps/unix/sysv/linux/sparc/sparc32/sem_trywait.c
   68:         (__new_sem_trywait): Use sparc_old_sem structure.
   69:         * sysdeps/unix/sysv/linux/sparc/sparc32/sem_timedwait.c
   70:         (sem_timedwait): Use sparc_new_sem structure.  Bump and afterwards
   71:         decrease nwaiters.  Register __sem_wait_cleanup as cleanup handler.
   72:         Pass isem->private ^ FUTEX_PRIVATE_FLAG as last argument to
   73:         lll_futex_timed_wait.
   74:         * sysdeps/unix/sysv/linux/sparc/sparc32/sem_post.c (__new_sem_post):
   75:         Use sparc_new_sem structure.  Only wake if nwaiters > 0.  Pass
   76:         isem->private ^ FUTEX_PRIVATE_FLAG as last argument to
   77:         lll_futex_wake.
   78:         (__old_sem_post): New function.
   79:         * sysdeps/unix/sysv/linux/sparc/sem_wait.c: New file.
   80:         * sysdeps/unix/sysv/linux/sparc/sem_init.c: New file.
   81:         * sysdeps/unix/sysv/linux/sparc/sem_timedwait.c: New file.
   82:         * sysdeps/unix/sysv/linux/sparc/sem_post.c: New file.
   83:         * sysdeps/unix/sysv/linux/sparc/sparc32/sparcv9/sem_init.c: Remove.
   84:         * sysdeps/unix/sysv/linux/sparc/sparc32/sem_init.c: Remove.
   85: 
   86: 2007-08-14  Kaz Kojima  <kkojima@rr.iij4u.or.jp>
   87: 
   88:         * sysdeps/unix/sysv/linux/sh/pthread_cond_broadcast.S
   89:         (__pthread_cond_broadcast): Pass LLL_PRIVATE to lll_* and or
   90:         FUTEX_PRIVATE_FLAG into SYS_futex op if cv is process private.
   91:         Don't use FUTEX_CMP_REQUEUE if dep_mutex is not process private.
   92:         * sysdeps/unix/sysv/linux/shpthread_cond_signal.S
   93:         (__pthread_cond_signal): Pass LLL_PRIVATE to lll_* and or
   94:         FUTEX_PRIVATE_FLAG into SYS_futex op if cv is process private.
   95:         Use FUTEX_WAKE_OP.
   96:         * sysdeps/unix/sysv/linux/sh/pthread_cond_wait.S: Include
   97:         kernel-features.h and tcb-offsets.h.
   98:         (__pthread_cond_wait, __condvar_w_cleanup): Pass LLL_PRIVATE to
   99:         lll_* and or FUTEX_PRIVATE_FLAG into SYS_futex op if cv is
  100:         process private.
  101:         * sysdeps/unix/sysv/linux/sh/pthread_cond_timedwait.S: Include
  102:         tcb-offsets.h.
  103:         (__pthread_cond_timedwait, __condvar_tw_cleanup): Pass LLL_PRIVATE
  104:         to lll_* and or FUTEX_PRIVATE_FLAG into SYS_futex op if cv is
  105:         process private.
  106:         * sysdeps/unix/sysv/linux/sh/pthread_once.S: Use #ifdef
  107:         __ASSUME_PRIVATE_FUTEX instead of #if __ASSUME_PRIVATE_FUTEX.
  108:         * sysdeps/unix/sysv/linux/sh/pthread_rwlock_rdlock.S: Likewise.
  109:         * sysdeps/unix/sysv/linux/sh/pthread_rwlock_timedrdlock.S: Likewise.
  110:         * sysdeps/unix/sysv/linux/sh/pthread_rwlock_timedwrlock.S: Likewise.
  111:         * sysdeps/unix/sysv/linux/sh/pthread_rwlock_unlock.S: Likewise.
  112:         * sysdeps/unix/sysv/linux/sh/pthread_rwlock_wrlock.S: Likewise.
  113: 
  114: 2007-08-14  Jakub Jelinek  <jakub@redhat.com>
  115: 
  116:         * sysdeps/unix/sysv/linux/lowlevellock.c: Comment fix.
  117:         * sysdeps/unix/sysv/linux/sparc/sparc32/lowlevellock.c
  118:         (__lll_timedwait_tid): Pass LLL_SHARED as 4th argument to
  119:         lll_futex_timed_wait.
  120: 
  121:         * sysdeps/unix/sysv/linux/alpha/lowlevellock.h (__lll_unlock,
  122:         __lll_robust_unlock): Rewrite as macros instead of inline functions.
  123:         * sysdeps/unix/sysv/linux/s390/lowlevellock.h (__lll_unlock,
  124:         __lll_robust_unlock, __lll_wait_tid): Likewise.
  125: 
  126: 2007-08-13  Jakub Jelinek  <jakub@redhat.com>
  127: 
  128:         * sysdeps/unix/sysv/linux/i386/lowlevellock.h (__lll_private_flag):
  129:         Fix a pasto.
  130:         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_broadcast.S
  131:         (__pthread_cond_broadcast): Pass LLL_PRIVATE to lll_* and or
  132:         FUTEX_PRIVATE_FLAG into SYS_futex op if cv is process private.
  133:         Don't use FUTEX_CMP_REQUEUE if dep_mutex is not process private.
  134:         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_signal.S
  135:         (__pthread_cond_signal): Pass LLL_PRIVATE to lll_* and or
  136:         FUTEX_PRIVATE_FLAG into SYS_futex op if cv is process private.
  137:         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_wait.S: Include
  138:         kernel-features.h.
  139:         (__pthread_cond_wait, __condvar_w_cleanup): Pass LLL_PRIVATE to
  140:         lll_* and or FUTEX_PRIVATE_FLAG into SYS_futex op if cv is
  141:         process private.  Switch DW_CFA_advance_loc1 and some
  142:         DW_CFA_advance_loc .eh_frame opcodes to DW_CFA_advance_loc4.
  143:         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_timedwait.S
  144:         (__pthread_cond_timedwait, __condvar_tw_cleanup): Pass LLL_PRIVATE to
  145:         lll_* and or FUTEX_PRIVATE_FLAG into SYS_futex op if cv is
  146:         process private.  Switch DW_CFA_advance_loc{1,2} and some
  147:         DW_CFA_advance_loc .eh_frame opcodes to DW_CFA_advance_loc4.
  148:         * sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_rdlock.S: Use
  149:         #ifdef __ASSUME_PRIVATE_FUTEX instead of #if __ASSUME_PRIVATE_FUTEX.
  150:         * sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_timedwrlock.S:
  151:         Likewise.
  152:         * sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_unlock.S: Likewise.
  153:         * sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_wrlock.S: Likewise.
  154:         * sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_timedrdlock.S:
  155:         Likewise.
  156:         * sysdeps/unix/sysv/linux/x86_64/pthread_cond_broadcast.S
  157:         (__pthread_cond_broadcast): Compare %r8 instead of
  158:         dep_mutex-cond_*(%rdi) with $-1.
  159:         * sysdeps/unix/sysv/linux/x86_64/pthread_cond_signal.S
  160:         (__pthread_cond_signal): Xor FUTEX_WAKE_OP with FUTEX_WAKE instead
  161:         of oring.
  162: 
  163: 2007-08-13  Ulrich Drepper  <drepper@redhat.com>
  164: 
  165:         * sysdeps/unix/sysv/linux/i386/i786/Implies: New file.
  166: 
  167: 2007-08-13  Jakub Jelinek  <jakub@redhat.com>
  168: 
  169:         * allocatestack.c: Include kernel-features.h.
  170:         * pthread_create.c: Likewise.
  171:         * pthread_mutex_init.c: Likewise.
  172:         * init.c: Likewise.
  173:         * pthread_cond_timedwait.c: Likewise.
  174:         * sysdeps/unix/sysv/linux/alpha/lowlevellock.h: Likewise.
  175:         * sysdeps/unix/sysv/linux/ia64/lowlevellock.h: Likewise.
  176:         * sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_wrlock.S: Likewise.
  177:         * sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_rdlock.S: Likewise.
  178:         * sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_unlock.S: Likewise.
  179:         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_timedwait.S: Likewise.
  180:         * sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_timedwrlock.S:
  181:         Likewise.
  182:         * sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_timedrdlock.S:
  183:         Likewise.
  184:         * sysdeps/unix/sysv/linux/s390/lowlevellock.h: Likewise.
  185:         * sysdeps/unix/sysv/linux/powerpc/lowlevellock.h: Likewise.
  186:         * sysdeps/unix/sysv/linux/sparc/lowlevellock.h: Likewise.
  187:         * sysdeps/unix/sysv/linux/sh/pthread_cond_timedwait.S: Likewise.
  188: 
  189: 2007-08-12  Jakub Jelinek  <jakub@redhat.com>
  190: 
  191:         * sysdeps/unix/sysv/linux/sparc/bits/pthreadtypes.h
  192:         [__WORDSIZE=32] (pthread_rwlock_t): Split __flags element into four
  193:         byte elements.  One of them is the new __shared element.
  194:         [__WORDSIZE=64] (pthread_rwlock_t): Renamed __pad1 element to __shared,
  195:         adjust names of other padding elements.
  196:         * sysdeps/unix/sysv/linux/s390/bits/pthreadtypes.h
  197:         [__WORDSIZE=32] (pthread_rwlock_t): Split __flags element into four
  198:         byte elements.  One of them is the new __shared element.
  199:         [__WORDSIZE=64] (pthread_rwlock_t): Renamed __pad1 element to __shared,
  200:         adjust names of other padding elements.
  201:         * sysdeps/unix/sysv/linux/ia64/bits/pthreadtypes.h (pthread_rwlock_t):
  202:         Renamed __pad1 element to __shared, adjust names of other padding
  203:         elements.
  204:         * sysdeps/unix/sysv/linux/alpha/bits/pthreadtypes.h
  205:         (pthread_rwlock_t): Likewise.
  206:         * sysdeps/unix/sysv/linux/ia64/lowlevellock.h (__lll_lock): Fix a
  207:         typo.
  208: 
  209: 2007-08-09  Anton Blanchard  <anton@samba.org>
  210: 
  211:         * sysdeps/unix/sysv/linux/powerpc/pthread_spin_unlock.c: New file.
  212: 
  213: 2007-08-12  Ulrich Drepper  <drepper@redhat.com>
  214: 
  215:         * sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S: Include
  216:         <kernel-features.h>.
  217:         * sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S: Likewise.
  218: 
  219: 2007-08-11  Ulrich Drepper  <drepper@redhat.com>
  220: 
  221:         * pthreadP.h (PTHREAD_ROBUST_MUTEX_PSHARED): Define.
  222:         * pthread_mutex_lock.c: Use it instead of PTHREAD_MUTEX_PSHARED when
  223:         dealing with robust mutexes.
  224:         * pthread_mutex_timedlock.c: Likewise.
  225:         * pthread_mutex_trylock.c: Likewise.
  226:         * pthread_mutex_unlock.c: Likewise.
  227:         * sysdeps/unix/sysv/linux/pthread_mutex_cond_lock.c: Likewise.
  228: 
  229: 2007-08-06  Jakub Jelinek  <jakub@redhat.com>
  230: 
  231:         * pthreadP.h (PTHREAD_MUTEX_PSHARED_BIT): Define.
  232:         (PTHREAD_MUTEX_TYPE): Mask __kind with 127.
  233:         (PTHREAD_MUTEX_PSHARED): Define.
  234:         * pthread_mutex_init.c (__pthread_mutex_init): Set
  235:         PTHREAD_MUTEX_PSHARED_BIT for pshared or robust
  236:         mutexes.
  237:         * pthread_mutex_lock.c (LLL_MUTEX_LOCK): Take mutex as argument
  238:         instead of its __data.__lock field, pass PTHREAD_MUTEX_PSHARED
  239:         as second argument to lll_lock.
  240:         (LLL_MUTEX_TRYLOCK): Take mutex as argument
  241:         instead of its __data.__lock field.
  242:         (LLL_ROBUST_MUTEX_LOCK): Take mutex as argument instead of its
  243:         __data.__lock field, pass PTHREAD_MUTEX_PSHARED as second argument
  244:         to lll_robust_lock.
  245:         (__pthread_mutex_lock): Update LLL_MUTEX_LOCK, LLL_MUTEX_TRYLOCK,
  246:         LLL_ROBUST_MUTEX_LOCK users, use PTHREAD_MUTEX_TYPE (mutex)
  247:         instead of mutex->__data.__kind directly, pass
  248:         PTHREAD_MUTEX_PSHARED (mutex) to lll_unlock and lll_futex_wait.
  249:         * pthread_mutex_trylock.c (__pthread_mutex_trylock): Use
  250:         PTHREAD_MUTEX_TYPE (mutex) instead of mutex->__data.__kind
  251:         directly, pass PTHREAD_MUTEX_PSHARED (mutex) to lll_unlock.
  252:         (pthread_mutex_timedlock): Pass PTHREAD_MUTEX_PSHARED (mutex)
  253:         to lll_timedlock, lll_robust_timedlock, lll_unlock and
  254:         lll_futex_timed_wait.  Use PTHREAD_MUTEX_TYPE (mutex) instead
  255:         of mutex->__data.__kind directly.
  256:         * pthread_mutex_timedlock.c (pthread_mutex_timedlock): Pass
  257:         PTHREAD_MUTEX_PSHARED (mutex) to lll_timedlock,
  258:         lll_robust_timedlock, lll_unlock and lll_futex_timed_wait.  Use
  259:         PTHREAD_MUTEX_TYPE (mutex) instead of mutex->__data.__kind directly.
  260:         * pthread_mutex_unlock.c (__pthread_mutex_unlock_usercnt): Pass
  261:         PTHREAD_MUTEX_PSHARED (mutex) to lll_unlock, lll_robust_unlock
  262:         and lll_futex_wake.
  263:         * pthread_mutex_setprioceiling.c (pthread_mutex_setprioceiling): Pass
  264:         PTHREAD_MUTEX_PSHARED (mutex) to lll_futex_wait and lll_futex_wake.
  265:         Use PTHREAD_MUTEX_TYPE (mutex) instead of mutex->__data.__kind
  266:         directly.
  267:         * sysdeps/unix/sysv/linux/pthread_mutex_cond_lock.c (LLL_MUTEX_LOCK):
  268:         Take mutex as argument instead of its __data.__lock field, pass
  269:         PTHREAD_MUTEX_PSHARED as second argument to lll_cond_lock.
  270:         (LLL_MUTEX_TRYLOCK): Take mutex as argument instead of its
  271:         __data.__lock field.
  272:         (LLL_ROBUST_MUTEX_LOCK): Take mutex as argument instead of its
  273:         __data.__lock field, pass PTHREAD_MUTEX_PSHARED as second argument
  274:         to lll_robust_cond_lock.
  275:         * pthread_cond_broadcast.c (__pthread_cond_broadcast): Add pshared
  276:         variable, pass it to lll_lock, lll_unlock, lll_futex_requeue and
  277:         lll_futex_wake.  Don't use lll_futex_requeue if dependent mutex
  278:         has PTHREAD_MUTEX_PSHARED_BIT bit set in its __data.__kind.
  279:         * pthread_cond_destroy.c (__pthread_cond_destroy): Add pshared
  280:         variable, pass it to lll_lock, lll_unlock, lll_futex_wake and
  281:         lll_futex_wait.
  282:         * pthread_cond_signal.c (__pthread_cond_signal): Add pshared
  283:         variable, pass it to lll_lock, lll_unlock, lll_futex_wake_unlock and
  284:         lll_futex_wake.
  285:         * pthread_cond_timedwait.c (__pthread_cond_wait): Add
  286:         pshared variable, pass it to lll_lock, lll_unlock,
  287:         lll_futex_timedwait and lll_futex_wake.
  288:         * pthread_cond_wait.c (__condvar_cleanup, __pthread_cond_wait): Add
  289:         pshared variable, pass it to lll_lock, lll_unlock, lll_futex_wait
  290:         and lll_futex_wake.
  291:         * sysdeps/unix/sysv/linux/alpha/lowlevellock.h (lll_futex_requeue,
  292:         lll_futex_wake_unlock): Add private argument, use __lll_private_flag
  293:         macro.
  294:         * sysdeps/unix/sysv/linux/ia64/lowlevellock.h (lll_futex_requeue,
  295:         lll_futex_wake_unlock): Likewise.
  296:         * sysdeps/unix/sysv/linux/powerpc/lowlevellock.h (lll_futex_requeue):
  297:         Likewise.
  298:         * sysdeps/unix/sysv/linux/sparc/lowlevellock.h (lll_futex_requeue,
  299:         lll_futex_wake_unlock): Likewise.
  300:         * sysdeps/unix/sysv/linux/x86_64/lowlevellock.h (lll_futex_requeue):
  301:         Likewise.
  302:         * sysdeps/unix/sysv/linux/s390/lowlevellock.h (lll_futex_requeue,
  303:         lll_futex_wake_unlock): Likewise.
  304:         (lll_futex_wake): Fix a typo.
  305:         * sysdeps/unix/sysv/linux/pthread-pi-defines.sym (PS_BIT): Add.
  306:         * sysdeps/unix/sysv/linux/x86_64/pthread_cond_broadcast.S
  307:         (__pthread_cond_broadcast): Pass LLL_PRIVATE to lll_* and or
  308:         FUTEX_PRIVATE_FLAG into SYS_futex op if cv is process private.
  309:         Don't use FUTEX_CMP_REQUEUE if dep_mutex is not process private.
  310:         * sysdeps/unix/sysv/linux/x86_64/pthread_cond_signal.S
  311:         (__pthread_cond_signal): Pass LLL_PRIVATE to lll_* and or
  312:         FUTEX_PRIVATE_FLAG into SYS_futex op if cv is process private.
  313:         * sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S
  314:         (__pthread_cond_timedwait): Likewise.
  315:         * sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S:
  316:         (__condvar_cleanup, __pthread_cond_wait): Likewise.
  317: 
  318: 2007-08-05  Jakub Jelinek  <jakub@redhat.com>
  319: 
  320:         * sysdeps/unix/sysv/linux/powerpc/powerpc32/sysdep-cancel.h (PSEUDO):
  321:         Don't use CGOTSETUP and CGOTRESTORE macros.
  322:         (CGOTSETUP, CGOTRESTORE): Remove.
  323:         <IS_IN_rtld> (CENABLE, CDISABLE): Don't use JUMPTARGET, branch to
  324:         @local symbol.
  325: 
  326: 2007-08-01  Kaz Kojima  <kkojima@rr.iij4u.or.jp>
  327: 
  328:         * sysdeps/unix/sysv/linux/sh/libc-lowlevellock.S: Remove
  329:         definitions for private futexes.
  330:         * sysdeps/unix/sysv/linux/sh/lowlevellock.S: Include
  331:         kernel-features.h and lowlevellock.h.  Use private futexes if
  332:         they are available.
  333:         (__lll_lock_wait_private, __lll_unlock_wake_private): New.
  334:         (__lll_mutex_lock_wait): Rename to
  335:         (__lll_lock_wait): ... this.  Don't compile in for libc.so.
  336:         (__lll_mutex_timedlock_wait): Rename to ...
  337:         (__lll_timedlock_wait): ... this.  Use __NR_gettimeofday.
  338:         Don't compile in for libc.so.
  339:         (__lll_mutex_unlock_wake): Rename to ...
  340:         (__lll_unlock_wake): ... this.  Don't compile in for libc.so.
  341:         (__lll_timedwait_tid): Use __NR_gettimeofday.
  342:         * sysdeps/unix/sysv/linux/sh/lowlevellock.h: Allow including
  343:         the header from assembler.  Renamed all lll_mutex_* resp.
  344:         lll_robust_mutex_* macros to lll_* resp. lll_robust_*.
  345:         Renamed all LLL_MUTEX_LOCK_* macros to LLL_LOCK_*.
  346:         (FUTEX_CMP_REQUEUE, FUTEX_WAKE_OP, FUTEX_OP_CLEAR_WAKE_IF_GT_ONE):
  347:         Define.
  348:         (__lll_lock_wait_private): Add prototype.
  349:         (__lll_lock_wait, __lll_timedlock_wait, __lll_robust_lock_wait,
  350:         __lll_robust_timedlock_wait, __lll_unlock_wake_private,
  351:         __lll_unlock_wake): Likewise.
  352:         (lll_lock): Add private argument.  Call __lll_lock_wait_private
  353:         if private is constant LLL_PRIVATE.
  354:         (lll_robust_lock, lll_cond_lock, lll_robust_cond_lock,
  355:         lll_timedlock, lll_robust_timedlock): Add private argument.
  356:         (lll_unlock): Add private argument.  Call __lll_unlock_wake_private
  357:         if private is constant LLL_PRIVATE.
  358:         (lll_robust_unlock, lll_robust_dead): Add private argument.
  359:         (lll_lock_t): Remove.
  360:         (__lll_cond_wait, __lll_cond_timedwait, __lll_cond_wake,
  361:         __lll_cond_broadcast, lll_cond_wait, lll_cond_timedwait,
  362:         lll_cond_wake, lll_cond_broadcast): Remove.
  363:         * sysdeps/unix/sysv/linux/sh/lowlevelrobustlock.S: Include
  364:         kernel-features.h and lowlevellock.h.
  365:         (SYS_gettimeofday, SYS_futex, FUTEX_WAIT, FUTEX_WAKE): Remove.
  366:         (LOAD_FUTEX_WAIT): Define.
  367:         (__lll_robust_mutex_lock_wait): Rename to ...
  368:         (__lll_robust_lock_wait): ... this.  Add private argument.
  369:         Use LOAD_FUTEX_WAIT macro.
  370:         (__lll_robust_mutex_timedlock_wait): Rename to ...
  371:         (__lll_robust_timedlock_wait): ... this.    Add private argument.
  372:         Use __NR_gettimeofday.  Use LOAD_FUTEX_WAIT macro.
  373:         * sysdeps/unix/sysv/linux/sh/pthread_barrier_wait.S: Include
  374:         lowlevellock.h.
  375:         (SYS_futex, FUTEX_WAIT, FUTEX_WAKE): Remove.
  376:         (pthread_barrier_wait): Use __lll_{lock,unlock}_* instead of
  377:         __lll_mutex_{lock,unlock}_*.
  378:         * sysdeps/unix/sysv/linux/sh/pthread_cond_broadcast.S: Include
  379:         lowlevellock.h and pthread-errnos.h.
  380:         (SYS_futex, FUTEX_WAIT, FUTEX_WAKE, FUTEX_REQUEUE,
  381:         FUTEX_CMP_REQUEUE, EINVAL): Remove.
  382:         (__pthread_cond_broadcast): Use __lll_{lock,unlock}_* instead of
  383:         __lll_mutex_{lock,unlock}_*.
  384:         * sysdeps/unix/sysv/linux/sh/pthread_cond_signal.S: Include
  385:         lowlevellock.h and pthread-errnos.h.
  386:         (SYS_futex, FUTEX_WAIT, FUTEX_WAKE, FUTEX_REQUEUE, EINVAL): Remove.
  387:         (__pthread_cond_signal): Use __lll_{lock,unlock}_* instead of
  388:         __lll_mutex_{lock,unlock}_*.
  389:         * sysdeps/unix/sysv/linux/sh/pthread_cond_timedwait.S: Include
  390:         lowlevellock.h.
  391:         (SYS_futex, SYS_gettimeofday, FUTEX_WAIT, FUTEX_WAKE): Remove.
  392:         (__pthread_cond_timedwait): Use __lll_{lock,unlock}_* instead of
  393:         __lll_mutex_{lock,unlock}_*.  Use __NR_gettimeofday.
  394:         (__condvar_tw_cleanup): Likewise.
  395:         * sysdeps/unix/sysv/linux/sh/pthread_cond_wait.S: Include
  396:         lowlevellock.h.
  397:         (SYS_futex, FUTEX_WAIT, FUTEX_WAKE): Remove.
  398:         (__pthread_cond_wait): Use __lll_{lock,unlock}_* instead of
  399:         __lll_mutex_{lock,unlock}_*.
  400:         ( __condvar_w_cleanup): Likewise.
  401:         * sysdeps/unix/sysv/linux/sh/pthread_once.S: Include lowlevellock.h.
  402:         (SYS_futex, FUTEX_WAIT, FUTEX_WAKE, FUTEX_PRIVATE_FLAG): Remove.
  403:         * sysdeps/unix/sysv/linux/sh/pthread_rwlock_rdlock.S: Include
  404:         lowlevellock.h.
  405:         (SYS_futex, FUTEX_WAIT, FUTEX_WAKE, FUTEX_PRIVATE_FLAG): Remove.
  406:         (__pthread_rwlock_rdlock): Use __lll_{lock,unlock}_* instead of
  407:         __lll_mutex_{lock,unlock}_*.
  408:         * sysdeps/unix/sysv/linux/sh/pthread_rwlock_timedrdlock.S: Include
  409:         lowlevellock.h.
  410:         (SYS_gettimeofday, SYS_futex, FUTEX_WAIT, FUTEX_WAKE,
  411:         FUTEX_PRIVATE_FLAG): Remove.
  412:         (pthread_rwlock_timedrdlock): Use __lll_{lock,unlock}_* instead of
  413:         __lll_mutex_{lock,unlock}_*.  Use __NR_gettimeofday.
  414:         * sysdeps/unix/sysv/linux/sh/pthread_rwlock_timedwrlock.S: Include
  415:         lowlevellock.h.
  416:         (SYS_gettimeofday, SYS_futex, FUTEX_WAIT, FUTEX_WAKE,
  417:         FUTEX_PRIVATE_FLAG): Remove.
  418:         (pthread_rwlock_timedwrlock): Use __lll_{lock,unlock}_* instead of
  419:         __lll_mutex_{lock,unlock}_*.  Use __NR_gettimeofday.
  420:         * sysdeps/unix/sysv/linux/sh/pthread_rwlock_unlock.S: Include
  421:         lowlevellock.h.
  422:         (SYS_futex, FUTEX_WAIT, FUTEX_WAKE, FUTEX_PRIVATE_FLAG): Remove.
  423:         (__pthread_rwlock_unlock): Use __lll_{lock,unlock}_* instead of
  424:         __lll_mutex_{lock,unlock}_*.
  425:         * sysdeps/unix/sysv/linux/sh/pthread_rwlock_wrlock.S: Include
  426:         lowlevellock.h.
  427:         (SYS_futex, FUTEX_WAIT, FUTEX_WAKE, FUTEX_PRIVATE_FLAG): Remove.
  428:         (__pthread_rwlock_wrlock): Use __lll_{lock,unlock}_* instead of
  429:         __lll_mutex_{lock,unlock}_*.
  430:         * sysdeps/unix/sysv/linux/sh/sem_post.S: Include lowlevellock.h.
  431:         (SYS_futex, FUTEX_WAIT, FUTEX_WAKE, FUTEX_PRIVATE_FLAG): Remove.
  432:         (__new_sem_post): Use standard initial exec code sequences.
  433:         * sysdeps/unix/sysv/linux/sh/sem_timedwait.S: Include
  434:         lowlevellock.h.
  435:         (SYS_gettimeofday, SYS_futex, FUTEX_WAIT, FUTEX_WAKE,
  436:         FUTEX_PRIVATE_FLAG): Remove.
  437:         (sem_timedwait): Use __NR_gettimeofday.  Use standard initial
  438:         exec code sequences.
  439:         * sysdeps/unix/sysv/linux/sh/sem_trywait.S: Include lowlevellock.h.
  440:         (__new_sem_trywait): Use standard initial exec code sequences.
  441:         * sysdeps/unix/sysv/linux/sh/sem_wait.S: Include lowlevellock.h.
  442:         (__new_sem_wait): Use standard initial exec code sequences.
  443: 
  444: 2007-07-31  Anton Blanchard  <anton@samba.org>
  445: 
  446:         * sysdeps/unix/sysv/linux/powerpc/sem_post.c (__new_sem_post):
  447:         Use __asm __volatile (__lll_acq_instr ::: "memory") instead of
  448:         atomic_full_barrier.
  449: 
  450: 2007-07-31  Jakub Jelinek  <jakub@redhat.com>
  451: 
  452:         * allocatestack.c (stack_cache_lock): Change type to int.
  453:         (get_cached_stack, allocate_stack, __deallocate_stack,
  454:         __make_stacks_executable, __find_thread_by_id, __nptl_setxid,
  455:         __pthread_init_static_tls, __wait_lookup_done): Add LLL_PRIVATE
  456:         as second argument to lll_lock and lll_unlock macros on
  457:         stack_cache_lock.
  458:         * pthread_create.c (__find_in_stack_list): Likewise.
  459:         (start_thread): Similarly with pd->lock.  Use lll_robust_dead
  460:         macro instead of lll_robust_mutex_dead, pass LLL_SHARED to it
  461:         as second argument.
  462:         * descr.h (struct pthread): Change lock and setxid_futex field
  463:         type to int.
  464:         * old_pthread_cond_broadcast.c (__pthread_cond_broadcast_2_0): Use
  465:         LLL_LOCK_INITIALIZER instead of LLL_MUTEX_LOCK_INITIALIZER.
  466:         * old_pthread_cond_signal.c (__pthread_cond_signal_2_0): Likewise.
  467:         * old_pthread_cond_timedwait.c (__pthread_cond_timedwait_2_0):
  468:         Likewise.
  469:         * old_pthread_cond_wait.c (__pthread_cond_wait_2_0): Likewise.
  470:         * pthread_cond_init.c (__pthread_cond_init): Likewise.
  471:         * pthreadP.h (__attr_list_lock): Change type to int.
  472:         * pthread_attr_init.c (__attr_list_lock): Likewise.
  473:         * pthread_barrier_destroy.c (pthread_barrier_destroy): Pass
  474:         ibarrier->private ^ FUTEX_PRIVATE_FLAG as second argument to
  475:         lll_{,un}lock.
  476:         * pthread_barrier_wait.c (pthread_barrier_wait): Likewise and
  477:         also for lll_futex_{wake,wait}.
  478:         * pthread_barrier_init.c (pthread_barrier_init): Make iattr
  479:         a pointer to const.
  480:         * pthread_cond_broadcast.c (__pthread_cond_broadcast): Pass
  481:         LLL_SHARED as second argument to lll_{,un}lock.
  482:         * pthread_cond_destroy.c (__pthread_cond_destroy): Likewise.
  483:         * pthread_cond_signal.c (__pthread_cond_singal): Likewise.
  484:         * pthread_cond_timedwait.c (__pthread_cond_timedwait): Likewise.
  485:         * pthread_cond_wait.c (__condvar_cleanup, __pthread_cond_wait):
  486:         Likewise.
  487:         * pthread_getattr_np.c (pthread_getattr_np): Add LLL_PRIVATE
  488:         as second argument to lll_{,un}lock macros on pd->lock.
  489:         * pthread_getschedparam.c (__pthread_getschedparam): Likewise.
  490:         * pthread_setschedparam.c (__pthread_setschedparam): Likewise.
  491:         * pthread_setschedprio.c (pthread_setschedprio): Likewise.
  492:         * tpp.c (__pthread_tpp_change_priority, __pthread_current_priority):
  493:         Likewise.
  494:         * sysdeps/pthread/createthread.c (do_clone, create_thread):
  495:         Likewise.
  496:         * pthread_once.c (once_lock): Change type to int.
  497:         (__pthread_once): Pass LLL_PRIVATE as second argument to
  498:         lll_{,un}lock macros on once_lock.
  499:         * pthread_rwlock_rdlock.c (__pthread_rwlock_rdlock): Use
  500:         lll_{,un}lock macros instead of lll_mutex_{,un}lock, pass
  501:         rwlock->__data.__shared as second argument to them and similarly
  502:         for lll_futex_w*.
  503:         * pthread_rwlock_timedrdlock.c (pthread_rwlock_timedrdlock):
  504:         Likewise.
  505:         * pthread_rwlock_timedwrlock.c (pthread_rwlock_timedwrlock):
  506:         Likewise.
  507:         * pthread_rwlock_tryrdlock.c (__pthread_rwlock_tryrdlock): Likewise.
  508:         * pthread_rwlock_trywrlock.c (__pthread_rwlock_trywrlock): Likewise.
  509:         * pthread_rwlock_unlock.c (__pthread_rwlock_unlock): Likewise.
  510:         * pthread_rwlock_wrlock.c (__pthread_rwlock_wrlock): Likewise.
  511:         * sem_close.c (sem_close): Pass LLL_PRIVATE as second argument
  512:         to lll_{,un}lock macros on __sem_mappings_lock.
  513:         * sem_open.c (check_add_mapping): Likewise.
  514:         (__sem_mappings_lock): Change type to int.
  515:         * semaphoreP.h (__sem_mappings_lock): Likewise.
  516:         * pthread_mutex_lock.c (LLL_MUTEX_LOCK, LLL_MUTEX_TRYLOCK,
  517:         LLL_ROBUST_MUTEX_LOCK): Use lll_{,try,robust_}lock macros
  518:         instead of lll_*mutex_*, pass LLL_SHARED as last
  519:         argument.
  520:         (__pthread_mutex_lock): Use lll_unlock instead of lll_mutex_unlock,
  521:         pass LLL_SHARED as last argument.
  522:         * sysdeps/unix/sysv/linux/pthread_mutex_cond_lock.c (LLL_MUTEX_LOCK,
  523:         LLL_MUTEX_TRYLOCK, LLL_ROBUST_MUTEX_LOCK): Use
  524:         lll_{cond_,cond_try,robust_cond}lock macros instead of lll_*mutex_*,
  525:         pass LLL_SHARED as last argument.
  526:         * pthread_mutex_timedlock.c (pthread_mutex_timedlock): Use
  527:         lll_{timed,try,robust_timed,un}lock instead of lll_*mutex*, pass
  528:         LLL_SHARED as last argument.
  529:         * pthread_mutex_trylock.c (__pthread_mutex_trylock): Similarly.
  530:         * pthread_mutex_unlock.c (__pthread_mutex_unlock_usercnt):
  531:         Similarly.
  532:         * sysdeps/pthread/bits/libc-lock.h (__libc_lock_lock,
  533:         __libc_lock_lock_recursive, __libc_lock_unlock,
  534:         __libc_lock_unlock_recursive): Pass LLL_PRIVATE as second
  535:         argument to lll_{,un}lock.
  536:         * sysdeps/pthread/bits/stdio-lock.h (_IO_lock_lock,
  537:         _IO_lock_unlock): Likewise.
  538:         * sysdeps/unix/sysv/linux/fork.c (__libc_fork): Don't use
  539:         compound literal.
  540:         * sysdeps/unix/sysv/linux/unregister-atfork.c (__unregister_atfork):
  541:         Pass LLL_PRIVATE as second argument to lll_{,un}lock macros on
  542:         __fork_lock.
  543:         * sysdeps/unix/sysv/linux/register-atfork.c (__register_atfork,
  544:         free_mem): Likewise.
  545:         (__fork_lock): Change type to int.
  546:         * sysdeps/unix/sysv/linux/fork.h (__fork_lock): Likewise.
  547:         * sysdeps/unix/sysv/linux/sem_post.c (__new_sem_post): Pass
  548:         isem->private ^ FUTEX_PRIVATE_FLAG as second argument to
  549:         lll_futex_wake.
  550:         * sysdeps/unix/sysv/linux/sem_timedwait.c (sem_timedwait): Likewise.
  551:         * sysdeps/unix/sysv/linux/sem_wait.c (__new_sem_wait): Likewise.
  552:         * sysdeps/unix/sysv/linux/lowlevellock.c (__lll_lock_wait_private):
  553:         New function.
  554:         (__lll_lock_wait, __lll_timedlock_wait): Add private argument and
  555:         pass it through to lll_futex_*wait, only compile in when
  556:         IS_IN_libpthread.
  557:         * sysdeps/unix/sysv/linux/lowlevelrobustlock.c
  558:         (__lll_robust_lock_wait, __lll_robust_timedlock_wait): Add private
  559:         argument and pass it through to lll_futex_*wait.
  560:         * sysdeps/unix/sysv/linux/alpha/lowlevellock.h: Renamed all
  561:         lll_mutex_* resp. lll_robust_mutex_* macros to lll_* resp.
  562:         lll_robust_*.  Renamed all __lll_mutex_* resp. __lll_robust_mutex_*
  563:         inline functions to __lll_* resp. __lll_robust_*.
  564:         (LLL_MUTEX_LOCK_INITIALIZER): Remove.
  565:         (lll_mutex_dead): Add private argument.
  566:         (__lll_lock_wait_private): New prototype.
  567:         (__lll_lock_wait, __lll_robust_lock_wait, __lll_lock_timedwait,
  568:         __lll_robust_lock_timedwait): Add private argument to prototypes.
  569:         (__lll_lock): Add private argument, if it is constant LLL_PRIVATE,
  570:         call __lll_lock_wait_private, otherwise pass private to
  571:         __lll_lock_wait.
  572:         (__lll_robust_lock, __lll_cond_lock, __lll_timedlock,
  573:         __lll_robust_timedlock): Add private argument, pass it to
  574:         __lll_*wait functions.
  575:         (__lll_unlock): Add private argument, if it is constant LLL_PRIVATE,
  576:         call __lll_unlock_wake_private, otherwise pass private to
  577:         __lll_unlock_wake.
  578:         (__lll_robust_unlock): Add private argument, pass it to
  579:         __lll_robust_unlock_wake.
  580:         (lll_lock, lll_robust_lock, lll_cond_lock, lll_timedlock,
  581:         lll_robust_timedlock, lll_unlock, lll_robust_unlock): Add private
  582:         argument, pass it through to __lll_* inline function.
  583:         (__lll_mutex_unlock_force, lll_mutex_unlock_force): Remove.
  584:         (lll_lock_t): Remove.
  585:         (__lll_cond_wait, __lll_cond_timedwait, __lll_cond_wake,
  586:         __lll_cond_broadcast, lll_cond_wait, lll_cond_timedwait,
  587:         lll_cond_wake, lll_cond_broadcast): Remove.
  588:         * sysdeps/unix/sysv/linux/ia64/lowlevellock.h: Likewise.
  589:         * sysdeps/unix/sysv/linux/powerpc/lowlevellock.h: Likewise.
  590:         * sysdeps/unix/sysv/linux/s390/lowlevellock.h: Likewise.
  591:         * sysdeps/unix/sysv/linux/sparc/lowlevellock.h: Likewise.
  592:         * sysdeps/unix/sysv/linux/i386/lowlevellock.h: Allow including
  593:         the header from assembler.  Renamed all lll_mutex_* resp.
  594:         lll_robust_mutex_* macros to lll_* resp. lll_robust_*.
  595:         (LOCK, FUTEX_CMP_REQUEUE, FUTEX_WAKE_OP,
  596:         FUTEX_OP_CLEAR_WAKE_IF_GT_ONE): Define.
  597:         (LLL_MUTEX_LOCK_INITIALIZER, LLL_MUTEX_LOCK_INITIALIZER_LOCKED,
  598:         LLL_MUTEX_LOCK_INITIALIZER_WAITERS): Remove.
  599:         (__lll_mutex_lock_wait, __lll_mutex_timedlock_wait,
  600:         __lll_mutex_unlock_wake, __lll_lock_wait, __lll_unlock_wake):
  601:         Remove prototype.
  602:         (__lll_trylock_asm, __lll_lock_asm_start, __lll_unlock_asm): Define.
  603:         (lll_robust_trylock, lll_cond_trylock): Use LLL_LOCK_INITIALIZER*
  604:         rather than LLL_MUTEX_LOCK_INITIALIZER* macros.
  605:         (lll_trylock): Likewise, use __lll_trylock_asm, pass
  606:         MULTIPLE_THREADS_OFFSET as another asm operand.
  607:         (lll_lock): Add private argument, use __lll_lock_asm_start, pass
  608:         MULTIPLE_THREADS_OFFSET as last asm operand, call
  609:         __lll_lock_wait_private if private is constant LLL_PRIVATE,
  610:         otherwise pass private as another argument to __lll_lock_wait.
  611:         (lll_robust_lock, lll_cond_lock, lll_robust_cond_lock,
  612:         lll_timedlock, lll_robust_timedlock): Add private argument, pass
  613:         private as another argument to __lll_*lock_wait call.
  614:         (lll_unlock): Add private argument, use __lll_unlock_asm, pass
  615:         MULTIPLE_THREADS_OFFSET as another asm operand, call
  616:         __lll_unlock_wake_private if private is constant LLL_PRIVATE,
  617:         otherwise pass private as another argument to __lll_unlock_wake.
  618:         (lll_robust_unlock): Add private argument, pass private as another
  619:         argument to __lll_unlock_wake.
  620:         (lll_robust_dead): Add private argument, use __lll_private_flag
  621:         macro.
  622:         (lll_islocked): Use LLL_LOCK_INITIALIZER instead of
  623:         LLL_MUTEX_LOCK_INITIALIZER.
  624:         (lll_lock_t): Remove.
  625:         (LLL_LOCK_INITIALIZER_WAITERS): Define.
  626:         (__lll_cond_wait, __lll_cond_timedwait, __lll_cond_wake,
  627:         __lll_cond_broadcast, lll_cond_wait, lll_cond_timedwait,
  628:         lll_cond_wake, lll_cond_broadcast): Remove.
  629:         * sysdeps/unix/sysv/linux/x86_64/lowlevellock.h: Likewise.
  630:         * sysdeps/unix/sysv/linux/i386/i486/libc-lowlevellock.S: Revert
  631:         2007-05-2{3,9} changes.
  632:         * sysdeps/unix/sysv/linux/i386/i486/lowlevellock.S: Include
  633:         kernel-features.h and lowlevellock.h.
  634:         (LOAD_PRIVATE_FUTEX_WAIT): Define.
  635:         (LOAD_FUTEX_WAIT): Rewritten.
  636:         (LOCK, SYS_gettimeofday, SYS_futex, FUTEX_WAIT, FUTEX_WAKE): Don't
  637:         define.
  638:         (__lll_lock_wait_private, __lll_unlock_wake_private): New functions.
  639:         (__lll_mutex_lock_wait): Rename to ...
  640:         (__lll_lock_wait): ... this.  Take futex addr from %edx instead of
  641:         %ecx, %ecx is now private argument.  Don't compile in for libc.so.
  642:         (__lll_mutex_timedlock_wait): Rename to ...
  643:         (__lll_timedlock_wait): ... this.  Use __NR_gettimeofday.  %esi
  644:         contains private argument.  Don't compile in for libc.so.
  645:         (__lll_mutex_unlock_wake): Rename to ...
  646:         (__lll_unlock_wake): ... this.  %ecx contains private argument.
  647:         Don't compile in for libc.so.
  648:         (__lll_timedwait_tid): Use __NR_gettimeofday.
  649:         * sysdeps/unix/sysv/linux/i386/i486/lowlevelrobustlock.S: Include
  650:         kernel-features.h and lowlevellock.h.
  651:         (LOAD_FUTEX_WAIT): Define.
  652:         (LOCK, SYS_gettimeofday, SYS_futex, FUTEX_WAIT, FUTEX_WAKE): Don't
  653:         define.
  654:         (__lll_robust_mutex_lock_wait): Rename to ...
  655:         (__lll_robust_lock_wait): ... this.  Futex addr is now in %edx
  656:         argument, %ecx argument contains private.  Use LOAD_FUTEX_WAIT
  657:         macro.
  658:         (__lll_robust_mutex_timedlock_wait): Rename to ...
  659:         (__lll_robust_timedlock_wait): ... this.  Use __NR_gettimeofday.
  660:         %esi argument contains private, use LOAD_FUTEX_WAIT macro.
  661:         * sysdeps/unix/sysv/linux/i386/i486/pthread_barrier_wait.S: Include
  662:         lowlevellock.h.
  663:         (SYS_futex, FUTEX_WAIT, FUTEX_WAKE, LOCK): Don't define.
  664:         (pthread_barrier_wait): Rename __lll_mutex_* to __lll_*, pass
  665:         PRIVATE(%ebx) ^ LLL_SHARED as private argument in %ecx to
  666:         __lll_lock_wait and __lll_unlock_wake, pass MUTEX(%ebx) address
  667:         to __lll_lock_wait in %edx.
  668:         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_broadcast.S:
  669:         Include lowlevellock.h and pthread-errnos.h.
  670:         (SYS_futex, FUTEX_WAIT, FUTEX_WAKE, FUTEX_REQUEUE,
  671:         FUTEX_CMP_REQUEUE, EINVAL, LOCK): Don't define.
  672:         (__pthread_cond_broadcast): Rename __lll_mutex_* to __lll_*, pass
  673:         cond_lock address in %edx rather than %ecx to __lll_lock_wait,
  674:         pass LLL_SHARED in %ecx to both __lll_lock_wait and
  675:         __lll_unlock_wake.
  676:         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_signal.S:
  677:         Include lowlevellock.h and pthread-errnos.h.
  678:         (SYS_futex, FUTEX_WAIT, FUTEX_WAKE, FUTEX_WAKE_OP,
  679:         FUTEX_OP_CLEAR_WAKE_IF_GT_ONE, EINVAL, LOCK): Don't define.
  680:         (__pthread_cond_signal): Rename __lll_mutex_* to __lll_*, pass
  681:         cond_lock address in %edx rather than %ecx to __lll_lock_wait,
  682:         pass LLL_SHARED in %ecx to both __lll_lock_wait and
  683:         __lll_unlock_wake.
  684:         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_timedwait.S:
  685:         Include lowlevellock.h.
  686:         (SYS_futex, SYS_gettimeofday, FUTEX_WAIT, FUTEX_WAKE, LOCK):
  687:         Don't define.
  688:         (__pthread_cond_timedwait): Rename __lll_mutex_* to __lll_*, pass
  689:         cond_lock address in %edx rather than %ecx to __lll_lock_wait,
  690:         pass LLL_SHARED in %ecx to both __lll_lock_wait and
  691:         __lll_unlock_wake.  Use __NR_gettimeofday.
  692:         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_wait.S:
  693:         Include lowlevellock.h.
  694:         (SYS_futex, FUTEX_WAIT, FUTEX_WAKE, LOCK): Don't define.
  695:         (__pthread_cond_wait, __condvar_w_cleanup): Rename __lll_mutex_*
  696:         to __lll_*, pass cond_lock address in %edx rather than %ecx to
  697:         __lll_lock_wait, pass LLL_SHARED in %ecx to both __lll_lock_wait
  698:         and __lll_unlock_wake.
  699:         * sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_rdlock.S:
  700:         Include lowlevellock.h.
  701:         (SYS_futex, FUTEX_WAIT, FUTEX_WAKE, LOCK): Don't define.
  702:         (__pthread_rwlock_rdlock): Rename __lll_mutex_* to __lll_*, pass
  703:         MUTEX(%ebx) address in %edx rather than %ecx to
  704:         __lll_lock_wait, pass PSHARED(%ebx) in %ecx to both __lll_lock_wait
  705:         and __lll_unlock_wake.  Move return value from %ecx to %edx
  706:         register.
  707:         * sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_timedrdlock.S:
  708:         Include lowlevellock.h.</