4.104.114.84.95
Line | |
---|
1 | -- |
---|
2 | -- $Id$ |
---|
3 | -- |
---|
4 | |
---|
5 | Overview of newlib support (newlib is from CYGNUS) |
---|
6 | Each task can have its own libc state including: |
---|
7 | open stdio files |
---|
8 | strtok |
---|
9 | multi precision arithmetic state |
---|
10 | etc. |
---|
11 | |
---|
12 | This is implemented by a reentrancy data structure for each task. |
---|
13 | |
---|
14 | When a task is "started" (in RTEMS sense) the reentrancy structure |
---|
15 | is allocated. Its address is stored in notepad[NOTEPAD_LAST]. |
---|
16 | |
---|
17 | When task is switched to, the value of global variable _impure_ptr |
---|
18 | is changed to the value of the new tasks reentrancy structure. |
---|
19 | |
---|
20 | When a task is deleted |
---|
21 | atexit() processing (for that task) happens |
---|
22 | task's stdio buffers are flushed |
---|
23 | |
---|
24 | When exit(3) is called |
---|
25 | calling task's atexit processing done |
---|
26 | global libc state atexit processing done |
---|
27 | (this will include any atexit routines installed by drivers) |
---|
28 | executive is shutdown |
---|
29 | causes a context switch back to bsp land |
---|
30 | |
---|
31 | |
---|
32 | NOTE: |
---|
33 | libc extension are installed by bsp_libc_init() |
---|
34 | iff we are using clock interrupts. |
---|
35 | This hack is necessary to allow the tmtests to avoid |
---|
36 | timing the extensions. |
---|
37 | |
---|
Note: See
TracBrowser
for help on using the repository browser.