source: rtems/cpukit/libcsupport/src/README @ d5154d0f

5
Last change on this file since d5154d0f was d5154d0f, checked in by Aun-Ali Zaidi <admin@…>, on 12/23/15 at 20:44:02

api: Remove deprecated Notepads

Notepads where a feature of RTEMS' tasks that simply functioned in
the same way as POSIX keys or threaded local storage (TLS). They were
introduced well before per task variables, which are also deprecated,
and were barely used in favor of their POSIX alternatives.

In addition to their scarce usage, Notepads took up unnecessary memory.
For each task:

  • 16 32-bit integers were allocated.
  • A total of 64 bytes per task per thread.

This is especially critical in low memory and safety-critical applications.

They are also defined as uint32_t, and therefore are not guaranteed to
hold a pointer.

Lastly, they are not portable solutions for SMP and uniprocessor systems,
like POSIX keys and TLS.

updates #2493.

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