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