00001 
00023 #ifndef _XENO_NUCLEUS_SCHED_SPORADIC_H
00024 #define _XENO_NUCLEUS_SCHED_SPORADIC_H
00025 
00026 #ifndef _XENO_NUCLEUS_SCHED_H
00027 #error "please don't include nucleus/sched-sporadic.h directly"
00028 #endif
00029 
00030 #ifdef CONFIG_XENO_OPT_SCHED_SPORADIC
00031 
00032 #ifndef CONFIG_XENO_OPT_DEBUG_NUCLEUS
00033 #define CONFIG_XENO_OPT_DEBUG_NUCLEUS 0
00034 #endif
00035 
00036 #include <nucleus/heap.h>
00037 
00038 extern struct xnsched_class xnsched_class_sporadic;
00039 
00040 struct xnsched_sporadic_repl {
00041         xntime_t date;
00042         xntime_t amount;
00043 };
00044 
00045 struct xnsched_sporadic_data {
00046         xnticks_t resume_date;
00047         xnticks_t budget;
00048         int repl_in;
00049         int repl_out;
00050         int repl_pending;
00051         struct xntimer repl_timer;
00052         struct xntimer drop_timer;
00053         struct xnsched_sporadic_repl repl_data[CONFIG_XENO_OPT_SCHED_SPORADIC_MAXREPL];
00054         struct xnsched_sporadic_param param;
00055         struct xnthread *thread;
00056 };
00057 
00058 struct xnsched_sporadic {
00059 #if XENO_DEBUG(NUCLEUS)
00060         unsigned long drop_retries;
00061 #endif
00062 };
00063 
00064 static inline int xnsched_sporadic_init_tcb(struct xnthread *thread)
00065 {
00066         thread->pss = NULL;
00067 
00068         return 0;
00069 }
00070 
00071 #endif 
00072 
00073 #endif