diff options
author | Daniel Lezcano <daniel.lezcano@linaro.org> | 2015-12-10 14:58:15 +0100 |
---|---|---|
committer | Daniel Lezcano <daniel.lezcano@linaro.org> | 2016-02-11 10:42:55 +0100 |
commit | 9982b97361654a9c06a765cae47828d771c215e1 (patch) | |
tree | 9bffd8b5f8f0d99302d43196f9587fd06f9a2291 | |
parent | 73c571f252212490ab33b1c477ba02c10bf0c309 (diff) |
sched-idle: Add a debugfs entry to switch from cpuidle to sched-idleirq-timings-v2
Signed-off-by: Daniel Lezcano <daniel.lezcano@linaro.org>
-rw-r--r-- | drivers/cpuidle/debugfs.c | 55 |
1 files changed, 49 insertions, 6 deletions
diff --git a/drivers/cpuidle/debugfs.c b/drivers/cpuidle/debugfs.c index c5aab983d723..af4f77569d86 100644 --- a/drivers/cpuidle/debugfs.c +++ b/drivers/cpuidle/debugfs.c @@ -89,6 +89,48 @@ 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); +extern int sched_idle_enabled(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 = sched_idle_enabled(); + 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 +153,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 +217,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) |