diff options
author | Joe Marcus Clarke <marcus@FreeBSD.org> | 2006-10-14 08:35:50 +0000 |
---|---|---|
committer | Joe Marcus Clarke <marcus@FreeBSD.org> | 2006-10-14 08:35:50 +0000 |
commit | f1bb12de8e50bf76ae21f37debda60994ec7fd99 (patch) | |
tree | 1671d4beef381f12d939e34b344eb385a3af4f19 /x11/gnome-applets/files/patch-cpufreq-freebsd | |
parent | 29adee7bb42244f34736c5c24ed18a9b269d0925 (diff) | |
download | ports-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-freebsd | 513 |
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, |