inline functions for naming pages. -- Kame
Adding page_type definitions and funcs for naming reserved pages.
Reserved page's information is stored into page->private. This is a weak naming method and anyone can overwrite it. This information is used in /dev/memstate in following patch. Signed-off-by: KAMEZAWA Hiroyuki <[EMAIL PROTECTED]> --- linux-2.6.12-rc2-kamezawa/include/linux/mm.h | 31 +++++++++++++++++++++++++++ 1 files changed, 31 insertions(+) diff -puN include/linux/mm.h~name_reserved include/linux/mm.h --- linux-2.6.12-rc2/include/linux/mm.h~name_reserved 2005-04-20 09:37:48.000000000 +0900 +++ linux-2.6.12-rc2-kamezawa/include/linux/mm.h 2005-04-20 10:38:01.000000000 +0900 @@ -348,6 +348,37 @@ static inline void put_page(struct page #endif /* CONFIG_HUGETLB_PAGE */ /* + * Type of Pages. This is used in /dev/memstate. + * value range is 0-255. + */ +enum page_type { + Page_Common = 0, + Min_Reserved_Types = 1, + Rserved_Unknwon = 1, + Reserved_At_Boot, + Max_Reserved_Types, + Page_Invalid = 0xff +}; +/* + * Basically, page->private has no meaning without PG_private. + * Here, we use page->private for PG_reserved pages to record type of a page. + * Because a page is reserved, anyone will not modify page->private. + * When it is freed, page->private will be overwritten by some code. + */ +static inline void set_page_reserved(struct page *page, unsigned char type) +{ + SetPageReserved(page); + page->private = type; +} + +static inline unsigned char reserved_page_type(struct page *page) +{ + if (!PageReserved(page)) + return 0; + return (unsigned char)page->private; +} + +/* * Multiple processes may "see" the same page. E.g. for untouched * mappings of /dev/null, all processes see the same page full of * zeroes, and text pages of executables and shared libraries have _