X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=include%2Flinux%2Frmap.h;h=d6b9bcd1384c2767fcef3c2a024ff2c780b65d47;hb=43bc926fffd92024b46cafaf7350d669ba9ca884;hp=e3148341f476ce2dcc42e04475587cd315c63ed3;hpb=9213980e6a70d8473e0ffd4b39ab5b6caaba9ff5;p=linux-2.6.git diff --git a/include/linux/rmap.h b/include/linux/rmap.h index e3148341f..d6b9bcd13 100644 --- a/include/linux/rmap.h +++ b/include/linux/rmap.h @@ -7,13 +7,9 @@ #include #include #include +#include #include -#define page_map_lock(page) \ - bit_spin_lock(PG_maplock, (unsigned long *)&(page)->flags) -#define page_map_unlock(page) \ - bit_spin_unlock(PG_maplock, (unsigned long *)&(page)->flags) - /* * The anon_vma heads a list of private "related" vmas, to scan if * an anonymous page pointing to this anon_vma needs to be unmapped: @@ -75,6 +71,7 @@ void __anon_vma_link(struct vm_area_struct *); * rmap interfaces called when adding or removing pte of page */ void page_add_anon_rmap(struct page *, struct vm_area_struct *, unsigned long); +void page_add_new_anon_rmap(struct page *, struct vm_area_struct *, unsigned long); void page_add_file_rmap(struct page *); void page_remove_rmap(struct page *); @@ -87,16 +84,26 @@ void page_remove_rmap(struct page *); */ static inline void page_dup_rmap(struct page *page) { - page_map_lock(page); - page->mapcount++; - page_map_unlock(page); + atomic_inc(&page->_mapcount); } /* * Called from mm/vmscan.c to handle paging out */ -int page_referenced(struct page *); -int try_to_unmap(struct page *); +int page_referenced(struct page *, int is_locked); +int try_to_unmap(struct page *, int ignore_refs); +void remove_from_swap(struct page *page); + +/* + * Called from mm/filemap_xip.c to unmap empty zero page + */ +pte_t *page_check_address(struct page *, struct mm_struct *, + unsigned long, spinlock_t **); + +/* + * Used by swapoff to help locate where page is expected in vma. + */ +unsigned long page_address_in_vma(struct page *, struct vm_area_struct *); #else /* !CONFIG_MMU */ @@ -104,8 +111,8 @@ int try_to_unmap(struct page *); #define anon_vma_prepare(vma) (0) #define anon_vma_link(vma) do {} while (0) -#define page_referenced(page) TestClearPageReferenced(page) -#define try_to_unmap(page) SWAP_FAIL +#define page_referenced(page,l) TestClearPageReferenced(page) +#define try_to_unmap(page, refs) SWAP_FAIL #endif /* CONFIG_MMU */