mirror of
https://sourceware.org/git/glibc.git
synced 2025-01-03 08:11:08 +00:00
Update.
1999-05-16 Wolfram Gloger <wmglo@dent.med.uni-muenchen.de> * malloc/malloc.c: Cleanup to bring in line with released stand-alone version `ptmalloc'. Update some comments. (internal_function): Move fallback definition so that the source compiles outside of libc, and use it in more places. (malloc_atfork): Fix when malloc_check is in use. 1999-05-16 Andreas Schwab <schwab@issan.cs.uni-dortmund.de> * stdlib/tst-strtod.c: Fix typo. 1999-05-16 Andreas Schwab <schwab@issan.cs.uni-dortmund.de> * elf/dl-close.c (_dl_close): Add cast to avoid warning about const incorrectness.
This commit is contained in:
parent
1592541240
commit
431c33c0bc
17
ChangeLog
17
ChangeLog
@ -1,3 +1,20 @@
|
||||
1999-05-16 Wolfram Gloger <wmglo@dent.med.uni-muenchen.de>
|
||||
|
||||
* malloc/malloc.c: Cleanup to bring in line with released
|
||||
stand-alone version `ptmalloc'. Update some comments.
|
||||
(internal_function): Move fallback definition so that the source
|
||||
compiles outside of libc, and use it in more places.
|
||||
(malloc_atfork): Fix when malloc_check is in use.
|
||||
|
||||
1999-05-16 Andreas Schwab <schwab@issan.cs.uni-dortmund.de>
|
||||
|
||||
* stdlib/tst-strtod.c: Fix typo.
|
||||
|
||||
1999-05-16 Andreas Schwab <schwab@issan.cs.uni-dortmund.de>
|
||||
|
||||
* elf/dl-close.c (_dl_close): Add cast to avoid warning about
|
||||
const incorrectness.
|
||||
|
||||
1999-05-16 Roland McGrath <roland@baalperazim.frob.com>
|
||||
|
||||
* sysdeps/generic/bits/termios.h (CRTSCTS): New macro.
|
||||
|
@ -1,3 +1,12 @@
|
||||
1999-05-16 Xavier Leroy <Xavier.Leroy@inria.fr>
|
||||
|
||||
* manager.c: If pthread_create() is given a NULL attribute
|
||||
and the thread manager runs with a realtime policy, set the
|
||||
scheduling policy of the newly created thread back to SCHED_OTHER.
|
||||
* manager.c: If the PTHREAD_INHERIT_SCHED attribute is given,
|
||||
initialize the schedpolicy field of new_thread->p_start_args
|
||||
to that of the calling thread.
|
||||
|
||||
1999-04-29 Ulrich Drepper <drepper@cygnus.com>
|
||||
|
||||
* sysdeps/sparc/sparc64/pt-machine.h (__compare_and_swap): cas
|
||||
|
@ -189,9 +189,19 @@ static int pthread_start_thread(void *arg)
|
||||
sigprocmask(SIG_SETMASK, &self->p_start_args.mask, NULL);
|
||||
/* Set the scheduling policy and priority for the new thread, if needed */
|
||||
if (THREAD_GETMEM(self, p_start_args.schedpolicy) >= 0)
|
||||
/* Explicit scheduling attributes were provided: apply them */
|
||||
__sched_setscheduler(THREAD_GETMEM(self, p_pid),
|
||||
THREAD_GETMEM(self, p_start_args.schedpolicy),
|
||||
&self->p_start_args.schedparam);
|
||||
else if (__pthread_manager_thread.p_priority > 0)
|
||||
/* Default scheduling required, but thread manager runs in realtime
|
||||
scheduling: switch new thread to SCHED_OTHER policy */
|
||||
{
|
||||
struct sched_param default_params;
|
||||
default_params.sched_priority = 0;
|
||||
__sched_setscheduler(THREAD_GETMEM(self, p_pid),
|
||||
SCHED_OTHER, &default_params);
|
||||
}
|
||||
/* Make gdb aware of new thread */
|
||||
if (__pthread_threads_debug && __pthread_sig_debug > 0) {
|
||||
request.req_thread = self;
|
||||
@ -347,7 +357,7 @@ static int pthread_handle_create(pthread_t *thread, const pthread_attr_t *attr,
|
||||
sizeof (struct sched_param));
|
||||
break;
|
||||
case PTHREAD_INHERIT_SCHED:
|
||||
/* schedpolicy doesn't need to be set, only get priority */
|
||||
new_thread->p_start_args.schedpolicy = __sched_getscheduler(father_pid);
|
||||
__sched_getparam(father_pid, &new_thread->p_start_args.schedparam);
|
||||
break;
|
||||
}
|
||||
|
@ -182,10 +182,11 @@
|
||||
MALLOC_HOOKS (default: NOT defined)
|
||||
Define to enable support run-time replacement of the allocation
|
||||
functions through user-defined `hooks'.
|
||||
REALLOC_ZERO_BYTES_FREES (default: NOT defined)
|
||||
REALLOC_ZERO_BYTES_FREES (default: defined)
|
||||
Define this if you think that realloc(p, 0) should be equivalent
|
||||
to free(p). Otherwise, since malloc returns a unique pointer for
|
||||
malloc(0), so does realloc(p, 0).
|
||||
to free(p). (The C standard requires this behaviour, therefore
|
||||
it is the default.) Otherwise, since malloc returns a unique
|
||||
pointer for malloc(0), so does realloc(p, 0).
|
||||
HAVE_MEMCPY (default: defined)
|
||||
Define if you are not otherwise using ANSI STD C, but still
|
||||
have memcpy and memset in your C library and want to use them.
|
||||
@ -366,10 +367,10 @@ extern "C" {
|
||||
#endif
|
||||
|
||||
/*
|
||||
REALLOC_ZERO_BYTES_FREES should be set if a call to
|
||||
realloc with zero bytes should be the same as a call to free.
|
||||
Some people think it should. Otherwise, since this malloc
|
||||
returns a unique pointer for malloc(0), so does realloc(p, 0).
|
||||
REALLOC_ZERO_BYTES_FREES should be set if a call to realloc with
|
||||
zero bytes should be the same as a call to free. The C standard
|
||||
requires this. Otherwise, since this malloc returns a unique pointer
|
||||
for malloc(0), so does realloc(p, 0).
|
||||
*/
|
||||
|
||||
|
||||
@ -528,6 +529,9 @@ do { \
|
||||
#if !defined(MAP_ANONYMOUS) && defined(MAP_ANON)
|
||||
#define MAP_ANONYMOUS MAP_ANON
|
||||
#endif
|
||||
#if !defined(MAP_FAILED)
|
||||
#define MAP_FAILED ((char*)-1)
|
||||
#endif
|
||||
|
||||
#ifndef MAP_NORESERVE
|
||||
# ifdef MAP_AUTORESRV
|
||||
@ -818,6 +822,15 @@ do { \
|
||||
computed. */
|
||||
|
||||
|
||||
|
||||
/* On some platforms we can compile internal, not exported functions better.
|
||||
Let the environment provide a macro and define it to be empty if it
|
||||
is not available. */
|
||||
#ifndef internal_function
|
||||
# define internal_function
|
||||
#endif
|
||||
|
||||
|
||||
/*
|
||||
|
||||
Special defines for the Linux/GNU C library.
|
||||
@ -1230,13 +1243,6 @@ static void free_atfork();
|
||||
|
||||
#endif
|
||||
|
||||
/* On some platforms we can compile internal, not exported functions better.
|
||||
Let the environment provide a macro and define it to be empty if it
|
||||
is not available. */
|
||||
#ifndef internal_function
|
||||
# define internal_function
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
/* sizes, alignments */
|
||||
@ -1613,7 +1619,7 @@ ptmalloc_init_all __MALLOC_P((void))
|
||||
(void)mutex_init(&list_lock);
|
||||
}
|
||||
|
||||
#endif
|
||||
#endif /* !defined NO_THREADS */
|
||||
|
||||
/* Initialization routine. */
|
||||
#if defined(_LIBC)
|
||||
@ -1852,10 +1858,12 @@ mmap_chunk(size) size_t size;
|
||||
return p;
|
||||
}
|
||||
|
||||
static void
|
||||
internal_function
|
||||
#if __STD_C
|
||||
static void munmap_chunk(mchunkptr p)
|
||||
munmap_chunk(mchunkptr p)
|
||||
#else
|
||||
static void munmap_chunk(p) mchunkptr p;
|
||||
munmap_chunk(p) mchunkptr p;
|
||||
#endif
|
||||
{
|
||||
INTERNAL_SIZE_T size = chunksize(p);
|
||||
@ -1877,10 +1885,12 @@ static void munmap_chunk(p) mchunkptr p;
|
||||
|
||||
#if HAVE_MREMAP
|
||||
|
||||
static mchunkptr
|
||||
internal_function
|
||||
#if __STD_C
|
||||
static mchunkptr mremap_chunk(mchunkptr p, size_t new_size)
|
||||
mremap_chunk(mchunkptr p, size_t new_size)
|
||||
#else
|
||||
static mchunkptr mremap_chunk(p, new_size) mchunkptr p; size_t new_size;
|
||||
mremap_chunk(p, new_size) mchunkptr p; size_t new_size;
|
||||
#endif
|
||||
{
|
||||
size_t page_mask = malloc_getpagesize - 1;
|
||||
@ -1899,7 +1909,7 @@ static mchunkptr mremap_chunk(p, new_size) mchunkptr p; size_t new_size;
|
||||
cp = (char *)mremap((char *)p - offset, size + offset, new_size,
|
||||
MREMAP_MAYMOVE);
|
||||
|
||||
if (cp == (char *)-1) return 0;
|
||||
if (cp == MAP_FAILED) return 0;
|
||||
|
||||
p = (mchunkptr)(cp + offset);
|
||||
|
||||
@ -3034,7 +3044,7 @@ chunk_free(ar_ptr, p) arena *ar_ptr; mchunkptr p;
|
||||
if(next->size < MINSIZE &&
|
||||
(unsigned long)sz > trim_threshold &&
|
||||
ar_ptr != &main_arena) { /* fencepost */
|
||||
heap_info* heap = heap_for_ptr(top(ar_ptr));
|
||||
heap_info *heap = heap_for_ptr(top(ar_ptr));
|
||||
|
||||
if(top(ar_ptr) == chunk_at_offset(heap, sizeof(*heap)) &&
|
||||
heap->prev == heap_for_ptr(p))
|
||||
@ -4212,6 +4222,7 @@ mALLOC_SET_STATe(msptr) Void_t* msptr;
|
||||
into a user pointer with requested size sz. */
|
||||
|
||||
static Void_t*
|
||||
internal_function
|
||||
#if __STD_C
|
||||
chunk2mem_check(mchunkptr p, size_t sz)
|
||||
#else
|
||||
@ -4293,6 +4304,7 @@ mem2chunk_check(mem) Void_t* mem;
|
||||
necessary. */
|
||||
|
||||
static int
|
||||
internal_function
|
||||
#if __STD_C
|
||||
top_check(void)
|
||||
#else
|
||||
@ -4525,11 +4537,18 @@ malloc_atfork(sz, caller) size_t sz; const Void_t *caller;
|
||||
#endif
|
||||
{
|
||||
Void_t *vptr = NULL;
|
||||
mchunkptr victim;
|
||||
|
||||
tsd_getspecific(arena_key, vptr);
|
||||
if(!vptr) {
|
||||
mchunkptr victim = chunk_alloc(&main_arena, request2size(sz));
|
||||
if(save_malloc_hook != malloc_check) {
|
||||
victim = chunk_alloc(&main_arena, request2size(sz));
|
||||
return victim ? chunk2mem(victim) : 0;
|
||||
} else {
|
||||
if(top_check() < 0) return 0;
|
||||
victim = chunk_alloc(&main_arena, request2size(sz+1));
|
||||
return victim ? chunk2mem_check(victim, sz) : 0;
|
||||
}
|
||||
} else {
|
||||
/* Suspend the thread until the `atfork' handlers have completed.
|
||||
By that time, the hooks will have been reset as well, so that
|
||||
@ -4554,7 +4573,7 @@ free_atfork(mem, caller) Void_t* mem; const Void_t *caller;
|
||||
if (mem == 0) /* free(0) has no effect */
|
||||
return;
|
||||
|
||||
p = mem2chunk(mem);
|
||||
p = mem2chunk(mem); /* do not bother to replicate free_check here */
|
||||
|
||||
#if HAVE_MMAP
|
||||
if (chunk_is_mmapped(p)) /* release mmapped memory. */
|
||||
@ -4573,7 +4592,7 @@ free_atfork(mem, caller) Void_t* mem; const Void_t *caller;
|
||||
(void)mutex_unlock(&ar_ptr->mutex);
|
||||
}
|
||||
|
||||
#endif
|
||||
#endif /* !defined NO_THREADS */
|
||||
|
||||
#endif /* defined _LIBC || defined MALLOC_HOOKS */
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
/* Copyright (C) 1991, 1996, 1997, 1998 Free Software Foundation, Inc.
|
||||
/* Copyright (C) 1991, 1996, 1997, 1998, 1999 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
|
||||
The GNU C Library is free software; you can redistribute it and/or
|
||||
@ -88,7 +88,7 @@ main (int argc, char ** argv)
|
||||
sprintf (buf, "%f", strtod ("-0.0", NULL));
|
||||
if (strcmp (buf, "-0.000000") != 0)
|
||||
{
|
||||
printf (" strtod (\"-0.0\', NULL) returns \"%s\"\n", buf);
|
||||
printf (" strtod (\"-0.0\", NULL) returns \"%s\"\n", buf);
|
||||
status = 1;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user