aboutsummaryrefslogtreecommitdiffstats
path: root/src/include
diff options
context:
space:
mode:
Diffstat (limited to 'src/include')
-rw-r--r--src/include/inline.h10
-rw-r--r--src/include/lists.h1
-rw-r--r--src/include/scheduler.h1
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;