2010-08-10 03:11:02 +00:00
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
< html > < head > < meta http-equiv = "Content-Type" content = "text/html;charset=UTF-8" >
< title > ChibiOS/RT: Port Templates< / title >
< link href = "custom.css" rel = "stylesheet" type = "text/css" >
< link href = "tabs.css" rel = "stylesheet" type = "text/css" >
< / head > < body >
< table style = "text-align: center; width: 100%;" border = "0"
cellpadding="2" cellspacing="2">
< tbody >
< tr >
< td style = "width: 80px;" > < img alt = "ChibiOS/RT Logo" src = "logo_small.png" > < / td >
< td > < big > < big > ChibiOS/RT< / big > < / big > < br > < br > Architecture - Reference Manual - Guides< / td >
< td style = "width: 80px;" > < / td >
< / tr >
< / tbody >
< / table >
< hr size = "1" >
2010-11-22 05:53:37 +00:00
<!-- Generated by Doxygen 1.7.1 -->
2010-08-10 03:11:02 +00:00
< div class = "navigation" id = "top" >
< div class = "tabs" >
2010-11-22 05:53:37 +00:00
< ul class = "tablist" >
2010-08-10 03:11:02 +00:00
< li > < a href = "main.html" > < span > Main Page< / span > < / a > < / li >
< li > < a href = "modules.html" > < span > Modules< / span > < / a > < / li >
< li > < a href = "annotated.html" > < span > Data Structures< / span > < / a > < / li >
< li > < a href = "files.html" > < span > Files< / span > < / a > < / li >
< / ul >
< / div >
< / div >
2010-11-22 05:53:37 +00:00
< div class = "header" >
< div class = "summary" >
< a href = "#nested-classes" > Data Structures< / a > |
< a href = "#define-members" > Defines< / a > |
< a href = "#typedef-members" > Typedefs< / a > |
< a href = "#func-members" > Functions< / a > < / div >
< div class = "headertitle" >
2010-08-10 03:11:02 +00:00
< h1 > Port Templates< br / >
< small >
[< a class = "el" href = "group__kernel.html" > Kernel< / a > ]< / small >
2010-11-22 05:53:37 +00:00
< / h1 > < / div >
< / div >
< div class = "contents" >
2010-08-10 03:11:02 +00:00
< p > < div class = "dynheader" >
Collaboration diagram for Port Templates:< / div >
2010-11-22 05:53:37 +00:00
< div class = "dyncontent" >
< center > < table > < tr > < td > < img src = "group__core.png" border = "0" alt = "" usemap = "#group____core" / >
< map name = "group____core" id = "group____core" >
< area shape = "rect" id = "node1" href = "group__kernel.html" title = "Kernel" alt = "" coords = "5,5,59,32" / >
< / map >
< / td > < / tr > < / table > < / center >
2010-08-10 03:11:02 +00:00
< / div >
< / p >
< hr / > < a name = "_details" > < / a > < h2 > Description< / h2 >
< p > Non portable code templates. < / p >
2010-11-22 05:53:37 +00:00
< table class = "memberdecls" >
< tr > < td colspan = "2" > < h2 > < a name = "nested-classes" > < / a >
Data Structures< / h2 > < / td > < / tr >
2010-08-10 03:11:02 +00:00
< tr > < td class = "memItemLeft" align = "right" valign = "top" > struct < / td > < td class = "memItemRight" valign = "bottom" > < a class = "el" href = "structextctx.html" > extctx< / a > < / td > < / tr >
< tr > < td class = "mdescLeft" > < / td > < td class = "mdescRight" > Interrupt saved context. < a href = "structextctx.html#_details" > More...< / a > < br / > < / td > < / tr >
< tr > < td class = "memItemLeft" align = "right" valign = "top" > struct < / td > < td class = "memItemRight" valign = "bottom" > < a class = "el" href = "structintctx.html" > intctx< / a > < / td > < / tr >
< tr > < td class = "mdescLeft" > < / td > < td class = "mdescRight" > System saved context. < a href = "structintctx.html#_details" > More...< / a > < br / > < / td > < / tr >
< tr > < td class = "memItemLeft" align = "right" valign = "top" > struct < / td > < td class = "memItemRight" valign = "bottom" > < a class = "el" href = "structcontext.html" > context< / a > < / td > < / tr >
< tr > < td class = "mdescLeft" > < / td > < td class = "mdescRight" > Platform dependent part of the < code > < a class = "el" href = "struct_thread.html" title = "Structure representing a thread." > Thread< / a > < / code > structure. < a href = "structcontext.html#_details" > More...< / a > < br / > < / td > < / tr >
2010-11-22 05:53:37 +00:00
< tr > < td colspan = "2" > < h2 > < a name = "define-members" > < / a >
Defines< / h2 > < / td > < / tr >
2010-08-10 03:11:02 +00:00
< tr > < td class = "memItemLeft" align = "right" valign = "top" > #define < / td > < td class = "memItemRight" valign = "bottom" > < a class = "el" href = "group__core.html#ga13c93f367fac1ed91eb714c5995ae484" > CH_ARCHITECTURE_XXX< / a > < / td > < / tr >
< tr > < td class = "mdescLeft" > < / td > < td class = "mdescRight" > Unique macro for the implemented architecture. < a href = "#ga13c93f367fac1ed91eb714c5995ae484" > < / a > < br / > < / td > < / tr >
< tr > < td class = "memItemLeft" align = "right" valign = "top" > #define < / td > < td class = "memItemRight" valign = "bottom" > < a class = "el" href = "group__core.html#gaee128c531d64d5a635def6857fef3179" > CH_ARCHITECTURE_NAME< / a > " " < / td > < / tr >
< tr > < td class = "mdescLeft" > < / td > < td class = "mdescRight" > Name of the implemented architecture. < a href = "#gaee128c531d64d5a635def6857fef3179" > < / a > < br / > < / td > < / tr >
< tr > < td class = "memItemLeft" align = "right" valign = "top" > #define < / td > < td class = "memItemRight" valign = "bottom" > < a class = "el" href = "group__core.html#gabe8b979d1a33a1b43fc1c1f2967ea6f0" > CH_ARCHITECTURE_VARIANT_NAME< / a > " " < / td > < / tr >
< tr > < td class = "mdescLeft" > < / td > < td class = "mdescRight" > Name of the architecture variant (optional). < a href = "#gabe8b979d1a33a1b43fc1c1f2967ea6f0" > < / a > < br / > < / td > < / tr >
< tr > < td class = "memItemLeft" align = "right" valign = "top" > #define < / td > < td class = "memItemRight" valign = "bottom" > < a class = "el" href = "group__core.html#gaf5777aa68e4c4786b577953c7237a95d" > SETUP_CONTEXT< / a > (workspace, wsize, pf, arg)< / td > < / tr >
2010-11-22 05:53:37 +00:00
< tr > < td class = "mdescLeft" > < / td > < td class = "mdescRight" > Platform dependent part of the < code > chThdInit()< / code > API. < a href = "#gaf5777aa68e4c4786b577953c7237a95d" > < / a > < br / > < / td > < / tr >
< tr > < td class = "memItemLeft" align = "right" valign = "top" > #define < / td > < td class = "memItemRight" valign = "bottom" > < a class = "el" href = "group__core.html#gaf470de5c7ee71a407e5c7e0c5825af35" > IDLE_THREAD_STACK_SIZE< / a > 0< / td > < / tr >
< tr > < td class = "mdescLeft" > < / td > < td class = "mdescRight" > Stack size for the system idle thread. < a href = "#gaf470de5c7ee71a407e5c7e0c5825af35" > < / a > < br / > < / td > < / tr >
2010-08-10 03:11:02 +00:00
< tr > < td class = "memItemLeft" align = "right" valign = "top" > #define < / td > < td class = "memItemRight" valign = "bottom" > < a class = "el" href = "group__core.html#ga010023936d16c8077e8cafa28ea3fc25" > INT_REQUIRED_STACK< / a > 0< / td > < / tr >
2010-11-22 05:53:37 +00:00
< tr > < td class = "mdescLeft" > < / td > < td class = "mdescRight" > Per-thread stack overhead for interrupts servicing. < a href = "#ga010023936d16c8077e8cafa28ea3fc25" > < / a > < br / > < / td > < / tr >
2010-08-10 03:11:02 +00:00
< tr > < td class = "memItemLeft" align = "right" valign = "top" > #define < / td > < td class = "memItemRight" valign = "bottom" > < a class = "el" href = "group__core.html#gaae5413761dbdc6dd267ba0d43a9098ac" > STACK_ALIGN< / a > (n) ((((n) - 1) | (sizeof(< a class = "el" href = "structstkalign__t.html" > stkalign_t< / a > ) - 1)) + 1)< / td > < / tr >
< tr > < td class = "mdescLeft" > < / td > < td class = "mdescRight" > Enforces a correct alignment for a stack area size value. < a href = "#gaae5413761dbdc6dd267ba0d43a9098ac" > < / a > < br / > < / td > < / tr >
< tr > < td class = "memItemLeft" align = "right" valign = "top" > #define < / td > < td class = "memItemRight" valign = "bottom" > < a class = "el" href = "group__core.html#gaf7a83c1c8bde96b77299c36dc598d33d" > THD_WA_SIZE< / a > (n)< / td > < / tr >
< tr > < td class = "mdescLeft" > < / td > < td class = "mdescRight" > Computes the thread working area global size. < a href = "#gaf7a83c1c8bde96b77299c36dc598d33d" > < / a > < br / > < / td > < / tr >
< tr > < td class = "memItemLeft" align = "right" valign = "top" > #define < / td > < td class = "memItemRight" valign = "bottom" > < a class = "el" href = "group__core.html#gac8b681d521d3b6c25e7a0304674732c9" > WORKING_AREA< / a > (s, n) < a class = "el" href = "structstkalign__t.html" > stkalign_t< / a > s[THD_WA_SIZE(n) / sizeof(< a class = "el" href = "structstkalign__t.html" > stkalign_t< / a > )]< / td > < / tr >
< tr > < td class = "mdescLeft" > < / td > < td class = "mdescRight" > Static working area allocation. < a href = "#gac8b681d521d3b6c25e7a0304674732c9" > < / a > < br / > < / td > < / tr >
< tr > < td class = "memItemLeft" align = "right" valign = "top" > #define < / td > < td class = "memItemRight" valign = "bottom" > < a class = "el" href = "group__core.html#gaf1bf4fcf135197fa2b8faf1935a25186" > PORT_IRQ_PROLOGUE< / a > ()< / td > < / tr >
< tr > < td class = "mdescLeft" > < / td > < td class = "mdescRight" > IRQ prologue code. < a href = "#gaf1bf4fcf135197fa2b8faf1935a25186" > < / a > < br / > < / td > < / tr >
< tr > < td class = "memItemLeft" align = "right" valign = "top" > #define < / td > < td class = "memItemRight" valign = "bottom" > < a class = "el" href = "group__core.html#ga65dc6ecfb3cd68961f7abde3a25c2260" > PORT_IRQ_EPILOGUE< / a > ()< / td > < / tr >
< tr > < td class = "mdescLeft" > < / td > < td class = "mdescRight" > IRQ epilogue code. < a href = "#ga65dc6ecfb3cd68961f7abde3a25c2260" > < / a > < br / > < / td > < / tr >
< tr > < td class = "memItemLeft" align = "right" valign = "top" > #define < / td > < td class = "memItemRight" valign = "bottom" > < a class = "el" href = "group__core.html#gae312af21c95e70c459af69c298eb0f9a" > PORT_IRQ_HANDLER< / a > (id) void id(void)< / td > < / tr >
< tr > < td class = "mdescLeft" > < / td > < td class = "mdescRight" > IRQ handler function declaration. < a href = "#gae312af21c95e70c459af69c298eb0f9a" > < / a > < br / > < / td > < / tr >
< tr > < td class = "memItemLeft" align = "right" valign = "top" > #define < / td > < td class = "memItemRight" valign = "bottom" > < a class = "el" href = "group__core.html#ga14d1e819dc6e26882fce8ace5e8cfe5c" > PORT_FAST_IRQ_HANDLER< / a > (id) void id(void)< / td > < / tr >
< tr > < td class = "mdescLeft" > < / td > < td class = "mdescRight" > Fast IRQ handler function declaration. < a href = "#ga14d1e819dc6e26882fce8ace5e8cfe5c" > < / a > < br / > < / td > < / tr >
2010-11-22 05:53:37 +00:00
< tr > < td colspan = "2" > < h2 > < a name = "typedef-members" > < / a >
Typedefs< / h2 > < / td > < / tr >
2010-08-10 03:11:02 +00:00
< tr > < td class = "memItemLeft" align = "right" valign = "top" > typedef < a class = "el" href = "group___s_t_m8___c_o_r_e.html#gaba7bc1797add20fe3efdf37ced1182c5" > uint8_t< / a > < / td > < td class = "memItemRight" valign = "bottom" > < a class = "el" href = "group__core.html#gadae302cd6125c8c0d3da27caa5f41657" > stkalign_t< / a > < / td > < / tr >
< tr > < td class = "mdescLeft" > < / td > < td class = "mdescRight" > Base type for stack and memory alignment. < a href = "#gadae302cd6125c8c0d3da27caa5f41657" > < / a > < br / > < / td > < / tr >
2010-11-22 05:53:37 +00:00
< tr > < td colspan = "2" > < h2 > < a name = "func-members" > < / a >
Functions< / h2 > < / td > < / tr >
2010-08-10 03:11:02 +00:00
< tr > < td class = "memItemLeft" align = "right" valign = "top" > void < / td > < td class = "memItemRight" valign = "bottom" > < a class = "el" href = "group__core.html#gad8478867d6441d9d94f92819688f15c1" > port_init< / a > (void)< / td > < / tr >
< tr > < td class = "mdescLeft" > < / td > < td class = "mdescRight" > Port-related initialization code. < a href = "#gad8478867d6441d9d94f92819688f15c1" > < / a > < br / > < / td > < / tr >
< tr > < td class = "memItemLeft" align = "right" valign = "top" > void < / td > < td class = "memItemRight" valign = "bottom" > < a class = "el" href = "group__core.html#gad9aed313dfdafb6e9c58691af424fcb4" > port_lock< / a > (void)< / td > < / tr >
< tr > < td class = "mdescLeft" > < / td > < td class = "mdescRight" > Kernel-lock action. < a href = "#gad9aed313dfdafb6e9c58691af424fcb4" > < / a > < br / > < / td > < / tr >
< tr > < td class = "memItemLeft" align = "right" valign = "top" > void < / td > < td class = "memItemRight" valign = "bottom" > < a class = "el" href = "group__core.html#ga242f36ee65eb9b19258654f7a3b63f87" > port_unlock< / a > (void)< / td > < / tr >
< tr > < td class = "mdescLeft" > < / td > < td class = "mdescRight" > Kernel-unlock action. < a href = "#ga242f36ee65eb9b19258654f7a3b63f87" > < / a > < br / > < / td > < / tr >
< tr > < td class = "memItemLeft" align = "right" valign = "top" > void < / td > < td class = "memItemRight" valign = "bottom" > < a class = "el" href = "group__core.html#gad28405e9f7f53722447e674ff80c3ac9" > port_lock_from_isr< / a > (void)< / td > < / tr >
< tr > < td class = "mdescLeft" > < / td > < td class = "mdescRight" > Kernel-lock action from an interrupt handler. < a href = "#gad28405e9f7f53722447e674ff80c3ac9" > < / a > < br / > < / td > < / tr >
< tr > < td class = "memItemLeft" align = "right" valign = "top" > void < / td > < td class = "memItemRight" valign = "bottom" > < a class = "el" href = "group__core.html#ga34dcbe2bba4aec9d2cfdc5cb5bebd4fe" > port_unlock_from_isr< / a > (void)< / td > < / tr >
< tr > < td class = "mdescLeft" > < / td > < td class = "mdescRight" > Kernel-unlock action from an interrupt handler. < a href = "#ga34dcbe2bba4aec9d2cfdc5cb5bebd4fe" > < / a > < br / > < / td > < / tr >
< tr > < td class = "memItemLeft" align = "right" valign = "top" > void < / td > < td class = "memItemRight" valign = "bottom" > < a class = "el" href = "group__core.html#ga0544046d4df19935e29784adbd848465" > port_disable< / a > (void)< / td > < / tr >
< tr > < td class = "mdescLeft" > < / td > < td class = "mdescRight" > Disables all the interrupt sources. < a href = "#ga0544046d4df19935e29784adbd848465" > < / a > < br / > < / td > < / tr >
< tr > < td class = "memItemLeft" align = "right" valign = "top" > void < / td > < td class = "memItemRight" valign = "bottom" > < a class = "el" href = "group__core.html#gaaae987909015c5d3c350d8866216667c" > port_suspend< / a > (void)< / td > < / tr >
< tr > < td class = "mdescLeft" > < / td > < td class = "mdescRight" > Disables the interrupt sources below kernel-level priority. < a href = "#gaaae987909015c5d3c350d8866216667c" > < / a > < br / > < / td > < / tr >
< tr > < td class = "memItemLeft" align = "right" valign = "top" > void < / td > < td class = "memItemRight" valign = "bottom" > < a class = "el" href = "group__core.html#ga1d876d22b4a101a6cdda587a4afa0a67" > port_enable< / a > (void)< / td > < / tr >
< tr > < td class = "mdescLeft" > < / td > < td class = "mdescRight" > Enables all the interrupt sources. < a href = "#ga1d876d22b4a101a6cdda587a4afa0a67" > < / a > < br / > < / td > < / tr >
< tr > < td class = "memItemLeft" align = "right" valign = "top" > void < / td > < td class = "memItemRight" valign = "bottom" > < a class = "el" href = "group__core.html#ga1ebf4a8993a4714d7ff98cc56fd343d6" > port_wait_for_interrupt< / a > (void)< / td > < / tr >
< tr > < td class = "mdescLeft" > < / td > < td class = "mdescRight" > Enters an architecture-dependent IRQ-waiting mode. < a href = "#ga1ebf4a8993a4714d7ff98cc56fd343d6" > < / a > < br / > < / td > < / tr >
< tr > < td class = "memItemLeft" align = "right" valign = "top" > void < / td > < td class = "memItemRight" valign = "bottom" > < a class = "el" href = "group__core.html#gaffa627cc34d473a5c1b00810798c1592" > port_halt< / a > (void)< / td > < / tr >
< tr > < td class = "mdescLeft" > < / td > < td class = "mdescRight" > Halts the system. < a href = "#gaffa627cc34d473a5c1b00810798c1592" > < / a > < br / > < / td > < / tr >
< tr > < td class = "memItemLeft" align = "right" valign = "top" > void < / td > < td class = "memItemRight" valign = "bottom" > < a class = "el" href = "group__core.html#ga15f282e0911ec832d2b12ced3170ba90" > port_switch< / a > (< a class = "el" href = "struct_thread.html" > Thread< / a > *ntp, < a class = "el" href = "struct_thread.html" > Thread< / a > *otp)< / td > < / tr >
< tr > < td class = "mdescLeft" > < / td > < td class = "mdescRight" > Performs a context switch between two threads. < a href = "#ga15f282e0911ec832d2b12ced3170ba90" > < / a > < br / > < / td > < / tr >
< / table >
< hr / > < h2 > Define Documentation< / h2 >
< a class = "anchor" id = "ga13c93f367fac1ed91eb714c5995ae484" > < / a > <!-- doxytag: member="kernel/templates/chcore.h::CH_ARCHITECTURE_XXX" ref="ga13c93f367fac1ed91eb714c5995ae484" args="" -->
< div class = "memitem" >
< div class = "memproto" >
< table class = "memname" >
< tr >
< td class = "memname" > #define CH_ARCHITECTURE_XXX< / td >
< / tr >
< / table >
< / div >
< div class = "memdoc" >
< p > Unique macro for the implemented architecture. < / p >
< p > Definition at line < a class = "el" href = "kernel_2templates_2chcore_8h_source.html#l00043" > 43< / a > of file < a class = "el" href = "kernel_2templates_2chcore_8h_source.html" > kernel/templates/chcore.h< / a > .< / p >
< / div >
< / div >
< a class = "anchor" id = "gaee128c531d64d5a635def6857fef3179" > < / a > <!-- doxytag: member="kernel/templates/chcore.h::CH_ARCHITECTURE_NAME" ref="gaee128c531d64d5a635def6857fef3179" args="" -->
< div class = "memitem" >
< div class = "memproto" >
< table class = "memname" >
< tr >
< td class = "memname" > #define CH_ARCHITECTURE_NAME " " < / td >
< / tr >
< / table >
< / div >
< div class = "memdoc" >
< p > Name of the implemented architecture. < / p >
< p > Definition at line < a class = "el" href = "kernel_2templates_2chcore_8h_source.html#l00048" > 48< / a > of file < a class = "el" href = "kernel_2templates_2chcore_8h_source.html" > kernel/templates/chcore.h< / a > .< / p >
< / div >
< / div >
< a class = "anchor" id = "gabe8b979d1a33a1b43fc1c1f2967ea6f0" > < / a > <!-- doxytag: member="kernel/templates/chcore.h::CH_ARCHITECTURE_VARIANT_NAME" ref="gabe8b979d1a33a1b43fc1c1f2967ea6f0" args="" -->
< div class = "memitem" >
< div class = "memproto" >
< table class = "memname" >
< tr >
< td class = "memname" > #define CH_ARCHITECTURE_VARIANT_NAME " " < / td >
< / tr >
< / table >
< / div >
< div class = "memdoc" >
< p > Name of the architecture variant (optional). < / p >
< p > Definition at line < a class = "el" href = "kernel_2templates_2chcore_8h_source.html#l00053" > 53< / a > of file < a class = "el" href = "kernel_2templates_2chcore_8h_source.html" > kernel/templates/chcore.h< / a > .< / p >
< / div >
< / div >
< a class = "anchor" id = "gaf5777aa68e4c4786b577953c7237a95d" > < / a > <!-- doxytag: member="kernel/templates/chcore.h::SETUP_CONTEXT" ref="gaf5777aa68e4c4786b577953c7237a95d" args="(workspace, wsize, pf, arg)" -->
< div class = "memitem" >
< div class = "memproto" >
< table class = "memname" >
< tr >
< td class = "memname" > #define SETUP_CONTEXT< / td >
< td > (< / td >
2010-11-22 05:53:37 +00:00
< td class = "paramtype" > < / td >
< td class = "paramname" > workspace, < / td >
2010-08-10 03:11:02 +00:00
< / tr >
< tr >
< td class = "paramkey" > < / td >
< td > < / td >
2010-11-22 05:53:37 +00:00
< td class = "paramtype" > < / td >
< td class = "paramname" > wsize, < / td >
2010-08-10 03:11:02 +00:00
< / tr >
< tr >
< td class = "paramkey" > < / td >
< td > < / td >
2010-11-22 05:53:37 +00:00
< td class = "paramtype" > < / td >
< td class = "paramname" > pf, < / td >
2010-08-10 03:11:02 +00:00
< / tr >
< tr >
< td class = "paramkey" > < / td >
< td > < / td >
2010-11-22 05:53:37 +00:00
< td class = "paramtype" > < / td >
< td class = "paramname" > arg< / td > < td > < / td >
< / tr >
< tr >
2010-08-10 03:11:02 +00:00
< td > < / td >
2010-11-22 05:53:37 +00:00
< td > )< / td >
< td > < / td > < td > < / td > < td > < / td >
2010-08-10 03:11:02 +00:00
< / tr >
< / table >
< / div >
< div class = "memdoc" >
< b > Value:< / b > < div class = "fragment" > < pre class = "fragment" > { \
}
< / pre > < / div >
2010-11-22 05:53:37 +00:00
< p > Platform dependent part of the < code > chThdInit()< / code > API. < / p >
2010-08-10 03:11:02 +00:00
< p > This code usually setup the context switching frame represented by an < code > intctx< / code > structure. < / p >
< p > Definition at line < a class = "el" href = "kernel_2templates_2chcore_8h_source.html#l00090" > 90< / a > of file < a class = "el" href = "kernel_2templates_2chcore_8h_source.html" > kernel/templates/chcore.h< / a > .< / p >
2010-11-22 05:53:37 +00:00
< p > Referenced by < a class = "el" href = "group__threads.html#gac6de13d4044b32d3ae9e2066b5d4c030" > chThdCreateI()< / a > .< / p >
< / div >
< / div >
< a class = "anchor" id = "gaf470de5c7ee71a407e5c7e0c5825af35" > < / a > <!-- doxytag: member="kernel/templates/chcore.h::IDLE_THREAD_STACK_SIZE" ref="gaf470de5c7ee71a407e5c7e0c5825af35" args="" -->
< div class = "memitem" >
< div class = "memproto" >
< table class = "memname" >
< tr >
< td class = "memname" > #define IDLE_THREAD_STACK_SIZE 0< / td >
< / tr >
< / table >
< / div >
< div class = "memdoc" >
< p > Stack size for the system idle thread. < / p >
< p > This size depends on the idle thread implementation, usually the idle thread should take no more space than those reserved by < code > INT_REQUIRED_STACK< / code > . < / p >
< p > Definition at line < a class = "el" href = "kernel_2templates_2chcore_8h_source.html#l00100" > 100< / a > of file < a class = "el" href = "kernel_2templates_2chcore_8h_source.html" > kernel/templates/chcore.h< / a > .< / p >
2010-08-10 03:11:02 +00:00
< / div >
< / div >
< a class = "anchor" id = "ga010023936d16c8077e8cafa28ea3fc25" > < / a > <!-- doxytag: member="kernel/templates/chcore.h::INT_REQUIRED_STACK" ref="ga010023936d16c8077e8cafa28ea3fc25" args="" -->
< div class = "memitem" >
< div class = "memproto" >
< table class = "memname" >
< tr >
< td class = "memname" > #define INT_REQUIRED_STACK 0< / td >
< / tr >
< / table >
< / div >
< div class = "memdoc" >
2010-11-22 05:53:37 +00:00
< p > Per-thread stack overhead for interrupts servicing. < / p >
2010-08-10 03:11:02 +00:00
< p > This constant is used in the calculation of the correct working area size. This value can be zero on those architecture where there is a separate interrupt stack and the stack space between < code > intctx< / code > and < code > extctx< / code > is known to be zero. < / p >
< p > Definition at line < a class = "el" href = "kernel_2templates_2chcore_8h_source.html#l00112" > 112< / a > of file < a class = "el" href = "kernel_2templates_2chcore_8h_source.html" > kernel/templates/chcore.h< / a > .< / p >
< / div >
< / div >
< a class = "anchor" id = "gaae5413761dbdc6dd267ba0d43a9098ac" > < / a > <!-- doxytag: member="kernel/templates/chcore.h::STACK_ALIGN" ref="gaae5413761dbdc6dd267ba0d43a9098ac" args="(n)" -->
< div class = "memitem" >
< div class = "memproto" >
< table class = "memname" >
< tr >
< td class = "memname" > #define STACK_ALIGN< / td >
< td > (< / td >
2010-11-22 05:53:37 +00:00
< td class = "paramtype" > < / td >
< td class = "paramname" > n< / td >
2010-08-10 03:11:02 +00:00
< td > ) < / td >
< td > ((((n) - 1) | (sizeof(< a class = "el" href = "structstkalign__t.html" > stkalign_t< / a > ) - 1)) + 1)< / td >
< / tr >
< / table >
< / div >
< div class = "memdoc" >
< p > Enforces a correct alignment for a stack area size value. < / p >
< p > Definition at line < a class = "el" href = "kernel_2templates_2chcore_8h_source.html#l00118" > 118< / a > of file < a class = "el" href = "kernel_2templates_2chcore_8h_source.html" > kernel/templates/chcore.h< / a > .< / p >
< / div >
< / div >
< a class = "anchor" id = "gaf7a83c1c8bde96b77299c36dc598d33d" > < / a > <!-- doxytag: member="kernel/templates/chcore.h::THD_WA_SIZE" ref="gaf7a83c1c8bde96b77299c36dc598d33d" args="(n)" -->
< div class = "memitem" >
< div class = "memproto" >
< table class = "memname" >
< tr >
< td class = "memname" > #define THD_WA_SIZE< / td >
< td > (< / td >
2010-11-22 05:53:37 +00:00
< td class = "paramtype" > < / td >
< td class = "paramname" > n< / td >
2010-08-10 03:11:02 +00:00
< td > ) < / td >
< td > < / td >
< / tr >
< / table >
< / div >
< div class = "memdoc" >
< b > Value:< / b > < div class = "fragment" > < pre class = "fragment" > < a class = "code" href = "group__core.html#gaae5413761dbdc6dd267ba0d43a9098ac" title = "Enforces a correct alignment for a stack area size value." > STACK_ALIGN< / a > (< span class = "keyword" > sizeof< / span > (< a class = "code" href = "struct_thread.html" title = "Structure representing a thread." > Thread< / a > ) + \
< span class = "keyword" > sizeof< / span > (< span class = "keyword" > struct< / span > < a class = "code" href = "structintctx.html" title = "System saved context." > intctx< / a > ) + \
< span class = "keyword" > sizeof< / span > (< span class = "keyword" > struct< / span > < a class = "code" href = "structextctx.html" title = "Interrupt saved context." > extctx< / a > ) + \
2010-11-22 05:53:37 +00:00
(n) + (< a class = "code" href = "group__core.html#ga010023936d16c8077e8cafa28ea3fc25" title = "Per-thread stack overhead for interrupts servicing." > INT_REQUIRED_STACK< / a > ))
2010-08-10 03:11:02 +00:00
< / pre > < / div >
< p > Computes the thread working area global size. < / p >
< p > Definition at line < a class = "el" href = "kernel_2templates_2chcore_8h_source.html#l00123" > 123< / a > of file < a class = "el" href = "kernel_2templates_2chcore_8h_source.html" > kernel/templates/chcore.h< / a > .< / p >
2010-11-22 05:53:37 +00:00
< p > Referenced by < a class = "el" href = "group__threads.html#gac6de13d4044b32d3ae9e2066b5d4c030" > chThdCreateI()< / a > .< / p >
2010-08-10 03:11:02 +00:00
< / div >
< / div >
< a class = "anchor" id = "gac8b681d521d3b6c25e7a0304674732c9" > < / a > <!-- doxytag: member="kernel/templates/chcore.h::WORKING_AREA" ref="gac8b681d521d3b6c25e7a0304674732c9" args="(s, n)" -->
< div class = "memitem" >
< div class = "memproto" >
< table class = "memname" >
< tr >
< td class = "memname" > #define WORKING_AREA< / td >
< td > (< / td >
2010-11-22 05:53:37 +00:00
< td class = "paramtype" > < / td >
< td class = "paramname" > s, < / td >
2010-08-10 03:11:02 +00:00
< / tr >
< tr >
< td class = "paramkey" > < / td >
< td > < / td >
2010-11-22 05:53:37 +00:00
< td class = "paramtype" > < / td >
< td class = "paramname" > n< / td > < td > < / td >
< / tr >
< tr >
< td > < / td >
< td > )< / td >
< td > < / td > < td > < / td > < td > < a class = "el" href = "structstkalign__t.html" > stkalign_t< / a > s[THD_WA_SIZE(n) / sizeof(< a class = "el" href = "structstkalign__t.html" > stkalign_t< / a > )]< / td >
2010-08-10 03:11:02 +00:00
< / tr >
< / table >
< / div >
< div class = "memdoc" >
< p > Static working area allocation. < / p >
< p > This macro is used to allocate a static thread working area aligned as both position and size. < / p >
< p > Definition at line < a class = "el" href = "kernel_2templates_2chcore_8h_source.html#l00133" > 133< / a > of file < a class = "el" href = "kernel_2templates_2chcore_8h_source.html" > kernel/templates/chcore.h< / a > .< / p >
< / div >
< / div >
< a class = "anchor" id = "gaf1bf4fcf135197fa2b8faf1935a25186" > < / a > <!-- doxytag: member="kernel/templates/chcore.h::PORT_IRQ_PROLOGUE" ref="gaf1bf4fcf135197fa2b8faf1935a25186" args="()" -->
< div class = "memitem" >
< div class = "memproto" >
< table class = "memname" >
< tr >
< td class = "memname" > #define PORT_IRQ_PROLOGUE< / td >
< td > (< / td >
< td class = "paramname" > < / td >
< td > ) < / td >
< td > < / td >
< / tr >
< / table >
< / div >
< div class = "memdoc" >
< p > IRQ prologue code. < / p >
< p > This macro must be inserted at the start of all IRQ handlers enabled to invoke system APIs. < / p >
< p > Definition at line < a class = "el" href = "kernel_2templates_2chcore_8h_source.html#l00140" > 140< / a > of file < a class = "el" href = "kernel_2templates_2chcore_8h_source.html" > kernel/templates/chcore.h< / a > .< / p >
< / div >
< / div >
< a class = "anchor" id = "ga65dc6ecfb3cd68961f7abde3a25c2260" > < / a > <!-- doxytag: member="kernel/templates/chcore.h::PORT_IRQ_EPILOGUE" ref="ga65dc6ecfb3cd68961f7abde3a25c2260" args="()" -->
< div class = "memitem" >
< div class = "memproto" >
< table class = "memname" >
< tr >
< td class = "memname" > #define PORT_IRQ_EPILOGUE< / td >
< td > (< / td >
< td class = "paramname" > < / td >
< td > ) < / td >
< td > < / td >
< / tr >
< / table >
< / div >
< div class = "memdoc" >
< p > IRQ epilogue code. < / p >
< p > This macro must be inserted at the end of all IRQ handlers enabled to invoke system APIs. < / p >
< p > Definition at line < a class = "el" href = "kernel_2templates_2chcore_8h_source.html#l00147" > 147< / a > of file < a class = "el" href = "kernel_2templates_2chcore_8h_source.html" > kernel/templates/chcore.h< / a > .< / p >
< / div >
< / div >
< a class = "anchor" id = "gae312af21c95e70c459af69c298eb0f9a" > < / a > <!-- doxytag: member="kernel/templates/chcore.h::PORT_IRQ_HANDLER" ref="gae312af21c95e70c459af69c298eb0f9a" args="(id)" -->
< div class = "memitem" >
< div class = "memproto" >
< table class = "memname" >
< tr >
< td class = "memname" > #define PORT_IRQ_HANDLER< / td >
< td > (< / td >
2010-11-22 05:53:37 +00:00
< td class = "paramtype" > < / td >
< td class = "paramname" > id< / td >
2010-08-10 03:11:02 +00:00
< td > ) < / td >
< td > void id(void)< / td >
< / tr >
< / table >
< / div >
< div class = "memdoc" >
< p > IRQ handler function declaration. < / p >
< dl class = "note" > < dt > < b > Note:< / b > < / dt > < dd > < code > id< / code > can be a function name or a vector number depending on the port implementation. < / dd > < / dl >
< p > Definition at line < a class = "el" href = "kernel_2templates_2chcore_8h_source.html#l00154" > 154< / a > of file < a class = "el" href = "kernel_2templates_2chcore_8h_source.html" > kernel/templates/chcore.h< / a > .< / p >
< / div >
< / div >
< a class = "anchor" id = "ga14d1e819dc6e26882fce8ace5e8cfe5c" > < / a > <!-- doxytag: member="kernel/templates/chcore.h::PORT_FAST_IRQ_HANDLER" ref="ga14d1e819dc6e26882fce8ace5e8cfe5c" args="(id)" -->
< div class = "memitem" >
< div class = "memproto" >
< table class = "memname" >
< tr >
< td class = "memname" > #define PORT_FAST_IRQ_HANDLER< / td >
< td > (< / td >
2010-11-22 05:53:37 +00:00
< td class = "paramtype" > < / td >
< td class = "paramname" > id< / td >
2010-08-10 03:11:02 +00:00
< td > ) < / td >
< td > void id(void)< / td >
< / tr >
< / table >
< / div >
< div class = "memdoc" >
< p > Fast IRQ handler function declaration. < / p >
< dl class = "note" > < dt > < b > Note:< / b > < / dt > < dd > < code > id< / code > can be a function name or a vector number depending on the port implementation. < / dd >
< dd >
Not all architectures support fast interrupts, in this case this macro must be omitted. < / dd > < / dl >
< p > Definition at line < a class = "el" href = "kernel_2templates_2chcore_8h_source.html#l00163" > 163< / a > of file < a class = "el" href = "kernel_2templates_2chcore_8h_source.html" > kernel/templates/chcore.h< / a > .< / p >
< / div >
< / div >
< hr / > < h2 > Typedef Documentation< / h2 >
< a class = "anchor" id = "gadae302cd6125c8c0d3da27caa5f41657" > < / a > <!-- doxytag: member="kernel/templates/chcore.h::stkalign_t" ref="gadae302cd6125c8c0d3da27caa5f41657" args="" -->
< div class = "memitem" >
< div class = "memproto" >
< table class = "memname" >
< tr >
< td class = "memname" > typedef < a class = "el" href = "group___s_t_m8___c_o_r_e.html#gaba7bc1797add20fe3efdf37ced1182c5" > uint8_t< / a > < a class = "el" href = "structstkalign__t.html" > stkalign_t< / a > < / td >
< / tr >
< / table >
< / div >
< div class = "memdoc" >
< p > Base type for stack and memory alignment. < / p >
< p > Definition at line < a class = "el" href = "kernel_2templates_2chcore_8h_source.html#l00058" > 58< / a > of file < a class = "el" href = "kernel_2templates_2chcore_8h_source.html" > kernel/templates/chcore.h< / a > .< / p >
< / div >
< / div >
< hr / > < h2 > Function Documentation< / h2 >
< a class = "anchor" id = "gad8478867d6441d9d94f92819688f15c1" > < / a > <!-- doxytag: member="kernel/templates/chcore.c::port_init" ref="gad8478867d6441d9d94f92819688f15c1" args="(void)" -->
< div class = "memitem" >
< div class = "memproto" >
< table class = "memname" >
< tr >
< td class = "memname" > void port_init < / td >
< td > (< / td >
< td class = "paramtype" > void < / td >
< td class = "paramname" > < / td >
< td > ) < / td >
< td > < / td >
< / tr >
< / table >
< / div >
< div class = "memdoc" >
< p > Port-related initialization code. < / p >
< dl class = "note" > < dt > < b > Note:< / b > < / dt > < dd > This function is usually empty. < / dd > < / dl >
2010-11-22 05:53:37 +00:00
< p > Referenced by < a class = "el" href = "group__system.html#gafe2c7de6567e98e487e009e81e3be10b" > chSysInit()< / a > .< / p >
2010-08-10 03:11:02 +00:00
< / div >
< / div >
< a class = "anchor" id = "gad9aed313dfdafb6e9c58691af424fcb4" > < / a > <!-- doxytag: member="kernel/templates/chcore.c::port_lock" ref="gad9aed313dfdafb6e9c58691af424fcb4" args="(void)" -->
< div class = "memitem" >
< div class = "memproto" >
< table class = "memname" >
< tr >
< td class = "memname" > void port_lock < / td >
< td > (< / td >
< td class = "paramtype" > void < / td >
< td class = "paramname" > < / td >
< td > ) < / td >
< td > < / td >
< / tr >
< / table >
< / div >
< div class = "memdoc" >
< p > Kernel-lock action. < / p >
< p > Usually this function just disables interrupts but may perform more actions. < / p >
< / div >
< / div >
< a class = "anchor" id = "ga242f36ee65eb9b19258654f7a3b63f87" > < / a > <!-- doxytag: member="kernel/templates/chcore.c::port_unlock" ref="ga242f36ee65eb9b19258654f7a3b63f87" args="(void)" -->
< div class = "memitem" >
< div class = "memproto" >
< table class = "memname" >
< tr >
< td class = "memname" > void port_unlock < / td >
< td > (< / td >
< td class = "paramtype" > void < / td >
< td class = "paramname" > < / td >
< td > ) < / td >
< td > < / td >
< / tr >
< / table >
< / div >
< div class = "memdoc" >
< p > Kernel-unlock action. < / p >
< p > Usually this function just disables interrupts but may perform more actions. < / p >
< / div >
< / div >
< a class = "anchor" id = "gad28405e9f7f53722447e674ff80c3ac9" > < / a > <!-- doxytag: member="kernel/templates/chcore.c::port_lock_from_isr" ref="gad28405e9f7f53722447e674ff80c3ac9" args="(void)" -->
< div class = "memitem" >
< div class = "memproto" >
< table class = "memname" >
< tr >
< td class = "memname" > void port_lock_from_isr < / td >
< td > (< / td >
< td class = "paramtype" > void < / td >
< td class = "paramname" > < / td >
< td > ) < / td >
< td > < / td >
< / tr >
< / table >
< / div >
< div class = "memdoc" >
< p > Kernel-lock action from an interrupt handler. < / p >
< p > This function is invoked before invoking I-class APIs from interrupt handlers. The implementation is architecture dependent, in its simplest form it is void. < / p >
< / div >
< / div >
< a class = "anchor" id = "ga34dcbe2bba4aec9d2cfdc5cb5bebd4fe" > < / a > <!-- doxytag: member="kernel/templates/chcore.c::port_unlock_from_isr" ref="ga34dcbe2bba4aec9d2cfdc5cb5bebd4fe" args="(void)" -->
< div class = "memitem" >
< div class = "memproto" >
< table class = "memname" >
< tr >
< td class = "memname" > void port_unlock_from_isr < / td >
< td > (< / td >
< td class = "paramtype" > void < / td >
< td class = "paramname" > < / td >
< td > ) < / td >
< td > < / td >
< / tr >
< / table >
< / div >
< div class = "memdoc" >
< p > Kernel-unlock action from an interrupt handler. < / p >
< p > This function is invoked after invoking I-class APIs from interrupt handlers. The implementation is architecture dependent, in its simplest form it is void. < / p >
2010-11-22 05:53:37 +00:00
< p > Referenced by < a class = "el" href = "group___a_r_m_c_mx___v7_m___c_o_r_e.html#gaa870f7fd669dc9419dda0f9972ecc0d8" > SVCallVector()< / a > .< / p >
2010-08-10 03:11:02 +00:00
< / div >
< / div >
< a class = "anchor" id = "ga0544046d4df19935e29784adbd848465" > < / a > <!-- doxytag: member="kernel/templates/chcore.c::port_disable" ref="ga0544046d4df19935e29784adbd848465" args="(void)" -->
< div class = "memitem" >
< div class = "memproto" >
< table class = "memname" >
< tr >
< td class = "memname" > void port_disable < / td >
< td > (< / td >
< td class = "paramtype" > void < / td >
< td class = "paramname" > < / td >
< td > ) < / td >
< td > < / td >
< / tr >
< / table >
< / div >
< div class = "memdoc" >
< p > Disables all the interrupt sources. < / p >
< dl class = "note" > < dt > < b > Note:< / b > < / dt > < dd > Of course non maskable interrupt sources are not included. < / dd > < / dl >
2010-11-22 05:53:37 +00:00
< p > Referenced by < a class = "el" href = "group___s_t_m8___c_o_r_e.html#gaffa627cc34d473a5c1b00810798c1592" > port_halt()< / a > .< / p >
2010-08-10 03:11:02 +00:00
< / div >
< / div >
< a class = "anchor" id = "gaaae987909015c5d3c350d8866216667c" > < / a > <!-- doxytag: member="kernel/templates/chcore.c::port_suspend" ref="gaaae987909015c5d3c350d8866216667c" args="(void)" -->
< div class = "memitem" >
< div class = "memproto" >
< table class = "memname" >
< tr >
< td class = "memname" > void port_suspend < / td >
< td > (< / td >
< td class = "paramtype" > void < / td >
< td class = "paramname" > < / td >
< td > ) < / td >
< td > < / td >
< / tr >
< / table >
< / div >
< div class = "memdoc" >
< p > Disables the interrupt sources below kernel-level priority. < / p >
< dl class = "note" > < dt > < b > Note:< / b > < / dt > < dd > Interrupt sources above kernel level remains enabled. < / dd > < / dl >
< / div >
< / div >
< a class = "anchor" id = "ga1d876d22b4a101a6cdda587a4afa0a67" > < / a > <!-- doxytag: member="kernel/templates/chcore.c::port_enable" ref="ga1d876d22b4a101a6cdda587a4afa0a67" args="(void)" -->
< div class = "memitem" >
< div class = "memproto" >
< table class = "memname" >
< tr >
< td class = "memname" > void port_enable < / td >
< td > (< / td >
< td class = "paramtype" > void < / td >
< td class = "paramname" > < / td >
< td > ) < / td >
< td > < / td >
< / tr >
< / table >
< / div >
< div class = "memdoc" >
< p > Enables all the interrupt sources. < / p >
< / div >
< / div >
< a class = "anchor" id = "ga1ebf4a8993a4714d7ff98cc56fd343d6" > < / a > <!-- doxytag: member="kernel/templates/chcore.c::port_wait_for_interrupt" ref="ga1ebf4a8993a4714d7ff98cc56fd343d6" args="(void)" -->
< div class = "memitem" >
< div class = "memproto" >
< table class = "memname" >
< tr >
< td class = "memname" > void port_wait_for_interrupt < / td >
< td > (< / td >
< td class = "paramtype" > void < / td >
< td class = "paramname" > < / td >
< td > ) < / td >
< td > < / td >
< / tr >
< / table >
< / div >
< div class = "memdoc" >
< p > Enters an architecture-dependent IRQ-waiting mode. < / p >
< p > The function is meant to return when an interrupt becomes pending. The simplest implementation is an empty function or macro but this would not take advantage of architecture-specific power saving modes. < / p >
< / div >
< / div >
< a class = "anchor" id = "gaffa627cc34d473a5c1b00810798c1592" > < / a > <!-- doxytag: member="kernel/templates/chcore.c::port_halt" ref="gaffa627cc34d473a5c1b00810798c1592" args="(void)" -->
< div class = "memitem" >
< div class = "memproto" >
< table class = "memname" >
< tr >
< td class = "memname" > void port_halt < / td >
< td > (< / td >
< td class = "paramtype" > void < / td >
< td class = "paramname" > < / td >
< td > ) < / td >
< td > < / td >
< / tr >
< / table >
< / div >
< div class = "memdoc" >
< p > Halts the system. < / p >
< 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 >
< / div >
< / div >
< a class = "anchor" id = "ga15f282e0911ec832d2b12ced3170ba90" > < / a > <!-- doxytag: member="kernel/templates/chcore.c::port_switch" ref="ga15f282e0911ec832d2b12ced3170ba90" args="(Thread *ntp, Thread *otp)" -->
< div class = "memitem" >
< div class = "memproto" >
< table class = "memname" >
< tr >
< td class = "memname" > void port_switch < / td >
< td > (< / td >
< td class = "paramtype" > < a class = "el" href = "struct_thread.html" > Thread< / a > * < / td >
< td class = "paramname" > < em > ntp< / em > , < / td >
< / tr >
< tr >
< td class = "paramkey" > < / td >
< td > < / td >
< td class = "paramtype" > < a class = "el" href = "struct_thread.html" > Thread< / a > * < / td >
< td class = "paramname" > < em > otp< / em > < / td > < td > < / td >
< / tr >
< tr >
< td > < / td >
< td > )< / td >
< td > < / td > < td > < / td > < td > < / td >
< / tr >
< / table >
< / div >
< div class = "memdoc" >
< p > Performs a context switch between two threads. < / p >
< p > This is the most critical code in any port, this function is responsible for the context switch between 2 threads. < / p >
< dl class = "note" > < dt > < b > Note:< / b > < / dt > < dd > The implementation of this code affects < b > directly< / b > the context switch performance so optimize here as much as you can.< / dd > < / dl >
< dl > < dt > < b > Parameters:< / b > < / dt > < dd >
< table border = "0" cellspacing = "2" cellpadding = "0" >
< tr > < td valign = "top" > < tt > [in]< / tt > < / td > < td valign = "top" > < em > ntp< / em > < / td > < td > the thread to be switched in < / td > < / tr >
< tr > < td valign = "top" > < tt > [in]< / tt > < / td > < td valign = "top" > < em > otp< / em > < / td > < td > the thread to be switched out < / td > < / tr >
< / table >
< / dd >
< / dl >
< / div >
< / div >
< / div >
< hr size = "1" > < address style = "text-align: right;" > < small >
2010-11-30 04:54:43 +00:00
Generated on Sun Nov 28 2010 14:09:56 for ChibiOS/RT by < a href = "http://www.doxygen.org/index.html" > < img src = "doxygen.png" alt = "doxygen" align = "middle" border = "0" > < / a > 1.7.1< / small > < / address >
2010-08-10 03:11:02 +00:00
< / body >
< / html >