From: Russell King <rmk@arm.linux.org.uk>
To: Linux Kernel List <linux-kernel@vger.kernel.org>
Subject: Fwd: [PATCH] cpufreq (2/7): fix userspace governor
Date: Sun, 9 Mar 2003 19:36:27 +0000 [thread overview]
Message-ID: <20030309193627.C26266@flint.arm.linux.org.uk> (raw)
----- Forwarded message from Dominik Brodowski <linux@brodo.de> -----
From: Dominik Brodowski <linux@brodo.de>
To: torvalds@transmeta.com
Cc: cpufreq@www.linux.org.uk
Subject: [PATCH] cpufreq (2/7): fix userspace governor
Date: Fri, 7 Mar 2003 11:08:58 +0100
Let's put the sysfs file exported by the cpufreq userspace governor also
into the cpufreq/ - subdirectory of /sys/devices/sys/cpu0/.
drivers/cpufreq/userspace.c | 29 ++++++++++++-----------------
include/linux/cpufreq.h | 10 +++++++++-
kernel/cpufreq.c | 6 ------
3 files changed, 21 insertions(+), 24 deletions(-)
Dominik
diff -u linux-original/drivers/cpufreq/userspace.c linux/drivers/cpufreq/userspace.c
--- linux-original/drivers/cpufreq/userspace.c 2003-03-06 20:38:35.000000000 +0100
+++ linux/drivers/cpufreq/userspace.c 2003-03-06 21:12:33.000000000 +0100
@@ -23,6 +23,7 @@
#include <linux/sysctl.h>
#include <linux/types.h>
#include <linux/fs.h>
+#include <linux/sysfs.h>
#include <asm/uaccess.h>
@@ -465,23 +466,14 @@
/************************** sysfs interface ************************/
-static inline int to_cpu_nr (struct device *dev)
+static ssize_t show_speed (struct cpufreq_policy *policy, char *buf)
{
- struct sys_device * cpu_sys_dev = container_of(dev, struct sys_device, dev);
- return (cpu_sys_dev->id);
-}
-
-static ssize_t show_speed (struct device *dev, char *buf)
-{
- unsigned int cpu = to_cpu_nr(dev);
-
- return sprintf (buf, "%u\n", cpu_cur_freq[cpu]);
+ return sprintf (buf, "%u\n", cpu_cur_freq[policy->cpu]);
}
static ssize_t
-store_speed (struct device *dev, const char *buf, size_t count)
+store_speed (struct cpufreq_policy *policy, const char *buf, size_t count)
{
- unsigned int cpu = to_cpu_nr(dev);
unsigned int freq = 0;
unsigned int ret;
@@ -489,13 +481,16 @@
if (ret != 1)
return -EINVAL;
- cpufreq_set(freq, cpu);
+ cpufreq_set(freq, policy->cpu);
return count;
}
-static DEVICE_ATTR(scaling_setspeed, (S_IRUGO | S_IWUSR), show_speed, store_speed);
-
+static struct freq_attr freq_attr_scaling_setspeed = {
+ .attr = { .name = "scaling_setspeed", .mode = 0644 },
+ .show = show_speed,
+ .store = store_speed,
+};
static int cpufreq_governor_userspace(struct cpufreq_policy *policy,
unsigned int event)
@@ -511,7 +506,7 @@
cpu_min_freq[cpu] = policy->min;
cpu_max_freq[cpu] = policy->max;
cpu_cur_freq[cpu] = policy->cur;
- device_create_file (policy->dev, &dev_attr_scaling_setspeed);
+ sysfs_create_file (&policy->kobj, &freq_attr_scaling_setspeed.attr);
memcpy (¤t_policy[cpu], policy, sizeof(struct cpufreq_policy));
up(&userspace_sem);
break;
@@ -520,7 +515,7 @@
cpu_is_managed[cpu] = 0;
cpu_min_freq[cpu] = 0;
cpu_max_freq[cpu] = 0;
- device_remove_file (policy->dev, &dev_attr_scaling_setspeed);
+ sysfs_remove_file (&policy->kobj, &freq_attr_scaling_setspeed.attr);
up(&userspace_sem);
module_put(THIS_MODULE);
break;
diff -u linux-original/include/linux/cpufreq.h linux/include/linux/cpufreq.h
--- linux-original/include/linux/cpufreq.h 2003-03-06 19:13:52.000000000 +0100
+++ linux/include/linux/cpufreq.h 2003-03-06 21:08:24.000000000 +0100
@@ -18,7 +18,8 @@
#include <linux/notifier.h>
#include <linux/threads.h>
#include <linux/device.h>
-
+#include <linux/kobject.h>
+#include <linux/sysfs.h>
#define CPUFREQ_NAME_LEN 16
@@ -194,6 +195,13 @@
return;
}
+struct freq_attr {
+ struct attribute attr;
+ ssize_t (*show)(struct cpufreq_policy *, char *);
+ ssize_t (*store)(struct cpufreq_policy *, const char *, size_t count);
+};
+
+
/*********************************************************************
* CPUFREQ 2.6. INTERFACE *
*********************************************************************/
diff -u linux-original/kernel/cpufreq.c linux/kernel/cpufreq.c
--- linux-original/kernel/cpufreq.c 2003-03-06 21:14:44.000000000 +0100
+++ linux/kernel/cpufreq.c 2003-03-06 21:08:24.000000000 +0100
@@ -256,12 +256,6 @@
}
-struct freq_attr {
- struct attribute attr;
- ssize_t (*show)(struct cpufreq_policy *, char *);
- ssize_t (*store)(struct cpufreq_policy *, const char *, size_t count);
-};
-
#define define_one_ro(_name) \
struct freq_attr _name = { \
.attr = { .name = __stringify(_name), .mode = 0444 }, \
_______________________________________________
Cpufreq mailing list
Cpufreq@www.linux.org.uk
http://www.linux.org.uk/mailman/listinfo/cpufreq
----- End forwarded message -----
--
Russell King (rmk@arm.linux.org.uk) The developer of ARM Linux
http://www.arm.linux.org.uk/personal/aboutme.html
reply other threads:[~2003-03-09 19:29 UTC|newest]
Thread overview: [no followups] expand[flat|nested] mbox.gz Atom feed
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20030309193627.C26266@flint.arm.linux.org.uk \
--to=rmk@arm.linux.org.uk \
--cc=linux-kernel@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®