+/**
+ * Sleep until any of the signals in \a sigs or \a timeout ticks elapse.
+ * If the timeout elapse a SIG_TIMEOUT is added to the received signal(s).
+ * \return the signal(s) that have awaked the process.
+ * \note Caller must check return value to check which signal has awaked the process.
+ */
+sigmask_t sig_waitTimeout(sigmask_t sigs, ticks_t timeout)
+{
+ Timer t;
+
+ ASSERT(!sig_check(SIG_TIMEOUT));
+ ASSERT(!(sigs & SIG_TIMEOUT));
+ timer_set_event_signal(&t, proc_current(), SIG_TIMEOUT);
+ timer_setDelay(&t, timeout);
+ timer_add(&t);
+ return sig_wait(SIG_TIMEOUT | sigs);
+}
+