forked from Imagelibrary/rtems
38 lines
1.1 KiB
Plaintext
38 lines
1.1 KiB
Plaintext
--
|
|
-- $Id$
|
|
--
|
|
|
|
Overview of newlib support (newlib is from CYGNUS)
|
|
Each task can have its own libc state including:
|
|
open stdio files
|
|
strtok
|
|
multi precision arithmetic state
|
|
etc.
|
|
|
|
This is implemented by a reentrancy data structure for each task.
|
|
|
|
When a task is "started" (in RTEMS sense) the reentrancy structure
|
|
is allocated. Its address is stored in notepad[NOTEPAD_LAST].
|
|
|
|
When task is switched to, the value of global variable _impure_ptr
|
|
is changed to the value of the new tasks reentrancy structure.
|
|
|
|
When a task is deleted
|
|
atexit() processing (for that task) happens
|
|
task's stdio buffers are flushed
|
|
|
|
When exit(3) is called
|
|
calling task's atexit processing done
|
|
global libc state atexit processing done
|
|
(this will include any atexit routines installed by drivers)
|
|
executive is shutdown
|
|
causes a context switch back to bsp land
|
|
|
|
|
|
NOTE:
|
|
libc extension are installed by bsp_libc_init()
|
|
iff we are using clock interrupts.
|
|
This hack is necessary to allow the tmtests to avoid
|
|
timing the extensions.
|
|
|