summaryrefslogtreecommitdiff
path: root/drivers/cpuquiet/governors/runnable_threads.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/cpuquiet/governors/runnable_threads.c')
-rw-r--r--drivers/cpuquiet/governors/runnable_threads.c18
1 files changed, 18 insertions, 0 deletions
diff --git a/drivers/cpuquiet/governors/runnable_threads.c b/drivers/cpuquiet/governors/runnable_threads.c
index a44abe9b25f2..44cf308befcf 100644
--- a/drivers/cpuquiet/governors/runnable_threads.c
+++ b/drivers/cpuquiet/governors/runnable_threads.c
@@ -186,6 +186,22 @@ static int runnables_sysfs(void)
return err;
}
+static void runnables_device_busy(void)
+{
+ if (runnables_state != DISABLED) {
+ runnables_state = DISABLED;
+ cancel_delayed_work_sync(&runnables_work);
+ }
+}
+
+static void runnables_device_free(void)
+{
+ if (runnables_state == DISABLED) {
+ runnables_state = IDLE;
+ runnables_work_func(NULL);
+ }
+}
+
static void runnables_stop(void)
{
runnables_state = DISABLED;
@@ -228,6 +244,8 @@ static int runnables_start(void)
struct cpuquiet_governor runnables_governor = {
.name = "runnable",
.start = runnables_start,
+ .device_free_notification = runnables_device_free,
+ .device_busy_notification = runnables_device_busy,
.stop = runnables_stop,
.owner = THIS_MODULE,
};