aboutsummaryrefslogtreecommitdiffstats
path: root/src/include
diff options
context:
space:
mode:
authorgdisirio <gdisirio@35acf78f-673a-0410-8e92-d51de3d6d3f4>2008-07-30 11:01:56 +0000
committergdisirio <gdisirio@35acf78f-673a-0410-8e92-d51de3d6d3f4>2008-07-30 11:01:56 +0000
commite150283e1f071673e1d3490cbf85651e5502d421 (patch)
treea34e5264e7c789b87ef2414472bbe8eb4a93d332 /src/include
parent0cd87f700cbc1d8dcb03bafe90793626d6efbb32 (diff)
downloadChibiOS-e150283e1f071673e1d3490cbf85651e5502d421.tar.gz
ChibiOS-e150283e1f071673e1d3490cbf85651e5502d421.tar.bz2
ChibiOS-e150283e1f071673e1d3490cbf85651e5502d421.zip
Various optimizations to the scheduler.
git-svn-id: svn://svn.code.sf.net/p/chibios/svn/trunk@378 35acf78f-673a-0410-8e92-d51de3d6d3f4
Diffstat (limited to 'src/include')
-rw-r--r--src/include/inline.h9
-rw-r--r--src/include/lists.h3
2 files changed, 10 insertions, 2 deletions
diff --git a/src/include/inline.h b/src/include/inline.h
index 85de20f3f..9cc18974d 100644
--- a/src/include/inline.h
+++ b/src/include/inline.h
@@ -36,7 +36,7 @@ static INLINE void prio_insert(Thread *tp, ThreadsQueue *tqp) {
tp->p_prev->p_next = cp->p_prev = tp;
}
-static INLINE void fifo_insert(Thread *tp, ThreadsQueue *tqp) {
+static INLINE void queue_insert(Thread *tp, ThreadsQueue *tqp) {
tp->p_prev = (tp->p_next = (Thread *)tqp)->p_prev;
tp->p_prev->p_next = tqp->p_prev = tp;
@@ -49,6 +49,13 @@ static INLINE Thread *fifo_remove(ThreadsQueue *tqp) {
return tp;
}
+static INLINE Thread *lifo_remove(ThreadsQueue *tqp) {
+ Thread *tp = tqp->p_prev;
+
+ (tqp->p_prev = tp->p_prev)->p_next = (Thread *)tqp;
+ return tp;
+}
+
static INLINE Thread *dequeue(Thread *tp) {
tp->p_prev->p_next = tp->p_next;
diff --git a/src/include/lists.h b/src/include/lists.h
index d98892600..741648a03 100644
--- a/src/include/lists.h
+++ b/src/include/lists.h
@@ -61,8 +61,9 @@ typedef struct {
extern "C" {
#endif
void prio_insert(Thread *tp, ThreadsQueue *tqp);
- void fifo_insert(Thread *tp, ThreadsQueue *tqp);
+ void queue_insert(Thread *tp, ThreadsQueue *tqp);
Thread *fifo_remove(ThreadsQueue *tqp);
+ Thread *lifo_remove(ThreadsQueue *tqp);
Thread *dequeue(Thread *tp);
void list_insert(Thread *tp, ThreadsList *tlp);
Thread *list_remove(ThreadsList *tlp);