cpuquiet: Add notifiers for the runnables governor
authorSai Charan Gurrappadi <sgurrappadi@nvidia.com>
Wed, 25 Jul 2012 15:41:53 +0000 (08:41 -0700)
committerHuang, Tao <huangtao@rock-chips.com>
Mon, 18 May 2015 08:07:08 +0000 (16:07 +0800)
The governor stops sampling whenever the device is busy and starts its
sampling loop when the device is free.

Change-Id: Ifdae4a84e56c2734be48e49f6112b537602a02da
Signed-off-by: Sai Charan Gurrappadi <sgurrappadi@nvidia.com>
Reviewed-on: http://git-master/r/124680
Reviewed-by: Varun Colbert <vcolbert@nvidia.com>
Tested-by: Varun Colbert <vcolbert@nvidia.com>
drivers/cpuquiet/governors/runnable_threads.c

index a44abe9b25f293ea6e643a617bb6c54a90825f84..44cf308befcf865ecd7cf0fe104b35b130c05ff8 100644 (file)
@@ -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,
 };