Welcome to mirror list, hosted at ThFree Co, Russian Federation.

cygwin.com/git/newlib-cygwin.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristopher Faylor <me@cgf.cx>2001-06-26 18:47:48 +0400
committerChristopher Faylor <me@cgf.cx>2001-06-26 18:47:48 +0400
commit462f4effb11d00114b8285a991a3257d36db308a (patch)
treed0d3ddcf619a0697858620d9c0bd84a95aeceb0b /winsup/cygwin/dlmalloc.c
parentd006404dae50c0fe1ce5c55f12d8eb8c28ff6625 (diff)
* mmap.cc: Clean up *ResourceLock calls throughout.
* thread.cc (pthread_cond::TimedWait): Check for WAIT_TIMEOUT as well as WAIT_ABANDONED. (__pthread_cond_timedwait): Calculate a relative wait from the abstime parameter.
Diffstat (limited to 'winsup/cygwin/dlmalloc.c')
-rw-r--r--winsup/cygwin/dlmalloc.c71
1 files changed, 39 insertions, 32 deletions
diff --git a/winsup/cygwin/dlmalloc.c b/winsup/cygwin/dlmalloc.c
index 8eb09de18..809728c8a 100644
--- a/winsup/cygwin/dlmalloc.c
+++ b/winsup/cygwin/dlmalloc.c
@@ -28,6 +28,13 @@
* malloc_usable_size(P) is equivalent to realloc(P, malloc_usable_size(P))
*
* $Log$
+ * Revision 1.3 2001/06/26 14:47:48 cgf
+ * * mmap.cc: Clean up *ResourceLock calls throughout.
+ * * thread.cc (pthread_cond::TimedWait): Check for WAIT_TIMEOUT as well as
+ * WAIT_ABANDONED.
+ * (__pthread_cond_timedwait): Calculate a relative wait from the abstime
+ * parameter.
+ *
* Revision 1.2 2001/06/24 22:26:49 cgf
* forced commit
*
@@ -2001,7 +2008,7 @@ static void do_check_chunk(p) mchunkptr p;
if (!chunk_is_mmapped(p))
{
INTERNAL_SIZE_T sz;
-
+
unless((char*)p >= sbrk_base, "chunk precedes sbrk_base", p);
unless((char*)p + MINSIZE <= (char*)top + chunksize(top),
"chunk past sbrk area", p);
@@ -2057,7 +2064,7 @@ static void do_check_inuse_chunk(p) mchunkptr p;
{
mchunkptr next;
do_check_chunk(p);
-
+
if (chunk_is_mmapped(p))
return;
@@ -2178,7 +2185,7 @@ static void do_init_freed_chunk(mchunkptr p, INTERNAL_SIZE_T freehead,
p->alloced = 0;
memset((char *)mem - MOATWIDTH, MOATFILL, MOATWIDTH);
memset((char *)mem + bytes, MOATFILL, MOATWIDTH);
-
+
/* To avoid terrible O(n^2) performance when free() repeatedly grows a free
* chunk, it's important not to free-fill regions that are already
* free-filled.
@@ -2576,7 +2583,7 @@ static void malloc_extend_top(nb) INTERNAL_SIZE_T nb;
}
#endif /* OTHER_SBRKS */
}
-
+
init_freed_chunk(top, old_top == initial_top ? old_top_size : 0, 0);
if ((unsigned long)sbrked_mem > (unsigned long)max_sbrked_mem)
@@ -2699,7 +2706,7 @@ Void_t* mALLOc(bytes) size_t bytes;
check_freefill(victim, victim_size, victim_size);
init_malloced_chunk(victim, bytes);
check_malloced_chunk(victim, nb);
-
+
return chunk2mem(victim);
}
@@ -2952,7 +2959,7 @@ void fREe(mem) Void_t* mem;
p = mem2chunk(mem);
check_inuse_chunk(p);
-
+
hd = p->size;
#if HAVE_MMAP
@@ -3644,7 +3651,7 @@ static void malloc_update_mallinfo(void)
INTERNAL_SIZE_T avail = chunksize(top);
int navail = avail >= MINSIZE ? 1 : 0;
check_freefill(top, avail, avail);
-
+
#if DEBUG
if (lowest_chunk)
for (p = lowest_chunk;
@@ -3652,7 +3659,7 @@ static void malloc_update_mallinfo(void)
p = next_chunk(p))
check_inuse_chunk(p);
#endif
-
+
for (i = 1; i < NAV; ++i)
{
b = bin_at(i);
@@ -3662,9 +3669,9 @@ static void malloc_update_mallinfo(void)
check_free_chunk(p);
check_freefill(p, chunksize(p), chunksize(p));
for (q = next_chunk(p);
- q < top && inuse(q) && chunksize(q) >= MINSIZE;
- q = next_chunk(q))
- check_inuse_chunk(q);
+ q < top && inuse(q) && chunksize(q) >= MINSIZE;
+ q = next_chunk(q))
+ check_inuse_chunk(q);
#endif
avail += chunksize(p);
navail++;
@@ -3701,14 +3708,14 @@ void malloc_stats(void)
{
malloc_update_mallinfo();
fprintf(stderr, "max system bytes = %10u\n",
- (unsigned int)(max_total_mem));
+ (unsigned int)(max_total_mem));
fprintf(stderr, "system bytes = %10u\n",
- (unsigned int)(sbrked_mem + mmapped_mem));
+ (unsigned int)(sbrked_mem + mmapped_mem));
fprintf(stderr, "in use bytes = %10u\n",
- (unsigned int)(current_mallinfo.uordblks + mmapped_mem));
+ (unsigned int)(current_mallinfo.uordblks + mmapped_mem));
#if HAVE_MMAP
fprintf(stderr, "max mmap regions = %10u\n",
- (unsigned int)max_n_mmaps);
+ (unsigned int)max_n_mmaps);
#endif
}
@@ -3779,13 +3786,13 @@ History:
* Added anonymously donated WIN32 sbrk emulation
* Malloc, calloc, getpagesize: add optimizations from Raymond Nijssen
* malloc_extend_top: fix mask error that caused wastage after
- foreign sbrks
+ foreign sbrks
* Add linux mremap support code from HJ Liu
V2.6.2 Tue Dec 5 06:52:55 1995 Doug Lea (dl at gee)
* Integrated most documentation with the code.
* Add support for mmap, with help from
- Wolfram Gloger (Gloger@lrz.uni-muenchen.de).
+ Wolfram Gloger (Gloger@lrz.uni-muenchen.de).
* Use last_remainder in more cases.
* Pack bins using idea from colin@nyx10.cs.du.edu
* Use ordered bins instead of best-fit threshhold
@@ -3793,34 +3800,34 @@ History:
* Support another case of realloc via move into top
* Fix error occuring when initial sbrk_base not word-aligned.
* Rely on page size for units instead of SBRK_UNIT to
- avoid surprises about sbrk alignment conventions.
+ avoid surprises about sbrk alignment conventions.
* Add mallinfo, mallopt. Thanks to Raymond Nijssen
- (raymond@es.ele.tue.nl) for the suggestion.
+ (raymond@es.ele.tue.nl) for the suggestion.
* Add `pad' argument to malloc_trim and top_pad mallopt parameter.
* More precautions for cases where other routines call sbrk,
- courtesy of Wolfram Gloger (Gloger@lrz.uni-muenchen.de).
+ courtesy of Wolfram Gloger (Gloger@lrz.uni-muenchen.de).
* Added macros etc., allowing use in linux libc from
- H.J. Lu (hjl@gnu.ai.mit.edu)
+ H.J. Lu (hjl@gnu.ai.mit.edu)
* Inverted this history list
V2.6.1 Sat Dec 2 14:10:57 1995 Doug Lea (dl at gee)
* Re-tuned and fixed to behave more nicely with V2.6.0 changes.
* Removed all preallocation code since under current scheme
- the work required to undo bad preallocations exceeds
- the work saved in good cases for most test programs.
+ the work required to undo bad preallocations exceeds
+ the work saved in good cases for most test programs.
* No longer use return list or unconsolidated bins since
- no scheme using them consistently outperforms those that don't
- given above changes.
+ no scheme using them consistently outperforms those that don't
+ given above changes.
* Use best fit for very large chunks to prevent some worst-cases.
* Added some support for debugging
V2.6.0 Sat Nov 4 07:05:23 1995 Doug Lea (dl at gee)
* Removed footers when chunks are in use. Thanks to
- Paul Wilson (wilson@cs.texas.edu) for the suggestion.
+ Paul Wilson (wilson@cs.texas.edu) for the suggestion.
V2.5.4 Wed Nov 1 07:54:51 1995 Doug Lea (dl at gee)
* Added malloc_trim, with help from Wolfram Gloger
- (wmglo@Dent.MED.Uni-Muenchen.DE).
+ (wmglo@Dent.MED.Uni-Muenchen.DE).
V2.5.3 Tue Apr 26 10:16:01 1994 Doug Lea (dl at g)
@@ -3836,11 +3843,11 @@ History:
V2.5.1 Sat Aug 14 15:40:43 1993 Doug Lea (dl at g)
* faster bin computation & slightly different binning
* merged all consolidations to one part of malloc proper
- (eliminating old malloc_find_space & malloc_clean_bin)
+ (eliminating old malloc_find_space & malloc_clean_bin)
* Scan 2 returns chunks (not just 1)
* Propagate failure in realloc if malloc returns 0
* Add stuff to allow compilation on non-ANSI compilers
- from kpv@research.att.com
+ from kpv@research.att.com
V2.5 Sat Aug 7 07:41:59 1993 Doug Lea (dl at g.oswego.edu)
* removed potential for odd address access in prev_chunk
@@ -3848,11 +3855,11 @@ History:
* misc cosmetics and a bit more internal documentation
* anticosmetics: mangled names in macros to evade debugger strangeness
* tested on sparc, hp-700, dec-mips, rs6000
- with gcc & native cc (hp, dec only) allowing
- Detlefs & Zorn comparison study (in SIGPLAN Notices.)
+ with gcc & native cc (hp, dec only) allowing
+ Detlefs & Zorn comparison study (in SIGPLAN Notices.)
Trial version Fri Aug 28 13:14:29 1992 Doug Lea (dl at g.oswego.edu)
* Based loosely on libg++-1.2X malloc. (It retains some of the overall
- structure of old version, but most details differ.)
+ structure of old version, but most details differ.)
*/