![]() | |||||||||||||
Messages in this thread |
On Thu, 03 May 2007 11:32:23 +1000 Nick Piggin <nickpiggin@yahoo.com.au> wrote:
> void fastcall unlock_page(struct page *page)
> {
> + VM_BUG_ON(!PageLocked(page));
> smp_mb__before_clear_bit();
> - if (!TestClearPageLocked(page))
> - BUG();
> - smp_mb__after_clear_bit();
> - wake_up_page(page, PG_locked);
> + ClearPageLocked(page);
> + if (unlikely(test_bit(PG_waiters, &page->flags))) {
> + clear_bit(PG_waiters, &page->flags);
> + wake_up_page(page, PG_locked);
> + }
> }
Why is that significantly faster than plain old wake_up_page(), which
tests waitqueue_active()?
-
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/
| ||||||||||||
| Last update: 2007-05-03 16:55 [from the cache] ©2003-2008 | |||||||||||||