[BACK]Return to pthread.c CVS log [TXT][DIR] Up to [cvs.NetBSD.org] / src / lib / libpthread

Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.

Diff for /src/lib/libpthread/pthread.c between version 1.144 and 1.145

version 1.144, 2014/01/31 20:44:01 version 1.145, 2014/12/16 20:05:54
Line 59  __RCSID("$NetBSD$");
Line 59  __RCSID("$NetBSD$");
   
 #include "pthread.h"  #include "pthread.h"
 #include "pthread_int.h"  #include "pthread_int.h"
   #include "pthread_makelwp.h"
 #include "reentrant.h"  #include "reentrant.h"
   
 pthread_rwlock_t pthread__alltree_lock = PTHREAD_RWLOCK_INITIALIZER;  pthread_rwlock_t pthread__alltree_lock = PTHREAD_RWLOCK_INITIALIZER;
Line 464  pthread_create(pthread_t *thread, const 
Line 465  pthread_create(pthread_t *thread, const 
                         return ENOMEM;                          return ENOMEM;
                 }                  }
   
                 /* This is used only when creating the thread. */  
                 _INITCONTEXT_U(&newthread->pt_uc);  
                 newthread->pt_uc.uc_stack = newthread->pt_stack;  
                 newthread->pt_uc.uc_link = NULL;  
 #if defined(__HAVE_TLS_VARIANT_I) || defined(__HAVE_TLS_VARIANT_II)  #if defined(__HAVE_TLS_VARIANT_I) || defined(__HAVE_TLS_VARIANT_II)
                 newthread->pt_tls = NULL;                  newthread->pt_tls = NULL;
 #endif  #endif
Line 487  pthread_create(pthread_t *thread, const 
Line 484  pthread_create(pthread_t *thread, const 
                         pthread_mutex_unlock(&pthread__deadqueue_lock);                          pthread_mutex_unlock(&pthread__deadqueue_lock);
                         return ENOMEM;                          return ENOMEM;
                 }                  }
                 _INITCONTEXT_U(&newthread->pt_uc);  
                 newthread->pt_uc.uc_stack = newthread->pt_stack;  
                 newthread->pt_uc.uc_link = NULL;  
         }          }
   
         /*          /*
Line 505  pthread_create(pthread_t *thread, const 
Line 499  pthread_create(pthread_t *thread, const 
         private_area = newthread;          private_area = newthread;
 #endif  #endif
   
         _lwp_makecontext(&newthread->pt_uc, pthread__create_tramp,  
             newthread, private_area, newthread->pt_stack.ss_sp,  
             newthread->pt_stack.ss_size);  
   
         flag = LWP_DETACHED;          flag = LWP_DETACHED;
         if ((newthread->pt_flags & PT_FLAG_SUSPENDED) != 0 ||          if ((newthread->pt_flags & PT_FLAG_SUSPENDED) != 0 ||
             (nattr.pta_flags & PT_FLAG_EXPLICIT_SCHED) != 0)              (nattr.pta_flags & PT_FLAG_EXPLICIT_SCHED) != 0)
                 flag |= LWP_SUSPENDED;                  flag |= LWP_SUSPENDED;
         ret = _lwp_create(&newthread->pt_uc, flag, &newthread->pt_lid);  
           ret = pthread__makelwp(pthread__create_tramp, newthread, private_area,
               newthread->pt_stack.ss_sp, newthread->pt_stack.ss_size,
               flag, &newthread->pt_lid);
         if (ret != 0) {          if (ret != 0) {
                 ret = errno;                  ret = errno;
                 pthread_mutex_lock(&newthread->pt_lock);                  pthread_mutex_lock(&newthread->pt_lock);
Line 1325  pthread__initmain(pthread_t *newt)
Line 1318  pthread__initmain(pthread_t *newt)
                     4 * pthread__pagesize / 1024);                      4 * pthread__pagesize / 1024);
   
         *newt = &pthread__main;          *newt = &pthread__main;
 #ifdef __HAVE___LWP_GETTCB_FAST  #if defined(_PTHREAD_GETTCB_EXT)
           pthread__main.pt_tls = _PTHREAD_GETTCB_EXT();
   #elif defined(__HAVE___LWP_GETTCB_FAST)
         pthread__main.pt_tls = __lwp_gettcb_fast();          pthread__main.pt_tls = __lwp_gettcb_fast();
 #else  #else
         pthread__main.pt_tls = _lwp_getprivate();          pthread__main.pt_tls = _lwp_getprivate();

Legend:
Removed from v.1.144  
changed lines
  Added in v.1.145

CVSweb <webmaster@jp.NetBSD.org>