From 3c101f29013c71f6a786f9ac7bdbf29499c47cbb Mon Sep 17 00:00:00 2001 From: gdisirio Date: Tue, 30 Dec 2008 18:08:30 +0000 Subject: git-svn-id: svn://svn.code.sf.net/p/chibios/svn/trunk@566 35acf78f-673a-0410-8e92-d51de3d6d3f4 --- docs/ch.txt | 23 +++++++++----- docs/img/readylist.png | Bin 7883 -> 11862 bytes docs/img/readylist.svg | 65 +++++++++++++++++++------------------- docs/img/workspace.png | Bin 14430 -> 20285 bytes docs/img/workspace.svg | 84 ++++++++++++++++++++++++++++++++++++------------- 5 files changed, 111 insertions(+), 61 deletions(-) (limited to 'docs') diff --git a/docs/ch.txt b/docs/ch.txt index 71ef8140e..c39153807 100644 --- a/docs/ch.txt +++ b/docs/ch.txt @@ -79,7 +79,7 @@ * priority is executed. If more than one thread with equal priority are * eligible for execution then they are executed in a round-robin way, the * CPU time slice constant is configurable. The ready list is a double linked - * list of threads ordered by priority. + * list of threads ordered by priority.

* @image html readylist.png * Note that the currently running thread is not in the ready list, the list * only contains the threads ready to be executed but still actually waiting. @@ -89,19 +89,26 @@ * @image html states.png * * @section warea Thread Working Area - * Each thread has its own stack, a Thread structure and a registers dump - * structure. All the structures are allocated into a "Thread working area", + * Each thread has its own stack, a Thread structure and some preemption + * areas. All the structures are allocated into a "Thread working area", * a thread private heap, usually allocated in a char array declared in your * code, there is not a central threads table or list, this means you can * have as many threads you want as long you have enough available RAM * memory. The threads do not use any memory outside the allocated working - * area.
+ * area.

* @image html workspace.png *
- * Note that the registers dump is only present when the Thread is not - * running, the context switching is done by pushing the registers on the - * stack of the switched-out thread and popping the registers of the - * switched-in thread from its stack. + * Note that the preemption areas only present when the Thread is not + * running (switched out), the context switching is done by pushing the + * registers on the stack of the switched-out thread and popping the registers + * of the switched-in thread from its stack. + * The preemption areas can be divided in up to three structures: + * - External Context. + * - Interrupt Stack. + * - Internal Context. + * + * See the @ref Core documentation for details, the areas may change on + * the various ports and some structures may not be present (or be zero-sized). * * @section sysmutex System Mutex Zone * It is the code within the OS that cannot be preempted, this code is diff --git a/docs/img/readylist.png b/docs/img/readylist.png index 4d852388f..a7a8adb57 100644 Binary files a/docs/img/readylist.png and b/docs/img/readylist.png differ diff --git a/docs/img/readylist.svg b/docs/img/readylist.svg index a82bdbc79..d1b41741a 100644 --- a/docs/img/readylist.svg +++ b/docs/img/readylist.svg @@ -15,10 +15,10 @@ sodipodi:version="0.32" inkscape:version="0.45.1" version="1.0" - sodipodi:docbase="C:\Progetti\ChibiOS\homepage" + sodipodi:docbase="D:\Progetti\ChibiOS-RT\docs\img" sodipodi:docname="readylist.svg" inkscape:output_extension="org.inkscape.output.svg.inkscape" - inkscape:export-filename="C:\Progetti\ChibiOS\homepage\readylist.png" + inkscape:export-filename="D:\Progetti\ChibiOS-RT\docs\img\readylist.png" inkscape:export-xdpi="90" inkscape:export-ydpi="90"> + transform="translate(-46.668657,15)"> 127 + id="flowPara3223">63 Thread Structure + transform="translate(-166.66866,15)"> 126 + id="flowPara5451">62 + transform="translate(73.331343,15)"> 128 + id="flowPara5492">64 + transform="translate(193.33134,15)"> 128 + id="flowPara5508">64 + id="g5533" + transform="translate(3.30033,14.5)"> Header diff --git a/docs/img/workspace.png b/docs/img/workspace.png index 03149b7bd..e7e20b60b 100644 Binary files a/docs/img/workspace.png and b/docs/img/workspace.png differ diff --git a/docs/img/workspace.svg b/docs/img/workspace.svg index afdc5492e..721be190c 100644 --- a/docs/img/workspace.svg +++ b/docs/img/workspace.svg @@ -15,10 +15,10 @@ sodipodi:version="0.32" inkscape:version="0.45.1" version="1.0" - sodipodi:docbase="C:\Progetti\ChibiOS\homepage" + sodipodi:docbase="D:\Progetti\ChibiOS-RT\docs\img" sodipodi:docname="workspace.svg" inkscape:output_extension="org.inkscape.output.svg.inkscape" - inkscape:export-filename="C:\Progetti\ChibiOS\homepage\workspace.png" + inkscape:export-filename="D:\Progetti\ChibiOS-RT\docs\img\workspace.png" inkscape:export-xdpi="90" inkscape:export-ydpi="90"> + inkscape:window-height="871" + inkscape:window-x="352" + inkscape:window-y="69" /> @@ -149,37 +149,37 @@ inkscape:export-xdpi="90" inkscape:export-ydpi="90" /> Thread Structure Registers Dump intctx Structure Thread Stack chThdLS() + id="flowPara2224">chThdLS() Stack Limit + + + extctx Structure INT_REQUIRED_STACK -- cgit v1.2.3