signal: fix a build warning with CONFIG_KERN_SIGNALS disabled
[bertos.git] / bertos / kern / signal.h
index 55351aed468890550607bb599882bc4694f6ad47..70506fe12f6021339a43443cfdbfac6ed1de969a 100644 (file)
  *
  * -->
  *
+ * \defgroup kern_signal Kernel signals
+ * \ingroup kern
+ * \{
+ *
  * \brief Signal module for IPC.
  *
- * \version $Id$
  *
  * \author Bernie Innocenti <bernie@codewiz.org>
  *
  * $WIZ$ module_name = "signal"
- * $WIZ$ module_depends = "kernel"
+ * $WIZ$ module_depends = "kernel", "timer"
  * $WIZ$ module_configuration = "bertos/cfg/cfg_signal.h"
  */
 
 #include <cfg/compiler.h>
 #include <cfg/macros.h>    // BV()
 
-/* Fwd decl */
-struct Process;
+#include <kern/proc.h>
+
+#if CONFIG_KERN_SIGNALS
 
 /* Inter-process Communication services */
-sigmask_t sig_check(sigmask_t sigs);
-void sig_signal(struct Process *proc, sigmask_t sig);
-sigmask_t sig_wait(sigmask_t sigs);
-sigmask_t sig_waitTimeout(sigmask_t sigs, ticks_t timeout);
+sigmask_t sig_checkSignal(Signal *s, sigmask_t sigs);
+
+INLINE sigmask_t sig_check(sigmask_t sigs)
+{
+       Process *proc = proc_current();
+       return sig_checkSignal(&proc->sig, sigs);
+}
+
+void sig_sendSignal(Signal *s, Process *proc, sigmask_t sig);
+
+INLINE void sig_send(Process *proc, sigmask_t sig)
+{
+       sig_sendSignal(&proc->sig, proc, sig);
+}
+
+void sig_postSignal(Signal *s, Process *proc, sigmask_t sig);
+
+INLINE void sig_post(Process *proc, sigmask_t sig)
+{
+       sig_postSignal(&proc->sig, proc, sig);
+}
+
+/*
+ * XXX: this is provided for backword compatibility, consider to make this
+ * deprecated for the future.
+ */
+INLINE void sig_signal(Process *proc, sigmask_t sig)
+{
+       sig_postSignal(&proc->sig, proc, sig);
+}
+
+sigmask_t sig_waitSignal(Signal *s, sigmask_t sigs);
+
+INLINE sigmask_t sig_wait(sigmask_t sigs)
+{
+       Process *proc = proc_current();
+       return sig_waitSignal(&proc->sig, sigs);
+}
+
+sigmask_t sig_waitTimeoutSignal(Signal *s, sigmask_t sigs, ticks_t timeout);
+
+INLINE sigmask_t sig_waitTimeout(sigmask_t sigs, ticks_t timeout)
+{
+       Process *proc = proc_current();
+       return sig_waitTimeoutSignal(&proc->sig, sigs, timeout);
+}
+
+#endif /* CONFIG_KERN_SIGNALS */
 
 int signal_testRun(void);
 int signal_testSetup(void);
@@ -75,4 +123,6 @@ int signal_testTearDown(void);
 #define SIG_SINGLE   BV(7)  /**< Used to wait for a single event */
 /*\}*/
 
+/* \} */ //defgroup kern_signal
+
 #endif /* KERN_SIGNAL_H */