This is the mail archive of the newlib@sourceware.org mailing list for the newlib project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

atexit() stuff in thread-local reent?


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.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]