Index: kernel/generic/include/mm/as.h
===================================================================
--- kernel/generic/include/mm/as.h	(revision ca21f1e2563262ce9dfca34baebb191c134e3037)
+++ kernel/generic/include/mm/as.h	(revision 5a2e0dd5a99729f2bbcfc65e095f77e1698ebf8d)
@@ -137,4 +137,25 @@
 } as_operations_t;
 
+/** Single anonymous page mapping. */
+typedef struct {
+	/** Containing pagemap structure */
+	struct as_pagemap *pagemap;
+	/** Link to @c shinfo->pagemap ordered dictionary */
+	odlink_t lpagemap;
+	/** Virtual address */
+	uintptr_t vaddr;
+	/** Physical frame address */
+	uintptr_t frame;
+} as_page_mapping_t;
+
+/** Map of anonymous pages in a shared area. */
+typedef struct as_pagemap {
+	/**
+	 * Dictionary ordered by virtual address. Members are of type
+	 * as_page_mapping_t
+	 */
+	odict_t map;
+} as_pagemap_t;
+
 /**
  * This structure contains information associated with the shared address space
@@ -150,8 +171,6 @@
 	bool shared;
 
-	/**
-	 * B+tree containing complete map of anonymous pages of the shared area.
-	 */
-	btree_t pagemap;
+	/** Complete map of anonymous pages of the shared area. */
+	as_pagemap_t pagemap;
 
 	/** Address space area backend. */
@@ -283,4 +302,12 @@
 extern as_area_t *as_area_next(as_area_t *);
 
+extern void as_pagemap_initialize(as_pagemap_t *);
+extern void as_pagemap_finalize(as_pagemap_t *);
+extern as_page_mapping_t *as_pagemap_first(as_pagemap_t *);
+extern as_page_mapping_t *as_pagemap_next(as_page_mapping_t *);
+extern errno_t as_pagemap_find(as_pagemap_t *, uintptr_t, uintptr_t *);
+extern void as_pagemap_insert(as_pagemap_t *, uintptr_t, uintptr_t);
+extern void as_pagemap_remove(as_page_mapping_t *);
+
 extern unsigned int as_area_get_flags(as_area_t *);
 extern bool as_area_check_access(as_area_t *, pf_access_t);
