4.104.114.84.95
Rev | Line | |
---|
[ac7d5ef0] | 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.