aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorYuji Mano <yuji.mano@am.sony.com>2009-02-11 11:47:04 -0800
committerYuji Mano <yuji.mano@am.sony.com>2009-02-11 11:47:04 -0800
commit5bf975eaab445a9af3a6e7ada1bc4ca7c7488cf7 (patch)
tree210690a408ba2aa9001e25788af8ff54d9e4294e
parent134b7a40dadb1e69e243709a7844b84685f06eab (diff)
downloadmars-src-5bf975eaab445a9af3a6e7ada1bc4ca7c7488cf7.tar.gz
doxygen: Update doxygen
Update documentation and images. Signed-off-by: Yuji Mano <yuji.mano@am.sony.com>
-rw-r--r--doxygen/src/doxygen235
-rw-r--r--doxygen/src/img_task_switch_max.svg (renamed from doxygen/src/img_task_switch_full.svg)842
-rw-r--r--doxygen/src/img_task_switch_optimal.svg (renamed from doxygen/src/img_task_switch_partial.svg)286
3 files changed, 881 insertions, 482 deletions
diff --git a/doxygen/src/doxygen b/doxygen/src/doxygen
index c861f9c..163abad 100644
--- a/doxygen/src/doxygen
+++ b/doxygen/src/doxygen
@@ -448,10 +448,10 @@ and libraries to the appropriate host paths.
\image html img_host_library.png
In order to use any of the host processor library API, the user must include the
-following header:
+necessary library API headers:
\code
- #include <mars/mars.h> /* include header */
+ #include <mars/task.h> /* header for task workload library API */
\endcode
The host program written for the host processor needs to link in the MARS host
@@ -513,11 +513,11 @@ and libraries to the appropriate MPU paths.
\image html img_mpu_library.png
The MPU programs written for the MPUs need to link in the MARS MPU library. In
-order to use any of the MPU library API, the user must include the following
-header:
+order to use any of the MPU library API, the user must include the necessary
+library API headers:
\code
- #include <mars/mars.h>
+ #include <mars/task.h> /* header for task workload library API */
\endcode
The MPU program written for the MPU needs to link in the MARS
@@ -537,7 +537,7 @@ When compiling the MPU programs, it is also necessary to specify the '.init'
section to the workload base address specified for the workload model.
For example, a MARS task program should specify the task base address
-equal to \ref MARS_TASK_BASE_ADDR (currently 0x8000).
+equal to \ref MARS_TASK_BASE_ADDR (currently 0x4000).
The actual procedure to compile a MARS MPU program and to link the MARS MPU
library may vary depending on the workload model and target platform.
@@ -545,7 +545,7 @@ library may vary depending on the workload model and target platform.
\code
/* Example MPU compile on Cell B.E. platform for task program */
MPU_CC = spu-gcc
- MPU_LD_FLAGS = -Wl,-N -Wl,-gc-sections -Wl,--section-start,.init=0x8000
+ MPU_LD_FLAGS = -Wl,-N -Wl,-gc-sections -Wl,--section-start,.init=0x4000
$(MPU_CC) $(MPU_LD_FLAGS) mpu_prog.c -lmars_task -lmars_base
\endcode
@@ -710,6 +710,9 @@ mutex becomes unlocked and it is able to successfully lock the mutex for itself.
return USER_DEFINED_ERROR; /* destroy failed */
\endcode
+\note The mutex API access on the MPU-side is limited to the workload module
+API (<b>See</b> \ref group_mars_workload_module ).
+
\n
********************************************************************************
\section sec_5_4 5.4 Mutex Destroy
@@ -830,8 +833,8 @@ Example of how to compile a workload module on a Cell B.E. platform:
MPU_CC = spu-gcc
MPU_LD_FLAGS = -Wl,-N -Wl,-gc-sections \
-Wl,--entry,mars_module_entry -Wl,-u,mars_module_entry \
- -Wl,--section-start,.init=0x4000 \
- -Wl,--defsym=__stack=0x7ff0
+ -Wl,--section-start,.init=0x3000 \
+ -Wl,--defsym=__stack=0x3ff0
$(MPU_CC) $(MPU_LD_FLAGS) workload_module.c -lmars_base
\endcode
@@ -926,7 +929,7 @@ is uninitialized and its state is undefined.
/* sample MPU side mpu_prog.c */
#include <stdio.h>
- #include <mars/mars.h>
+ #include <mars/task.h>
int mars_task_main(const struct mars_task_args *task_args)
{
@@ -955,7 +958,7 @@ Typical MARS task creation code will look like below.
...
/* Create the task instance */
- int ret = mars_task_create(mars_ctx, &task_id, "Task", elf_image, NULL);
+ int ret = mars_task_create(mars_ctx, &task_id, "Task", elf_image, 0);
if (ret != MARS_SUCCESS) /* error checking */
return USER_DEFINED_ERROR; /* create failed */
\endcode
@@ -980,7 +983,7 @@ int mars_task_create(
struct mars_task_id *id,
const char *name,
const void *elf_image,
- const struct mars_task_context_save_unit *save_units);
+ uint32_t context_save_size);
\endcode
\b mars
@@ -1002,10 +1005,10 @@ longer than \ref MARS_TASK_NAME_LEN_MAX.
This specifies the address to the MPU program ELF image loaded into host
storage. This MPU program needs to be a MARS task program.
-\b save_units
+\b context_save_size
\n
-A list of structures defining the areas of MPU storage to save and restore
-during a task context switch (<b>See</b> \ref sec_7_5).
+The size of context save area to allocate on host storage to be used during a
+task context switch (<b>See</b> \ref sec_7_5).
\n
********************************************************************************
@@ -1117,7 +1120,7 @@ a waiting state.
It is important to note the limitations of a task switch:
<b>1.</b> A task is only capable of doing a task switch if it is created with a
-context save area (see \ref mars_task_create).
+context save area (<b>See</b> \ref mars_task_create).
If no context save area is specified for the task, yield calls and any blocking
calls that may put the task into a waiting state will result in error.
@@ -1138,72 +1141,36 @@ a memory transfer.
The memory transfer is not guaranteed to be completed until a paired *_end call.
\n
-<b>Context save unit list</b>
-
-When creating the task context, you must specify the context save units you want
-saved during the task switch.
-
-The last parameter of \ref mars_task_create is expecting a pointer to a
-user allocated list of contiguous struct \ref mars_task_context_save_unit. You
-can specify up to a maximum of \ref MARS_TASK_CONTEXT_SAVE_UNIT_MAX separate
-context save units. Each context save unit defines an address offset from the
-task program's base address (\ref MARS_TASK_BASE_ADDR) and the size of the unit.
-The address must be aligned to a 16-byte address and the size must be a multiple
-of 16 bytes. If you want to specify a context save unit list of size less than
-\ref MARS_TASK_CONTEXT_SAVE_UNIT_MAX, you must specify a terminating unit with
-an address and size of 0.
-
-\note The efficiency and validity of the specified context save unit list is
-left up to the responsibility of the user.
-
-\see mars_task_create
+<b>Context save size</b>
-\n
-<b>Full context save</b>
+When creating the task context, you must specify the size of the context save
+area that will be allocated and used during the task switch. By default, the
+task module will only save and restore the used areas of MPU storage necessary
+to perform the task switch.
-If you want to specify a full context save you can pass in the internally
-defined \ref MARS_TASK_CONTEXT_SAVE_ALL to \ref mars_task_create. A full context
-save will ensure that all code and data, including the maximum size of stack and
-heap will be saved and restored during a context switch, regardless of whether
-those areas of memory are in use or not.
+You can specify one of the following for 'context_save_size' when creating the
+task with \ref mars_task_create :
-\ref MARS_TASK_CONTEXT_SAVE_ALL is internally defined as follows:
+<b>1. 0</b> - No context save area will be allocated. Use this to create a
+run complete task that never does a task switch
-\code
-const struct mars_task_context_save_unit MARS_TASK_CONTEXT_SAVE_ALL[] =
-{
- { .addr = 0, .size = MARS_TASK_CONTEXT_SAVE_SIZE_MAX },
- { .addr = 0, .size = 0 },
-};
-\endcode
+<b>2. \ref MARS_TASK_CONTEXT_SAVE_SIZE_MAX</b> - maximum necessary area will be
+allocated for a context save. This option will always allocate the maximum area
+required for any task to context switch, regardless of whether all of the area
+will be necessary or not by the particular task being created.
<b>Fig. 7.5b</b>
-\image html img_task_switch_full.png
-
-\n
-<b>Partial context save</b>
+\image html img_task_switch_max.png
-However, for maximum efficiency during the task switch, it is recommended that
-the user specify their own context save unit list that is tuned for their
-specific task.
-
-For example, if you know your task's code, data and heap occupies only 4096
-bytes (0x1000) of MPU storage above the task program's base address
-(\ref MARS_TASK_BASE_ADDR), and you also know you only occupy at most 4096 bytes
-(0x1000) of stack, you can specify the context save unit list shown below that
-is far more efficient than specifying a full context save.
-
-\code
-static struct mars_task_context_save_unit MARS_TASK_CONTEXT_SAVE_PARTIAL[] =
-{
- { .addr = 0, .size = 0x1000 },
- { .addr = MARS_TASK_CONTEXT_SAVE_SIZE_MAX - 0x1000, .size = 0x1000 },
- { .addr = 0, .size = 0 },
-};
-\endcode
+<b>3. user specified size</b> - user can specify the size of the context save
+area necessary to task switch their specific task. For example, the task's text,
+data, heap and stack occupies only N bytes of MPU storage, context_save_size = N
+can be specified to avoid having to allocate
+\ref MARS_TASK_CONTEXT_SAVE_SIZE_MAX bytes that would waste
+\ref MARS_TASK_CONTEXT_SAVE_SIZE_MAX - N bytes of unused host storage space.
<b>Fig. 7.5c</b>
-\image html img_task_switch_partial.png
+\image html img_task_switch_optimal.png
\n
********************************************************************************
@@ -1258,7 +1225,7 @@ instances resident on the host storage.
The MARS Task Synchronization API is specific to the MARS tasks. Many of the
synchronization methods provided are blocking calls, meaning that when called
and certain conditions are not met, the calling tasks will enter a waiting state
-and may result in a task switch (see \ref sec_8_6).
+and may result in a task switch (<b>See</b> \ref sec_8_6).
<b>Fig. 8.2</b>
\image html img_task_sync_benefits.png
@@ -1528,7 +1495,7 @@ stdout and exits.
\n
<b>(host program)</b>
\code
- 1 #include <mars/mars.h>
+ 1 #include <mars/task.h>
2
3 static void *task_program_elf_image;
4
@@ -1539,7 +1506,7 @@ stdout and exits.
9 int task_exit_code;
10
11 mars_context_create(&mars_ctx, 0, 0);
-12 mars_task_create(mars_ctx, &task_id, "Task", task_program_elf_image, NULL);
+12 mars_task_create(mars_ctx, &task_id, "Task", task_program_elf_image, 0);
13 mars_task_schedule(&task_id, NULL, 0);
14 mars_task_wait(&task_id, &task_exit_code);
15 mars_task_destroy(&task_id);
@@ -1552,7 +1519,8 @@ stdout and exits.
<table border="1">
<tr><td><b>Line:1</b></td><td>
-Include the header file "mars/mars.h" necessary for utilizing the MARS library.
+Include the header file "mars/task.h" necessary for utilizing the MARS task
+library.
</td></tr>
<tr><td><b>Line:3</b></td><td>
@@ -1619,12 +1587,10 @@ storage. The task program specified here is what will be loaded into MPU storage
for execution when this task is scheduled to run by the MARS kernel.
<b>arg5</b>:
-Specify the context save area unit list for this task. Since this task will not
-be yielding execution or entering a wait state, we do not need to specify a
-context save list so specify NULL. Otherwise, if we want to create a task that
-can enter a wait state we must specify a context save unit list for partial task
-context saves or specify \ref MARS_TASK_CONTEXT_SAVE_ALL for full task context
-saves.
+Specify the context save area size for this task. Since this task will not task
+switch, we do not need to specify a context save size so specify 0. Otherwise,
+if we want to create a task that can task switch we must specify a context save
+size or specify \ref MARS_TASK_CONTEXT_SAVE_SIZE_MAX.
<b>return</b>:
MARS_SUCCESS is returned on success and a negative error value otherwise.
@@ -1724,7 +1690,7 @@ function until the MARS context is created once again.
<b>(task program)</b>
\code
1 #include <stdio.h>
- 2 #include <mars/mars.h>
+ 2 #include <mars/task.h>
3
4 int mars_task_main(const struct mars_task_args *task_args)
5 {
@@ -1740,8 +1706,8 @@ function until the MARS context is created once again.
<table border="1">
<tr><td><b>Lines:1-2</b></td><td>
-Include the header file "stdio.h" for printf and "mars/mars.h" necessary for
-utilizing the MARS library.
+Include the header file "stdio.h" for printf and "mars/task.h" necessary for
+utilizing the MARS task library.
</td></tr>
<tr><td><b>Line:6</b></td><td>
@@ -1789,7 +1755,7 @@ specified by the arguments passed in by the main task during scheduling.
<b>(host program)</b>
\code
1 #include <stdio.h>
- 2 #include <mars/mars.h>
+ 2 #include <mars/task.h>
3
4 #define NUM_SUB_TASKS 2
5
@@ -1806,12 +1772,12 @@ specified by the arguments passed in by the main task during scheduling.
16
17 mars_context_create(&mars_ctx, 0, 0);
18
-19 mars_task_create(mars_ctx, &task1_id, "Task 1", task1_program_elf_image, MARS_TASK_CONTEXT_SAVE_ALL);
+19 mars_task_create(mars_ctx, &task1_id, "Task 1", task1_program_elf_image, MARS_TASK_CONTEXT_SAVE_SIZE_MAX);
20
21 for (i = 0; i < NUM_SUB_TASKS; i++) {
22 char name[16];
23 sprintf(name, "Task 2.%d", i);
-24 mars_task_create(mars_ctx, &task2_id[i], name, task2_program_elf_image, NULL);
+24 mars_task_create(mars_ctx, &task2_id[i], name, task2_program_elf_image, 0);
25 }
26
27 task_args.type.u64[0] = mars_ptr_to_ea(&task2_id[0]);
@@ -1841,7 +1807,7 @@ create and schedule.
Create the main task instance with the ELF image of task program 1. The main
task needs to provide a context save area in order to allow for context
switching while waiting for sub task completion. Specify
-\ref MARS_TASK_CONTEXT_SAVE_ALL for the context save area size so a context save
+\ref MARS_TASK_CONTEXT_SAVE_SIZE_MAX for the context save area size so a context save
area is initialized for the main task context.
</td></tr>
@@ -1882,7 +1848,7 @@ Destroy the completed sub tasks also.
\n
<b>(task 1 program)</b>
\code
- 1 #include <mars/mars.h>
+ 1 #include <mars/task.h>
2
3 int mars_task_main(const struct mars_task_args *task_args)
4 {
@@ -1967,7 +1933,7 @@ until completion of the second sub task.
<b>(task 2 program)</b>
\code
1 #include <stdio.h>
- 2 #include <mars/mars.h>
+ 2 #include <mars/task.h>
3
4 int mars_task_main(const struct mars_task_args *task_args)
5 {
@@ -2016,7 +1982,7 @@ finish the post-processing work.
<b>(host program)</b>
\code
1 #include <stdio.h>
- 2 #include <mars/mars.h>
+ 2 #include <mars/task.h>
3
4 #define NUM_TASKS 10
5
@@ -2038,7 +2004,7 @@ finish the post-processing work.
21 char name[16];
22 sprintf(name, "Task %d", i);
23
-24 mars_task_create(mars_ctx, &task_id[i], name, task_program_elf_image, MARS_TASK_CONTEXT_SAVE_ALL);
+24 mars_task_create(mars_ctx, &task_id[i], name, task_program_elf_image, MARS_TASK_CONTEXT_SAVE_SIZE_MAX);
25
26 task_args.type.u64[0] = barrier_ea;
27 mars_task_schedule(&task_id[i], &task_args, 0);
@@ -2093,7 +2059,7 @@ MARS_SUCCESS is returned on success and a negative error value otherwise.
<tr><td><b>Line:24</b></td><td>
Create each of the 10 task instances.
Specify the task program ELF image for these task instances and a context save
-area size of \ref MARS_TASK_CONTEXT_SAVE_ALL to allow these tasks to context
+area size of \ref MARS_TASK_CONTEXT_SAVE_SIZE_MAX to allow these tasks to context
switch.
</td></tr>
@@ -2114,7 +2080,7 @@ barrier instance and the MARS context.
<b>(task program)</b>
\code
1 #include <stdio.h>
- 2 #include <mars/mars.h>
+ 2 #include <mars/task.h>
3
4 #define ITERATIONS 3
5
@@ -2224,7 +2190,7 @@ event flag for the host program to continue and finish execution.
<b>(host program)</b>
\code
1 #include <unistd.h>
- 2 #include <mars/mars.h>
+ 2 #include <mars/task.h>
3
4 static void *task1_program_elf_image;
5 static void *task2_program_elf_image;
@@ -2253,8 +2219,8 @@ event flag for the host program to continue and finish execution.
28 MARS_TASK_EVENT_FLAG_MPU_TO_MPU,
29 MARS_TASK_EVENT_FLAG_CLEAR_AUTO);
30
-31 mars_task_create(mars_ctx, &task1_id, "Task 1", task1_program_elf_image, MARS_TASK_CONTEXT_SAVE_ALL);
-32 mars_task_create(mars_ctx, &task2_id, "Task 2", task2_program_elf_image, MARS_TASK_CONTEXT_SAVE_ALL);
+31 mars_task_create(mars_ctx, &task1_id, "Task 1", task1_program_elf_image, MARS_TASK_CONTEXT_SAVE_SIZE_MAX);
+32 mars_task_create(mars_ctx, &task2_id, "Task 2", task2_program_elf_image, MARS_TASK_CONTEXT_SAVE_SIZE_MAX);
33
34 task_args.type.u64[0] = host_to_mpu_ea;
35 task_args.type.u64[1] = mpu_to_mpu_ea;
@@ -2327,7 +2293,7 @@ The third event flag is created for task program to task program events.
<tr><td><b>Lines:31-32</b></td><td>
Create the task instance for both the task 1 program and task 2 program.
-Specify a context save area size of \ref MARS_TASK_CONTEXT_SAVE_ALL to allow
+Specify a context save area size of \ref MARS_TASK_CONTEXT_SAVE_SIZE_MAX to allow
these tasks to context switch.
</td></tr>
@@ -2411,7 +2377,7 @@ instances and finally destroy the MARS context.
<b>(task 1 program)</b>
\code
1 #include <stdio.h>
- 2 #include <mars/mars.h>
+ 2 #include <mars/task.h>
3
4 int mars_task_main(const struct mars_task_args *task_args)
5 {
@@ -2461,7 +2427,7 @@ Set the event that task 2 is waiting for to allow task 2 execution to resume.
<b>(task 2 program)</b>
\code
1 #include <stdio.h>
- 2 #include <mars/mars.h>
+ 2 #include <mars/task.h>
3
4 int mars_task_main(const struct mars_task_args *task_args)
5 {
@@ -2544,7 +2510,7 @@ the task 2 program.
<b>(host program)</b>
\code
1 #include <stdio.h>
- 2 #include <mars/mars.h>
+ 2 #include <mars/task.h>
3
4 #define NUM_TASKS 3
5 #define NUM_ENTRIES 10
@@ -2587,10 +2553,10 @@ the task 2 program.
42 char name[MARS_TASK_NAME_LEN_MAX];
43
44 snprintf(name, MARS_TASK_NAME_LEN_MAX, "Task 1.%d", i + 1);
-45 mars_task_create(mars_ctx, &task1_id[i], name, task1_program_elf_image, MARS_TASK_CONTEXT_SAVE_ALL);
+45 mars_task_create(mars_ctx, &task1_id[i], name, task1_program_elf_image, MARS_TASK_CONTEXT_SAVE_SIZE_MAX);
46
47 snprintf(name, MARS_TASK_NAME_LEN_MAX, "Task 2.%d", i + 1);
-48 mars_task_create(mars_ctx, &task2_id[i], name, task2_program_elf_image, MARS_TASK_CONTEXT_SAVE_ALL);
+48 mars_task_create(mars_ctx, &task2_id[i], name, task2_program_elf_image, MARS_TASK_CONTEXT_SAVE_SIZE_MAX);
49
50 task_args.type.u64[0] = host_to_mpu_ea;
51 task_args.type.u64[1] = mpu_to_mpu_ea;
@@ -2682,7 +2648,7 @@ The third queue is created for task program to task program data passing.
<tr><td><b>Lines:44-48</b></td><td>
Create multiple task instances for both the task 1 program and task 2 program.
-Specify a context save area size of \ref MARS_TASK_CONTEXT_SAVE_ALL to allow
+Specify a context save area size of \ref MARS_TASK_CONTEXT_SAVE_SIZE_MAX to allow
these tasks to context switch when there is no data available to be popped from
the queues.
</td></tr>
@@ -2761,7 +2727,7 @@ and finally destroy the MARS context.
<b>(task 1 program)</b>
\code
1 #include <stdio.h>
- 2 #include <mars/mars.h>
+ 2 #include <mars/task.h>
3
4 struct queue_entry {
5 char text[64];
@@ -2841,7 +2807,7 @@ Push the processed data into the queue for the <b>task 2 program</b> to receive.
<b>(task 2 program)</b>
\code
1 #include <stdio.h>
- 2 #include <mars/mars.h>
+ 2 #include <mars/task.h>
3
4 struct queue_entry {
5 char text[64];
@@ -2938,7 +2904,7 @@ when the program has completed.
<b>(host program)</b>
\code
1 #include <stdio.h>
- 2 #include <mars/mars.h>
+ 2 #include <mars/task.h>
3
4 #define NUM_TASKS 10
5
@@ -2965,7 +2931,7 @@ when the program has completed.
26 char name[16];
27 sprintf(name, "Task %d", i);
28
-29 mars_task_create(mars_ctx, &task_id[i], name, task_program_elf_image, MARS_TASK_CONTEXT_SAVE_ALL);
+29 mars_task_create(mars_ctx, &task_id[i], name, task_program_elf_image, MARS_TASK_CONTEXT_SAVE_SIZE_MAX);
30
31 task_args.type.u64[0] = semaphore_ea;
32 task_args.type.u64[1] = mars_ptr_to_ea(&shared_resource);
@@ -3033,7 +2999,7 @@ Print the current value of the shared resource counter to stdout.
<tr><td><b>Line:29</b></td><td>
Create 10 task instances of task 1 program.
-Specify a context save area size of \ref MARS_TASK_CONTEXT_SAVE_ALL to allow
+Specify a context save area size of \ref MARS_TASK_CONTEXT_SAVE_SIZE_MAX to allow
these tasks to context switch.
</td></tr>
@@ -3064,7 +3030,7 @@ Destroy the semaphore and MARS context.
\n
<b>(task program)</b>
\code
- 1 #include <mars/mars.h>
+ 1 #include <mars/task.h>
2
3 int mars_task_main(const struct mars_task_args *task_args)
4 {
@@ -3179,7 +3145,7 @@ execution. The host program waits for completion of both tasks before finishing.
<b>(host program)</b>
\code
1 #include <unistd.h>
- 2 #include <mars/mars.h>
+ 2 #include <mars/task.h>
3
4 static void *task1_program_elf_image;
5 static void *task2_program_elf_image;
@@ -3193,8 +3159,8 @@ execution. The host program waits for completion of both tasks before finishing.
13
14 mars_context_create(&mars_ctx, 0, 0);
15
-16 mars_task_create(mars_ctx, &task1_id, "Task 1", task1_program_elf_image, MARS_TASK_CONTEXT_SAVE_ALL);
-17 mars_task_create(mars_ctx, &task2_id, "Task 2", task2_program_elf_image, MARS_TASK_CONTEXT_SAVE_ALL);
+16 mars_task_create(mars_ctx, &task1_id, "Task 1", task1_program_elf_image, MARS_TASK_CONTEXT_SAVE_SIZE_MAX);
+17 mars_task_create(mars_ctx, &task2_id, "Task 2", task2_program_elf_image, MARS_TASK_CONTEXT_SAVE_SIZE_MAX);
18
19 task_args.type.u64[0] = mars_ptr_to_ea(&task2_id);
20 mars_task_schedule(&task1_id, &task_args, 0);
@@ -3270,7 +3236,7 @@ MARS context.
<b>(task 1 program)</b>
\code
1 #include <stdio.h>
- 2 #include <mars/mars.h>
+ 2 #include <mars/task.h>
3
4 int mars_task_main(const struct mars_task_args *task_args)
5 {
@@ -3349,7 +3315,7 @@ execution.
<b>(task 2 program)</b>
\code
1 #include <stdio.h>
- 2 #include <mars/mars.h>
+ 2 #include <mars/task.h>
3
4 int mars_task_main(const struct mars_task_args *task_args)
5 {
@@ -3484,7 +3450,7 @@ processor. Implementations for other multicore architectures may differ.
4 #include <malloc.h>
5 #include <sys/stat.h>
6 #include <libspe2.h>
- 7 #include <mars/mars.h>
+ 7 #include <mars/task.h>
8
9 #define IN_FILENAME "in.ppm"
10 #define OUT_FILENAME "out.ppm"
@@ -3561,7 +3527,7 @@ processor. Implementations for other multicore architectures may differ.
81 ret = mars_task_create(mars_ctx, &task1_id,
82 "Grayscale Main Task",
83 task1_spe_prog.elf_image,
- 84 MARS_TASK_CONTEXT_SAVE_ALL);
+ 84 MARS_TASK_CONTEXT_SAVE_SIZE_MAX);
85 if (ret) {
86 printf("Could not create MARS main task! (%d)\n", ret);
87 exit(1);
@@ -3571,7 +3537,7 @@ processor. Implementations for other multicore architectures may differ.
91 ret = mars_task_create(mars_ctx, &task2_id[i],
92 "Grayscale Sub Task",
93 task2_spe_prog.elf_image,
- 94 MARS_TASK_CONTEXT_SAVE_ALL);
+ 94 MARS_TASK_CONTEXT_SAVE_SIZE_MAX);
95 if (ret) {
96 printf("Could not create MARS sub task! (%d)\n", ret);
97 exit(1);
@@ -3809,13 +3775,13 @@ be used by the main task to send grayscale processing requests to the sub tasks.
<tr><td><b>Lines:81-88</b></td><td>
Create the task for the main <b>task 1 program</b>.
-Specify a context save area size of \ref MARS_TASK_CONTEXT_SAVE_ALL to allow the
+Specify a context save area size of \ref MARS_TASK_CONTEXT_SAVE_SIZE_MAX to allow the
main task to context switch.
</td></tr>
<tr><td><b>Lines:90-99</b></td><td>
Create multiple instances for the sub <b>task 2 program</b>. Specify a context
-save area size of \ref MARS_TASK_CONTEXT_SAVE_ALL to allow the sub tasks to
+save area size of \ref MARS_TASK_CONTEXT_SAVE_SIZE_MAX to allow the sub tasks to
context switch.
</td></tr>
@@ -3880,7 +3846,7 @@ This is the entry function of the <b>host program</b> that does the following:
2 #include <stdint.h>
3 #include <spu_intrinsics.h>
4 #include <spu_mfcio.h>
- 5 #include <mars/mars.h>
+ 5 #include <mars/task.h>
6
7 #define NUM_TASKS 4
8
@@ -4087,7 +4053,7 @@ Wait for completion of all sub tasks.
2 #include <stdint.h>
3 #include <spu_intrinsics.h>
4 #include <spu_mfcio.h>
- 5 #include <mars/mars.h>
+ 5 #include <mars/task.h>
6
7 #define MAX_BUFSIZE (16 << 10)
8
@@ -4381,16 +4347,6 @@ This section will describe the MARS API.
- \ref group_mars_task_signal "mars_task_signal_send"
- MPU Library API
- - Base Management
- - \ref mars_dma_get
- - \ref mars_dma_get_and_wait
- - \ref mars_dma_put
- - \ref mars_dma_put_and_wait
- - \ref mars_dma_wait
- - \ref mars_dma_sync
- - Mutex Management
- - \ref mars_mutex_lock_get
- - \ref mars_mutex_unlock_put
- Workload Model Management
- \ref mars_module_main
- \ref mars_module_get_ticks
@@ -4410,6 +4366,12 @@ This section will describe the MARS API.
- \ref mars_module_workload_wait
- \ref mars_module_workload_yield
- \ref mars_module_workload_finish
+ - \ref mars_module_host_signal_send
+ - \ref mars_module_mutex_lock_get
+ - \ref mars_module_mutex_unlock_put
+ - \ref mars_module_dma_get
+ - \ref mars_module_dma_put
+ - \ref mars_module_dma_wait
- Task Management
- \ref mars_task_main
- \ref mars_task_exit
@@ -4526,6 +4488,11 @@ block execution of the entity until the lock can be obtained. For the MPU-side,
this means that the MARS kernel can not schedule any other workloads while a
MARS mutex is waiting to lock.
+\note The use of mutexes should be mainly reserved for implementing the workload
+model layer. Access to the mutex API is limited to the workload module layer
+from the MPU-side. It is left up to the workload module whether or not to
+provide access to mutex routines through the workload model API.
+
\note If you want to make use of synchronization methods that call into the
MARS kernel's scheduler and allow for other workloads to be scheduled during the
time a synchronization object waits, refer to the synchronization methods
diff --git a/doxygen/src/img_task_switch_full.svg b/doxygen/src/img_task_switch_max.svg
index b712e71..59df751 100644
--- a/doxygen/src/img_task_switch_full.svg
+++ b/doxygen/src/img_task_switch_max.svg
@@ -6,10 +6,28 @@
xmlns:xlink="http://www.w3.org/1999/xlink"
version="1.0"
width="650"
- height="200"
+ height="210"
id="svg14637">
<defs
id="defs14639">
+ <linearGradient
+ x1="52.5"
+ y1="0"
+ x2="52.5"
+ y2="145"
+ id="linearGradient2712"
+ xlink:href="#Grad27"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.0170346,0,0,0.1508154,205.51931,164.62299)" />
+ <linearGradient
+ x1="52.5"
+ y1="0"
+ x2="52.5"
+ y2="145"
+ id="linearGradient19810"
+ xlink:href="#Grad1"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.0170346,0,0,0.1508154,205.51931,142.89596)" />
<marker
markerUnits="strokeWidth"
refX="0"
@@ -2507,67 +2525,112 @@
id="linearGradient2668"
xlink:href="#Grad16"
gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(2.0459324,0,0,1.7978836,532.3893,84.171121)" />
+ gradientTransform="matrix(2.0523471,0,0,1.0991033,532.22251,107.39764)" />
+ <linearGradient
+ x1="52.5"
+ y1="0"
+ x2="52.5"
+ y2="145"
+ id="linearGradient2698"
+ xlink:href="#Grad27"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.0117452,0,0,0.2905832,205.08594,144.5206)" />
+ <linearGradient
+ x1="26"
+ y1="0"
+ x2="26"
+ y2="33"
+ id="linearGradient2701"
+ xlink:href="#Grad16"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(2.0521472,0,0,1.1182634,205.12114,107.31803)" />
+ <linearGradient
+ x1="26"
+ y1="0"
+ x2="26"
+ y2="33"
+ id="linearGradient3696"
+ xlink:href="#Grad16"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(2.0521472,0,0,1.1182634,368.55934,72.101365)" />
<linearGradient
x1="26"
y1="0"
x2="26"
y2="33"
- id="linearGradient2681"
+ id="linearGradient2703"
xlink:href="#Grad16"
gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(2.0459324,0,0,1.7978836,369.75474,83.991421)" />
+ gradientTransform="matrix(2.0521472,0,0,1.1182634,368.55934,72.101365)" />
<linearGradient
x1="52.5"
y1="0"
x2="52.5"
y2="145"
- id="linearGradient2698"
+ id="linearGradient2740"
xlink:href="#Grad27"
gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(1.0117452,0,0,0.2905832,205.08594,144.5206)" />
+ gradientTransform="matrix(1.0117452,0,0,0.2905832,532.19251,143.96275)" />
<linearGradient
x1="26"
y1="0"
x2="26"
y2="33"
- id="linearGradient2701"
+ id="linearGradient2743"
xlink:href="#Grad16"
gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(2.0453725,0,0,1.8671113,205.29729,82.429911)" />
+ gradientTransform="matrix(2.0523471,0,0,1.0991033,532.22251,107.39764)" />
<linearGradient
x1="52.5"
y1="0"
x2="52.5"
y2="145"
- id="linearGradient2670"
+ id="linearGradient2765"
xlink:href="#Grad27"
gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(1.0117452,0,0,0.2905832,532.19251,143.96275)" />
+ gradientTransform="matrix(1.0117452,0,0,0.2905832,205.08594,144.5206)" />
<linearGradient
x1="26"
y1="0"
x2="26"
y2="33"
- id="linearGradient2673"
+ id="linearGradient2768"
xlink:href="#Grad16"
gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(2.0459324,0,0,1.7978836,532.3893,84.171121)" />
+ gradientTransform="matrix(2.0521472,0,0,1.1182634,205.12114,107.31803)" />
<linearGradient
x1="26"
y1="0"
x2="26"
y2="33"
- id="linearGradient2686"
+ id="linearGradient2708"
xlink:href="#Grad16"
gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(2.0459324,0,0,1.7978836,369.75474,83.991421)" />
+ gradientTransform="matrix(2.0521472,0,0,1.1182634,368.55934,72.101365)" />
<linearGradient
x1="52.5"
y1="0"
x2="52.5"
y2="145"
- id="linearGradient2703"
+ id="linearGradient2745"
+ xlink:href="#Grad27"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.0117452,0,0,0.2905832,532.19251,143.96275)" />
+ <linearGradient
+ x1="26"
+ y1="0"
+ x2="26"
+ y2="33"
+ id="linearGradient2748"
+ xlink:href="#Grad16"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(2.0523471,0,0,1.0991033,532.22251,107.39764)" />
+ <linearGradient
+ x1="52.5"
+ y1="0"
+ x2="52.5"
+ y2="145"
+ id="linearGradient2770"
xlink:href="#Grad27"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1.0117452,0,0,0.2905832,205.08594,144.5206)" />
@@ -2576,16 +2639,25 @@
y1="0"
x2="26"
y2="33"
- id="linearGradient2706"
+ id="linearGradient2774"
+ xlink:href="#Grad16"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(2.0521472,0,0,1.1182634,205.12114,107.31803)" />
+ <linearGradient
+ x1="26"
+ y1="0"
+ x2="26"
+ y2="33"
+ id="linearGradient2713"
xlink:href="#Grad16"
gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(2.0453725,0,0,1.8671113,205.29729,82.429911)" />
+ gradientTransform="matrix(2.0521472,0,0,1.1182634,368.55934,72.101365)" />
<linearGradient
x1="52.5"
y1="0"
x2="52.5"
y2="145"
- id="linearGradient2675"
+ id="linearGradient2750"
xlink:href="#Grad27"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1.0117452,0,0,0.2905832,532.19251,143.96275)" />
@@ -2594,104 +2666,124 @@
y1="0"
x2="26"
y2="33"
- id="linearGradient2678"
+ id="linearGradient2753"
xlink:href="#Grad16"
gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(2.0459324,0,0,1.7978836,532.3893,84.171121)" />
+ gradientTransform="matrix(2.0523471,0,0,1.0991033,532.22251,107.39764)" />
+ <linearGradient
+ x1="52.5"
+ y1="0"
+ x2="52.5"
+ y2="145"
+ id="linearGradient2776"
+ xlink:href="#Grad27"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.0117452,0,0,0.2905832,205.08594,144.5206)" />
<linearGradient
x1="26"
y1="0"
x2="26"
y2="33"
- id="linearGradient2691"
+ id="linearGradient2780"
xlink:href="#Grad16"
gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(2.0459324,0,0,1.7978836,369.75474,83.991421)" />
+ gradientTransform="matrix(2.0521472,0,0,1.1182634,205.12114,107.31803)" />
+ <linearGradient
+ x1="26"
+ y1="0"
+ x2="26"
+ y2="33"
+ id="linearGradient2714"
+ xlink:href="#Grad16"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(2.0521472,0,0,1.1182634,368.55934,72.101365)" />
<linearGradient
x1="52.5"
y1="0"
x2="52.5"
y2="145"
- id="linearGradient2708"
+ id="linearGradient2751"
xlink:href="#Grad27"
gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(1.0117452,0,0,0.2905832,205.08594,144.5206)" />
+ gradientTransform="matrix(1.0117452,0,0,0.2905832,532.19251,143.96275)" />
<linearGradient
x1="26"
y1="0"
x2="26"
y2="33"
- id="linearGradient2711"
+ id="linearGradient2754"
xlink:href="#Grad16"
gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(2.0453725,0,0,1.8671113,205.29729,82.429911)" />
+ gradientTransform="matrix(2.0523471,0,0,1.0991033,532.22251,107.39764)" />
<linearGradient
x1="52.5"
y1="0"
x2="52.5"
y2="145"
- id="linearGradient2679"
+ id="linearGradient2778"
xlink:href="#Grad27"
gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(1.0170346,0,0,0.1508154,531.91481,164.50677)" />
+ gradientTransform="matrix(1.0117452,0,0,0.2905832,205.08594,144.5206)" />
<linearGradient
x1="26"
y1="0"
x2="26"
y2="33"
- id="linearGradient2682"
+ id="linearGradient2781"
xlink:href="#Grad16"
gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(2.0459324,0,0,1.7978836,532.3893,84.171121)" />
+ gradientTransform="matrix(2.0521472,0,0,1.1182634,205.12114,107.31803)" />
<linearGradient
x1="26"
y1="0"
x2="26"
y2="33"
- id="linearGradient2695"
+ id="linearGradient2717"
xlink:href="#Grad16"
gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(2.0459324,0,0,1.7978836,369.75474,83.991421)" />
+ gradientTransform="matrix(2.0521472,0,0,1.1182634,368.55934,72.101365)" />
<linearGradient
x1="52.5"
y1="0"
x2="52.5"
y2="145"
- id="linearGradient2712"
+ id="linearGradient2755"
xlink:href="#Grad27"
gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(1.0170346,0,0,0.1508154,204.80823,165.06463)" />
+ gradientTransform="matrix(1.0117452,0,0,0.2905832,532.19251,143.96275)" />
<linearGradient
x1="26"
y1="0"
x2="26"
y2="33"
- id="linearGradient2715"
+ id="linearGradient2758"
xlink:href="#Grad16"
gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(2.0453725,0,0,1.8671113,205.29729,82.429911)" />
+ gradientTransform="matrix(2.0523471,0,0,1.0991033,532.22251,107.39764)" />
<linearGradient
- x1="38.700001"
+ x1="52.5"
y1="0"
- x2="38.700001"
- y2="38"
- id="linearGradient2719"
- xlink:href="#Grad21"
- gradientUnits="userSpaceOnUse" />
+ x2="52.5"
+ y2="145"
+ id="linearGradient2782"
+ xlink:href="#Grad27"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.0117452,0,0,0.2905832,205.08594,144.5206)" />
<linearGradient
- x1="38.700001"
+ x1="26"
y1="0"
- x2="38.700001"
- y2="38"
- id="linearGradient2729"
- xlink:href="#Grad21"
- gradientUnits="userSpaceOnUse" />
+ x2="26"
+ y2="33"
+ id="linearGradient2785"
+ xlink:href="#Grad16"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(2.0521472,0,0,1.1182634,205.12114,107.31803)" />
<linearGradient
x1="38.700001"
y1="0"
x2="38.700001"
y2="38"
- id="linearGradient2731"
+ id="linearGradient2797"
xlink:href="#Grad21"
gradientUnits="userSpaceOnUse" />
<linearGradient
@@ -2699,16 +2791,7 @@
y1="0"
x2="38.700001"
y2="38"
- id="linearGradient2734"
- xlink:href="#Grad21"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(1.1430004,0,0,1.0068935,295.99027,71.39293)" />
- <linearGradient
- x1="38.700001"
- y1="0"
- x2="38.700001"
- y2="38"
- id="linearGradient2744"
+ id="linearGradient2799"
xlink:href="#Grad21"
gradientUnits="userSpaceOnUse" />
<linearGradient
@@ -2716,19 +2799,62 @@
y1="0"
x2="52.5"
y2="145"
- id="linearGradient19810"
+ id="linearGradient22475"
xlink:href="#Grad1"
gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(1.0170346,0,0,0.1508154,204.61403,143.80126)" />
+ gradientTransform="matrix(1.0170346,0,0,0.1508154,533.23518,142.89596)" />
<linearGradient
x1="52.5"
y1="0"
x2="52.5"
y2="145"
- id="linearGradient20801"
- xlink:href="#Grad1"
+ id="linearGradient22479"
+ xlink:href="#Grad27"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.0170346,0,0,0.1508154,533.04098,164.18135)" />
+ <linearGradient
+ x1="80.5"
+ y1="0"
+ x2="80.5"
+ y2="111"
+ id="linearGradient4790"
+ xlink:href="#Grad12"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ x1="80.5"
+ y1="0"
+ x2="80.5"
+ y2="111"
+ id="linearGradient4792"
+ xlink:href="#Grad12"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ x1="26"
+ y1="0"
+ x2="26"
+ y2="33"
+ id="linearGradient2691"
+ xlink:href="#Grad16"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(2.0521472,0,0,1.1182634,533.14803,34.50496)" />
+ <linearGradient
+ x1="26"
+ y1="0"
+ x2="26"
+ y2="33"
+ id="linearGradient2695"
+ xlink:href="#Grad16"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(2.0521472,0,0,1.1182634,368.55934,34.50497)" />
+ <linearGradient
+ x1="26"
+ y1="0"
+ x2="26"
+ y2="33"
+ id="linearGradient2699"
+ xlink:href="#Grad16"
gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(1.0170346,0,0,0.1508154,532.32988,143.80127)" />
+ gradientTransform="matrix(2.0521472,0,0,1.1182634,205.6416,33.669488)" />
</defs>
<g
transform="matrix(0.6610931,0,0,1.373623,205.48964,33.793424)"
@@ -2740,45 +2866,15 @@
id="path15818" />
</g>
<path
- d="M 205.29728,82.429901 C 205.29728,82.429901 311.65666,82.429901 311.65666,82.429901 C 311.65666,82.429901 311.65666,144.04457 311.65666,144.04457 C 311.65666,144.04457 205.29728,144.04457 205.29728,144.04457 C 205.29728,144.04457 205.29728,82.429901 205.29728,82.429901 z "
- style="fill:url(#linearGradient2715);fill-rule:evenodd;stroke:#161413;stroke-width:1.56700552;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none"
+ d="M 205.12114,107.31802 C 205.12114,107.31802 311.8328,107.31802 311.8328,107.31802 C 311.8328,107.31802 311.8328,144.22071 311.8328,144.22071 C 311.8328,144.22071 205.12114,144.22071 205.12114,144.22071 C 205.12114,144.22071 205.12114,107.31802 205.12114,107.31802 z "
+ style="fill:url(#linearGradient2785);fill-rule:evenodd;stroke:#161413;stroke-width:1.21471822;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none"
id="path15820" />
<path
- d="M 204.80824,165.06463 C 204.80824,165.06463 311.59689,165.06463 311.59689,165.06463 C 311.59689,165.06463 311.59689,186.93286 311.59689,186.93286 C 311.59689,186.93286 204.80824,186.93286 204.80824,186.93286 C 204.80824,186.93286 204.80824,165.06463 204.80824,165.06463 z "
- style="fill:url(#linearGradient2712);fill-rule:evenodd;stroke:#161413;stroke-width:1.44460738;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none"
- id="path15822" />
- <text
- x="259.05054"
- y="116.27745"
- transform="scale(0.9888602,1.0112653)"
- style="font-size:10.93471336px;text-align:center;line-height:100%;writing-mode:lr-tb;text-anchor:middle;font-family:Arial"
- id="text15826">
- <tspan
- x="259.05054"
- y="116.27745"
- id="tspan19806">task</tspan>
- </text>
- <path
- d="M 255.2595,110.34502 C 255.2595,110.34502 321.1199,110.34502 321.1199,110.34502 C 321.1199,110.34502 321.1199,149.54697 321.1199,149.54697 C 321.1199,149.54697 255.2595,149.54697 255.2595,149.54697 C 255.2595,149.54697 255.2595,110.34502 255.2595,110.34502 z "
+ d="M 256.93046,123.71263 C 256.93046,123.71263 322.79086,123.71263 322.79086,123.71263 C 322.79086,123.71263 322.79086,162.91458 322.79086,162.91458 C 322.79086,162.91458 256.93046,162.91458 256.93046,162.91458 C 256.93046,162.91458 256.93046,123.71263 256.93046,123.71263 z "
style="fill:none;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none"
id="path15854" />
- <text
- x="221.84079"
- y="182.15039"
- transform="scale(1.0135698,0.9866119)"
- style="font-size:10.73772907px;text-align:start;line-height:100%;writing-mode:lr-tb;text-anchor:start;font-family:Arial"
- id="text5293">
- <tspan
- x="221.84079"
- y="182.15039"
- id="tspan20791">MARS kernel</tspan>
- </text>
- <path
- d="M 100.82605,162.51118 C 100.82605,162.51118 167.11608,162.51118 167.11608,162.51118 C 167.11608,162.51118 167.11608,200.06845 167.11608,200.06845 C 167.11608,200.06845 100.82605,200.06845 100.82605,200.06845 C 100.82605,200.06845 100.82605,162.51118 100.82605,162.51118 z "
- style="fill:none;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none"
- id="path5321" />
<g
- transform="matrix(0.9743265,0,0,1.0089098,244.49676,16.582622)"
+ transform="matrix(0.9743265,0,0,1.0089098,245.33224,14.076195)"
id="g15861">
<text
x="-22.808941"
@@ -2795,28 +2891,20 @@
style="fill:none;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none"
id="path15871" />
</g>
- <path
- d="M 369.75474,83.991411 C 369.75474,83.991411 476.14323,83.991411 476.14323,83.991411 C 476.14323,83.991411 476.14323,143.32158 476.14323,143.32158 C 476.14323,143.32158 369.75474,143.32158 369.75474,143.32158 C 369.75474,143.32158 369.75474,83.991411 369.75474,83.991411 z "
- style="fill:url(#linearGradient2695);fill-rule:evenodd;stroke:#161413;stroke-width:1.53789127;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none"
- id="path18531" />
- <path
- d="M 421.27392,112.69231 C 421.27392,112.69231 487.13432,112.69231 487.13432,112.69231 C 487.13432,112.69231 487.13432,151.89426 487.13432,151.89426 C 487.13432,151.89426 421.27392,151.89426 421.27392,151.89426 C 421.27392,151.89426 421.27392,112.69231 421.27392,112.69231 z "
- style="fill:none;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none"
- id="path18543" />
<text
- x="357.0162"
- y="123.54797"
+ x="356.14252"
+ y="135.53204"
transform="scale(0.9562663,1.0457338)"
style="font-size:11px;text-align:center;line-height:100%;writing-mode:lr-tb;text-anchor:middle;font-family:text-align"
id="text18599">
<tspan
- x="357.0162"
- y="123.54797"
+ x="356.14252"
+ y="135.53204"
style="text-align:center;line-height:100%;writing-mode:lr-tb;text-anchor:middle"
id="tspan18601">memory</tspan>
<tspan
- x="357.0162"
- y="135.09608"
+ x="356.14252"
+ y="147.08015"
style="text-align:center;line-height:100%;writing-mode:lr-tb;text-anchor:middle"
id="tspan18603">transfer</tspan>
</text>
@@ -2830,35 +2918,44 @@
id="path18607" />
</g>
<path
- d="M 532.3893,84.171111 C 532.3893,84.171111 638.77779,84.171111 638.77779,84.171111 C 638.77779,84.171111 638.77779,143.50128 638.77779,143.50128 C 638.77779,143.50128 532.3893,143.50128 532.3893,143.50128 C 532.3893,143.50128 532.3893,84.171111 532.3893,84.171111 z "
- style="fill:url(#linearGradient2682);fill-rule:evenodd;stroke:#161413;stroke-width:1.53789127;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none"
+ d="M 532.22252,107.39765 C 532.22252,107.39765 638.94457,107.39765 638.94457,107.39765 C 638.94457,107.39765 638.94457,143.66806 638.94457,143.66806 C 638.94457,143.66806 532.22252,143.66806 532.22252,143.66806 C 532.22252,143.66806 532.22252,107.39765 532.22252,107.39765 z "
+ style="fill:url(#linearGradient2758);fill-rule:evenodd;stroke:#161413;stroke-width:1.20432556;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none"
id="path18609" />
<path
- d="M 531.91482,164.50678 C 531.91482,164.50678 638.70345,164.50678 638.70345,164.50678 C 638.70345,164.50678 638.70345,186.375 638.70345,186.375 C 638.70345,186.375 531.91482,186.375 531.91482,186.375 C 531.91482,186.375 531.91482,164.50678 531.91482,164.50678 z "
- style="fill:url(#linearGradient2679);fill-rule:evenodd;stroke:#161413;stroke-width:1.4446075;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none"
- id="path18611" />
- <path
- d="M 583.13727,110.55838 C 583.13727,110.55838 648.99767,110.55838 648.99767,110.55838 C 648.99767,110.55838 648.99767,149.76033 648.99767,149.76033 C 648.99767,149.76033 583.13727,149.76033 583.13727,149.76033 C 583.13727,149.76033 583.13727,110.55838 583.13727,110.55838 z "
+ d="M 583.97275,123.09051 C 583.97275,123.09051 649.83315,123.09051 649.83315,123.09051 C 649.83315,123.09051 649.83315,162.29246 649.83315,162.29246 C 649.83315,162.29246 583.97275,162.29246 583.97275,162.29246 C 583.97275,162.29246 583.97275,123.09051 583.97275,123.09051 z "
style="fill:none;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none"
id="path18621" />
<text
- x="527.96234"
- y="122.58198"
+ x="527.08868"
+ y="135.36497"
transform="scale(0.9562663,1.0457338)"
style="font-size:11px;text-align:center;line-height:100%;writing-mode:lr-tb;text-anchor:middle;font-family:text-align"
id="text18675">
<tspan
- x="527.96234"
- y="122.58198"
+ x="527.08868"
+ y="135.36497"
style="text-align:center;line-height:100%;writing-mode:lr-tb;text-anchor:middle"
id="tspan18677">memory</tspan>
<tspan
- x="527.96234"
- y="134.1301"
+ x="527.08868"
+ y="146.91309"
style="text-align:center;line-height:100%;writing-mode:lr-tb;text-anchor:middle"
id="tspan18679">transfer</tspan>
</text>
<g
+ transform="matrix(0.6628937,0,0,0.9848408,368.55222,33.387611)"
+ style="fill:url(#linearGradient4790);fill-rule:evenodd;stroke:#161413;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none"
+ id="g4786">
+ <path
+ d="M 0,0 C 0,0 161,0 161,0 C 161,0 161,111 161,111 C 161,111 0,111 0,111 C 0,111 0,0 0,0 z "
+ style="fill:url(#linearGradient4792)"
+ id="path4788" />
+ </g>
+ <path
+ d="M 368.55934,34.50496 C 368.55934,34.50496 475.271,34.50496 475.271,34.50496 C 475.271,34.50496 475.271,71.40765 475.271,71.40765 C 475.271,71.40765 368.55934,71.40765 368.55934,71.40765 C 368.55934,71.40765 368.55934,34.50496 368.55934,34.50496 z "
+ style="fill:url(#linearGradient2695);fill-rule:evenodd;stroke:#161413;stroke-width:1.21471822;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none"
+ id="path2693" />
+ <g
transform="matrix(0.9743265,0,0,1.0089098,408.64551,14.773684)"
id="g18688">
<text
@@ -2877,7 +2974,7 @@
id="path18694" />
</g>
<g
- transform="matrix(0.9743265,0,0,1.0089098,571.5487,16.619312)"
+ transform="matrix(0.9743265,0,0,1.0089098,569.87775,15.783836)"
id="g18696">
<text
x="-22.808941"
@@ -2894,75 +2991,98 @@
style="fill:none;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none"
id="path18702" />
</g>
- <rect
- width="106.48238"
- height="109.56722"
- x="369.88943"
- y="32.678699"
- style="opacity:0.99479167;fill:#000000;fill-opacity:0;stroke:#ff0000;stroke-width:5.71555328;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="rect3875" />
- <path
- d="M 204.61404,143.80126 C 204.61404,143.80126 311.40269,143.80126 311.40269,143.80126 C 311.40269,143.80126 311.40269,165.66949 311.40269,165.66949 C 311.40269,165.66949 204.61404,165.66949 204.61404,165.66949 C 204.61404,165.66949 204.61404,143.80126 204.61404,143.80126 z "
- style="fill:url(#linearGradient19810);fill-opacity:1;fill-rule:evenodd;stroke:#161413;stroke-width:1.44460738;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none"
- id="path19808" />
- <rect
- width="106.50152"
- height="108.81516"
- x="205.29683"
- y="33.440338"
- style="opacity:0.99479167;fill:#000000;fill-opacity:0;stroke:#ff0000;stroke-width:5.6964159;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="rect2892" />
- <path
- d="M 294.4361,115.49197 C 380.462,115.78865 380.462,115.78865 380.462,115.78865"
- style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Triangle);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="path11991" />
<path
- d="M 384.4585,90.523907 C 384.4585,101.09005 364.6551,109.65488 340.22439,109.65488 C 315.79458,109.65488 295.99027,101.09005 295.99027,90.523907 C 295.99027,79.95816 315.79458,71.39293 340.22439,71.39293 C 364.6551,71.39293 384.4585,79.95816 384.4585,90.523907 z "
- style="fill:url(#linearGradient2734);fill-rule:evenodd;stroke:#161413;stroke-width:1.01075327;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none"
- id="path18363" />
+ d="M 173.29098,143.75397 C 194.3238,144.09687 194.3238,144.09687 194.3238,144.09687"
+ style="fill:none;fill-rule:evenodd;stroke:#0000ff;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Triangle);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="path3891" />
<text
- x="358.17352"
- y="80.736443"
- transform="scale(0.9485497,1.054241)"
- style="font-size:11.4840126px;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle"
- id="text18323">
+ x="94.701027"
+ y="141.94275"
+ transform="scale(0.9562663,1.0457338)"
+ style="font-size:11px;text-align:center;line-height:100%;writing-mode:lr-tb;text-anchor:middle;font-family:text-align"
+ id="text6850">
<tspan
- x="358.17352"
- y="80.736443"
- style="font-size:10.90614128px;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;font-family:text-align"
- id="tspan18386">task</tspan>
+ x="94.701027"
+ y="141.94275"
+ style="font-size:10px;text-align:center;line-height:100%;writing-mode:lr-tb;text-anchor:middle"
+ id="tspan3764">MARS_TASK_BASE_ADDR + 0x0</tspan>
+ </text>
+ <text
+ x="90.803055"
+ y="68.93222"
+ transform="scale(0.9562663,1.0457338)"
+ style="font-size:11px;text-align:center;line-height:100%;writing-mode:lr-tb;text-anchor:middle;font-family:text-align"
+ id="text6854">
<tspan
- x="358.17352"
- y="95.091454"
- style="font-size:10.90614128px;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;font-family:text-align"
- id="tspan18388">context save</tspan>
+ x="90.803055"
+ y="68.93222"
+ style="font-size:8px;text-align:center;line-height:100%;writing-mode:lr-tb;text-anchor:middle"
+ id="tspan4773">MARS_TASK_CONTEXT_SAVE_SIZE_MAX</tspan>
+ <tspan
+ x="90.803055"
+ y="76.93222"
+ style="font-size:8px;text-align:center;line-height:100%;writing-mode:lr-tb;text-anchor:middle"
+ id="tspan4775">- (A bytes)</tspan>
</text>
<path
- d="M 304.89434,78.0446 C 304.89434,78.0446 388.68642,78.0446 388.68642,78.0446 C 388.68642,78.0446 388.68642,105.02355 388.68642,105.02355 C 388.68642,105.02355 304.89434,105.02355 304.89434,105.02355 C 304.89434,105.02355 304.89434,78.0446 304.89434,78.0446 z "
- style="fill:none;stroke:none;stroke-width:0.94217199;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none"
- id="path18359" />
+ d="M 184.89718,133.12304 L 184.89718,144.83324"
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.44515228;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="path6864" />
<path
- d="M 532.32991,143.80126 C 532.32991,143.80126 639.11856,143.80126 639.11856,143.80126 C 639.11856,143.80126 639.11856,165.66949 639.11856,165.66949 C 639.11856,165.66949 532.32991,165.66949 532.32991,165.66949 C 532.32991,165.66949 532.32991,143.80126 532.32991,143.80126 z "
- style="fill:url(#linearGradient20801);fill-opacity:1;fill-rule:evenodd;stroke:#161413;stroke-width:1.44460738;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none"
- id="path20799" />
+ d="M 205.6416,33.669478 C 205.6416,33.669478 312.35326,33.669478 312.35326,33.669478 C 312.35326,33.669478 312.35326,70.572168 312.35326,70.572168 C 312.35326,70.572168 205.6416,70.572168 205.6416,70.572168 C 205.6416,70.572168 205.6416,33.669478 205.6416,33.669478 z "
+ style="fill:url(#linearGradient2699);fill-rule:evenodd;stroke:#161413;stroke-width:1.21471822;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none"
+ id="path2697" />
+ <rect
+ width="108.82321"
+ height="35.944042"
+ x="204.58583"
+ y="33.313324"
+ style="opacity:0.99479167;fill:#000000;fill-opacity:0;stroke:#ff0000;stroke-width:4.28649378;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ id="rect2705" />
+ <path
+ d="M 205.51932,142.89596 C 205.51932,142.89596 312.30797,142.89596 312.30797,142.89596 C 312.30797,142.89596 312.30797,164.76419 312.30797,164.76419 C 312.30797,164.76419 205.51932,164.76419 205.51932,164.76419 C 205.51932,164.76419 205.51932,142.89596 205.51932,142.89596 z "
+ style="fill:url(#linearGradient19810);fill-opacity:1;fill-rule:evenodd;stroke:#161413;stroke-width:1.44460738;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none"
+ id="path19808" />
+ <rect
+ width="108.82321"
+ height="35.944042"
+ x="203.75035"
+ y="106.76535"
+ style="opacity:0.99479167;fill:#000000;fill-opacity:0;stroke:#ff0000;stroke-width:4.28649378;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ id="rect3688" />
<rect
- width="106.50152"
- height="108.81516"
- x="533.64972"
- y="32.66914"
- style="opacity:0.99479167;fill:#000000;fill-opacity:0;stroke:#ff0000;stroke-width:5.6964159;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="rect3877" />
+ width="108.82321"
+ height="35.944042"
+ x="367.50357"
+ y="33.313328"
+ style="opacity:0.99479167;fill:#000000;fill-opacity:0;stroke:#ff0000;stroke-width:4.28649378;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ id="rect3690" />
+ <path
+ d="M 533.14803,34.50495 C 533.14803,34.50495 639.85969,34.50495 639.85969,34.50495 C 639.85969,34.50495 639.85969,71.40764 639.85969,71.40764 C 639.85969,71.40764 533.14803,71.40764 533.14803,71.40764 C 533.14803,71.40764 533.14803,34.50495 533.14803,34.50495 z "
+ style="fill:url(#linearGradient2691);fill-rule:evenodd;stroke:#161413;stroke-width:1.21471822;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none"
+ id="path2689" />
<path
- d="M 459.29347,115.48819 C 543.40998,115.7857 543.40998,115.7857 543.40998,115.7857"
+ d="M 459.29347,53.662997 C 543.40998,53.960507 543.40998,53.960507 543.40998,53.960507"
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.98044097;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Triangle);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="path18671" />
+ <path
+ d="M 368.55934,72.101355 C 368.55934,72.101355 475.271,72.101355 475.271,72.101355 C 475.271,72.101355 475.271,109.00404 475.271,109.00404 C 475.271,109.00404 368.55934,109.00404 368.55934,109.00404 C 368.55934,109.00404 368.55934,72.101355 368.55934,72.101355 z "
+ style="fill:url(#linearGradient2717);fill-rule:evenodd;stroke:#161413;stroke-width:1.21471822;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none"
+ id="path3694" />
+ <rect
+ width="108.82321"
+ height="35.944042"
+ x="367.50357"
+ y="74.251633"
+ style="opacity:0.99479167;fill:#000000;fill-opacity:0;stroke:#ff0000;stroke-width:4.28649378;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ id="rect3692" />
<g
transform="matrix(1.1684534,0,0,1.0853201,458.80898,68.38763)"
- style="fill:url(#linearGradient2744);fill-rule:evenodd;stroke:#161413;stroke-width:0.94217199;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none"
+ style="fill:url(#linearGradient2797);fill-rule:evenodd;stroke:#161413;stroke-width:0.94217199;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none"
id="g18390">
<path
d="M 77.4,19 C 77.4,29.4938 60.0742,38 38.7,38 C 17.3266,38 0,29.4938 0,19 C 0,8.50659 17.3266,0 38.7,0 C 60.0742,0 77.4,8.50659 77.4,19 z "
- style="fill:url(#linearGradient20700)"
+ style="fill:url(#linearGradient2799)"
id="path18392" />
</g>
<text
@@ -2986,111 +3106,349 @@
d="M 468.69809,77.03447 C 468.69809,77.03447 552.49017,77.03447 552.49017,77.03447 C 552.49017,77.03447 552.49017,104.01342 552.49017,104.01342 C 552.49017,104.01342 468.69809,104.01342 468.69809,104.01342 C 468.69809,104.01342 468.69809,77.03447 468.69809,77.03447 z "
style="fill:none;stroke:none;stroke-width:0.94217199;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none"
id="path18402" />
+ <g
+ transform="translate(113.44515,-198.16294)"
+ id="g18421">
+ <g
+ transform="matrix(1.1430004,0,0,1.0068935,182.54512,269.55587)"
+ style="fill:url(#linearGradient3169);fill-rule:evenodd;stroke:#161413;stroke-width:0.94217199;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none"
+ id="g18361">
+ <path
+ d="M 77.4,19 C 77.4,29.4938 60.0742,38 38.7,38 C 17.3266,38 0,29.4938 0,19 C 0,8.50659 17.3266,0 38.7,0 C 60.0742,0 77.4,8.50659 77.4,19 z "
+ style="fill:url(#linearGradient20684)"
+ id="path18363" />
+ </g>
+ <g
+ transform="matrix(0.9743265,0,0,1.0089098,191.44919,276.20754)"
+ id="g18321">
+ <text
+ x="37.057598"
+ y="6.7649817"
+ transform="scale(0.9652371,1.0360149)"
+ style="font-size:11px;line-height:100%;font-family:Arial"
+ id="text18323">
+ <tspan
+ x="37.057598"
+ y="6.7649817"
+ style="text-align:center;text-anchor:middle"
+ id="tspan18386">task</tspan>
+ <tspan
+ x="37.057598"
+ y="21.243538"
+ style="text-align:center;text-anchor:middle"
+ id="tspan18388">context save</tspan>
+ </text>
+ <path
+ d="M 0,0 C 0,0 86,0 86,0 C 86,0 86,26.7407 86,26.7407 C 86,26.7407 0,26.7407 0,26.7407 C 0,26.7407 0,0 0,0 z "
+ style="fill:none;stroke:none;stroke-width:0.94217199;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none"
+ id="path18359" />
+ </g>
+ </g>
+ <path
+ d="M 419.44801,89.631374 C 419.44801,89.631374 485.30841,89.631374 485.30841,89.631374 C 485.30841,89.631374 485.30841,128.83333 485.30841,128.83333 C 485.30841,128.83333 419.44801,128.83333 419.44801,128.83333 C 419.44801,128.83333 419.44801,89.631374 419.44801,89.631374 z "
+ style="fill:none;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none"
+ id="path3708" />
+ <path
+ d="M 295.10697,51.831385 C 379.22348,52.128895 379.22348,52.128895 379.22348,52.128895"
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.98044097;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Triangle);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="path3712" />
<text
- x="442.20264"
- y="164.11"
+ x="356.11108"
+ y="29.642771"
transform="scale(0.9562663,1.0457338)"
style="font-size:11px;text-align:center;line-height:100%;writing-mode:lr-tb;text-anchor:middle;font-family:text-align"
- id="text3879">
+ id="text3714">
+ <tspan
+ x="356.11108"
+ y="29.642771"
+ style="text-align:center;line-height:100%;writing-mode:lr-tb;text-anchor:middle"
+ id="tspan3716">memory</tspan>
<tspan
- x="442.20264"
- y="164.11"
+ x="356.11108"
+ y="41.190884"
style="text-align:center;line-height:100%;writing-mode:lr-tb;text-anchor:middle"
- id="tspan3887">context save area</tspan>
+ id="tspan3718">transfer</tspan>
</text>
<path
- d="M 173.29098,143.75397 C 194.3238,144.09687 194.3238,144.09687 194.3238,144.09687"
- style="fill:none;fill-rule:evenodd;stroke:#0000ff;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Triangle);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="path3891" />
- <path
- d="M 172.43677,33.99743 C 195.81517,33.99743 195.81517,33.99743 195.81517,33.99743"
- style="fill:none;fill-rule:evenodd;stroke:#0000ff;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="path5867" />
+ d="M 532.32991,143.80126 C 532.32991,143.80126 639.11856,143.80126 639.11856,143.80126 C 639.11856,143.80126 639.11856,165.66949 639.11856,165.66949 C 639.11856,165.66949 532.32991,165.66949 532.32991,165.66949 C 532.32991,165.66949 532.32991,143.80126 532.32991,143.80126 z "
+ style="fill:url(#linearGradient22475);fill-opacity:1;fill-rule:evenodd;stroke:#161413;stroke-width:1.44460738;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none"
+ id="path22473" />
+ <rect
+ width="108.82321"
+ height="35.944042"
+ x="531.25677"
+ y="107.11143"
+ style="opacity:0.99479167;fill:#000000;fill-opacity:0;stroke:#ff0000;stroke-width:4.28649378;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ id="rect3752" />
<text
- x="95.574715"
- y="139.54594"
+ x="526.47968"
+ y="31.240641"
transform="scale(0.9562663,1.0457338)"
style="font-size:11px;text-align:center;line-height:100%;writing-mode:lr-tb;text-anchor:middle;font-family:text-align"
- id="text6850">
+ id="text3754">
<tspan
- x="95.574715"
- y="139.54594"
- style="font-size:10px;text-align:center;line-height:100%;writing-mode:lr-tb;text-anchor:middle"
- id="tspan2705">MARS_TASK_BASE_ADDR + 0x0</tspan>
+ x="526.47968"
+ y="31.240641"
+ style="text-align:center;line-height:100%;writing-mode:lr-tb;text-anchor:middle"
+ id="tspan3756">memory</tspan>
+ <tspan
+ x="526.47968"
+ y="42.788754"
+ style="text-align:center;line-height:100%;writing-mode:lr-tb;text-anchor:middle"
+ id="tspan3758">transfer</tspan>
</text>
<text
- x="108.27676"
- y="88.905655"
+ x="189.43343"
+ y="124.2775"
transform="scale(0.9562663,1.0457338)"
style="font-size:11px;text-align:center;line-height:100%;writing-mode:lr-tb;text-anchor:middle;font-family:text-align"
- id="text6854">
+ id="text4751">
<tspan
- x="108.27676"
- y="88.905655"
- style="font-size:10px;text-align:center;line-height:100%;writing-mode:lr-tb;text-anchor:middle"
- id="tspan6858">MARS_TASK_CONTEXT_SAVE_SIZE_MAX</tspan>
+ x="189.43343"
+ y="124.2775"
+ id="tspan2731">B bytes</tspan>
+ <tspan
+ x="189.43343"
+ y="135.2775"
+ id="tspan2733" />
</text>
<path
- d="M 184.89717,33.99743 L 184.89717,78.727505"
- style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
- id="path6862" />
+ d="M 184.64011,108.43458 L 184.64011,118.62197"
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.34791577;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="path4755" />
<path
- d="M 184.89718,100.3122 L 184.89718,144.22507"
- style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.99082303px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
- id="path6864" />
+ d="M 173.78637,106.42673 C 197.16477,106.42673 197.16477,106.42673 197.16477,106.42673"
+ style="fill:none;fill-rule:evenodd;stroke:#0000ff;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="path4757" />
+ <path
+ d="M 173.42345,69.717512 C 194.45627,70.060412 194.45627,70.060412 194.45627,70.060412"
+ style="fill:none;fill-rule:evenodd;stroke:#0000ff;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Triangle);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="path4759" />
+ <path
+ d="M 185.02965,59.086582 L 185.02965,70.796782"
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.44515228;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="path4761" />
<text
- x="261.69424"
- y="157.08815"
+ x="189.57195"
+ y="53.478924"
+ transform="scale(0.9562663,1.0457338)"
+ style="font-size:11px;text-align:center;line-height:100%;writing-mode:lr-tb;text-anchor:middle;font-family:text-align"
+ id="text4763">
+ <tspan
+ x="189.57195"
+ y="53.478924"
+ id="tspan2729">A bytes</tspan>
+ </text>
+ <path
+ d="M 184.77258,34.398122 L 184.77258,44.585512"
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.34791577;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="path4767" />
+ <path
+ d="M 173.91884,32.390272 C 197.29724,32.390272 197.29724,32.390272 197.29724,32.390272"
+ style="fill:none;fill-rule:evenodd;stroke:#0000ff;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="path4769" />
+ <text
+ x="259.08896"
+ y="120.04173"
+ transform="scale(0.9888602,1.0112653)"
+ style="font-size:10.93471336px;text-align:center;line-height:100%;writing-mode:lr-tb;text-anchor:middle;font-family:Arial"
+ id="text20803">
+ <tspan
+ x="259.08896"
+ y="120.04173"
+ id="tspan2671">task</tspan>
+ <tspan
+ x="259.08896"
+ y="130.97646"
+ id="tspan2673">(text,data,heap)</tspan>
+ </text>
+ <text
+ x="263.79486"
+ y="156.19293"
transform="scale(0.9888602,1.0112653)"
style="font-size:10.93471336px;text-align:center;line-height:100%;writing-mode:lr-tb;text-anchor:middle;font-family:Arial"
id="text20793">
<tspan
- x="261.69424"
- y="157.08815"
+ x="263.79486"
+ y="156.19293"
id="tspan20797">task module</tspan>
</text>
+ <path
+ d="M 205.51932,164.62299 C 205.51932,164.62299 312.30797,164.62299 312.30797,164.62299 C 312.30797,164.62299 312.30797,186.49122 312.30797,186.49122 C 312.30797,186.49122 205.51932,186.49122 205.51932,186.49122 C 205.51932,186.49122 205.51932,164.62299 205.51932,164.62299 z "
+ style="fill:url(#linearGradient2712);fill-rule:evenodd;stroke:#161413;stroke-width:1.44460738;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none"
+ id="path15822" />
+ <text
+ x="223.53665"
+ y="181.94243"
+ transform="scale(1.0135698,0.9866119)"
+ style="font-size:10.73772907px;text-align:start;line-height:100%;writing-mode:lr-tb;text-anchor:start;font-family:Arial"
+ id="text5293">
+ <tspan
+ x="223.53665"
+ y="181.94243"
+ id="tspan20791">MARS kernel</tspan>
+ </text>
+ <path
+ d="M 532.32991,164.62299 C 532.32991,164.62299 639.11856,164.62299 639.11856,164.62299 C 639.11856,164.62299 639.11856,186.49122 639.11856,186.49122 C 639.11856,186.49122 532.32991,186.49122 532.32991,186.49122 C 532.32991,186.49122 532.32991,164.62299 532.32991,164.62299 z "
+ style="fill:url(#linearGradient22479);fill-rule:evenodd;stroke:#161413;stroke-width:1.44460738;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none"
+ id="path22477" />
<text
- x="426.4826"
- y="118.59421"
+ x="593.37158"
+ y="156.19295"
transform="scale(0.9888602,1.0112653)"
style="font-size:10.93471336px;text-align:center;line-height:100%;writing-mode:lr-tb;text-anchor:middle;font-family:Arial"
- id="text20803">
+ id="text22481">
+ <tspan
+ x="593.37158"
+ y="156.19295"
+ id="tspan22483">task module</tspan>
+ </text>
+ <text
+ x="544.18555"
+ y="181.02484"
+ transform="scale(1.0135698,0.9866119)"
+ style="font-size:10.73772907px;text-align:start;line-height:100%;writing-mode:lr-tb;text-anchor:start;font-family:Arial"
+ id="text22485">
<tspan
- x="426.4826"
- y="118.59421"
- id="tspan20805">task</tspan>
+ x="544.18555"
+ y="181.02484"
+ id="tspan22487">MARS kernel</tspan>
</text>
+ <path
+ d="M 295.44845,126.78787 L 378.46255,109.94106"
+ style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Triangle);stroke-miterlimit:4;stroke-dasharray:none"
+ id="path5070" />
+ <path
+ d="M 459.13929,109.93701 L 543.79895,124.53952"
+ style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Triangle);stroke-miterlimit:4;stroke-dasharray:none"
+ id="path5072" />
<text
- x="591.27094"
- y="117.69901"
+ x="442.28873"
+ y="119.27355"
+ transform="scale(0.9562663,1.0457338)"
+ style="font-size:11px;text-align:center;line-height:100%;writing-mode:lr-tb;text-anchor:middle;font-family:text-align"
+ id="text5804">
+ <tspan
+ x="442.28873"
+ y="119.27355"
+ style="text-align:center;line-height:100%;writing-mode:lr-tb;text-anchor:middle"
+ id="tspan5806">unused</tspan>
+ <tspan
+ x="442.28873"
+ y="130.82167"
+ style="text-align:center;line-height:100%;writing-mode:lr-tb;text-anchor:middle"
+ id="tspan5808">save area</tspan>
+ </text>
+ <text
+ x="426.67349"
+ y="89.382225"
transform="scale(0.9888602,1.0112653)"
style="font-size:10.93471336px;text-align:center;line-height:100%;writing-mode:lr-tb;text-anchor:middle;font-family:Arial"
- id="text20807">
+ id="text2675">
<tspan
- x="591.27094"
- y="117.69901"
- id="tspan20809">task</tspan>
+ x="426.67349"
+ y="89.382225"
+ id="tspan2677">task</tspan>
+ <tspan
+ x="426.67349"
+ y="100.31694"
+ id="tspan2679">(text,data,heap)</tspan>
</text>
<text
- x="591.54059"
- y="157.08815"
+ x="593.96124"
+ y="122.42896"
transform="scale(0.9888602,1.0112653)"
style="font-size:10.93471336px;text-align:center;line-height:100%;writing-mode:lr-tb;text-anchor:middle;font-family:Arial"
- id="text20811">
+ id="text2681">
+ <tspan
+ x="593.96124"
+ y="122.42896"
+ id="tspan2683">task</tspan>
<tspan
- x="591.54059"
- y="157.08815"
- id="tspan20813">task module</tspan>
+ x="593.96124"
+ y="133.36368"
+ id="tspan2685">(text,data,heap)</tspan>
</text>
+ <rect
+ width="108.82321"
+ height="35.944042"
+ x="532.09222"
+ y="33.31332"
+ style="opacity:0.99479167;fill:#000000;fill-opacity:0;stroke:#ff0000;stroke-width:4.28649378;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ id="rect2687" />
<text
- x="543.29236"
- y="181.94243"
- transform="scale(1.0135698,0.9866119)"
- style="font-size:10.73772907px;text-align:start;line-height:100%;writing-mode:lr-tb;text-anchor:start;font-family:Arial"
- id="text20815">
+ x="261.07556"
+ y="48.899952"
+ transform="scale(0.9888602,1.0112653)"
+ style="font-size:10.93471336px;text-align:center;line-height:100%;writing-mode:lr-tb;text-anchor:middle;font-family:Arial"
+ id="text2701">
<tspan
- x="543.29236"
- y="181.94243"
- id="tspan20817">MARS kernel</tspan>
+ x="261.07556"
+ y="48.899952"
+ id="tspan2707">task</tspan>
+ <tspan
+ x="261.07556"
+ y="59.834663"
+ id="tspan2709">(used stack)</tspan>
+ </text>
+ <text
+ x="426.67352"
+ y="48.076462"
+ transform="scale(0.9888602,1.0112653)"
+ style="font-size:10.93471336px;text-align:center;line-height:100%;writing-mode:lr-tb;text-anchor:middle;font-family:Arial"
+ id="text2711">
+ <tspan
+ x="426.67352"
+ y="48.076462"
+ id="tspan2713">task</tspan>
+ <tspan
+ x="426.67352"
+ y="59.011173"
+ id="tspan2715">(used stack)</tspan>
+ </text>
+ <text
+ x="593.11633"
+ y="48.076481"
+ transform="scale(0.9888602,1.0112653)"
+ style="font-size:10.93471336px;text-align:center;line-height:100%;writing-mode:lr-tb;text-anchor:middle;font-family:Arial"
+ id="text2717">
+ <tspan
+ x="593.11633"
+ y="48.076481"
+ id="tspan2719">task</tspan>
+ <tspan
+ x="593.11633"
+ y="59.011192"
+ id="tspan2721">(used stack)</tspan>
+ </text>
+ <text
+ x="445.78345"
+ y="182.38957"
+ transform="scale(0.9562663,1.0457338)"
+ style="font-size:9px;text-align:center;line-height:100%;writing-mode:lr-tb;text-anchor:middle;font-family:Arial"
+ id="text2753">
+ <tspan
+ x="445.78345"
+ y="182.38957"
+ id="tspan3786">MARS_TASK_CONTEXT_SAVE_SIZE_MAX</tspan>
+ <tspan
+ x="445.78345"
+ y="191.38957"
+ id="tspan3788">- (A bytes + B bytes)</tspan>
+ </text>
+ <text
+ x="441.41504"
+ y="155.22572"
+ transform="scale(0.9562663,1.0457338)"
+ style="font-size:10px;text-align:center;line-height:100%;writing-mode:lr-tb;text-anchor:middle;font-family:Arial"
+ id="text3790">
+ <tspan
+ x="441.41504"
+ y="155.22572"
+ id="tspan3800">unused</tspan>
+ <tspan
+ x="441.41504"
+ y="166.22572"
+ id="tspan3802">save area size:</tspan>
</text>
</svg>
diff --git a/doxygen/src/img_task_switch_partial.svg b/doxygen/src/img_task_switch_optimal.svg
index 69250e2..f5a7cd1 100644
--- a/doxygen/src/img_task_switch_partial.svg
+++ b/doxygen/src/img_task_switch_optimal.svg
@@ -2812,6 +2812,49 @@
xlink:href="#Grad27"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1.0170346,0,0,0.1508154,533.04098,164.18135)" />
+ <linearGradient
+ x1="80.5"
+ y1="0"
+ x2="80.5"
+ y2="111"
+ id="linearGradient4790"
+ xlink:href="#Grad12"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ x1="80.5"
+ y1="0"
+ x2="80.5"
+ y2="111"
+ id="linearGradient4792"
+ xlink:href="#Grad12"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ x1="26"
+ y1="0"
+ x2="26"
+ y2="33"
+ id="linearGradient2691"
+ xlink:href="#Grad16"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(2.0521472,0,0,1.1182634,533.14803,34.50496)" />
+ <linearGradient
+ x1="26"
+ y1="0"
+ x2="26"
+ y2="33"
+ id="linearGradient2695"
+ xlink:href="#Grad16"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(2.0521472,0,0,1.1182634,368.55934,34.50497)" />
+ <linearGradient
+ x1="26"
+ y1="0"
+ x2="26"
+ y2="33"
+ id="linearGradient2699"
+ xlink:href="#Grad16"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(2.0521472,0,0,1.1182634,205.6416,33.669488)" />
</defs>
<g
transform="matrix(0.6610931,0,0,1.373623,205.48964,33.793424)"
@@ -2899,6 +2942,10 @@
style="text-align:center;line-height:100%;writing-mode:lr-tb;text-anchor:middle"
id="tspan18679">transfer</tspan>
</text>
+ <path
+ d="M 368.55934,34.50496 C 368.55934,34.50496 475.271,34.50496 475.271,34.50496 C 475.271,34.50496 475.271,71.40765 475.271,71.40765 C 475.271,71.40765 368.55934,71.40765 368.55934,71.40765 C 368.55934,71.40765 368.55934,34.50496 368.55934,34.50496 z "
+ style="fill:url(#linearGradient2695);fill-rule:evenodd;stroke:#161413;stroke-width:1.21471822;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none"
+ id="path2693" />
<g
transform="matrix(0.9743265,0,0,1.0089098,408.64551,14.773684)"
id="g18688">
@@ -2936,22 +2983,6 @@
id="path18702" />
</g>
<text
- x="441.32895"
- y="131.35356"
- transform="scale(0.9562663,1.0457338)"
- style="font-size:11px;text-align:center;line-height:100%;writing-mode:lr-tb;text-anchor:middle;font-family:text-align"
- id="text3879">
- <tspan
- x="441.32895"
- y="131.35356"
- style="text-align:center;line-height:100%;writing-mode:lr-tb;text-anchor:middle"
- id="tspan3887">context save area</tspan>
- </text>
- <path
- d="M 173.29098,143.75397 C 194.3238,144.09687 194.3238,144.09687 194.3238,144.09687"
- style="fill:none;fill-rule:evenodd;stroke:#0000ff;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Triangle);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="path3891" />
- <text
x="94.701027"
y="141.94275"
transform="scale(0.9562663,1.0457338)"
@@ -2978,12 +3009,16 @@
x="90.803055"
y="76.93222"
style="font-size:8px;text-align:center;line-height:100%;writing-mode:lr-tb;text-anchor:middle"
- id="tspan4775">- 0x1000</tspan>
+ id="tspan4775">- (A bytes)</tspan>
</text>
<path
d="M 184.89718,133.12304 L 184.89718,144.83324"
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.44515228;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="path6864" />
+ <path
+ d="M 205.6416,33.669478 C 205.6416,33.669478 312.35326,33.669478 312.35326,33.669478 C 312.35326,33.669478 312.35326,70.572168 312.35326,70.572168 C 312.35326,70.572168 205.6416,70.572168 205.6416,70.572168 C 205.6416,70.572168 205.6416,33.669478 205.6416,33.669478 z "
+ style="fill:url(#linearGradient2699);fill-rule:evenodd;stroke:#161413;stroke-width:1.21471822;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none"
+ id="path2697" />
<rect
width="108.82321"
height="35.944042"
@@ -2999,9 +3034,13 @@
width="108.82321"
height="35.944042"
x="203.75035"
- y="106.76535"
+ y="107.60082"
style="opacity:0.99479167;fill:#000000;fill-opacity:0;stroke:#ff0000;stroke-width:4.28649378;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect3688" />
+ <path
+ d="M 173.29098,143.75397 C 194.3238,144.09687 194.3238,144.09687 194.3238,144.09687"
+ style="fill:none;fill-rule:evenodd;stroke:#0000ff;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Triangle);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="path3891" />
<rect
width="108.82321"
height="35.944042"
@@ -3010,6 +3049,10 @@
style="opacity:0.99479167;fill:#000000;fill-opacity:0;stroke:#ff0000;stroke-width:4.28649378;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect3690" />
<path
+ d="M 533.14803,34.50495 C 533.14803,34.50495 639.85969,34.50495 639.85969,34.50495 C 639.85969,34.50495 639.85969,71.40764 639.85969,71.40764 C 639.85969,71.40764 533.14803,71.40764 533.14803,71.40764 C 533.14803,71.40764 533.14803,34.50495 533.14803,34.50495 z "
+ style="fill:url(#linearGradient2691);fill-rule:evenodd;stroke:#161413;stroke-width:1.21471822;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none"
+ id="path2689" />
+ <path
d="M 459.29347,53.662997 C 543.40998,53.960507 543.40998,53.960507 543.40998,53.960507"
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.98044097;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Triangle);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="path18671" />
@@ -3117,64 +3160,6 @@
style="text-align:center;line-height:100%;writing-mode:lr-tb;text-anchor:middle"
id="tspan3718">transfer</tspan>
</text>
- <text
- x="270.48996"
- y="48.018322"
- transform="scale(0.9562663,1.0457338)"
- style="font-size:11px;text-align:center;line-height:100%;writing-mode:lr-tb;text-anchor:middle;font-family:text-align"
- id="text3720">
- <tspan
- x="270.48996"
- y="48.018322"
- style="text-align:center;line-height:100%;writing-mode:lr-tb;text-anchor:middle"
- id="tspan3728">used</tspan>
- <tspan
- x="270.48996"
- y="59.566448"
- style="text-align:center;line-height:100%;writing-mode:lr-tb;text-anchor:middle"
- id="tspan3730">stack area</tspan>
- </text>
- <text
- x="439.67786"
- y="46.774624"
- transform="scale(0.9562663,1.0457338)"
- style="font-size:11px;text-align:center;line-height:100%;writing-mode:lr-tb;text-anchor:middle;font-family:text-align"
- id="text3732">
- <tspan
- x="439.67786"
- y="46.774624"
- style="text-align:center;line-height:100%;writing-mode:lr-tb;text-anchor:middle"
- id="tspan3734">used</tspan>
- <tspan
- x="439.67786"
- y="58.32275"
- style="text-align:center;line-height:100%;writing-mode:lr-tb;text-anchor:middle"
- id="tspan3736">stack area</tspan>
- </text>
- <text
- x="612.66748"
- y="46.774628"
- transform="scale(0.9562663,1.0457338)"
- style="font-size:11px;text-align:center;line-height:100%;writing-mode:lr-tb;text-anchor:middle;font-family:text-align"
- id="text3744">
- <tspan
- x="612.66748"
- y="46.774628"
- style="text-align:center;line-height:100%;writing-mode:lr-tb;text-anchor:middle"
- id="tspan3746">used</tspan>
- <tspan
- x="612.66748"
- y="58.322754"
- style="text-align:center;line-height:100%;writing-mode:lr-tb;text-anchor:middle"
- id="tspan3748">stack area</tspan>
- </text>
- <rect
- width="108.82321"
- height="35.944042"
- x="531.25677"
- y="32.722561"
- style="opacity:0.99479167;fill:#000000;fill-opacity:0;stroke:#ff0000;stroke-width:4.28649378;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="rect3750" />
<path
d="M 532.32991,143.80126 C 532.32991,143.80126 639.11856,143.80126 639.11856,143.80126 C 639.11856,143.80126 639.11856,165.66949 639.11856,165.66949 C 639.11856,165.66949 532.32991,165.66949 532.32991,165.66949 C 532.32991,165.66949 532.32991,143.80126 532.32991,143.80126 z "
style="fill:url(#linearGradient22475);fill-opacity:1;fill-rule:evenodd;stroke:#161413;stroke-width:1.44460738;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none"
@@ -3212,8 +3197,11 @@
<tspan
x="189.43343"
y="124.2775"
- style="font-size:10px;text-align:center;line-height:100%;writing-mode:lr-tb;text-anchor:middle"
- id="tspan4753">0x1000</tspan>
+ id="tspan2731">B bytes</tspan>
+ <tspan
+ x="189.43343"
+ y="135.2775"
+ id="tspan2733" />
</text>
<path
d="M 184.64011,108.43458 L 184.64011,118.62197"
@@ -3240,8 +3228,7 @@
<tspan
x="189.57195"
y="53.478924"
- style="font-size:10px;text-align:center;line-height:100%;writing-mode:lr-tb;text-anchor:middle"
- id="tspan4765">0x1000</tspan>
+ id="tspan2729">A bytes</tspan>
</text>
<path
d="M 184.77258,34.398122 L 184.77258,44.585512"
@@ -3252,37 +3239,19 @@
style="fill:none;fill-rule:evenodd;stroke:#0000ff;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="path4769" />
<text
- x="260.77875"
- y="126.65108"
+ x="259.08896"
+ y="120.04173"
transform="scale(0.9888602,1.0112653)"
style="font-size:10.93471336px;text-align:center;line-height:100%;writing-mode:lr-tb;text-anchor:middle;font-family:Arial"
id="text20803">
<tspan
- x="260.77875"
- y="126.65108"
- id="tspan20805">task</tspan>
- </text>
- <text
- x="425.56711"
- y="94.423607"
- transform="scale(0.9888602,1.0112653)"
- style="font-size:10.93471336px;text-align:center;line-height:100%;writing-mode:lr-tb;text-anchor:middle;font-family:Arial"
- id="text22457">
- <tspan
- x="425.56711"
- y="94.423607"
- id="tspan22459">task</tspan>
- </text>
- <text
- x="590.35547"
- y="128.4415"
- transform="scale(0.9888602,1.0112653)"
- style="font-size:10.93471336px;text-align:center;line-height:100%;writing-mode:lr-tb;text-anchor:middle;font-family:Arial"
- id="text22461">
+ x="259.08896"
+ y="120.04173"
+ id="tspan2671">task</tspan>
<tspan
- x="590.35547"
- y="128.4415"
- id="tspan22463">task</tspan>
+ x="259.08896"
+ y="130.97646"
+ id="tspan2673">(text,data,heap)</tspan>
</text>
<text
x="263.79486"
@@ -3344,4 +3313,109 @@
d="M 459.13929,109.93701 L 543.79895,124.53952"
style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Triangle);stroke-miterlimit:4;stroke-dasharray:none"
id="path5072" />
+ <text
+ x="426.67349"
+ y="89.382225"
+ transform="scale(0.9888602,1.0112653)"
+ style="font-size:10.93471336px;text-align:center;line-height:100%;writing-mode:lr-tb;text-anchor:middle;font-family:Arial"
+ id="text2675">
+ <tspan
+ x="426.67349"
+ y="89.382225"
+ id="tspan2677">task</tspan>
+ <tspan
+ x="426.67349"
+ y="100.31694"
+ id="tspan2679">(text,data,heap)</tspan>
+ </text>
+ <text
+ x="593.96124"
+ y="122.42896"
+ transform="scale(0.9888602,1.0112653)"
+ style="font-size:10.93471336px;text-align:center;line-height:100%;writing-mode:lr-tb;text-anchor:middle;font-family:Arial"
+ id="text2681">
+ <tspan
+ x="593.96124"
+ y="122.42896"
+ id="tspan2683">task</tspan>
+ <tspan
+ x="593.96124"
+ y="133.36368"
+ id="tspan2685">(text,data,heap)</tspan>
+ </text>
+ <rect
+ width="108.82321"
+ height="35.944042"
+ x="532.09222"
+ y="33.31332"
+ style="opacity:0.99479167;fill:#000000;fill-opacity:0;stroke:#ff0000;stroke-width:4.28649378;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ id="rect2687" />
+ <text
+ x="261.07556"
+ y="48.899952"
+ transform="scale(0.9888602,1.0112653)"
+ style="font-size:10.93471336px;text-align:center;line-height:100%;writing-mode:lr-tb;text-anchor:middle;font-family:Arial"
+ id="text2701">
+ <tspan
+ x="261.07556"
+ y="48.899952"
+ id="tspan2707">task</tspan>
+ <tspan
+ x="261.07556"
+ y="59.834663"
+ id="tspan2709">(used stack)</tspan>
+ </text>
+ <text
+ x="426.67352"
+ y="48.076462"
+ transform="scale(0.9888602,1.0112653)"
+ style="font-size:10.93471336px;text-align:center;line-height:100%;writing-mode:lr-tb;text-anchor:middle;font-family:Arial"
+ id="text2711">
+ <tspan
+ x="426.67352"
+ y="48.076462"
+ id="tspan2713">task</tspan>
+ <tspan
+ x="426.67352"
+ y="59.011173"
+ id="tspan2715">(used stack)</tspan>
+ </text>
+ <text
+ x="593.11633"
+ y="48.076481"
+ transform="scale(0.9888602,1.0112653)"
+ style="font-size:10.93471336px;text-align:center;line-height:100%;writing-mode:lr-tb;text-anchor:middle;font-family:Arial"
+ id="text2717">
+ <tspan
+ x="593.11633"
+ y="48.076481"
+ id="tspan2719">task</tspan>
+ <tspan
+ x="593.11633"
+ y="59.011192"
+ id="tspan2721">(used stack)</tspan>
+ </text>
+ <text
+ x="441.41504"
+ y="136.05124"
+ transform="scale(0.9562663,1.0457338)"
+ style="font-size:10px;text-align:center;line-height:100%;writing-mode:lr-tb;text-anchor:middle;font-family:Arial"
+ id="text2753">
+ <tspan
+ x="441.41504"
+ y="136.05124"
+ id="tspan6550">Optimal</tspan>
+ <tspan
+ x="441.41504"
+ y="146.05124"
+ id="tspan6552">save area size:</tspan>
+ <tspan
+ x="441.41504"
+ y="156.05124"
+ id="tspan6554" />
+ <tspan
+ x="441.41504"
+ y="166.05124"
+ id="tspan6556">(A bytes + B bytes)</tspan>
+ </text>
</svg>