Index: kernel/generic/include/ddi/ddi.h
===================================================================
--- kernel/generic/include/ddi/ddi.h	(revision d1582b502edcb7bfeef771a2019538f265e7e27c)
+++ kernel/generic/include/ddi/ddi.h	(revision 5a6879171b349b93efa71242447fc637fe2ceedd)
@@ -42,5 +42,5 @@
 
 /** Structure representing contiguous physical memory area. */
-typedef struct {
+typedef struct parea {
 	/** Link to @c pareas ordered dictionary */
 	odlink_t lpareas;
@@ -54,4 +54,8 @@
 	/** Indicate whether the area is actually mapped. */
 	bool mapped;
+	/** Called when @c mapped field has changed */
+	void (*mapped_changed)(void *);
+	/** Callback argument */
+	void *arg;
 } parea_t;
 
@@ -59,4 +63,5 @@
 extern void ddi_parea_init(parea_t *);
 extern void ddi_parea_register(parea_t *);
+extern void ddi_parea_unmap_notify(parea_t *);
 
 extern void *pio_map(void *, size_t);
Index: kernel/generic/include/mm/as.h
===================================================================
--- kernel/generic/include/mm/as.h	(revision d1582b502edcb7bfeef771a2019538f265e7e27c)
+++ kernel/generic/include/mm/as.h	(revision 5a6879171b349b93efa71242447fc637fe2ceedd)
@@ -236,4 +236,5 @@
 		size_t frames;
 		bool anonymous;
+		struct parea *parea;
 	};
 
