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