From owner-svn-src-user@FreeBSD.ORG Fri Nov 5 09:32:32 2010 Return-Path: <owner-svn-src-user@FreeBSD.ORG> 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 5E600106566B; Fri, 5 Nov 2010 09:32:32 +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 4C8518FC18; Fri, 5 Nov 2010 09:32:32 +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 oA59WWwT091319; Fri, 5 Nov 2010 09:32:32 GMT (envelope-from davidxu@svn.freebsd.org) Received: (from davidxu@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id oA59WWBs091317; Fri, 5 Nov 2010 09:32:32 GMT (envelope-from davidxu@svn.freebsd.org) Message-Id: <201011050932.oA59WWBs091317@svn.freebsd.org> From: David Xu <davidxu@FreeBSD.org> Date: Fri, 5 Nov 2010 09:32:32 +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: r214833 - 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" <svn-src-user.freebsd.org> List-Unsubscribe: <http://lists.freebsd.org/mailman/listinfo/svn-src-user>, <mailto:svn-src-user-request@freebsd.org?subject=unsubscribe> List-Archive: <http://lists.freebsd.org/pipermail/svn-src-user> List-Post: <mailto:svn-src-user@freebsd.org> List-Help: <mailto:svn-src-user-request@freebsd.org?subject=help> List-Subscribe: <http://lists.freebsd.org/mailman/listinfo/svn-src-user>, <mailto:svn-src-user-request@freebsd.org?subject=subscribe> X-List-Received-Date: Fri, 05 Nov 2010 09:32:32 -0000 Author: davidxu Date: Fri Nov 5 09:32:32 2010 New Revision: 214833 URL: http://svn.freebsd.org/changeset/base/214833 Log: Pass process-shared flag to syscall. 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 09:10:16 2010 (r214832) +++ user/davidxu/libthr/lib/libthr/thread/thr_cond.c Fri Nov 5 09:32:32 2010 (r214833) @@ -60,6 +60,8 @@ __weak_reference(_pthread_cond_destroy, __weak_reference(_pthread_cond_signal, pthread_cond_signal); __weak_reference(_pthread_cond_broadcast, pthread_cond_broadcast); +#define CV_PSHARED(cv) (((cv)->c_kerncv.c_flags & USYNC_PROCESS_SHARED) != 0) + static int cond_init(pthread_cond_t *cond, const pthread_condattr_t *cond_attr) { @@ -238,11 +240,11 @@ cond_wait_user(pthread_cond_t *cond, pth if (cancel) { _thr_cancel_enter2(curthread, 0); ret = _thr_umtx_wait_uint((u_int *)&cv->c_seq, - (u_int)seq, tsp, 0); + (u_int)seq, tsp, CV_PSHARED(cv)); _thr_cancel_leave(curthread, 0); } else { ret = _thr_umtx_wait_uint((u_int *)&cv->c_seq, - (u_int)seq, tsp, 0); + (u_int)seq, tsp, CV_PSHARED(cv)); } _thr_umtx_lock_spin(&cv->c_lock); @@ -371,13 +373,13 @@ cond_signal_common(pthread_cond_t *cond, cv->c_seq++; cv->c_signaled++; cv->c_waiters--; - _thr_umtx_wake(&cv->c_seq, 1, 0); + _thr_umtx_wake(&cv->c_seq, 1, CV_PSHARED(cv)); } else { cv->c_seq++; cv->c_broadcast_seq++; cv->c_waiters = 0; cv->c_signaled = 0; - _thr_umtx_wake(&cv->c_seq, INT_MAX, 0); + _thr_umtx_wake(&cv->c_seq, INT_MAX, CV_PSHARED(cv)); } } _thr_umtx_unlock(&cv->c_lock);