aboutsummaryrefslogtreecommitdiffstats
path: root/src/include/scheduler.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/include/scheduler.h')
-rw-r--r--src/include/scheduler.h81
1 files changed, 81 insertions, 0 deletions
diff --git a/src/include/scheduler.h b/src/include/scheduler.h
new file mode 100644
index 000000000..78fbb4a72
--- /dev/null
+++ b/src/include/scheduler.h
@@ -0,0 +1,81 @@
+/*
+ ChibiOS/RT - Copyright (C) 2006-2007 Giovanni Di Sirio.
+
+ This file is part of ChibiOS/RT.
+
+ ChibiOS/RT is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ ChibiOS/RT is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+/**
+ * @addtogroup Scheduler
+ * @{
+ */
+
+#ifndef _SCHEDULER_H_
+#define _SCHEDULER_H_
+
+/** Normal \p chSchReadyI() message.*/
+#define RDY_OK 0
+/** Returned if the thread was made ready because a timeout.*/
+#define RDY_TIMEOUT -1
+/** Returned if the thread was made ready because a reset.*/
+#define RDY_RESET -2
+
+/**
+ * Ready list header.
+ */
+typedef struct {
+ /** Highest priority \p Thread in the list.*/
+ Thread *p_next;
+ /** Lowest priority \p Thread in the list.*/
+ Thread *p_prev;
+ /** Alwas set to \p MAXPRIO.*/
+ t_prio p_prio;
+} ReadyList;
+
+/*
+ * Scheduler APIs.
+ */
+void chSchInit(void);
+Thread *chSchReadyI(Thread *tp);
+void chSchGoSleepI(t_tstate newstate);
+void chSchWakeupI(Thread *tp, t_msg msg);
+void chSchRescheduleI(void);
+void chSchDoRescheduleI(void);
+BOOL chSchRescRequiredI(void);
+void chSchTimerHandlerI(void);
+
+/**
+ * Current thread pointer.
+ * @note Dont use this directly but use the \p chThdSelf()
+ * instead. Direct use of system global variables is discouraged because
+ * portability reasons.
+ */
+#ifdef CH_CURRP_REGISTER_CACHE
+register Thread *currp asm(CH_CURRP_REGISTER_CACHE);
+#else
+extern Thread *currp;
+#endif
+
+/**
+ * System ticks counter.
+ * @note Dont use this directly but use the \p chSysGetTime()
+ * instead. Direct use of system global variables is discouraged because
+ * portability reasons.
+ */
+extern t_time stime;
+
+#endif /* _SCHEDULER_H_ */
+
+/** @} */