mm: uninline page_mapped()
It's huge. Uninlining it saves 206 bytes per callsite. Shaves 4924 bytes from the x86_64 allmodconfig vmlinux. [akpm@linux-foundation.org: coding-style fixes] Cc: Steve Capper <steve.capper@arm.com> Cc: Kirill A. Shutemov <kirill.shutemov@linux.intel.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
parent
29f9cb53d2
commit
1aa8aea535
|
@ -1032,26 +1032,7 @@ static inline pgoff_t page_file_index(struct page *page)
|
||||||
return page->index;
|
return page->index;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
bool page_mapped(struct page *page);
|
||||||
* Return true if this page is mapped into pagetables.
|
|
||||||
* For compound page it returns true if any subpage of compound page is mapped.
|
|
||||||
*/
|
|
||||||
static inline bool page_mapped(struct page *page)
|
|
||||||
{
|
|
||||||
int i;
|
|
||||||
if (likely(!PageCompound(page)))
|
|
||||||
return atomic_read(&page->_mapcount) >= 0;
|
|
||||||
page = compound_head(page);
|
|
||||||
if (atomic_read(compound_mapcount_ptr(page)) >= 0)
|
|
||||||
return true;
|
|
||||||
if (PageHuge(page))
|
|
||||||
return false;
|
|
||||||
for (i = 0; i < hpage_nr_pages(page); i++) {
|
|
||||||
if (atomic_read(&page[i]._mapcount) >= 0)
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Return true only if the page has been allocated with
|
* Return true only if the page has been allocated with
|
||||||
|
|
23
mm/util.c
23
mm/util.c
|
@ -346,6 +346,29 @@ void *page_rmapping(struct page *page)
|
||||||
return __page_rmapping(page);
|
return __page_rmapping(page);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Return true if this page is mapped into pagetables.
|
||||||
|
* For compound page it returns true if any subpage of compound page is mapped.
|
||||||
|
*/
|
||||||
|
bool page_mapped(struct page *page)
|
||||||
|
{
|
||||||
|
int i;
|
||||||
|
|
||||||
|
if (likely(!PageCompound(page)))
|
||||||
|
return atomic_read(&page->_mapcount) >= 0;
|
||||||
|
page = compound_head(page);
|
||||||
|
if (atomic_read(compound_mapcount_ptr(page)) >= 0)
|
||||||
|
return true;
|
||||||
|
if (PageHuge(page))
|
||||||
|
return false;
|
||||||
|
for (i = 0; i < hpage_nr_pages(page); i++) {
|
||||||
|
if (atomic_read(&page[i]._mapcount) >= 0)
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
EXPORT_SYMBOL(page_mapped);
|
||||||
|
|
||||||
struct anon_vma *page_anon_vma(struct page *page)
|
struct anon_vma *page_anon_vma(struct page *page)
|
||||||
{
|
{
|
||||||
unsigned long mapping;
|
unsigned long mapping;
|
||||||
|
|
Loading…
Reference in New Issue