* 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>
* 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
result of the thread function.

View File

@ -52,6 +52,11 @@
#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. */
@ -303,6 +308,7 @@ allocate_stack (const struct pthread_attr *attr, struct pthread **pdp,
size_t reqsize;
void *mem;
#undef COLORING_INCREMENT
#if COLORING_INCREMENT != 0
/* Add one more page for stack coloring. Don't to it for stacks
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)
{
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))
return errno;

View File

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