sparsemem: record when a section has a valid mem_map
[linux-2.6-block.git] / include / linux / mmzone.h
index 4e5627379b0935b306261d7c9666786fa5357f24..f21e5951038be21d9b7b70fbf5895d5b1197167f 100644 (file)
@@ -771,12 +771,17 @@ static inline struct page *__section_mem_map_addr(struct mem_section *section)
        return (struct page *)map;
 }
 
-static inline int valid_section(struct mem_section *section)
+static inline int present_section(struct mem_section *section)
 {
        return (section && (section->section_mem_map & SECTION_MARKED_PRESENT));
 }
 
-static inline int section_has_mem_map(struct mem_section *section)
+static inline int present_section_nr(unsigned long nr)
+{
+       return present_section(__nr_to_section(nr));
+}
+
+static inline int valid_section(struct mem_section *section)
 {
        return (section && (section->section_mem_map & SECTION_HAS_MEM_MAP));
 }
@@ -798,6 +803,13 @@ static inline int pfn_valid(unsigned long pfn)
        return valid_section(__nr_to_section(pfn_to_section_nr(pfn)));
 }
 
+static inline int pfn_present(unsigned long pfn)
+{
+       if (pfn_to_section_nr(pfn) >= NR_MEM_SECTIONS)
+               return 0;
+       return present_section(__nr_to_section(pfn_to_section_nr(pfn)));
+}
+
 /*
  * These are _only_ used during initialisation, therefore they
  * can use __initdata ...  They could have names to indicate