Skip to content

Commit

Permalink
Rvert accidental checkins.
Browse files Browse the repository at this point in the history
  • Loading branch information
Ulrich Drepper committed Aug 23, 2009
1 parent 15efafd commit cd16986
Show file tree
Hide file tree
Showing 6 changed files with 11 additions and 547 deletions.
13 changes: 11 additions & 2 deletions nptl/pthread_rwlock_init.c
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
/* Copyright (C) 2002, 2007, 2009 Free Software Foundation, Inc.
/* Copyright (C) 2002, 2007 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@redhat.com>, 2002.
Expand Down Expand Up @@ -37,7 +37,13 @@ __pthread_rwlock_init (rwlock, attr)

iattr = ((const struct pthread_rwlockattr *) attr) ?: &default_attr;

memset (rwlock, '\0', sizeof (*rwlock));
rwlock->__data.__lock = 0;
rwlock->__data.__nr_readers = 0;
rwlock->__data.__readers_wakeup = 0;
rwlock->__data.__writer_wakeup = 0;
rwlock->__data.__nr_readers_queued = 0;
rwlock->__data.__nr_writers_queued = 0;
rwlock->__data.__writer = 0;

rwlock->__data.__flags
= iattr->lockkind == PTHREAD_RWLOCK_PREFER_WRITER_NONRECURSIVE_NP;
Expand Down Expand Up @@ -68,6 +74,9 @@ __pthread_rwlock_init (rwlock, attr)
header.private_futex));
#endif

rwlock->__data.__pad1 = 0;
rwlock->__data.__pad2 = 0;

return 0;
}
strong_alias (__pthread_rwlock_init, pthread_rwlock_init)
122 changes: 0 additions & 122 deletions nptl/sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_rdlock.S
Original file line number Diff line number Diff line change
Expand Up @@ -31,127 +31,6 @@
.align 16
__pthread_rwlock_rdlock:
cfi_startproc
movq $NRW_RC, %rax
LOCK
xaddq %rax, NRW_WORD(%rdi)
js .Lundo

.Lagain1:
movq $(NRW_WL|NRW_WP), %rcx
movq $(NRW_WL|NRW_WW_MASK), %rdx
testq %rax, %rcx
setnz %cl
testq %rax, %rdx
setnz %dl
orb %cl, %dl
jnz .Lwait

xorl %eax, %eax
ret

.Lwait: movq $NRW_WL, %rcx
testq %rcx, %rax
jz 4f

movl %fs:TID, %ecx
cmpl %ecx, WRITER(%rdi)
je .Ldeadlk

4: xorq %r8, %r8
movq $NRW_RC, %rdx
addq %rdx, %rax
movq $(NRW_WL|NRW_AR), %rcx
movq $(NRW_WP|NRW_WW_MASK), %rdx
testq %rax, %rcx
setz %cl
testq %rax, %rdx
setnz %dl
testb %dl, %cl
jz 1f

movq $NRW_RW-NRW_RC, %rdx
addq %rax, %rdx
LOCK
cmpxchgq %rdx, NRW_WORD(%rdi)
jnz .Lagain1

movq $NRW_RC_MASK, %rax
testq %rdx, %rax
movl $1, %r8d
jz .Lwake_waiter

1: xorq %r10, %r10
movl $NRW_R_WAKEUP, %r9d
movl $(FUTEX_WAIT_BITSET|FUTEX_PRIVATE_FLAG), %esi
xorl PSHARED(%rdi), %esi
leaq NRW_WORD+4(%rdi), %rdi
2: shldq $32, %rax, %rdx
movl $__NR_futex, %eax
syscall
movq -4(%rdi), %rax

5: movq $(NRW_WL|NRW_WP), %rcx
movq $(NRW_WL|NRW_WW_MASK), %rdx
testq %rax, %rcx
setnz %cl
testq %rax, %rdx
setnz %dl
orb %cl, %dl
jnz 2b

testl %r8d, %r8d
jz 3f

movq $NRW_RC-NRW_RW, %rcx
addq %rcx, %rdx
LOCK
cmpxchgq %rdx, -4(%rdi)
jnz 5b

3: xorl %eax, %eax
ret

.Lwake_waiter:
movq %rdx, %r10
movl $__NR_futex, %eax
movl $(FUTEX_WAKE_BITSET|FUTEX_PRIVATE_FLAG), %esi
xorl PSHARED(%rdi), %esi
leaq NRW_WORD(%rdi), %rdi
movl $1, %edx
movl $NRW_W_WAKEUP, %r9d
syscall
leaq -NRW_WORD(%rdi), %rdi
movq %r10, %rdx
jmp 1b

.Lundo: movq $-NRW_RC, %rcx
movq %rax, %rdx
subq %rcx, %rax
LOCK
cmpxchgq %rdx, NRW_WORD(%rdi)
jz .Lret

movq $NRW_RC_OVFL, %r8
.Lagain2:
testq %r8, %rax
jz .Lagain1
leaq (%rax,%rcx), %rdx
LOCK
cmpxchgq %rdx, NRW_WORD(%rdi)
jnz .Lagain2

.Lret: movl $EAGAIN, %eax
ret

.Ldeadlk:
movq $NRW_RC, %rdx
LOCK
subq %rdx, NRW_WORD(%rdi)

movl $EDEADLK, %eax
ret

#if 0
xorq %r10, %r10

/* Get the lock. */
Expand Down Expand Up @@ -289,7 +168,6 @@ __pthread_rwlock_rdlock:
subq $MUTEX, %rdi
#endif
jmp 13b
#endif
cfi_endproc
.size __pthread_rwlock_rdlock,.-__pthread_rwlock_rdlock

Expand Down
138 changes: 0 additions & 138 deletions nptl/sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_timedrdlock.S
Original file line number Diff line number Diff line change
Expand Up @@ -34,143 +34,6 @@
.align 16
pthread_rwlock_timedrdlock:
cfi_startproc
movq %rsi, %r10
movq $NRW_RC, %rax
LOCK
xaddq %rax, NRW_WORD(%rdi)
js .Lundo

.Lagain1:
movq $(NRW_WL|NRW_WP), %rcx
movq $(NRW_WL|NRW_WW_MASK), %rdx
testq %rax, %rcx
setnz %cl
testq %rax, %rdx
setnz %dl
orb %cl, %dl
jnz .Lwait

xorl %eax, %eax
ret

.Lwait: movq $NRW_WL, %rcx
testq %rcx, %rax
jz 4f

movl %fs:TID, %ecx
cmpl %ecx, WRITER(%rdi)
je .Ldeadlk

4: xorq %r8, %r8
movq $NRW_RC, %rdx
addq %rdx, %rax
movq $(NRW_WL|NRW_AR), %rcx
movq $(NRW_WP|NRW_WW_MASK), %rdx
testq %rax, %rcx
setz %cl
testq %rax, %rdx
setnz %dl
testb %dl, %cl
jz 1f

movq $NRW_RW-NRW_RC, %rdx
addq %rax, %rdx
LOCK
cmpxchgq %rdx, NRW_WORD(%rdi)
jnz .Lagain1

movq $NRW_RC_MASK, %rax
testq %rdx, %rax
movq $NRW_RW-NRW_RC, %r8
jz .Lwake_waiter

1: movl $NRW_R_WAKEUP, %r9d
leaq NRW_WORD+4(%rdi), %rdi
2: movl $(FUTEX_WAIT_BITSET|FUTEX_PRIVATE_FLAG|FUTEX_CLOCK_REALTIME), %esi
xorl PSHARED-(NRW_WORD+4)(%rdi), %esi
shldq $32, %rax, %rdx
movl $__NR_futex, %eax
syscall
movl %eax, %esi
movq -4(%rdi), %rax

6: movq $(NRW_WL|NRW_WP), %rcx
movq $(NRW_WL|NRW_WW_MASK), %rdx
testq %rax, %rcx
setnz %cl
testq %rax, %rdx
setnz %dl
orb %cl, %dl
jz 5f

cmpl $-EWOULDBLOCK, %esi
je 2b

movq $-NRW_RC, %rdx
subq %r8, %rdx
addq %rax, %rdx
LOCK
cmpxchgq %rdx, -4(%rdi)
jnz 6b

negl %esi
movl %esi, %eax
ret

5: testl %r8d, %r8d
jz 3f

movq $NRW_RC-NRW_RW, %rcx
addq %rcx, %rdx
LOCK
cmpxchgq %rdx, -4(%rdi)
jnz 6b

3: xorl %eax, %eax
ret

.Lwake_waiter:
movq %rdx, %r10
movl $__NR_futex, %eax
movl $(FUTEX_WAKE_BITSET|FUTEX_PRIVATE_FLAG), %esi
xorl PSHARED(%rdi), %esi
leaq NRW_WORD(%rdi), %rdi
movl $1, %edx
movl $NRW_W_WAKEUP, %r9d
syscall
leaq -NRW_WORD(%rdi), %rdi
movq %r10, %rdx
jmp 1b

.Lundo: movq $-NRW_RC, %rcx
movq %rax, %rdx
subq %rcx, %rax
LOCK
cmpxchgq %rdx, NRW_WORD(%rdi)
jz .Lret

movq $NRW_RC_OVFL, %r8
.Lagain2:
testq %r8, %rax
jz .Lagain1
leaq (%rax,%rcx), %rdx
LOCK
cmpxchgq %rdx, NRW_WORD(%rdi)
jnz .Lagain2

.Lret: movl $EAGAIN, %eax
ret

.Ldeadlk:
movq $NRW_RC, %rdx
LOCK
subq %rdx, NRW_WORD(%rdi)

movl $EDEADLK, %eax
ret


#if 0
pushq %r12
cfi_adjust_cfa_offset(8)
cfi_rel_offset(%r12, 0)
Expand Down Expand Up @@ -408,6 +271,5 @@ pthread_rwlock_timedrdlock:

19: movl $EINVAL, %edx
jmp 9b
#endif
cfi_endproc
.size pthread_rwlock_timedrdlock,.-pthread_rwlock_timedrdlock
Loading

0 comments on commit cd16986

Please sign in to comment.