* pthread_create.c: Define __pthread_keys using nocommon
	attribute, not by placing it explicitly in bss.
	Remove DEFINE_DEALLOC definition.  Not needed anymore.

	* allocatestack.c: Define ARCH_MAP_FLAGS if not already defined.
	Use it in mmap call to allocate stacks.

	* sysdeps/pthread/createthread.c (create_thread): Fix comment.
This commit is contained in:
Ulrich Drepper 2003-03-04 20:55:08 +00:00
parent e2b80a5802
commit 518b53086c
3 changed files with 17 additions and 3 deletions

View File

@ -1,5 +1,14 @@
2003-03-04 Ulrich Drepper <drepper@redhat.com> 2003-03-04 Ulrich Drepper <drepper@redhat.com>
* pthread_create.c: Define __pthread_keys using nocommon
attribute, not by placing it explicitly in bss.
Remove DEFINE_DEALLOC definition. Not needed anymore.
* allocatestack.c: Define ARCH_MAP_FLAGS if not already defined.
Use it in mmap call to allocate stacks.
* sysdeps/pthread/createthread.c (create_thread): Fix comment.
* pthread_create.c (start_thread): Use THREAD_SETMEM to store * pthread_create.c (start_thread): Use THREAD_SETMEM to store
result of the thread function. result of the thread function.

View File

@ -52,6 +52,11 @@
#endif #endif
/* Let the architecture add some flags to the mmap() call used to
allocate stacks. */
#ifndef ARCH_MAP_FLAGS
# define ARCH_MAP_FLAGS 0
#endif
/* Cache handling for not-yet free stacks. */ /* Cache handling for not-yet free stacks. */
@ -303,6 +308,7 @@ allocate_stack (const struct pthread_attr *attr, struct pthread **pdp,
size_t reqsize; size_t reqsize;
void *mem; void *mem;
#undef COLORING_INCREMENT
#if COLORING_INCREMENT != 0 #if COLORING_INCREMENT != 0
/* Add one more page for stack coloring. Don't to it for stacks /* Add one more page for stack coloring. Don't to it for stacks
with 16 times pagesize or larger. This might just cause with 16 times pagesize or larger. This might just cause
@ -330,7 +336,7 @@ allocate_stack (const struct pthread_attr *attr, struct pthread **pdp,
if (pd == NULL) if (pd == NULL)
{ {
mem = mmap (NULL, size, PROT_READ | PROT_WRITE | PROT_EXEC, mem = mmap (NULL, size, PROT_READ | PROT_WRITE | PROT_EXEC,
MAP_PRIVATE | MAP_ANONYMOUS, -1, 0); MAP_PRIVATE | MAP_ANONYMOUS | ARCH_MAP_FLAGS, -1, 0);
if (__builtin_expect (mem == MAP_FAILED, 0)) if (__builtin_expect (mem == MAP_FAILED, 0))
return errno; return errno;

View File

@ -50,7 +50,6 @@ unsigned int __nptl_nthreads = 1;
/* Code to allocate and deallocate a stack. */ /* Code to allocate and deallocate a stack. */
#define DEFINE_DEALLOC
#include "allocatestack.c" #include "allocatestack.c"
/* Code to create the thread. */ /* Code to create the thread. */
@ -59,7 +58,7 @@ unsigned int __nptl_nthreads = 1;
/* Table of the key information. */ /* Table of the key information. */
struct pthread_key_struct __pthread_keys[PTHREAD_KEYS_MAX] struct pthread_key_struct __pthread_keys[PTHREAD_KEYS_MAX]
__attribute__ ((section (".bss"))); __attribute__ ((nocommon));
hidden_def (__pthread_keys) hidden_def (__pthread_keys)
/* This is for libthread_db only. */ /* This is for libthread_db only. */