irq: more emancipation from proc/preempt
[bertos.git] / bertos / kern / proc_p.h
index 54ba7be187014ac3527c169b8aea1ce735e1dce8..fbac38fc565a59016267868d9a20f95a0c64fe9e 100644 (file)
 
 #include <struct/list.h>
 
+#if CONFIG_KERN_PREEMPTIVE
+       #include <ucontext.h> // XXX
+#endif
+
 typedef struct Process
 {
        Node         link;        /**< Link Process into scheduler lists */
@@ -60,6 +64,8 @@ typedef struct Process
 
 #if CONFIG_KERN_PREEMPTIVE
        int          forbid_cnt;  /**< Nesting count for proc_forbid()/proc_permit(). */
+       bool         leaving;     /**< XXX: maybe global? */
+       ucontext_t   context;
 #endif
 
 #if CONFIG_KERN_HEAP
@@ -116,6 +122,11 @@ extern REGISTER List     ProcReadyList;
 /** Schedule to another process *without* adding the current to the ready list. */
 void proc_schedule(void);
 
+#if CONFIG_KERN_PREEMPT
+void proc_entry(void (*user_entry)(void));
+void preempt_init(void);
+#endif
+
 #if CONFIG_KERN_MONITOR
        /** Initialize the monitor */
        void monitor_init(void);