Table of Contents
Introduction
This document is related to epic
-
WPERF-25Getting issue details...
STATUS
which covers various issues around wperf-driver
improvements.
Add new "busy" state to wperf-driver
See - WPERF-116Getting issue details... STATUS for more Jira related information about this feature.
Required bahaviour
Remove the call to
WdfDeviceInitSetExclusive
.Create a persistent structure inside
wperf-driver
that capture driver’s “transition” current state, like if it is sampling, counting, if PMU resources are available or not. We want to capture:[bool flag] If driver is currently “counting” or “sampling” - this will set BUSY state to true.
[IOCTL request no.] Current IOCTL being processed - this is useful to determine in user space if we are actually counting/timeline or sampling or doing some other work.
How IOCTL will set BUSY state?
Some IOCTL will set (and clear after IOCTL is finished) busy state during IOCTL handling only, e.g.
PMU_CTL_RESET
orIOCTL_PMU_CTL_QUERY_HW_CFG
. This is because these “transactions” are pending during IOCTL handle and end after.Some IOCTLs will set BUSY state
Not all IOCTLs may set bus state as some do not “set in motion” the driver.
List of IOCTLs and BUSY state
IOCTL | BUSY state / notes |
---|---|
IOCTL_PMU_CTL_START | |
IOCTL_PMU_CTL_STOP | |
IOCTL_PMU_CTL_RESET | |
IOCTL_PMU_CTL_QUERY_HW_CFG | |
IOCTL_PMU_CTL_QUERY_SUPP_EVENTS | |
IOCTL_PMU_CTL_QUERY_VERSION | |
IOCTL_PMU_CTL_ASSIGN_EVENTS | |
IOCTL_PMU_CTL_READ_COUNTING | |
IOCTL_DSU_CTL_INIT | |
IOCTL_DSU_CTL_READ_COUNTING | |
IOCTL_DMC_CTL_INIT | |
IOCTL_DMC_CTL_READ_COUNTING | |
IOCTL_PMU_CTL_SAMPLE_SET_SRC | |
IOCTL_PMU_CTL_SAMPLE_START | |
IOCTL_PMU_CTL_SAMPLE_STOP | |
IOCTL_PMU_CTL_SAMPLE_GET |
<>