svn commit: r192597 - in user/kmacy/releng_7_2_fcs/sys: dev/hwpmc sys

Kip Macy kmacy at FreeBSD.org
Fri May 22 19:28:14 UTC 2009


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 */


More information about the svn-src-user mailing list