Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 22 May 2009 19:28:13 +0000 (UTC)
From:      Kip Macy <kmacy@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-user@freebsd.org
Subject:   svn commit: r192597 - in user/kmacy/releng_7_2_fcs/sys: dev/hwpmc sys
Message-ID:  <200905221928.n4MJSDON016387@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: kmacy
Date: Fri May 22 19:28:13 2009
New Revision: 192597
URL: http://svn.freebsd.org/changeset/base/192597

Log:
  switch per-pmc wakeups to a condvar

Modified:
  user/kmacy/releng_7_2_fcs/sys/dev/hwpmc/hwpmc_logging.c
  user/kmacy/releng_7_2_fcs/sys/dev/hwpmc/hwpmc_mod.c
  user/kmacy/releng_7_2_fcs/sys/sys/pmc.h

Modified: user/kmacy/releng_7_2_fcs/sys/dev/hwpmc/hwpmc_logging.c
==============================================================================
--- user/kmacy/releng_7_2_fcs/sys/dev/hwpmc/hwpmc_logging.c	Fri May 22 19:05:48 2009	(r192596)
+++ user/kmacy/releng_7_2_fcs/sys/dev/hwpmc/hwpmc_logging.c	Fri May 22 19:28:13 2009	(r192597)
@@ -287,9 +287,7 @@ pmclog_loop(void *arg)
 					wakeup_one(po->po_kthread);
 				}
 
-
-				(void) msleep(po, &pmc_kthread_mtx,
-				    PWAIT, "pmcloop", 0);
+				cv_wait(&po->po_cv, &pmc_kthread_mtx);
 				continue;
 			}
 
@@ -502,6 +500,7 @@ pmclog_schedule_io(struct pmc_owner *po)
 
 	PMCDBG(LOG,SIO, 1, "po=%p", po);
 
+	mtx_assert(&pmc_kthread_mtx, MA_OWNED);
 	mtx_assert(&po->po_mtx, MA_OWNED);
 
 	/*
@@ -510,7 +509,7 @@ pmclog_schedule_io(struct pmc_owner *po)
 	 */
 	TAILQ_INSERT_TAIL(&po->po_logbuffers, po->po_curbuf, plb_next);
 	po->po_curbuf = NULL;
-	wakeup_one(po);
+	cv_signal(&po->po_cv);
 }
 
 /*
@@ -527,7 +526,7 @@ pmclog_stop_kthread(struct pmc_owner *po
 
 	mtx_assert(&pmc_kthread_mtx, MA_OWNED);
 	po->po_flags &= ~PMC_PO_OWNS_LOGFILE;
-	wakeup_one(po);
+	cv_signal(&po->po_cv);
 	if (po->po_kthread)
 		msleep(po->po_kthread, &pmc_kthread_mtx, PPAUSE, "pmckstp", 0);
 }

Modified: user/kmacy/releng_7_2_fcs/sys/dev/hwpmc/hwpmc_mod.c
==============================================================================
--- user/kmacy/releng_7_2_fcs/sys/dev/hwpmc/hwpmc_mod.c	Fri May 22 19:05:48 2009	(r192596)
+++ user/kmacy/releng_7_2_fcs/sys/dev/hwpmc/hwpmc_mod.c	Fri May 22 19:28:13 2009	(r192597)
@@ -1906,6 +1906,7 @@ pmc_allocate_owner_descriptor(struct pro
 
 	TAILQ_INIT(&po->po_logbuffers);
 	mtx_init(&po->po_mtx, "pmc-owner-mtx", "pmc-per-proc", MTX_SPIN);
+	cv_init(&po->po_cv, "pmc-cv");
 
 	PMCDBG(OWN,ALL,1, "allocate-owner proc=%p (%d, %s) pmc-owner=%p",
 	    p, p->p_pid, p->p_comm, po);

Modified: user/kmacy/releng_7_2_fcs/sys/sys/pmc.h
==============================================================================
--- user/kmacy/releng_7_2_fcs/sys/sys/pmc.h	Fri May 22 19:05:48 2009	(r192596)
+++ user/kmacy/releng_7_2_fcs/sys/sys/pmc.h	Fri May 22 19:28:13 2009	(r192597)
@@ -33,6 +33,7 @@
 #ifndef _SYS_PMC_H_
 #define	_SYS_PMC_H_
 
+#include <sys/condvar.h>
 #include <dev/hwpmc/pmc_events.h>
 
 #include <machine/pmc_mdep.h>
@@ -756,6 +757,7 @@ struct pmc_owner  {
 	struct file		*po_file;	/* file reference */
 	int			po_error;	/* recorded error */
 	int			po_sscount;	/* # SS PMCs owned */
+	struct cv		po_cv;		/* condvar */
 };
 
 #define	PMC_PO_OWNS_LOGFILE		0x00000001 /* has a log file */



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200905221928.n4MJSDON016387>