From 4ad50468ce170760e4dc952a376d3ae5cf851c02 Mon Sep 17 00:00:00 2001 From: Peter De Schrijver Date: Fri, 30 Mar 2012 11:44:32 +0300 Subject: [PATCH] cpuquiet: userspace governor Change-Id: If9830d423b1751cbe9493eda0a85f88e7003173f Signed-off-by: Peter De Schrijver Reviewed-on: http://git-master/r/105270 Reviewed-by: Automatic_Commit_Validation_User GVS: Gerrit_Virtual_Submit Reviewed-by: Sai Gurrappadi Tested-by: Sai Gurrappadi Reviewed-by: Diwakar Tundlam Rebase-Id: R382af37ab50a08c17c635bb1fee7e16afd0d9a18 --- drivers/cpuquiet/governors/userspace.c | 56 ++++++++++++++++++++++++++ 1 file changed, 56 insertions(+) create mode 100644 drivers/cpuquiet/governors/userspace.c diff --git a/drivers/cpuquiet/governors/userspace.c b/drivers/cpuquiet/governors/userspace.c new file mode 100644 index 000000000000..470056c5e32a --- /dev/null +++ b/drivers/cpuquiet/governors/userspace.c @@ -0,0 +1,56 @@ +/* + * Copyright (c) 2012 NVIDIA CORPORATION. All rights reserved. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; version 2 of the License. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + */ + +#include +#include +#include +#include + +static DEFINE_MUTEX(userspace_mutex); + +static int governor_set(unsigned int cpu, bool active) +{ + mutex_lock(&userspace_mutex); + if (active) + cpuquiet_wake_cpu(cpu); + else + cpuquiet_quiesence_cpu(cpu); + mutex_unlock(&userspace_mutex); + + return 0; +} + +struct cpuquiet_governor userspace_governor = { + .name = "userspace", + .store_active = governor_set, + .owner = THIS_MODULE, +}; + +static int __init init_usermode(void) +{ + return cpuquiet_register_governor(&userspace_governor); +} + +static void __exit exit_usermode(void) +{ + cpuquiet_unregister_governor(&userspace_governor); +} + +MODULE_LICENSE("GPL"); +module_init(init_usermode); +module_exit(exit_usermode); -- 2.34.1