<tr><tdclass="mdescLeft"> </td><tdclass="mdescRight">Raises the system interrupt priority mask to the maximum level. <ahref="#ga0f6e07fb701e2006ba40db2ede3a4b5b"></a><br/></td></tr>
<tr><tdclass="mdescLeft"> </td><tdclass="mdescRight">Raises the system interrupt priority mask to system level. <ahref="#ga345a8b0ef36155654e5cf88a853365b4"></a><br/></td></tr>
<tr><tdclass="mdescLeft"> </td><tdclass="mdescRight">Lowers the system interrupt priority mask to user level. <ahref="#ga2f54701f43490a5de272cc3d32962b51"></a><br/></td></tr>
<tr><tdclass="mdescLeft"> </td><tdclass="mdescRight">Enters the kernel lock mode from within an interrupt handler. <ahref="#gab826c6d946aa1eb839751246ea158a72"></a><br/></td></tr>
<tr><tdclass="mdescLeft"> </td><tdclass="mdescRight">Leaves the kernel lock mode from within an interrupt handler. <ahref="#ga984fb4af1420b6a217714ed317224ec0"></a><br/></td></tr>
<tr><tdclass="mdescLeft"> </td><tdclass="mdescRight">Handles time ticks for round robin preemption and timer increments. <ahref="#ga1e42ee112f4a5d2c95be07d523c247be"></a><br/></td></tr>
<p>This function is invoked by the operating system when an unrecoverable error is detected, as example because a programming error in the application code that triggers an assertion while in debug mode. </p>
<p>Definition at line <aclass="el"href="chsys_8h_source.html#l00045">45</a> of file <aclass="el"href="chsys_8h_source.html">chsys.h</a>.</p>
<p>Referenced by <aclass="el"href="group__debug.html#ga3cfb02183cd13f939b9b666810511157">chDbgPanic()</a>.</p>
<tr><tdvalign="top"><tt>[in]</tt> </td><tdvalign="top"><em>ntp</em> </td><td>the thread to be switched in </td></tr>
<tr><tdvalign="top"><tt>[in]</tt> </td><tdvalign="top"><em>otp</em> </td><td>the thread to be switched out </td></tr>
</table>
</dd>
</dl>
<p>Definition at line <aclass="el"href="chsys_8h_source.html#l00053">53</a> of file <aclass="el"href="chsys_8h_source.html">chsys.h</a>.</p>
<p>Referenced by <aclass="el"href="group__scheduler.html#ga0257cf203e72a766a52059750cb97e6e">chSchDoRescheduleI()</a>, <aclass="el"href="group__scheduler.html#ga97c1c514b755a1e71caf2f19c1ccf986">chSchGoSleepS()</a>, and <aclass="el"href="group__scheduler.html#gae47a8819a21ef2d521124e76bfb37c95">chSchWakeupS()</a>.</p>
<p>Raises the system interrupt priority mask to the maximum level. </p>
<p>All the maskable interrupt sources are disabled regardless their hardware priority. </p>
<dlclass="note"><dt><b>Note:</b></dt><dd>The implementation is architecture dependent, it may just disable the interrupts or be exactly equivalent to <code><aclass="el"href="group__system.html#ga0f6e07fb701e2006ba40db2ede3a4b5b"title="Raises the system interrupt priority mask to the maximum level.">chSysDisable()</a></code>. </dd>
<dd>
Do not invoke this API from within a kernel lock. </dd></dl>
<p>Definition at line <aclass="el"href="chsys_8h_source.html#l00063">63</a> of file <aclass="el"href="chsys_8h_source.html">chsys.h</a>.</p>
<p>Raises the system interrupt priority mask to system level. </p>
<p>The interrupt sources that should not be able to preempt the kernel are disabled, interrupt sources with higher priority are still enabled. </p>
<dlclass="note"><dt><b>Note:</b></dt><dd>The implementation is architecture dependent, it may just disable the interrupts. </dd>
<dd>
Do not invoke this API from within a kernel lock. </dd>
<dd>
This API is no replacement for <code><aclass="el"href="group__system.html#ga9f6573c0763d1e4e97c63c62edad6e42"title="Enters the kernel lock mode.">chSysLock()</a></code>, the <code><aclass="el"href="group__system.html#ga9f6573c0763d1e4e97c63c62edad6e42"title="Enters the kernel lock mode.">chSysLock()</a></code> could do more than just disable the interrupts. </dd></dl>
<p>Definition at line <aclass="el"href="chsys_8h_source.html#l00076">76</a> of file <aclass="el"href="chsys_8h_source.html">chsys.h</a>.</p>
<p>Lowers the system interrupt priority mask to user level. </p>
<p>All the interrupt sources are enabled. </p>
<dlclass="note"><dt><b>Note:</b></dt><dd>The implementation is architecture dependent, it may just enable the interrupts. </dd>
<dd>
Do not invoke this API from within a kernel lock. </dd>
<dd>
This API is no replacement for <code><aclass="el"href="group__system.html#ga5a257fa58a09815eb64a45e2dfbdc22e"title="Leaves the kernel lock mode.">chSysUnlock()</a></code>, the <code><aclass="el"href="group__system.html#ga5a257fa58a09815eb64a45e2dfbdc22e"title="Leaves the kernel lock mode.">chSysUnlock()</a></code> could do more than just enable the interrupts. </dd></dl>
<p>Definition at line <aclass="el"href="chsys_8h_source.html#l00087">87</a> of file <aclass="el"href="chsys_8h_source.html">chsys.h</a>.</p>
<p>Referenced by <aclass="el"href="group__system.html#gafe2c7de6567e98e487e009e81e3be10b">chSysInit()</a>.</p>
<dlclass="note"><dt><b>Note:</b></dt><dd>The use of kernel lock mode is not recommended in the user code, it is a better idea to use the semaphores or mutexes instead. </dd></dl>
<dlclass="note"><dt><b>Note:</b></dt><dd>The use of kernel lock mode is not recommended in the user code, it is a better idea to use the semaphores or mutexes instead. </dd></dl>
<p>Enters the kernel lock mode from within an interrupt handler. </p>
<dlclass="note"><dt><b>Note:</b></dt><dd>This API may do nothing on some architectures, it is required because on ports that support preemptable interrupt handlers it is required to raise the interrupt mask to the same level of the system mutual exclusion zone.<br/>
It is good practice to invoke this API before invoking any I-class syscall from an interrupt handler. </dd>
<dd>
This API must be invoked exclusively from interrupt handlers. </dd></dl>
<p>Definition at line <aclass="el"href="chsys_8h_source.html#l00133">133</a> of file <aclass="el"href="chsys_8h_source.html">chsys.h</a>.</p>
<p>Referenced by <aclass="el"href="group___s_t_m32___a_d_c.html#ga727ca25370379b53e77a820e7bfee540">CH_IRQ_HANDLER()</a>.</p>
<p>Leaves the kernel lock mode from within an interrupt handler. </p>
<dlclass="note"><dt><b>Note:</b></dt><dd>This API may do nothing on some architectures, it is required because on ports that support preemptable interrupt handlers it is required to raise the interrupt mask to the same level of the system mutual exclusion zone.<br/>
It is good practice to invoke this API after invoking any I-class syscall from an interrupt handler. </dd>
<dd>
This API must be invoked exclusively from interrupt handlers. </dd></dl>
<p>Definition at line <aclass="el"href="chsys_8h_source.html#l00146">146</a> of file <aclass="el"href="chsys_8h_source.html">chsys.h</a>.</p>
<p>Referenced by <aclass="el"href="group___s_t_m32___a_d_c.html#ga727ca25370379b53e77a820e7bfee540">CH_IRQ_HANDLER()</a>.</p>
<dlclass="note"><dt><b>Note:</b></dt><dd>Usually IRQ handlers function are also declared naked. </dd>
<dd>
This macro usually performs the final reschedule by using <code>chSchRescRequiredI()</code> and <code><aclass="el"href="group__scheduler.html#ga0257cf203e72a766a52059750cb97e6e"title="Switches to the first thread on the runnable queue.">chSchDoRescheduleI()</a></code>. </dd></dl>
<p>Definition at line <aclass="el"href="chsys_8h_source.html#l00161">161</a> of file <aclass="el"href="chsys_8h_source.html">chsys.h</a>.</p>
<p>Referenced by <aclass="el"href="group___s_t_m32___a_d_c.html#ga727ca25370379b53e77a820e7bfee540">CH_IRQ_HANDLER()</a>.</p>
<p>After executing this function the current instructions stream becomes the main thread. </p>
<dlclass="note"><dt><b>Note:</b></dt><dd>Interrupts should be still disabled when <code><aclass="el"href="group__system.html#gafe2c7de6567e98e487e009e81e3be10b"title="ChibiOS/RT initialization.">chSysInit()</a></code> is invoked and are internally enabled. </dd>
<dd>
The main thread is created with priority <code>NORMALPRIO</code>. </dd></dl>
<p>Definition at line <aclass="el"href="chsys_8c_source.html#l00073">73</a> of file <aclass="el"href="chsys_8c_source.html">chsys.c</a>.</p>
<areashape="rect"id="node3"href="group__threads.html#ga048e588238dd336c6059133b3d0c3435"title="Creates a new thread into a static memory area."alt=""coords="121,56,231,83"/><areashape="rect"id="node9"href="group__threads.html#ga4f6ae58bb3cedfc03aacde6d49e49d35"title="Initializes a thread structure."alt=""coords="427,81,499,108"/><areashape="rect"id="node11"href="group__memcore.html#ga4dc59d68e345710573420dca5daa241c"title="Low level memory manager initialization."alt=""coords="145,157,207,184"/><areashape="rect"id="node13"href="group__heaps.html#ga7e7a6625a49b6a560a47ae7575575264"title="Initializes the default heap."alt=""coords="144,208,208,235"/><areashape="rect"id="node20"href="group__core.html#gad8478867d6441d9d94f92819688f15c1"title="Port-related initialization code."alt=""coords="147,259,205,285"/><areashape="rect"id="node22"href="group__scheduler.html#gab258cc2856e5f6bb125907cc23358fbd"title="Scheduler initialization."alt=""coords="132,309,220,336"/><areashape="rect"id="node24"href="group__debug.html#ga5ef5d43e7c59f0ee9c490ea4e423c008"title="Trace circular buffer subsystem initialization."alt=""coords="143,360,209,387"/><areashape="rect"id="node26"href="group__time.html#ga3f64863d042de0de89233bfeabe39b62"title="Virtual Timers initialization."alt=""coords="151,411,201,437"/><areashape="rect"id="node5"href="group__scheduler.html#gae47a8819a21ef2d521124e76bfb37c95"title="Wakes up a thread."alt=""coords="280,5,379,32"/><areashape="rect"id="node7"href="group__threads.html#gac6de13d4044b32d3ae9e2066b5d4c030"title="Creates a new thread into a static memory area."alt=""coords="287,56,372,83"/><areashape="rect"id="node15"href="group__mutexes.html#gac55fe4d05aa6bbeb31594193d2e4d2b6"title="Initializes s Mutex structure."alt=""coords="297,183,361,209"/><areashape="rect"id="node17"href="group__semaphores.html#gafe8fc6155a871074e8017efd908b2c58"title="Initializes a semaphore with the specified counter value."alt=""coords="296,233,363,260"/></map>
<p>Handles time ticks for round robin preemption and timer increments. </p>
<p>Decrements the remaining time quantum of the running thread and preempts it when the quantum is used up. Increments system time and manages the timers.</p>
<dlclass="note"><dt><b>Note:</b></dt><dd>The frequency of the timer determines the system tick granularity and, together with the <code>CH_TIME_QUANTUM</code> macro, the round robin interval. </dd></dl>
<p>Definition at line <aclass="el"href="chsys_8c_source.html#l00111">111</a> of file <aclass="el"href="chsys_8c_source.html">chsys.c</a>.</p>
<p>References <aclass="el"href="group__time.html#ga3cc8210175b310d62e2043f752ccafee">chVTDoTickI</a>, <aclass="el"href="group__scheduler.html#ga1a5fddde56420e8accd0c09c1abb32a7">currp</a>, and <aclass="el"href="group__scheduler.html#ga752cd9dbf0dc458b8b532182836ca38d">rlist</a>.</p>
<p>Referenced by <aclass="el"href="group___a_r_m_c_mx___v6_m___c_o_r_e.html#ga13ce719bfc3197594c741fab5d09ae0c">CH_IRQ_HANDLER()</a>.</p>
Generated on Sun Oct 24 2010 09:40:46 for ChibiOS/RT by <ahref="http://www.doxygen.org/index.html"><imgsrc="doxygen.png"alt="doxygen"align="middle"border="0"></a> 1.7.1</small></address>