Signed-off-by: Daniel Lezcano daniel.lezcano@linaro.org --- drivers/cpuidle/debugfs.c | 54 +++++++++++++++++++++++++++++++++++++++++------ 1 file changed, 48 insertions(+), 6 deletions(-)
diff --git a/drivers/cpuidle/debugfs.c b/drivers/cpuidle/debugfs.c index c5aab98..ecc552e 100644 --- a/drivers/cpuidle/debugfs.c +++ b/drivers/cpuidle/debugfs.c @@ -89,6 +89,47 @@ ssize_t cpuidle_debugfs_write_reset(struct file *file, return size; }
+static const struct file_operations reset_fops = { + .open = simple_open, + .write = cpuidle_debugfs_write_reset, + .llseek = seq_lseek, +}; + +extern void sched_idle_enable(void); +extern void sched_idle_disable(void); + +ssize_t cpuidle_debugfs_write_sched_idle(struct file *file, + const char __user *user_buf, + size_t count, loff_t *ppos) +{ + ssize_t size; + bool enable = false; + + file->private_data = &enable; + + size = debugfs_write_file_bool(file, user_buf, count, ppos); + if (size > 0) + enable ? sched_idle_enable() : sched_idle_disable(); + + return size; +} + +ssize_t cpuidle_debugfs_read_sched_idle(struct file *file, + char __user *user_buf, + size_t count, loff_t *ppos) +{ + bool enable; + file->private_data = &enable; + return debugfs_read_file_bool(file, user_buf, count, ppos); +} + +static const struct file_operations sched_idle_fops = { + .open = simple_open, + .write = cpuidle_debugfs_write_sched_idle, + .read = cpuidle_debugfs_read_sched_idle, + .llseek = seq_lseek, +}; + void cpuidle_debugfs_prediction(struct cpuidle_driver *drv, struct cpuidle_device *dev, s64 duration, int state) @@ -111,12 +152,6 @@ void cpuidle_debugfs_prediction(struct cpuidle_driver *drv, } }
-static const struct file_operations reset_fops = { - .open = simple_open, - .write = cpuidle_debugfs_write_reset, - .llseek = seq_lseek, -}; - static int cpuidle_debugfs_stats_show(struct seq_file *m, void *v) { int cpu; @@ -181,6 +216,13 @@ int __init cpuidle_debugfs_init(void) top_dentry, NULL, &reset_fops)) goto out;
+ /* + * Switch to sched-idle + */ + if (!debugfs_create_file("sched-idle", 0200, + top_dentry, NULL, &sched_idle_fops)) + goto out; + ret = 0; out: if (ret) -- 1.9.1