From owner-svn-src-user@FreeBSD.ORG Fri Nov 5 06:39:38 2010 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 964C7106566B; Fri, 5 Nov 2010 06:39:38 +0000 (UTC) (envelope-from davidxu@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 69EAB8FC16; Fri, 5 Nov 2010 06:39:38 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id oA56dco5087156; Fri, 5 Nov 2010 06:39:38 GMT (envelope-from davidxu@svn.freebsd.org) Received: (from davidxu@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id oA56dcYq087154; Fri, 5 Nov 2010 06:39:38 GMT (envelope-from davidxu@svn.freebsd.org) Message-Id: <201011050639.oA56dcYq087154@svn.freebsd.org> From: David Xu Date: Fri, 5 Nov 2010 06:39:38 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r214824 - user/davidxu/libthr/lib/libthr/thread X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 05 Nov 2010 06:39:38 -0000 Author: davidxu Date: Fri Nov 5 06:39:38 2010 New Revision: 214824 URL: http://svn.freebsd.org/changeset/base/214824 Log: Restore to previous version, don't use THR_UMTX_ACQUIRE, as it is not needed to inhibit signal and other async things. Modified: user/davidxu/libthr/lib/libthr/thread/thr_cond.c Modified: user/davidxu/libthr/lib/libthr/thread/thr_cond.c ============================================================================== --- user/davidxu/libthr/lib/libthr/thread/thr_cond.c Fri Nov 5 06:35:10 2010 (r214823) +++ user/davidxu/libthr/lib/libthr/thread/thr_cond.c Fri Nov 5 06:39:38 2010 (r214824) @@ -214,19 +214,19 @@ cond_wait_user(pthread_cond_t *cond, pth uint64_t seq, bseq; cv = *cond; - THR_UMTX_ACQUIRE(curthread, &cv->c_lock); + _thr_umtx_lock_spin(&cv->c_lock); cv->c_waiters++; ret = _mutex_cv_unlock(mutex, &recurse); if (__predict_false(ret != 0)) { cv->c_waiters--; - THR_UMTX_RELEASE(curthread, &cv->c_lock); + _thr_umtx_unlock(&cv->c_lock); return (ret); } bseq = cv->c_broadcast_seq; for(;;) { seq = cv->c_seq; - THR_UMTX_RELEASE(curthread, &cv->c_lock); + _thr_umtx_unlock(&cv->c_lock); if (abstime != NULL) { clock_gettime(cv->c_kerncv.c_clockid, &ts); @@ -245,7 +245,7 @@ cond_wait_user(pthread_cond_t *cond, pth (u_int)seq, tsp, 0); } - THR_UMTX_ACQUIRE(curthread, &cv->c_lock); + _thr_umtx_lock_spin(&cv->c_lock); if (cv->c_broadcast_seq != bseq) { ret = 0; break; @@ -258,11 +258,11 @@ cond_wait_user(pthread_cond_t *cond, pth break; } else if (cancel && SHOULD_CANCEL(curthread) && !THR_IN_CRITICAL(curthread)) { - THR_UMTX_RELEASE(curthread, &cv->c_lock); + _thr_umtx_unlock(&cv->c_lock); _pthread_exit(PTHREAD_CANCELED); } } - THR_UMTX_RELEASE(curthread, &cv->c_lock); + _thr_umtx_unlock(&cv->c_lock); _mutex_cv_lock(mutex, recurse); return (ret); } @@ -340,7 +340,6 @@ __pthread_cond_timedwait(pthread_cond_t static int cond_signal_common(pthread_cond_t *cond, int broadcast) { - struct pthread *curthread = _get_curthread(); pthread_cond_t cv; /* @@ -357,7 +356,7 @@ cond_signal_common(pthread_cond_t *cond, if (cv->c_waiters == 0) return (0); - THR_UMTX_ACQUIRE(curthread, &cv->c_lock); + _thr_umtx_lock_spin(&cv->c_lock); if (cv->c_waiters > 0) { if (!broadcast) { cv->c_seq++; @@ -372,7 +371,7 @@ cond_signal_common(pthread_cond_t *cond, _thr_umtx_wake(&cv->c_seq, INT_MAX, 0); } } - THR_UMTX_RELEASE(curthread, &cv->c_lock); + _thr_umtx_unlock(&cv->c_lock); return (0); }