On Thu, 03 May 2007 11:32:23 +1000 Nick Piggin <[EMAIL PROTECTED]> 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 [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Reply via email to