diff options
author | Kirill A. Shutemov <kirill.shutemov@linux.intel.com> | 2015-02-11 18:24:46 -0500 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2015-02-11 20:06:00 -0500 |
commit | e4b294c2d8f73af4cd41ff30638ad0e4769dc56a (patch) | |
tree | 180172b74fb439e1c4bdde668f141426bb001515 /include/linux/mm.h | |
parent | aa7ed01f93ff7e149cad46f13f66b269d59c9bc0 (diff) |
mm: add fields for compound destructor and order into struct page
Currently, we use lru.next/lru.prev plus cast to access or set
destructor and order of compound page.
Let's replace it with explicit fields in struct page.
Signed-off-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
Acked-by: Jerome Marchand <jmarchan@redhat.com>
Acked-by: Christoph Lameter <cl@linux.com>
Acked-by: Johannes Weiner <hannes@cmpxchg.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'include/linux/mm.h')
-rw-r--r-- | include/linux/mm.h | 9 |
1 files changed, 4 insertions, 5 deletions
diff --git a/include/linux/mm.h b/include/linux/mm.h index 65db4aee738a..8dd4fde9d2e5 100644 --- a/include/linux/mm.h +++ b/include/linux/mm.h | |||
@@ -627,29 +627,28 @@ int split_free_page(struct page *page); | |||
627 | * prototype for that function and accessor functions. | 627 | * prototype for that function and accessor functions. |
628 | * These are _only_ valid on the head of a PG_compound page. | 628 | * These are _only_ valid on the head of a PG_compound page. |
629 | */ | 629 | */ |
630 | typedef void compound_page_dtor(struct page *); | ||
631 | 630 | ||
632 | static inline void set_compound_page_dtor(struct page *page, | 631 | static inline void set_compound_page_dtor(struct page *page, |
633 | compound_page_dtor *dtor) | 632 | compound_page_dtor *dtor) |
634 | { | 633 | { |
635 | page[1].lru.next = (void *)dtor; | 634 | page[1].compound_dtor = dtor; |
636 | } | 635 | } |
637 | 636 | ||
638 | static inline compound_page_dtor *get_compound_page_dtor(struct page *page) | 637 | static inline compound_page_dtor *get_compound_page_dtor(struct page *page) |
639 | { | 638 | { |
640 | return (compound_page_dtor *)page[1].lru.next; | 639 | return page[1].compound_dtor; |
641 | } | 640 | } |
642 | 641 | ||
643 | static inline int compound_order(struct page *page) | 642 | static inline int compound_order(struct page *page) |
644 | { | 643 | { |
645 | if (!PageHead(page)) | 644 | if (!PageHead(page)) |
646 | return 0; | 645 | return 0; |
647 | return (unsigned long)page[1].lru.prev; | 646 | return page[1].compound_order; |
648 | } | 647 | } |
649 | 648 | ||
650 | static inline void set_compound_order(struct page *page, unsigned long order) | 649 | static inline void set_compound_order(struct page *page, unsigned long order) |
651 | { | 650 | { |
652 | page[1].lru.prev = (void *)order; | 651 | page[1].compound_order = order; |
653 | } | 652 | } |
654 | 653 | ||
655 | #ifdef CONFIG_MMU | 654 | #ifdef CONFIG_MMU |