Cc: Sven Wegener <sven.wegener@...>, Linus Torvalds <torvalds@...>, Zhang, Yanmin <yanmin_zhang@...>, Andi Kleen <andi@...>, LKML <linux-kernel@...>, Alexander Viro <viro@...>, Andrew Morton <akpm@...>, Thomas Gleixner <tglx@...>, H. Peter Anvin <hpa@...>
On Sun, May 11, 2008 at 03:01:27PM +0200, Ingo Molnar wrote:
Still mangled ... and I don't see how we lose a wakeup. We test for
having the semaphore before we check for having been interrupted, and we
hold the lock the whole time.
IOW, what I think you're checking for is:
task A task B
if sem->count >0
break;
sem->count++
wake_up_process(B)
if (state == TASK_INTERRUPTIBLE && signal_pending(task))
break;
which can't happen because of sem->lock.
--
Intel are signing my paycheques ... these opinions are still mine
"Bill, look, we understand that you're interested in selling us this
operating system, but compare it to ours. We can't possibly take such
a retrograde step."
--