threaded malloc
Ian Lance Taylor
ian@cygnus.com
Mon Dec 8 09:54:00 GMT 1997
Date: Thu, 4 Dec 1997 12:45:10 -0600 (CST)
From: Joel Sherrill <joel@OARcorp.com>
If there is an archive of this mailing list, then you might find some
discussion between myself, Tony Bennett, and Rob Savoye about the
reentrancy design of newlib and ohw it could be improved. The key to the
current newlib reentrancy is that each thread gets its own copy of all
"sensitive" data. Some of this data is really global and should be
shared/protected. The malloc data is the worst example of this. Each
thread should not have its own malloc area. They should share one larger
protected area.
I reworked the newlib malloc to incorporate Doug Lea's malloc routine
( http://g.oswego.edu/dl/html/malloc.html ). I changed the routines to
use a single heap. The reentrancy pointer is still passed into the
malloc routines (and on to _sbrk_r) so we can in the future change
this around if we like.
malloc and friends now call __malloc_lock and __mallock_unlock around
accesses to the heap, so that it is possible to lock it for multiple
threads. The default versions of __malloc_lock and __malloc_unlock do
nothing.
AFAIK RTEMS users reflect a significant percentage of the newlib
user community.
The other big user that I know of is the cygwin32 project, which uses
newlib on Windows.
Ian
More information about the Newlib
mailing list