atexit() stuff in thread-local reent?

Sebastian Huber sebastian.huber@embedded-brains.de
Sat Apr 27 11:53:00 GMT 2013


Hello,

currently the struct _reent contains some atexit() stuff:

struct _reent {
   [...]
   /* atexit stuff */
   struct _atexit *_atexit;
   struct _atexit _atexit0;
   [...]
};

on PowerPC for example this accounts for 400 of 1088 bytes of the 
structure.  From my point of view the atexit() stuff belongs to the 
global state and is not thread-specific.  I think all atexit() related 
functions (in __call_atexit.c and  __atexit.c, are there more?) use 
_GLOBAL_REENT.  This is related to the possibly unused _wrapup_reent() 
function.  Maybe we should introduce two structures.  One for the global 
state (contains thread-specific state + atexit() stuff) and one for the 
thread-specific state.  This might save 400 bytes (37% of current 
_reent) per thread.

-- 
Sebastian Huber, embedded brains GmbH

Address : Dornierstr. 4, D-82178 Puchheim, Germany
Phone   : +49 89 189 47 41-16
Fax     : +49 89 189 47 41-09
E-Mail  : sebastian.huber@embedded-brains.de
PGP     : Public key available on request.

Diese Nachricht ist keine geschäftliche Mitteilung im Sinne des EHUG.



More information about the Newlib mailing list