Messages in this thread | | | Date | Wed, 25 Sep 2002 21:24:59 -0700 (PDT) | Subject | Re: [patch 1/4] prepare_to_wait/finish_wait sleep/wakeup API | From | "David S. Miller" <> |
| |
From: Andrew Morton <akpm@digeo.com> Date: Wed, 25 Sep 2002 21:07:47 -0700
The main objective of this is to reduce the CPU cost of the wait/wakeup operation. When a task is woken up, its waitqueue is removed from the waitqueue_head by the waker (ie: immediately), rather than by the woken process.
I don't want to say that your changes cannot be made to work, but it's been one of my understandings all these years that the fact that the task itself controls it's presence on the wait queue is what allows many races to be handled properly and cleanly.
For example, the ordering of the test and add/remove from the wait queue is pretty important.
It probably doesn't matter when there is a higher level of locking done around the sleep/wakeup (TCP sockets are one good example) and if that is what this is aimed at, great. - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |