svn commit: r245630 - head/lib/libthr/thread

Jilles Tjoelker jilles at FreeBSD.org
Fri Jan 18 23:08:41 UTC 2013


Author: jilles
Date: Fri Jan 18 23:08:40 2013
New Revision: 245630
URL: http://svnweb.freebsd.org/changeset/base/245630

Log:
  libthr: Always use the threaded rtld lock implementation.
  
  The threaded rtld lock implementation is faster even in the single-threaded
  case because it postpones signal handlers via THR_CRITICAL_ENTER and
  THR_CRITICAL_LEAVE instead of calling sigprocmask(2).
  
  As a result, exception handling becomes faster in single-threaded
  applications linked with libthr.
  
  Reviewed by:	kib

Modified:
  head/lib/libthr/thread/thr_init.c
  head/lib/libthr/thread/thr_kern.c

Modified: head/lib/libthr/thread/thr_init.c
==============================================================================
--- head/lib/libthr/thread/thr_init.c	Fri Jan 18 23:04:05 2013	(r245629)
+++ head/lib/libthr/thread/thr_init.c	Fri Jan 18 23:08:40 2013	(r245630)
@@ -363,6 +363,12 @@ _libpthread_init(struct pthread *curthre
 		_thr_signal_init();
 		if (_thread_event_mask & TD_CREATE)
 			_thr_report_creation(curthread, curthread);
+		/*
+		 * Always use our rtld lock implementation.
+		 * It is faster because it postpones signal handlers
+		 * instead of calling sigprocmask(2).
+		 */
+		_thr_rtld_init();
 	}
 }
 

Modified: head/lib/libthr/thread/thr_kern.c
==============================================================================
--- head/lib/libthr/thread/thr_kern.c	Fri Jan 18 23:04:05 2013	(r245629)
+++ head/lib/libthr/thread/thr_kern.c	Fri Jan 18 23:08:40 2013	(r245630)
@@ -57,11 +57,6 @@ _thr_setthreaded(int threaded)
 		return (0);
 
 	__isthreaded = threaded;
-	if (threaded != 0) {
-		_thr_rtld_init();
-	} else {
-		_thr_rtld_fini();
-	}
 	return (0);
 }
 


More information about the svn-src-head mailing list