lkml.org 
[lkml]   [2011]   [Mar]   [22]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 4/5] mm: introduce wait_on_page_locked_killable
    Date
    commit 2687a356 (Add lock_page_killable) introduced killable
    lock_page(). Similarly this patch introdues killable
    wait_on_page_locked().

    Signed-off-by: KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com>
    ---
    include/linux/pagemap.h | 9 +++++++++
    mm/filemap.c | 11 +++++++++++
    2 files changed, 20 insertions(+), 0 deletions(-)

    diff --git a/include/linux/pagemap.h b/include/linux/pagemap.h
    index e407601..49f9315 100644
    --- a/include/linux/pagemap.h
    +++ b/include/linux/pagemap.h
    @@ -369,6 +369,15 @@ static inline int lock_page_or_retry(struct page *page, struct mm_struct *mm,
    */
    extern void wait_on_page_bit(struct page *page, int bit_nr);

    +extern int wait_on_page_bit_killable(struct page *page, int bit_nr);
    +
    +static inline int wait_on_page_locked_killable(struct page *page)
    +{
    + if (PageLocked(page))
    + return wait_on_page_bit_killable(page, PG_locked);
    + return 0;
    +}
    +
    /*
    * Wait for a page to be unlocked.
    *
    diff --git a/mm/filemap.c b/mm/filemap.c
    index a6cfecf..f5f9ac2 100644
    --- a/mm/filemap.c
    +++ b/mm/filemap.c
    @@ -608,6 +608,17 @@ void wait_on_page_bit(struct page *page, int bit_nr)
    }
    EXPORT_SYMBOL(wait_on_page_bit);

    +int wait_on_page_bit_killable(struct page *page, int bit_nr)
    +{
    + DEFINE_WAIT_BIT(wait, &page->flags, bit_nr);
    +
    + if (!test_bit(bit_nr, &page->flags))
    + return 0;
    +
    + return __wait_on_bit(page_waitqueue(page), &wait, sync_page_killable,
    + TASK_KILLABLE);
    +}
    +
    /**
    * add_page_wait_queue - Add an arbitrary waiter to a page's wait queue
    * @page: Page defining the wait queue of interest
    --
    1.6.5.2




    \
     
     \ /
      Last update: 2011-03-22 12:11    [W:0.024 / U:32.284 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site