Index: kernel/generic/src/ipc/event.c
===================================================================
--- kernel/generic/src/ipc/event.c	(revision f9061b499e4439544d82ae29d075f8782dde1065)
+++ kernel/generic/src/ipc/event.c	(revision 2f09deee229e039c8d4e3fc087f40fde05e558dc)
@@ -59,4 +59,5 @@
 		events[i].imethod = 0;
 		events[i].masked = false;
+		events[i].unmask_cb = NULL;
 	}
 }
@@ -83,4 +84,19 @@
 }
 
+/** Define a callback function for the event unmask event.
+ *
+ * @param evno Event type.
+ * @param cb   Callback function to be called when the event is unmasked.
+ *
+ */
+void event_set_unmask_callback(event_type_t evno, void (*cb)(void))
+{
+	ASSERT(evno < EVENT_END);
+	
+	spinlock_lock(&events[evno].lock);
+	events[evno].unmask_cb = cb;
+	spinlock_unlock(&events[evno].lock);
+}
+
 /** Send kernel notification event
  *
@@ -190,9 +206,17 @@
 static void event_unmask(event_type_t evno)
 {
+	void (*cb)(void);
 	ASSERT(evno < EVENT_END);
 	
 	spinlock_lock(&events[evno].lock);
 	events[evno].masked = false;
-	spinlock_unlock(&events[evno].lock);
+	cb = events[evno].unmask_cb;
+	spinlock_unlock(&events[evno].lock);
+	
+	/*
+	 * Check if there is an unmask callback function defined for this event.
+	 */
+	if (cb)
+	    cb();
 }
 
