+ *
+ *
+ * int main()
+ * {
+ * Process *p1 = proc_new(proc1_run, NULL, stack1, sizeof(stack1));
+ * // here the process is already running
+ * proc_setPri(p1, 2);
+ * // ...
+ * }
+ * \endcode
+ *
+ * The Process struct must be regarded as an opaque data type, do not access
+ * any of its members directly.
+ *
+ * The entry point function should be declared as NORETURN, because it will
+ * remove a warning and enable compiler optimizations.
+ *
+ * You can temporarily disable preemption calling proc_forbid(); remember
+ * to enable it again calling proc_permit().
+ *
+ * \note You should hardly need to manually release the CPU; however you
+ * can do it using the cpu_relax() function. It is illegal to release
+ * the CPU with preemption disabled.
+ *
+ * \author Bernie Innocenti <bernie@codewiz.org>
+ *
+ * $WIZ$ module_name = "kernel"
+ * $WIZ$ module_configuration = "bertos/cfg/cfg_proc.h"
+ * $WIZ$ module_depends = "switch_ctx"
+ * $WIZ$ module_supports = "not atmega103"