[BACK]Return to solaris_pthreads.c CVS log [TXT][DIR] Up to [local] / OpenXM_contrib2 / asir2000 / gc

Diff for /OpenXM_contrib2/asir2000/gc/solaris_pthreads.c between version 1.1 and 1.2

version 1.1, 1999/12/03 07:39:10 version 1.2, 2000/12/01 09:26:13
Line 77  GC_pthread_create(pthread_t *new_thread,
Line 77  GC_pthread_create(pthread_t *new_thread,
     pthread_attr_t  attr;      pthread_attr_t  attr;
     word my_flags = 0;      word my_flags = 0;
     int  flag;      int  flag;
     void * stack;      void * stack = 0;
     size_t stack_size;      size_t stack_size = 0;
     int    n;      int    n;
     struct sched_param schedparam;      struct sched_param schedparam;
   
     (void)pthread_attr_getstacksize(attr_in, &stack_size);  
     (void)pthread_attr_getstackaddr(attr_in, &stack);  
     (void)pthread_attr_init(&attr);      (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();      LOCK();
     if (!GC_thr_initialized) {      if (!GC_thr_initialized) {
Line 94  GC_pthread_create(pthread_t *new_thread,
Line 96  GC_pthread_create(pthread_t *new_thread,
   
     if (stack == 0) {      if (stack == 0) {
         if (stack_size == 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          else
                 stack_size += thr_min_stack();                  stack_size += thr_min_stack();
   
Line 110  GC_pthread_create(pthread_t *new_thread,
Line 116  GC_pthread_create(pthread_t *new_thread,
     }      }
     (void)pthread_attr_setstacksize(&attr, stack_size);      (void)pthread_attr_setstacksize(&attr, stack_size);
     (void)pthread_attr_setstackaddr(&attr, stack);      (void)pthread_attr_setstackaddr(&attr, stack);
     (void)pthread_attr_getscope(attr_in, &n);      if (attr_in != 0) {
     (void)pthread_attr_setscope(&attr, n);          (void)pthread_attr_getscope(attr_in, &n);
     (void)pthread_attr_getschedparam(attr_in, &schedparam);          (void)pthread_attr_setscope(&attr, n);
     (void)pthread_attr_setschedparam(&attr, &schedparam);          (void)pthread_attr_getschedparam(attr_in, &schedparam);
     (void)pthread_attr_getschedpolicy(attr_in, &n);          (void)pthread_attr_setschedparam(&attr, &schedparam);
     (void)pthread_attr_setschedpolicy(&attr, n);          (void)pthread_attr_getschedpolicy(attr_in, &n);
     (void)pthread_attr_getinheritsched(attr_in, &n);          (void)pthread_attr_setschedpolicy(&attr, n);
     (void)pthread_attr_setinheritsched(&attr, n);          (void)pthread_attr_getinheritsched(attr_in, &n);
           (void)pthread_attr_setinheritsched(&attr, n);
   
     (void)pthread_attr_getdetachstate(attr_in, &flag);          (void)pthread_attr_getdetachstate(attr_in, &flag);
     if (flag == PTHREAD_CREATE_DETACHED) {          if (flag == PTHREAD_CREATE_DETACHED) {
             my_flags |= 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       * thr_create can call malloc(), which if redirected will
      * attempt to acquire the allocation lock.       * attempt to acquire the allocation lock.

Legend:
Removed from v.1.1  
changed lines
  Added in v.1.2

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>