From 30f0bb1d66f016d6d8366aa483ca12a4724bd599 Mon Sep 17 00:00:00 2001 From: gdisirio Date: Tue, 18 Sep 2007 12:40:26 +0000 Subject: git-svn-id: svn://svn.code.sf.net/p/chibios/svn/trunk@9 35acf78f-673a-0410-8e92-d51de3d6d3f4 --- src/chinit.c | 59 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 59 insertions(+) create mode 100644 src/chinit.c (limited to 'src/chinit.c') diff --git a/src/chinit.c b/src/chinit.c new file mode 100644 index 000000000..b86626fa6 --- /dev/null +++ b/src/chinit.c @@ -0,0 +1,59 @@ +/* + 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 . +*/ + +/** + * @addtogroup Initialization + * @{ + */ + +#include + +static Thread idlethread; + +/** + * ChibiOS/RT initialization. After executing this function the current + * instructions stream becomes the idle thread. The thread must execute the + * first user thread and then go to sleep into the \p chSysPause() where it + * will just serve the interrupts while keeping the lowest possible power + * mode.

+ * @code + * chSysInit(); + * chThdCreate(...); // Starts one or more user threads. + * chSysPause(); + * @endcode + * @note Interrupts should be still disabled when \p chSysInit() is invoked and + * are internally enabled. + */ +void chSysInit(void) { + + chSchInit(); +#ifdef CH_USE_VIRTUAL_TIMERS + chVTInit(); +#endif + /* + * Now this instructions flow becomes the idle thread. + */ + _InitThread(IDLEPRIO, 0, &idlethread); + idlethread.p_state = PRCURR; + currp = &idlethread; + + chSysUnlock(); +} + +/** @} */ -- cgit v1.2.3