diff options
author | Ulrich Drepper <drepper@redhat.com> | 2001-01-01 04:49:02 +0000 |
---|---|---|
committer | Ulrich Drepper <drepper@redhat.com> | 2001-01-01 04:49:02 +0000 |
commit | af8240ebcbf1a0ae07bb033b9e3305714ce44e47 (patch) | |
tree | 19ed870e439e15f9548760d73abcc6aa4c815e81 | |
parent | 1c566118b69258191fbee4280fe12a42883c3267 (diff) | |
download | glibc-af8240ebcbf1a0ae07bb033b9e3305714ce44e47.tar.gz glibc-af8240ebcbf1a0ae07bb033b9e3305714ce44e47.tar.xz glibc-af8240ebcbf1a0ae07bb033b9e3305714ce44e47.zip |
Update.
2000-12-31 Ulrich Drepper <drepper@redhat.com> * manager.c (pthread_alloca_stack): Remove MAP_FIXED from mmap calls. (pthread_free): Always unmap the stack. It's safe now that we don't use MAP_FIXED to allocate stacks.
-rw-r--r-- | linuxthreads/ChangeLog | 6 | ||||
-rw-r--r-- | linuxthreads/manager.c | 16 |
2 files changed, 8 insertions, 14 deletions
diff --git a/linuxthreads/ChangeLog b/linuxthreads/ChangeLog index 7efb334262..79c6786c5f 100644 --- a/linuxthreads/ChangeLog +++ b/linuxthreads/ChangeLog @@ -1,6 +1,8 @@ -2000-12-31 H.J. Lu <hjl@gnu.org> +2000-12-31 Ulrich Drepper <drepper@redhat.com> - * manager.c (pthread_allocate_stack): Fix a typo. + * manager.c (pthread_alloca_stack): Remove MAP_FIXED from mmap calls. + (pthread_free): Always unmap the stack. It's safe now that we don't + use MAP_FIXED to allocate stacks. 2000-12-31 Ulrich Drepper <drepper@redhat.com> diff --git a/linuxthreads/manager.c b/linuxthreads/manager.c index 1746bc5d53..05a0020b63 100644 --- a/linuxthreads/manager.c +++ b/linuxthreads/manager.c @@ -376,7 +376,7 @@ static int pthread_allocate_stack(const pthread_attr_t *attr, map_addr = (caddr_t)((char *)(new_thread + 1) - stacksize / 2); res_addr = mmap(map_addr, stacksize / 2, PROT_READ | PROT_WRITE | PROT_EXEC, - MAP_PRIVATE | MAP_ANONYMOUS | MAP_FIXED, -1, 0); + MAP_PRIVATE | MAP_ANONYMOUS, -1, 0); if (res_addr != map_addr) { /* Bad luck, this segment is already mapped. */ @@ -388,7 +388,7 @@ static int pthread_allocate_stack(const pthread_attr_t *attr, map_addr = (caddr_t)new_thread_bottom; res_addr = mmap(map_addr, stacksize/2, PROT_READ | PROT_WRITE | PROT_EXEC, - MAP_PRIVATE | MAP_ANONYMOUS | MAP_FIXED, -1, 0); + MAP_PRIVATE | MAP_ANONYMOUS, -1, 0); if (res_addr != map_addr) { if (res_addr != MAP_FAILED) @@ -449,7 +449,7 @@ static int pthread_allocate_stack(const pthread_attr_t *attr, map_addr = new_thread_bottom - guardsize; res_addr = mmap(map_addr, stacksize + guardsize, PROT_READ | PROT_WRITE | PROT_EXEC, - MAP_PRIVATE | MAP_ANONYMOUS | MAP_FIXED, -1, 0); + MAP_PRIVATE | MAP_ANONYMOUS, -1, 0); if (res_addr != map_addr) { /* Bad luck, this segment is already mapped. */ @@ -721,16 +721,8 @@ static void pthread_free(pthread_descr th) guardaddr -= stacksize; stacksize *= 2; #endif -#if FLOATING_STACKS - /* Can unmap safely. */ + /* Unmap the stack. */ munmap(guardaddr, stacksize + guardsize); -#else - /* Only remap to PROT_NONE, so that the region is reserved in - case we map the stack again later. Avoid collision with - other mmap()s, in particular by malloc(). */ - mmap(guardaddr, stacksize + guardsize, PROT_NONE, - MAP_PRIVATE | MAP_ANONYMOUS | MAP_FIXED, -1, 0); -#endif } } |