X-Git-Url: https://codewiz.org/gitweb?a=blobdiff_plain;f=bertos%2Fkern%2Fproc_p.h;h=2b6855497da888086d113da6569ff19a7c61b0af;hb=01d0d2312f50170e2208bbee3bc4f7052ca6f4a4;hp=64fabb1290fef6052231bf3e682fb9c8a4830f49;hpb=f35b6066ecdeffcc8998dd566b5246bdcf43c548;p=bertos.git diff --git a/bertos/kern/proc_p.h b/bertos/kern/proc_p.h index 64fabb12..2b685549 100644 --- a/bertos/kern/proc_p.h +++ b/bertos/kern/proc_p.h @@ -33,7 +33,6 @@ * * \brief Internal scheduler structures and definitions for processes. * - * \version $Id$ * \author Bernie Innocenti */ @@ -79,6 +78,13 @@ extern REGISTER Process *current_process; extern REGISTER List proc_ready_list; #if CONFIG_KERN_PRI +# if CONFIG_KERN_PRI_INHERIT + #define __prio_orig(proc) (proc->orig_pri) + #define __prio_inh(proc) (LIST_EMPTY(&(proc)->inh_list) ? INT_MIN : \ + ((PriNode *)LIST_HEAD(&proc->inh_list))->pri) + #define __prio_proc(proc) (__prio_inh(proc) > __prio_orig(proc) ? \ + __prio_inh(proc) : __prio_orig(proc)) +# endif #define prio_next() (LIST_EMPTY(&proc_ready_list) ? INT_MIN : \ ((PriNode *)LIST_HEAD(&proc_ready_list))->pri) #define prio_proc(proc) (proc->link.pri) @@ -181,7 +187,12 @@ void proc_schedInit(void); void monitor_rename(Process *proc, const char *name); #endif /* CONFIG_KERN_MONITOR */ -#if CONFIG_KERN_PREEMPT +/* + * Quantum related macros are used in the + * timer module and must be empty when + * kernel is disabled. + */ +#if (CONFIG_KERN && CONFIG_KERN_PREEMPT) INLINE int preempt_quantum(void) { extern int _proc_quantum; @@ -200,7 +211,7 @@ INLINE void preempt_reset_quantum(void) extern int _proc_quantum; _proc_quantum = CONFIG_KERN_QUANTUM; } -#else /* !CONFIG_KERN_PREEMPT */ +#else /* !(CONFIG_KERN && CONFIG_KERN_PREEMPT) */ INLINE int preempt_quantum(void) { return 0; @@ -213,6 +224,6 @@ INLINE void proc_decQuantum(void) INLINE void preempt_reset_quantum(void) { } -#endif /* CONFIG_KERN_PREEMPT */ +#endif /* (CONFIG_KERN && CONFIG_KERN_PREEMPT) */ #endif /* KERN_PROC_P_H */