aboutsummaryrefslogtreecommitdiff
path: root/x11/gnome-applets/files/patch-cpufreq-freebsd
diff options
context:
space:
mode:
authorJoe Marcus Clarke <marcus@FreeBSD.org>2006-10-14 08:35:50 +0000
committerJoe Marcus Clarke <marcus@FreeBSD.org>2006-10-14 08:35:50 +0000
commitf1bb12de8e50bf76ae21f37debda60994ec7fd99 (patch)
tree1671d4beef381f12d939e34b344eb385a3af4f19 /x11/gnome-applets/files/patch-cpufreq-freebsd
parent29adee7bb42244f34736c5c24ed18a9b269d0925 (diff)
downloadports-f1bb12de8e50bf76ae21f37debda60994ec7fd99.tar.gz
ports-f1bb12de8e50bf76ae21f37debda60994ec7fd99.zip
Presenting GNOME 2.16.1 for FreeBSD. This release represents a massive
amount of work by the FreeBSD GNOME Team and our testers. On top of the usual GNOME update, we have taken this opportunity to move GNOME from X11BASE to LOCALBASE. This means roughly 600 ports NOT part of the GNOME Desktop also need to be changed. The bulk of the move was carried out by ahze, mezz, and pav, but it would not have been possible without cooperation from the FreeBSD KDE team who worked with us to make sure GNOME and KDE can still coexist happily. We would also like to send a shout out to kris and pointyhat for putting up with multiple test runs until we got something that was solid. Back to GNOME 2.16. This release brings a huge amount of new functionality to FreeBSD. The standard release notes can be read at http://www.gnome.org/start/2.16/ . But on top of what you will read there, jylefort and marcus have completed work on a port of HAL to FreeBSD. This will allow FreeBSD to take advantage of closer hardware interaction such as auto-mounting CD-ROMs, USB drives, and music players; auto-playing audio CDs; and managing laptop power consumption. But where would this all be without our loyal testers and contributors? Therefore, the FreeBSD GNOME team would like to thank the following users: Phillip Neumann <pneumann@gmail.com> tmclaugh mux Yuri Pankov <yuri.pankov@gmail.com> chinsan Thomas <freebsdlists@bsdunix.ch> Brian Gruber <knightbg@yahoo.com> Franz Klammer <klammer@webonaut.com> Dominique Goncalves <dominique.goncalves@gmail.com> Pascal Hofstee <caelian@gmail.com> Yasuda Keisuke <kysd@po.harenet.ne.jp> backyard <backyard1454-bsd@yahoo.com> Andris Raugulis <endrju@null.lv> <endrju@null.lv> Eric L. Chen <d9364104@mail.nchu.edu.tw> Pawel Worach <pawel.worach@gmail.com> QuiRK on #freebsd-gnome Shane Bell <decept0@gmail.com> luigi sajd on #freebsd-gnome sat Chris Coleman <chrisc@vmunix.com> kaeru on #freebsd-gnome crsd_ via irc.freenode.org/#FreeBSD-GNOME Joel Diaz <joeldiaz@mac.com> Enjoy! Approved by: portmgr (implicit, kris)
Notes
Notes: svn path=/head/; revision=175253
Diffstat (limited to 'x11/gnome-applets/files/patch-cpufreq-freebsd')
-rw-r--r--x11/gnome-applets/files/patch-cpufreq-freebsd513
1 files changed, 207 insertions, 306 deletions
diff --git a/x11/gnome-applets/files/patch-cpufreq-freebsd b/x11/gnome-applets/files/patch-cpufreq-freebsd
index 4bed0298db89..53841b6d7346 100644
--- a/x11/gnome-applets/files/patch-cpufreq-freebsd
+++ b/x11/gnome-applets/files/patch-cpufreq-freebsd
@@ -1,6 +1,117 @@
---- cpufreq/src/cpufreq-monitor-sysctl.h.orig Sun Feb 13 01:00:25 2005
-+++ cpufreq/src/cpufreq-monitor-sysctl.h Sat Feb 12 20:25:21 2005
-@@ -0,0 +1,48 @@
+--- cpufreq/src/cpufreq-monitor-cpuinfo.c.orig Thu Jun 15 01:01:54 2006
++++ cpufreq/src/cpufreq-monitor-cpuinfo.c Sat Jun 17 13:48:19 2006
+@@ -22,6 +22,10 @@
+ #include <glib.h>
+ #include <glib/gi18n.h>
+
++#ifdef __FreeBSD__
++#include <sys/types.h>
++#include <sys/sysctl.h>
++#endif /* __FreeBSD__ */
+ #include <string.h>
+ #include <stdio.h>
+
+@@ -59,15 +63,20 @@ cpufreq_monitor_cpuinfo_new (guint cpu)
+ static gboolean
+ cpufreq_monitor_cpuinfo_run (CPUFreqMonitor *monitor)
+ {
++#ifndef __FreeBSD__
+ gchar *file;
+ gchar **lines;
+ gchar *buffer = NULL;
+ gchar *p;
++#else
++ size_t len;
++#endif /* __FreeBSD__ */
+ gint cpu, i;
+ gint cur_freq, max_freq;
+ gchar *governor;
+ GError *error = NULL;
+
++#ifndef __FreeBSD__
+ file = g_strdup ("/proc/cpuinfo");
+ if (!g_file_get_contents (file, &buffer, NULL, &error)) {
+ g_warning (error->message);
+@@ -112,6 +121,12 @@ cpufreq_monitor_cpuinfo_run (CPUFreqMoni
+
+ g_strfreev (lines);
+ g_free (buffer);
++#else
++ len = sizeof (cpu);
++
++ if (sysctlbyname ("hw.clockrate", &cpu, &len, NULL, 0) == -1)
++ return FALSE;
++#endif /* __FreeBSD__ */
+
+ governor = g_strdup (_("Frequency Scaling Unsupported"));
+ cur_freq = cpu * 1000;
+--- cpufreq/src/cpufreq-applet.c.orig Thu Jun 15 01:01:53 2006
++++ cpufreq/src/cpufreq-applet.c Sat Jun 17 13:42:50 2006
+@@ -17,6 +17,7 @@
+ * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ *
+ * Authors : Carlos García Campos <carlosgc@gnome.org>
++ * Joe Marcus Clarke <marcus@FreeBSD.org>
+ */
+
+ #ifdef HAVE_CONFIG_H
+@@ -519,6 +524,7 @@ cpufreq_applet_about_cb (BonoboUICompone
+ {
+ static const gchar *const authors[] = {
+ "Carlos Garcia Campos <carlosgc@gnome.org>",
++ "Joe Marcus Clarke <marcus@FreeBSD.org> (FreeBSD support)",
+ NULL
+ };
+ static const gchar *const documenters[] = {
+--- cpufreq/src/Makefile.in.orig Sat Jun 17 13:42:50 2006
++++ cpufreq/src/Makefile.in Sat Jun 17 14:03:45 2006
+@@ -62,7 +62,8 @@ am__cpufreq_applet_SOURCES_DIST = cpufre
+ cpufreq-monitor-procfs.h cpufreq-monitor-sysfs.c \
+ cpufreq-monitor-sysfs.h cpufreq-monitor-libcpufreq.c \
+ cpufreq-monitor-libcpufreq.h cpufreq-monitor-cpuinfo.c \
+- cpufreq-monitor-cpuinfo.h
++ cpufreq-monitor-cpuinfo.h cpufreq-monitor-sysctl.c \
++ cpufreq-monitor-sysctl.h
+ @HAVE_LIBCPUFREQ_TRUE@am__objects_1 = \
+ @HAVE_LIBCPUFREQ_TRUE@ cpufreq-monitor-libcpufreq.$(OBJEXT)
+ am_cpufreq_applet_OBJECTS = cpufreq-applet.$(OBJEXT) \
+@@ -71,7 +72,8 @@ am_cpufreq_applet_OBJECTS = cpufreq-appl
+ cpufreq-monitor-factory.$(OBJEXT) \
+ cpufreq-monitor-procfs.$(OBJEXT) \
+ cpufreq-monitor-sysfs.$(OBJEXT) $(am__objects_1) \
+- cpufreq-monitor-cpuinfo.$(OBJEXT)
++ cpufreq-monitor-cpuinfo.$(OBJEXT) \
++ cpufreq-monitor-sysctl.$(OBJEXT)
+ cpufreq_applet_OBJECTS = $(am_cpufreq_applet_OBJECTS)
+ am__DEPENDENCIES_1 =
+ cpufreq_applet_DEPENDENCIES = $(am__DEPENDENCIES_1) \
+@@ -85,6 +87,7 @@ am__depfiles_maybe = depfiles
+ @AMDEP_TRUE@ ./$(DEPDIR)/cpufreq-monitor-libcpufreq.Po \
+ @AMDEP_TRUE@ ./$(DEPDIR)/cpufreq-monitor-procfs.Po \
+ @AMDEP_TRUE@ ./$(DEPDIR)/cpufreq-monitor-sysfs.Po \
++@AMDEP_TRUE@ ./$(DEPDIR)/cpufreq-monitor-sysctl.Po \
+ @AMDEP_TRUE@ ./$(DEPDIR)/cpufreq-monitor.Po \
+ @AMDEP_TRUE@ ./$(DEPDIR)/cpufreq-popup.Po \
+ @AMDEP_TRUE@ ./$(DEPDIR)/cpufreq-prefs.Po \
+@@ -397,6 +400,7 @@ cpufreq_applet_SOURCES = \
+ cpufreq-monitor.c cpufreq-monitor.h \
+ cpufreq-monitor-factory.c cpufreq-monitor-factory.h \
+ cpufreq-monitor-procfs.c cpufreq-monitor-procfs.h \
++ cpufreq-monitor-sysctl.c cpufreq-monitor-sysctl.h \
+ cpufreq-monitor-sysfs.c cpufreq-monitor-sysfs.h \
+ $(cpufreq_files) \
+ cpufreq-monitor-cpuinfo.c cpufreq-monitor-cpuinfo.h
+@@ -482,6 +486,7 @@ distclean-compile:
+ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cpufreq-monitor-factory.Po@am__quote@
+ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cpufreq-monitor-libcpufreq.Po@am__quote@
+ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cpufreq-monitor-procfs.Po@am__quote@
++@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cpufreq-monitor-sysctl.Po@am__quote@
+ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cpufreq-monitor-sysfs.Po@am__quote@
+ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cpufreq-monitor.Po@am__quote@
+ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cpufreq-popup.Po@am__quote@
+--- cpufreq/src/cpufreq-monitor-sysctl.h.orig Sat Jun 17 14:05:37 2006
++++ cpufreq/src/cpufreq-monitor-sysctl.h Sat Jun 17 14:14:13 2006
+@@ -0,0 +1,49 @@
+/*
+ * Copyright (C) 2001, 2002 Free Software Foundation
+ *
@@ -25,6 +136,7 @@
+#define __CPUFREQ_MONITOR_SYSCTL_H__
+
+#include <glib-object.h>
++
+#include "cpufreq-monitor.h"
+
+#define TYPE_CPUFREQ_MONITOR_SYSCTL (cpufreq_monitor_sysctl_get_type ())
@@ -45,13 +157,13 @@
+ CPUFreqMonitorClass parent_class;
+};
+
-+GType cpufreq_monitor_sysctl_get_type ();
++GType cpufreq_monitor_sysctl_get_type (void) G_GNUC_CONST;
+CPUFreqMonitor *cpufreq_monitor_sysctl_new (guint cpu);
+
+#endif /* __CPUFREQ_MONITOR_SYSCTL_H__ */
---- cpufreq/src/cpufreq-monitor-sysctl.c.orig Sun Feb 13 03:52:42 2005
-+++ cpufreq/src/cpufreq-monitor-sysctl.c Mon Feb 14 00:42:07 2005
-@@ -0,0 +1,269 @@
+--- cpufreq/src/cpufreq-monitor-sysctl.c.orig Sat Jun 17 14:15:55 2006
++++ cpufreq/src/cpufreq-monitor-sysctl.c Sat Jun 24 01:45:23 2006
+@@ -0,0 +1,161 @@
+/*
+ * Copyright (C) 2001, 2002 Free Software Foundation
+ *
@@ -82,70 +194,32 @@
+#include <sys/sysctl.h>
+
+#include "cpufreq-monitor-sysctl.h"
-+#include "cpufreq-monitor-protected.h"
+
+#define PARENT_TYPE TYPE_CPUFREQ_MONITOR
+
+#define CPUFREQ_MONITOR_GET_PROTECTED(obj) (G_TYPE_INSTANCE_GET_PRIVATE((obj), PARENT_TYPE, CPUFreqMonitorProtected))
+
+static void cpufreq_monitor_sysctl_class_init (CPUFreqMonitorSysctlClass *klass);
-+static void cpufreq_monitor_sysctl_finalize (GObject *object);
+
-+static void cpufreq_monitor_sysctl_run (CPUFreqMonitor *monitor);
++static gboolean cpufreq_monitor_sysctl_run (CPUFreqMonitor *monitor);
+static GList *cpufreq_monitor_sysctl_get_available_frequencies (CPUFreqMonitor *monitor);
+
+static gboolean cpufreq_monitor_sysctl_get (gpointer gdata);
+
-+
-+static CPUFreqMonitorClass *parent_class = NULL;
-+
-+typedef struct _CPUFreqMonitorProtected CPUFreqMonitorProtected;
-+
-+GType cpufreq_monitor_sysctl_get_type ()
-+{
-+ static GType type = 0;
-+
-+ if (!type) {
-+ static const GTypeInfo info = {
-+ sizeof (CPUFreqMonitorSysctlClass),
-+ (GBaseInitFunc) NULL,
-+ (GBaseFinalizeFunc) NULL,
-+ (GClassInitFunc) cpufreq_monitor_sysctl_class_init,
-+ NULL,
-+ NULL,
-+ sizeof (CPUFreqMonitorSysctl),
-+ 0,
-+ NULL
-+ };
-+
-+ type = g_type_register_static (PARENT_TYPE, "CPUFreqMonitorSysctl",
-+ &info, 0);
-+ }
-+
-+ return type;
-+}
++G_DEFINE_TYPE (CPUFreqMonitorSysctl, cpufreq_monitor_sysctl, CPUFREQ_TYPE_MONITOR)
+
+static void
-+cpufreq_monitor_sysctl_class_init (CPUFreqMonitorSysctlClass *klass)
++cpufreq_monitor_sysctl_init (CPUFreqMonitorSysctl *monitor)
+{
-+ GObjectClass *object_class = G_OBJECT_CLASS (klass);
-+ CPUFreqMonitorClass *monitor_class = CPUFREQ_MONITOR_CLASS (klass);
-+
-+ parent_class = g_type_class_peek_parent (klass);
-+
-+ monitor_class->run = cpufreq_monitor_sysctl_run;
-+ monitor_class->get_available_frequencies = cpufreq_monitor_sysctl_get_available_frequencies;
-+
-+ object_class->finalize = cpufreq_monitor_sysctl_finalize;
+}
+
+static void
-+cpufreq_monitor_sysctl_finalize (GObject *object)
++cpufreq_monitor_sysctl_class_init (CPUFreqMonitorSysctlClass *klass)
+{
-+ g_return_if_fail (IS_CPUFREQ_MONITOR_SYSCTL (object));
++ CPUFreqMonitorClass *monitor_class = CPUFREQ_MONITOR_CLASS (klass);
+
-+ if (G_OBJECT_CLASS (parent_class)->finalize)
-+ (* G_OBJECT_CLASS (parent_class)->finalize) (object);
++ monitor_class->run = cpufreq_monitor_sysctl_run;
++ monitor_class->get_available_frequencies = cpufreq_monitor_sysctl_get_available_frequencies;
+}
+
+CPUFreqMonitor *
@@ -159,29 +233,23 @@
+}
+
+static gboolean
-+cpufreq_monitor_sysctl_get (gpointer gdata)
++cpufreq_monitor_sysctl_run (CPUFreqMonitor *monitor)
+{
+ gint fmax, fmin, ifreq;
-+ gchar *freq, *perc, *unit, *governor;
-+ gboolean changed;
++ gchar *governor;
+ size_t len;
+ gchar *freq_oid;
-+ CPUFreqMonitorSysctl *monitor;
-+ CPUFreqMonitorProtected *private;
++ guint mon_cpu;
++ GList *list;
+
-+ monitor = (CPUFreqMonitorSysctl *) gdata;
-+ private = CPUFREQ_MONITOR_GET_PROTECTED (CPUFREQ_MONITOR (monitor));
++ list = cpufreq_monitor_get_available_frequencies (CPUFREQ_MONITOR (monitor));
+
-+ if (private->available_freqs == NULL) {
-+ if (!cpufreq_monitor_sysctl_get_available_frequencies (CPUFREQ_MONITOR (monitor)))
-+ return FALSE;
-+ }
-+
-+ fmax = atoi ((gchar *) private->available_freqs->data);
-+ fmin = atoi ((gchar *) g_list_nth_data (private->available_freqs, (g_list_length (private->available_freqs) - 1)));
++ fmax = atoi ((gchar *) list->data);
++ fmin = atoi ((gchar *) g_list_nth_data (list, (g_list_length (list) - 1)));
+
++ g_object_get (G_OBJECT (monitor), "cpu", &mon_cpu, NULL);
+ len = sizeof (ifreq);
-+ freq_oid = g_strdup_printf ("dev.cpu.%d.freq", private->cpu);
++ freq_oid = g_strdup_printf ("dev.cpu.%d.freq", mon_cpu);
+
+ if (sysctlbyname (freq_oid, &ifreq, &len, NULL, 0) == -1) {
+ g_free (freq_oid);
@@ -189,7 +257,7 @@
+ }
+
+ ifreq *= 1000;
-+
++
+ if (ifreq == fmax)
+ governor = g_strdup ("performance");
+ else if (ifreq == fmin)
@@ -197,93 +265,29 @@
+ else
+ governor = g_strdup ("other");
+
-+ freq = parent_class->get_human_readable_freq (ifreq);
-+ perc = parent_class->get_human_readable_perc (fmax, ifreq);
-+ unit = parent_class->get_human_readable_unit (ifreq);
-+
-+ changed = FALSE;
-+
-+ if (!private->governor || (g_ascii_strcasecmp (governor, private->governor) != 0)) {
-+ changed = TRUE;
-+ }
-+
-+ if (!private->freq || (g_ascii_strcasecmp (freq, private->freq) != 0)) {
-+ changed = TRUE;
-+ }
-+
-+ if (!private->perc || (g_ascii_strcasecmp (perc, private->perc) != 0)) {
-+ changed = TRUE;
-+ }
-+
-+ if (!private->unit || (g_ascii_strcasecmp (unit, private->unit) != 0)) {
-+ changed = TRUE;
-+ }
-+
-+ parent_class->free_data (CPUFREQ_MONITOR (monitor));
-+
-+ private->governor = governor;
-+ private->freq = freq;
-+ private->perc = perc;
-+ private->unit = unit;
-+
-+ if (private->governor == NULL)
-+ return FALSE;
-+ if (private->freq == NULL)
-+ return FALSE;
-+ if (private->perc == NULL)
-+ return FALSE;
-+ if (private->unit == NULL)
-+ return FALSE;
-+
-+ if (changed)
-+ g_signal_emit (CPUFREQ_MONITOR (monitor), parent_class->signals[CHANGED], 0);
++ g_object_set (G_OBJECT (monitor),
++ "governor", governor,
++ "frequency", ifreq,
++ "max-frequency", fmax,
++ NULL);
+
+ return TRUE;
+}
+
-+static void
-+cpufreq_monitor_sysctl_run (CPUFreqMonitor *monitor)
-+{
-+ CPUFreqMonitorProtected *private;
-+
-+ g_return_if_fail (IS_CPUFREQ_MONITOR_SYSCTL (monitor));
-+
-+ private = CPUFREQ_MONITOR_GET_PROTECTED (CPUFREQ_MONITOR (monitor));
-+
-+ if (private->timeout_handler > 0)
-+ g_source_remove (private->timeout_handler);
-+
-+ private->timeout_handler = g_timeout_add (1000, cpufreq_monitor_sysctl_get, (gpointer) monitor);
-+}
-+
-+static void
-+free_string (gpointer str, gpointer gdata)
-+{
-+ if (str) g_free (str);
-+}
-+
+static GList *
+cpufreq_monitor_sysctl_get_available_frequencies (CPUFreqMonitor *monitor)
+{
-+ CPUFreqMonitorProtected *private;
+ gchar *levels_oid, *levels;
+ gchar **levelsp, **l;
++ GList *list = NULL;
+ gint mib[4];
++ guint mon_cpu;
+ size_t len;
+
-+ g_return_val_if_fail (IS_CPUFREQ_MONITOR_SYSCTL (monitor), NULL);
-+
-+ private = CPUFREQ_MONITOR_GET_PROTECTED (CPUFREQ_MONITOR (monitor));
-+
-+ if (private->available_freqs) {
-+ g_list_foreach (private->available_freqs,
-+ free_string, NULL);
-+ g_list_free (private->available_freqs);
-+ private->available_freqs = NULL;
-+ }
++ g_object_get (G_OBJECT (monitor), "cpu", &mon_cpu, NULL);
+
+ levels_oid = g_strdup_printf ("dev.cpu.%d.freq_levels",
-+ private->cpu);
++ mon_cpu);
+ len = 4;
+ sysctlnametomib (levels_oid, mib, &len);
+ len = sizeof (levels);
@@ -295,7 +299,7 @@
+ levels = g_malloc (len);
+ if (sysctl (mib, 4, levels, &len, NULL, 0) == -1)
+ return NULL;
-+
++
+ levelsp = g_strsplit (levels, " ", 0);
+ g_free (levels);
+
@@ -310,219 +314,116 @@
+ * mW.
+ */
+ int freq = atoi (frpr[0]);
-+ private->available_freqs =
-+ g_list_append (private->available_freqs, g_strdup_printf ("%d", freq * 1000));
++ list =
++ g_list_append (list, g_strdup_printf ("%d", freq * 1000));
+ }
+ g_strfreev (frpr);
+ }
+
+ g_strfreev (levelsp);
+
-+ return private->available_freqs;
++ return (list);
+}
+#endif /* __FreeBSD__ */
---- cpufreq/src/cpufreq-monitor-factory.c.orig Thu Apr 14 12:11:06 2005
-+++ cpufreq/src/cpufreq-monitor-factory.c Sun Jul 3 17:09:15 2005
-@@ -17,13 +17,21 @@
+--- cpufreq/src/cpufreq-monitor-factory.c.orig Sat Jun 17 06:28:02 2006
++++ cpufreq/src/cpufreq-monitor-factory.c Sat Jun 24 01:45:54 2006
+@@ -17,6 +17,7 @@
* Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*
* Authors : Carlos García Campos <carlosgc@gnome.org>
+ * Joe Marcus Clarke <marcus@FreeBSD.org>
*/
+ #ifdef HAVE_CONFIG_H
+@@ -25,11 +26,18 @@
+
#include <glib.h>
+ #include <glib/gi18n.h>
+#ifdef __FreeBSD__
+#include <sys/types.h>
+#include <sys/sysctl.h>
+#endif /* __FreeBSD__ */
#include "cpufreq-applet.h"
+ #include "cpufreq-utils.h"
#include "cpufreq-monitor-sysfs.h"
#include "cpufreq-monitor-procfs.h"
+#ifdef __FreeBSD__
+#include "cpufreq-monitor-sysctl.h"
+#endif /* __FreeBSD__ */
#include "cpufreq-monitor-cpuinfo.h"
- #include "cpufreq-monitor-factory.h"
-
-@@ -31,6 +39,7 @@ CPUFreqMonitor *
+ #ifdef HAVE_LIBCPUFREQ
+ #include "cpufreq-monitor-libcpufreq.h"
+@@ -40,6 +48,7 @@ CPUFreqMonitor *
cpufreq_monitor_factory_create_monitor (guint cpu)
{
CPUFreqMonitor *monitor = NULL;
+#ifndef __FreeBSD__
- if (g_file_test ("/sys/devices/system/cpu/cpu0/cpufreq", G_FILE_TEST_EXISTS)) { /* 2.6 kernel */
- monitor = cpufreq_monitor_sysfs_new (cpu);
-@@ -49,6 +58,20 @@ cpufreq_monitor_factory_create_monitor (
-
- monitor = cpufreq_monitor_cpuinfo_new (cpu);
+ #ifdef HAVE_LIBCPUFREQ
+ monitor = cpufreq_monitor_libcpufreq_new (cpu);
+@@ -63,6 +72,19 @@ cpufreq_monitor_factory_create_monitor (
+
+ monitor = cpufreq_monitor_cpuinfo_new (cpu);
}
+#else
+ size_t len;
+
+ if (sysctlbyname ("dev.cpu.0.freq", NULL, &len, NULL, 0) == 0) {
-+ monitor = cpufreq_monitor_sysctl_new (cpu);
++ monitor = cpufreq_monitor_sysctl_new (cpu);
+ } else {
-+ cpufreq_applet_display_error (_("CPU frequency scaling unsupported"),
-+ _("You will not be able to modify the frequency of your machine. "
-+ "Your machine may be misconfigured or not have hardware support "
-+ "for CPU frequency scaling."));
-+
-+ monitor = cpufreq_monitor_cpuinfo_new (cpu);
++ cpufreq_utils_display_error (_("CPU frequency scaling unsupported"),
++ _("You will not be able to modify the frequency of your machine. "
++ "Your machine may be misconfigured or not have hardware support "
++ "for CPU frequency scaling."));
++ monitor = cpufreq_monitor_cpuinfo_new (cpu);
+ }
+#endif /* __FreeBSD__ */
-
+
return monitor;
}
---- cpufreq/src/cpufreq-monitor-cpuinfo.c.orig Thu Apr 14 12:11:06 2005
-+++ cpufreq/src/cpufreq-monitor-cpuinfo.c Sun Jul 3 17:07:16 2005
-@@ -23,6 +23,10 @@
- #include <glib/gi18n.h>
- #include <libgnomevfs/gnome-vfs.h>
-
+--- cpufreq/src/cpufreq-utils.c.orig Sat Aug 12 21:26:50 2006
++++ cpufreq/src/cpufreq-utils.c Tue Aug 22 11:07:32 2006
+@@ -22,6 +22,9 @@
+ #include <glib.h>
+ #include <gtk/gtkmessagedialog.h>
+ #include <sys/types.h>
+#ifdef __FreeBSD__
-+#include <sys/types.h>
+#include <sys/sysctl.h>
-+#endif /* __FreeBSD__ */
- #include <string.h>
- #include <stdio.h>
-
-@@ -104,6 +108,7 @@ cpufreq_monitor_cpuinfo_new (guint cpu)
- static gboolean
- cpufreq_monitor_cpuinfo_get (gpointer gdata)
- {
-+#ifndef __FreeBSD__
- GnomeVFSHandle *handle;
- GnomeVFSFileSize bytes_read;
- GnomeVFSResult result;
-@@ -111,6 +116,9 @@ cpufreq_monitor_cpuinfo_get (gpointer gd
- gchar **lines;
- gchar buffer[256];
- gchar *p;
-+#else
-+ size_t len;
-+#endif /* __FreeBSD__ */
- gchar *freq, *perc, *unit, *governor;
- gint cpu, i;
- CPUFreqMonitorCPUInfo *monitor;
-@@ -120,6 +128,7 @@ cpufreq_monitor_cpuinfo_get (gpointer gd
-
- private = CPUFREQ_MONITOR_GET_PROTECTED (CPUFREQ_MONITOR (monitor));
-
-+#ifndef __FreeBSD__
- uri = gnome_vfs_get_uri_from_local_path ("/proc/cpuinfo");
++#endif
+ #include <sys/stat.h>
+ #include <fcntl.h>
+ #include <unistd.h>
+@@ -30,6 +33,24 @@
- result = gnome_vfs_open (&handle, uri, GNOME_VFS_OPEN_READ);
-@@ -180,6 +189,12 @@ cpufreq_monitor_cpuinfo_get (gpointer gd
+ #include "cpufreq-utils.h"
- g_strfreev (lines);
- g_free (file);
-+#else
-+ len = sizeof (cpu);
-+
-+ if (sysctlbyname ("hw.clockrate", &cpu, &len, NULL, 0) == -1)
-+ return FALSE;
-+#endif /* __FreeBSD__ */
-
- governor = g_strdup (_("Frequency Scaling Unsupported"));
- freq = parent_class->get_human_readable_freq (cpu * 1000); /* kHz are expected*/
---- cpufreq/src/cpufreq-applet.c.orig Thu Apr 14 12:11:06 2005
-+++ cpufreq/src/cpufreq-applet.c Sun Jul 3 17:28:43 2005
-@@ -17,6 +17,7 @@
- * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- *
- * Authors : Carlos García Campos <carlosgc@gnome.org>
-+ * Joe Marcus Clarke <marcus@FreeBSD.org>
- */
-
- #include <config.h>
-@@ -26,6 +27,10 @@
- #include <panel-applet-gconf.h>
- #include <glade/glade.h>
- #include <glib/gi18n.h>
+#ifdef __FreeBSD__
-+#include <sys/types.h>
-+#include <sys/sysctl.h>
-+#endif /* __FreeBSD__ */
- #include <string.h>
-
- #include "cpufreq-applet.h"
-@@ -193,6 +198,7 @@ cpufreq_applet_about_cb (BonoboUICompone
- {
- static const gchar *authors[] = {
- "Carlos Garcia Campos <carlosgc@gnome.org>",
-+ "Joe Marcus Clarke <marcus@FreeBSD.org> (FreeBSD support)",
- NULL
- };
- static const gchar *documenters[] = {
-@@ -233,6 +239,7 @@ static gint
- cpufreq_applet_get_max_cpu (void)
- {
- gint mcpu = -1;
-+#ifndef __FreeBSD__
- gchar *file = NULL;
-
- do {
-@@ -242,11 +249,20 @@ cpufreq_applet_get_max_cpu (void)
- } while (g_file_test (file, G_FILE_TEST_EXISTS));
- g_free (file);
- mcpu --;
-+#else
++guint
++cpufreq_utils_get_n_cpus (void)
++{
+ size_t len;
++ static guint n_cpus = 0;
++
++ if (n_cpus > 0)
++ return n_cpus;
+
-+ len = sizeof (mcpu);
++ len = sizeof (n_cpus);
++ if (sysctlbyname ("hw.ncpu", &n_cpus, &len, NULL, 0) == -1) {
++ return 1;
++ }
+
-+ sysctlbyname ("hw.ncpu", &mcpu, &len, NULL, 0);
-+ mcpu --;
++ return n_cpus;
++}
++#else
+ guint
+ cpufreq_utils_get_n_cpus (void)
+ {
+@@ -72,6 +93,7 @@ cpufreq_utils_get_n_cpus (void)
+
+ return 1;
+ }
+#endif /* __FreeBSD__ */
- if (mcpu >= 0)
- return mcpu;
-
- mcpu = -1;
-+#ifndef __FreeBSD__
- file = NULL;
- do {
- if (file) g_free (file);
-@@ -255,6 +271,7 @@ cpufreq_applet_get_max_cpu (void)
- } while (g_file_test (file, G_FILE_TEST_EXISTS));
- g_free (file);
- mcpu --;
-+#endif
-
- if (mcpu >= 0)
- return mcpu;
---- cpufreq/src/Makefile.in.orig Tue Oct 4 00:11:26 2005
-+++ cpufreq/src/Makefile.in Tue Oct 4 00:20:37 2005
-@@ -57,6 +57,7 @@
- cpufreq-prefs.$(OBJEXT) cpufreq-popup.$(OBJEXT) \
- cpufreq-monitor.$(OBJEXT) cpufreq-monitor-factory.$(OBJEXT) \
- cpufreq-monitor-procfs.$(OBJEXT) \
-+ cpufreq-monitor-sysctl.$(OBJEXT) \
- cpufreq-monitor-sysfs.$(OBJEXT) \
- cpufreq-monitor-cpuinfo.$(OBJEXT)
- cpufreq_applet_OBJECTS = $(am_cpufreq_applet_OBJECTS)
-@@ -71,6 +72,7 @@
- @AMDEP_TRUE@ ./$(DEPDIR)/cpufreq-monitor-factory.Po \
- @AMDEP_TRUE@ ./$(DEPDIR)/cpufreq-monitor-procfs.Po \
- @AMDEP_TRUE@ ./$(DEPDIR)/cpufreq-monitor-sysfs.Po \
-+@AMDEP_TRUE@ ./$(DEPDIR)/cpufreq-monitor-sysctl.Po \
- @AMDEP_TRUE@ ./$(DEPDIR)/cpufreq-monitor.Po \
- @AMDEP_TRUE@ ./$(DEPDIR)/cpufreq-popup.Po \
- @AMDEP_TRUE@ ./$(DEPDIR)/cpufreq-prefs.Po
-@@ -358,6 +360,7 @@
- cpufreq-monitor-protected.h \
- cpufreq-monitor-factory.c cpufreq-monitor-factory.h \
- cpufreq-monitor-procfs.c cpufreq-monitor-procfs.h \
-+ cpufreq-monitor-sysctl.c cpufreq-monitor-sysctl.h \
- cpufreq-monitor-sysfs.c cpufreq-monitor-sysfs.h \
- cpufreq-monitor-cpuinfo.c cpufreq-monitor-cpuinfo.h
-
-@@ -441,6 +444,7 @@
- @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cpufreq-monitor-cpuinfo.Po@am__quote@
- @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cpufreq-monitor-factory.Po@am__quote@
- @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cpufreq-monitor-procfs.Po@am__quote@
-+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cpufreq-monitor-sysctl.Po@am__quote@
- @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cpufreq-monitor-sysfs.Po@am__quote@
- @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cpufreq-monitor.Po@am__quote@
- @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cpufreq-popup.Po@am__quote@
+ void
+ cpufreq_utils_display_error (const gchar *message,