diff options
Diffstat (limited to 'src/include')
-rw-r--r-- | src/include/inline.h | 10 | ||||
-rw-r--r-- | src/include/lists.h | 1 | ||||
-rw-r--r-- | src/include/scheduler.h | 1 |
3 files changed, 11 insertions, 1 deletions
diff --git a/src/include/inline.h b/src/include/inline.h index 1982fd075..85de20f3f 100644 --- a/src/include/inline.h +++ b/src/include/inline.h @@ -26,6 +26,16 @@ * this is true for GCC, not sure about other compilers.
*/
#ifdef CH_OPTIMIZE_SPEED
+static INLINE void prio_insert(Thread *tp, ThreadsQueue *tqp) {
+
+ Thread *cp = tqp->p_next;
+ while ((cp != (Thread *)tqp) && (cp->p_prio >= tp->p_prio))
+ cp = cp->p_next;
+ /* Insertion on p_prev.*/
+ tp->p_prev = (tp->p_next = cp)->p_prev;
+ tp->p_prev->p_next = cp->p_prev = tp;
+}
+
static INLINE void fifo_insert(Thread *tp, ThreadsQueue *tqp) {
tp->p_prev = (tp->p_next = (Thread *)tqp)->p_prev;
diff --git a/src/include/lists.h b/src/include/lists.h index 043538457..2a8f20e82 100644 --- a/src/include/lists.h +++ b/src/include/lists.h @@ -59,6 +59,7 @@ typedef struct { #ifdef __cplusplus
extern "C" {
#endif
+ void prio_insert(Thread *tp, ThreadsQueue *tqp);
void fifo_insert(Thread *tp, ThreadsQueue *tqp);
Thread *fifo_remove(ThreadsQueue *tqp);
Thread *dequeue(Thread *tp);
diff --git a/src/include/scheduler.h b/src/include/scheduler.h index 183e3af79..565b75ccb 100644 --- a/src/include/scheduler.h +++ b/src/include/scheduler.h @@ -39,7 +39,6 @@ */
typedef struct {
ThreadsQueue r_queue;
- t_prio r_prio;
t_cnt r_preempt;
#ifndef CH_CURRP_REGISTER_CACHE
Thread *r_current;
|