+ * Example usage: wait multiple generic events via event_select()
+ * \code
+ * Event ev1;
+ * Event ev2;
+ *
+ * void event_notifier(void)
+ * {
+ * Event *evs[] = { &ev1, &ev2 };
+ *
+ * event_initGeneric(&ev1);
+ * event_initGeneric(&ev2);
+ *
+ * while (1)
+ * {
+ * int id = event_select(evs, countof(evs),
+ * ms_to_ticks(100));
+ * if (id < 0)
+ * {
+ * kprintf("no IRQ\n");
+ * continue;
+ * }
+ * kprintf("IRQ %d happened\n", id);
+ * }
+ * }
+ *
+ * void irq1_handler(void)
+ * {
+ * // do something
+ * ...
+ *
+ * // notify the completion of event 1
+ * event_do(&ev1);
+ * }
+ *
+ * void irq2_handler(void)
+ * {
+ * // do something
+ * ...
+ *
+ * // notify the completion of event 2
+ * event_do(&ev2);
+ * }
+ * \endcode
+ *