svn commit: r328087 - in head: lib/libpmc sys/dev/hwpmc

Fabien Thomas fabient at FreeBSD.org
Wed Jan 17 16:41:23 UTC 2018


Author: fabient
Date: Wed Jan 17 16:41:22 2018
New Revision: 328087
URL: https://svnweb.freebsd.org/changeset/base/328087

Log:
  Fix pmcstat exit from kernel introduced by r325275.
  pmcstat request for close will generate a close event.
  This event will be in turn received by pmcstat to close the file.
  
  Reviewed by:	kib
  Tested by:	pho
  MFC after:	1 week
  Sponsored by: Stormshield

Modified:
  head/lib/libpmc/pmclog.c
  head/sys/dev/hwpmc/hwpmc_logging.c
  head/sys/dev/hwpmc/hwpmc_mod.c

Modified: head/lib/libpmc/pmclog.c
==============================================================================
--- head/lib/libpmc/pmclog.c	Wed Jan 17 15:12:52 2018	(r328086)
+++ head/lib/libpmc/pmclog.c	Wed Jan 17 16:41:22 2018	(r328087)
@@ -335,6 +335,8 @@ pmclog_get_event(void *cookie, char **data, ssize_t *l
 			ev->pl_u.pl_cc.pl_pc[npc] = (uintfptr_t) 0;
 		break;
 	case PMCLOG_TYPE_CLOSELOG:
+		ev->pl_state = PMCLOG_EOF;
+		return (-1);
 	case PMCLOG_TYPE_DROPNOTIFY:
 		/* nothing to do */
 		break;

Modified: head/sys/dev/hwpmc/hwpmc_logging.c
==============================================================================
--- head/sys/dev/hwpmc/hwpmc_logging.c	Wed Jan 17 15:12:52 2018	(r328086)
+++ head/sys/dev/hwpmc/hwpmc_logging.c	Wed Jan 17 16:41:22 2018	(r328087)
@@ -799,6 +799,8 @@ pmclog_close(struct pmc_owner *po)
 
 	PMCDBG1(LOG,CLO,1, "po=%p", po);
 
+	pmclog_process_closelog(po);
+
 	mtx_lock(&pmc_kthread_mtx);
 
 	/*

Modified: head/sys/dev/hwpmc/hwpmc_mod.c
==============================================================================
--- head/sys/dev/hwpmc/hwpmc_mod.c	Wed Jan 17 15:12:52 2018	(r328086)
+++ head/sys/dev/hwpmc/hwpmc_mod.c	Wed Jan 17 16:41:22 2018	(r328087)
@@ -2928,7 +2928,6 @@ pmc_syscall_handler(struct thread *td, void *syscall_a
 			    po : NULL);
 		} else if (po->po_flags & PMC_PO_OWNS_LOGFILE) {
 			pmclog_proc_ignite(pmclog_proc_handle, NULL);
-			pmclog_process_closelog(po);
 			error = pmclog_close(po);
 			if (error == 0) {
 				LIST_FOREACH(pm, &po->po_pmcs, pm_next)


More information about the svn-src-all mailing list