Updates from 0.2.1 into 0.2.1-inu-1.5
This commit is contained in:
		| @@ -16,10 +16,10 @@ | ||||
|  * Modified Peter C. for Solaris Posix Threads. | ||||
|  */ | ||||
| /* Boehm, September 14, 1994 4:44 pm PDT */ | ||||
| /* $Id: solaris_pthreads.c,v 1.1 2001/11/08 05:17:57 a-ito Exp $ */ | ||||
| /* $Id: solaris_pthreads.c,v 1.2 2001/11/09 04:59:18 a-ito Exp $ */ | ||||
|  | ||||
| # if defined(_SOLARIS_PTHREADS) | ||||
| # include "gc_priv.h" | ||||
| # if defined(GC_SOLARIS_PTHREADS) || defined(_SOLARIS_PTHREADS) | ||||
| # include "private/gc_priv.h" | ||||
| # include <pthread.h> | ||||
| # include <thread.h> | ||||
| # include <signal.h> | ||||
| @@ -36,7 +36,7 @@ | ||||
| # define _CLASSIC_XOPEN_TYPES | ||||
| # include <unistd.h> | ||||
| # include <errno.h> | ||||
| # include "solaris_threads.h" | ||||
| # include "private/solaris_threads.h" | ||||
| # include <stdio.h> | ||||
|  | ||||
| #undef pthread_join | ||||
| @@ -77,14 +77,16 @@ GC_pthread_create(pthread_t *new_thread, | ||||
|     pthread_attr_t  attr; | ||||
|     word my_flags = 0; | ||||
|     int  flag; | ||||
|     void * stack; | ||||
|     size_t stack_size; | ||||
|     void * stack = 0; | ||||
|     size_t stack_size = 0; | ||||
|     int    n; | ||||
|     struct sched_param schedparam; | ||||
|     | ||||
|     (void)pthread_attr_getstacksize(attr_in, &stack_size); | ||||
|     (void)pthread_attr_getstackaddr(attr_in, &stack); | ||||
|     (void)pthread_attr_init(&attr); | ||||
|     if (attr_in != 0) { | ||||
| 	(void)pthread_attr_getstacksize(attr_in, &stack_size); | ||||
| 	(void)pthread_attr_getstackaddr(attr_in, &stack); | ||||
|     } | ||||
|  | ||||
|     LOCK(); | ||||
|     if (!GC_thr_initialized) { | ||||
| @@ -94,7 +96,11 @@ GC_pthread_create(pthread_t *new_thread, | ||||
| 	     | ||||
|     if (stack == 0) { | ||||
|      	if (stack_size == 0) | ||||
| 		stack_size = GC_min_stack_sz; | ||||
| 		stack_size = 1048576; | ||||
| 			  /* ^-- 1 MB (this was GC_min_stack_sz, but that | ||||
| 			   * violates the pthread_create documentation which | ||||
| 			   * says the default value if none is supplied is | ||||
| 			   * 1MB) */ | ||||
| 	else | ||||
| 		stack_size += thr_min_stack(); | ||||
|  | ||||
| @@ -110,20 +116,22 @@ GC_pthread_create(pthread_t *new_thread, | ||||
|     } | ||||
|     (void)pthread_attr_setstacksize(&attr, stack_size); | ||||
|     (void)pthread_attr_setstackaddr(&attr, stack); | ||||
|     (void)pthread_attr_getscope(attr_in, &n); | ||||
|     (void)pthread_attr_setscope(&attr, n); | ||||
|     (void)pthread_attr_getschedparam(attr_in, &schedparam); | ||||
|     (void)pthread_attr_setschedparam(&attr, &schedparam); | ||||
|     (void)pthread_attr_getschedpolicy(attr_in, &n); | ||||
|     (void)pthread_attr_setschedpolicy(&attr, n); | ||||
|     (void)pthread_attr_getinheritsched(attr_in, &n); | ||||
|     (void)pthread_attr_setinheritsched(&attr, n); | ||||
|     if (attr_in != 0) { | ||||
| 	(void)pthread_attr_getscope(attr_in, &n); | ||||
| 	(void)pthread_attr_setscope(&attr, n); | ||||
| 	(void)pthread_attr_getschedparam(attr_in, &schedparam); | ||||
| 	(void)pthread_attr_setschedparam(&attr, &schedparam); | ||||
| 	(void)pthread_attr_getschedpolicy(attr_in, &n); | ||||
| 	(void)pthread_attr_setschedpolicy(&attr, n); | ||||
| 	(void)pthread_attr_getinheritsched(attr_in, &n); | ||||
| 	(void)pthread_attr_setinheritsched(&attr, n); | ||||
|  | ||||
|     (void)pthread_attr_getdetachstate(attr_in, &flag); | ||||
|     if (flag == PTHREAD_CREATE_DETACHED) { | ||||
| 	    my_flags |= DETACHED; | ||||
| 	(void)pthread_attr_getdetachstate(attr_in, &flag); | ||||
| 	if (flag == PTHREAD_CREATE_DETACHED) { | ||||
| 		my_flags |= DETACHED; | ||||
| 	} | ||||
| 	(void)pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_JOINABLE); | ||||
|     } | ||||
|     (void)pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_JOINABLE); | ||||
|     /* | ||||
|      * thr_create can call malloc(), which if redirected will | ||||
|      * attempt to acquire the allocation lock. | ||||
|   | ||||
		Reference in New Issue
	
	Block a user