patch-2.4.4 linux/arch/arm/kernel/semaphore.c

Next file: linux/arch/arm/kernel/setup.c
Previous file: linux/arch/arm/kernel/oldlatches.c
Back to the patch index
Back to the overall index

diff -u --recursive --new-file v2.4.3/linux/arch/arm/kernel/semaphore.c linux/arch/arm/kernel/semaphore.c
@@ -166,127 +166,6 @@
 	return 1;
 }
 
-struct rw_semaphore *down_read_failed_biased(struct rw_semaphore *sem)
-{
-	struct task_struct *tsk = current;
-	DECLARE_WAITQUEUE(wait, tsk);
-
-	add_wait_queue(&sem->wait, &wait);	/* put ourselves at the head of the list */
-
-	for (;;) {
-		if (sem->read_bias_granted && xchg(&sem->read_bias_granted, 0))
-			break;
-		set_task_state(tsk, TASK_UNINTERRUPTIBLE);
-		if (!sem->read_bias_granted)
-			schedule();
-	}
-
-	remove_wait_queue(&sem->wait, &wait);
-	tsk->state = TASK_RUNNING;
-
-	return sem;
-}
-
-struct rw_semaphore *down_write_failed_biased(struct rw_semaphore *sem)
-{
-        struct task_struct *tsk = current;
-	DECLARE_WAITQUEUE(wait, tsk);
-
-	add_wait_queue_exclusive(&sem->write_bias_wait, &wait); /* put ourselves at the end of the list */
-
-	for (;;) {
-		if (sem->write_bias_granted && xchg(&sem->write_bias_granted, 0))
-			break;
-		set_task_state(tsk, TASK_UNINTERRUPTIBLE);
-		if (!sem->write_bias_granted)
-			schedule();
-	}
-
-	remove_wait_queue(&sem->write_bias_wait, &wait);
-	tsk->state = TASK_RUNNING;
-
-	/* if the lock is currently unbiased, awaken the sleepers
-	 * FIXME: this wakes up the readers early in a bit of a
-	 * stampede -> bad!
-	 */
-	if (atomic_read(&sem->count) >= 0)
-		wake_up(&sem->wait);
-
-	return sem;
-}
-
-/* Wait for the lock to become unbiased.  Readers
- * are non-exclusive. =)
- */
-struct rw_semaphore *down_read_failed(struct rw_semaphore *sem)
-{
-	struct task_struct *tsk = current;
-	DECLARE_WAITQUEUE(wait, tsk);
-
-	/* this takes care of granting the lock */
-	__up_op_read(sem, __rwsem_wake);
-
-	add_wait_queue(&sem->wait, &wait);
-
-	while (atomic_read(&sem->count) < 0) {
-		set_task_state(tsk, TASK_UNINTERRUPTIBLE);
-		if (atomic_read(&sem->count) >= 0)
-			break;
-		schedule();
-	}
-
-	remove_wait_queue(&sem->wait, &wait);
-	tsk->state = TASK_RUNNING;
-
-	return sem;
-}
-
-/* Wait for the lock to become unbiased. Since we're
- * a writer, we'll make ourselves exclusive.
- */
-struct rw_semaphore *down_write_failed(struct rw_semaphore *sem)
-{
-	struct task_struct *tsk = current;
-	DECLARE_WAITQUEUE(wait, tsk);
-
-	/* this takes care of granting the lock */
-	__up_op_write(sem, __rwsem_wake);
-
-	add_wait_queue_exclusive(&sem->wait, &wait);
-
-	while (atomic_read(&sem->count) < 0) {
-		set_task_state(tsk, TASK_UNINTERRUPTIBLE);
-		if (atomic_read(&sem->count) >= 0)
-			break;	/* we must attempt to acquire or bias the lock */
-		schedule();
-	}
-
-	remove_wait_queue(&sem->wait, &wait);
-	tsk->state = TASK_RUNNING;
-
-	return sem;
-}
-
-/* Called when someone has done an up that transitioned from
- * negative to non-negative, meaning that the lock has been
- * granted to whomever owned the bias.
- */
-struct rw_semaphore *rwsem_wake_readers(struct rw_semaphore *sem)
-{
-	if (xchg(&sem->read_bias_granted, 1))
-		BUG();
-	wake_up(&sem->wait);
-	return sem;
-}
-
-struct rw_semaphore *rwsem_wake_writer(struct rw_semaphore *sem)
-{
-	if (xchg(&sem->write_bias_granted, 1))
-		BUG();
-	wake_up(&sem->write_bias_wait);
-	return sem;
-}
-
 /*
  * The semaphore operations have a special calling sequence that
  * allow us to do a simpler in-line version of them. These routines
@@ -333,61 +212,6 @@
 	bl	__up
 	ldmfd	sp!, {r0 - r3, pc}^
 
-	.align	5
-	.globl	__down_read_failed
-__down_read_failed:
-	stmfd	sp!, {r0 - r3, lr}
-	mov	r0, ip
-	bcc	1f
-1:	bl	down_read_failed_biased
-	ldmfd	sp!, {r0 - r3, pc}^
-2:	bl	down_read_failed
-	mov	r1, pc
-	orr	r2, r1, #
-	teqp r2, #0
-
-	ldr	r3, [r0]
-	subs	r3, r3, #1
-	str	r3, [r0]
-	ldmplfd	sp!, {r0 - r3, pc}^
-  orrcs r1, r1, #0x20000000   @ Set carry
-  teqp r1, #0
-	bcc	2b
-	b	1b
-
-	.align	5
-	.globl	__down_write_failed
-__down_write_failed:
-	stmfd	sp!, {r0 - r3, lr}
-	mov	r0, ip
-	bcc	1f
-1:	bl	down_write_failed_biased
-	ldmfd	sp!, {r0 - r3, pc}^
-2:	bl	down_write_failed
-	mov r1, pc
-	orr	r2, r1, #128
-	teqp r2, #0
-
-	ldr	r3, [r0]
-	subs	r3, r3, #"RW_LOCK_BIAS_STR"
-	str	r3, [r0]
-	ldmeqfd	sp!, {r0 - r3, pc}^
-  orrcs r1, r1, #0x20000000   @ Set carry
-	teqp r1, #0
-	bcc	2b
-	b	1b
-
-	.align	5
-	.globl	__rwsem_wake
-__rwsem_wake:
-	stmfd	sp!, {r0 - r3, lr}
-	mov	r0, ip
-	beq	1f
-	bl	rwsem_wake_readers
-	ldmfd	sp!, {r0 - r3, pc}^
-1:	bl	rwsem_wake_writer
-	ldmfd	sp!, {r0 - r3, pc}^
-
 	.previous
 	");
 
@@ -426,57 +250,6 @@
 	stmfd	sp!, {r0 - r3, lr}
 	mov	r0, ip
 	bl	__up
-	ldmfd	sp!, {r0 - r3, pc}
-
-	.align	5
-	.globl	__down_read_failed
-__down_read_failed:
-	stmfd	sp!, {r0 - r3, lr}
-	mov	r0, ip
-	bcc	1f
-1:	bl	down_read_failed_biased
-	ldmfd	sp!, {r0 - r3, pc}
-2:	bl	down_read_failed
-	mrs	r1, cpsr
-	orr	r2, r1, #128
-	msr	cpsr_c, r2
-	ldr	r3, [r0]
-	subs	r3, r3, #1
-	str	r3, [r0]
-	msr	cpsr_c, r1
-	ldmplfd	sp!, {r0 - r3, pc}
-	bcc	2b
-	b	1b
-
-	.align	5
-	.globl	__down_write_failed
-__down_write_failed:
-	stmfd	sp!, {r0 - r3, lr}
-	mov	r0, ip
-	bcc	1f
-1:	bl	down_write_failed_biased
-	ldmfd	sp!, {r0 - r3, pc}
-2:	bl	down_write_failed
-	mrs	r1, cpsr
-	orr	r2, r1, #128
-	msr	cpsr_c, r2
-	ldr	r3, [r0]
-	subs	r3, r3, #"RW_LOCK_BIAS_STR"
-	str	r3, [r0]
-	msr	cpsr_c, r1
-	ldmeqfd	sp!, {r0 - r3, pc}
-	bcc	2b
-	b	1b
-
-	.align	5
-	.globl	__rwsem_wake
-__rwsem_wake:
-	stmfd	sp!, {r0 - r3, lr}
-	mov	r0, ip
-	beq	1f
-	bl	rwsem_wake_readers
-	ldmfd	sp!, {r0 - r3, pc}
-1:	bl	rwsem_wake_writer
 	ldmfd	sp!, {r0 - r3, pc}
 
 	.previous

FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen (who was at: slshen@lbl.gov)