[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [RFC PATCH v1 01/33] mm: introduce common help functions to deal with reserved/managed pages
On Tue, Mar 05, 2013 at 10:54:44PM +0800, Jiang Liu wrote: > Code to deal with reserved/managed pages are duplicated by many > architectures, so introduce common help functions to reduce duplicated > code. These common help functions will also be used to concentrate code > to modify totalram_pages and zone->managed_pages, which makes the code > much more clear. > > Signed-off-by: Jiang Liu <jiang.liu@xxxxxxxxxx> > --- > include/linux/mm.h | 37 +++++++++++++++++++++++++++++++++++++ > mm/page_alloc.c | 20 ++++++++++++++++++++ > 2 files changed, 57 insertions(+) > > diff --git a/include/linux/mm.h b/include/linux/mm.h > index 7acc9dc..881461c 100644 > --- a/include/linux/mm.h > +++ b/include/linux/mm.h > @@ -1295,6 +1295,43 @@ extern void free_area_init_node(int nid, unsigned long > * zones_size, > unsigned long zone_start_pfn, unsigned long *zholes_size); > extern void free_initmem(void); > > +/* Help functions to deal with reserved/managed pages. */ > +extern unsigned long free_reserved_area(unsigned long start, unsigned long > end, > + int poison, char *s); > + > +static inline void adjust_managed_page_count(struct page *page, long count) > +{ > + totalram_pages += count; > +} What is the purpose of the unused page argument? > + > +static inline void __free_reserved_page(struct page *page) > +{ > + ClearPageReserved(page); > + init_page_count(page); > + __free_page(page); > +} This method is useful for architectures which implment HIGHMEM, like 32 bit x86 and 32 bit sparc. This calls for a name without underscores. > + > +static inline void free_reserved_page(struct page *page) > +{ > + __free_reserved_page(page); > + adjust_managed_page_count(page, 1); > +} > + > +static inline void mark_page_reserved(struct page *page) > +{ > + SetPageReserved(page); > + adjust_managed_page_count(page, -1); > +} > + > +static inline void free_initmem_default(int poison) > +{ Why request user to supply the poison argumet. If this is the default implmentation then use the default poison value too (POISON_FREE_INITMEM) > + extern char __init_begin[], __init_end[]; > + > + free_reserved_area(PAGE_ALIGN((unsigned long)&__init_begin) , > + ((unsigned long)&__init_end) & PAGE_MASK, > + poison, "unused kernel"); > +} Maybe it is just me how is not used to this area of the kernel. But a few comments that describe what the purpose is of each function would have helped me. Sam _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |