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)
_______________________________________________
svn-src-all@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"

Reply via email to