Re: [patch] Real-Time Preemption, -RT-2.6.12-rc1-V0.7.43-00

K.R. Foley
2005-04-01T18:37:28Z

[-- Attachment #1: Type: text/plain, Size: 855 bytes --]

Gene Heskett wrote:
<snip>
> It was up to 43-04 by the time I got there.
>
> This one didn't go in cleanly Ingo. From my build-src scripts output:
> -------------------
> Applying patch realtime-preempt-2.6.12-rc1-V0.7.43-04
> [...]
> patching file lib/rwsem-spinlock.c
> Hunk #5 FAILED at 133.
> Hunk #6 FAILED at 160.
> Hunk #7 FAILED at 179.
> Hunk #8 FAILED at 194.
> Hunk #9 FAILED at 204.
> Hunk #10 FAILED at 231.
> Hunk #11 FAILED at 250.
> Hunk #12 FAILED at 265.
> Hunk #13 FAILED at 274.
> Hunk #14 FAILED at 293.
> Hunk #15 FAILED at 314.
> 11 out of 15 hunks FAILED -- saving rejects to file
> lib/rwsem-spinlock.c.rej
> -----------
> I doubt it would run, so I haven't built it. Should I?
>

Adding the attached patch on top of the above should resolve the
failures, at least in the patching. Still working on building it.

--
kr

[-- Attachment #2: rwsem-spinlock.patch --]
[-- Type: text/x-patch, Size: 3860 bytes --]

--- linux-2.6.12/lib/rwsem-spinlock.c.orig 2005-04-01 12:00:21.000000000 -0600
+++ linux-2.6.12/lib/rwsem-spinlock.c 2005-04-01 12:19:06.000000000 -0600
@@ -18,7 +18,7 @@ struct rwsem_waiter {
};

#if RWSEM_DEBUG
-void rwsemtrace(struct rw_semaphore *sem, const char *str)
+void rwsemtrace(struct compat_rw_semaphore *sem, const char *str)
{
if (sem->debug)
printk("[%d] %s({%d,%d})\n",
@@ -30,7 +30,7 @@ void rwsemtrace(struct rw_semaphore *sem
/*
* initialise the semaphore
*/
-void fastcall init_rwsem(struct rw_semaphore *sem)
+void fastcall compat_init_rwsem(struct compat_rw_semaphore *sem)
{
sem->activity = 0;
spin_lock_init(&sem->wait_lock);
@@ -49,8 +49,8 @@ void fastcall init_rwsem(struct rw_semap
* - woken process blocks are discarded from the list after having task zeroed
* - writers are only woken if wakewrite is non-zero
*/
-static inline struct rw_semaphore *
-__rwsem_do_wake(struct rw_semaphore *sem, int wakewrite)
+static inline struct compat_rw_semaphore *
+__rwsem_do_wake(struct compat_rw_semaphore *sem, int wakewrite)
{
struct rwsem_waiter *waiter;
struct task_struct *tsk;
@@ -111,8 +111,8 @@ __rwsem_do_wake(struct rw_semaphore *sem
/*
* wake a single writer
*/
-static inline struct rw_semaphore *
-__rwsem_wake_one_writer(struct rw_semaphore *sem)
+static inline struct compat_rw_semaphore *
+__rwsem_wake_one_writer(struct compat_rw_semaphore *sem)
{
struct rwsem_waiter *waiter;
struct task_struct *tsk;
@@ -133,7 +133,8 @@ __rwsem_wake_one_writer(struct rw_semaph
/*
* get a read lock on the semaphore
*/
-void fastcall __sched __down_read(struct rw_semaphore *sem)
+void fastcall __sched __down_read(struct compat_rw_semaphore *sem)
+
{
struct rwsem_waiter waiter;
struct task_struct *tsk;
@@ -179,7 +180,8 @@ void fastcall __sched __down_read(struct
/*
* trylock for reading -- returns 1 if successful, 0 if contention
*/
-int fastcall __down_read_trylock(struct rw_semaphore *sem)
+int fastcall __down_read_trylock(struct compat_rw_semaphore *sem)
+
{
unsigned long flags;
int ret = 0;
@@ -204,7 +206,8 @@ int fastcall __down_read_trylock(struct
* get a write lock on the semaphore
* - we increment the waiting count anyway to indicate an exclusive lock
*/
-void fastcall __sched __down_write(struct rw_semaphore *sem)
+void fastcall __sched __down_write(struct compat_rw_semaphore *sem)
+
{
struct rwsem_waiter waiter;
struct task_struct *tsk;
@@ -250,7 +253,8 @@ void fastcall __sched __down_write(struc
/*
* trylock for writing -- returns 1 if successful, 0 if contention
*/
-int fastcall __down_write_trylock(struct rw_semaphore *sem)
+int fastcall __down_write_trylock(struct compat_rw_semaphore *sem)
+
{
unsigned long flags;
int ret = 0;
@@ -274,7 +278,8 @@ int fastcall __down_write_trylock(struct
/*
* release a read lock on the semaphore
*/
-void fastcall __up_read(struct rw_semaphore *sem)
+void fastcall __up_read(struct compat_rw_semaphore *sem)
+
{
unsigned long flags;

@@ -293,7 +298,7 @@ void fastcall __up_read(struct rw_semaph
/*
* release a write lock on the semaphore
*/
-void fastcall __up_write(struct rw_semaphore *sem)
+void fastcall __up_write(struct compat_rw_semaphore *sem)
{
unsigned long flags;

@@ -314,7 +319,7 @@ void fastcall __up_write(struct rw_semap
* downgrade a write lock into a read lock
* - just wake up any readers at the front of the queue
*/
-void fastcall __downgrade_write(struct rw_semaphore *sem)
+void fastcall __downgrade_write(struct compat_rw_semaphore *sem)
{
unsigned long flags;

@@ -331,7 +336,7 @@ void fastcall __downgrade_write(struct r
rwsemtrace(sem, "Leaving __downgrade_write");
}

-EXPORT_SYMBOL(init_rwsem);
+EXPORT_SYMBOL(compat_init_rwsem);
EXPORT_SYMBOL(__down_read);
EXPORT_SYMBOL(__down_read_trylock);
EXPORT_SYMBOL(__down_write);