e18151212d
and new features. Don't believe me? Then see for yourself at http://www.gnome.org/start/2.12/notes/en/. DO NOT USE portupgrade by itself to upgrade to GNOME 2.12. Instead, use the gnome_upgrade.sh script from http://www.marcuscom.com/downloads/gnome_upgrade212.sh. This script will circumvent some potential pitfalls users can see if they use portupgrade by itself. In keeping with tradition, GNOME 2.12 for FreeBSD comes with a special splash screen. The winner of this release's contest is Dominique Goncalves <dominique.goncalves@gmail.com>. His splash screen was inspired by http://art.gnome.org/contests/2.12-splash/83. The FreeBSD GNOME Team would lank to thank the following users for their contributions to this release: Matthew Luckie <mjl@luckie.org.nz> ade sajd on #freebsd-gnome Caelian on #freebsd-gnome mnag Yasuda Keisuke <kysd@po.harenet.ne.jp> Mark Hobden <markhobden@gmail.com> Sergey Akifyev <asa@agava.com> Andreas Kohn For more information on GNOME on FreeBSD, checkout http://www.FreeBSD.org/gnome/. The 2.12 documentation will be posted shortly.
373 lines
11 KiB
Text
373 lines
11 KiB
Text
--- cpufreq/src/cpufreq-selector/cpufreq-sysctl.h.orig Mon Feb 14 00:38:57 2005
|
||
+++ cpufreq/src/cpufreq-selector/cpufreq-sysctl.h Mon Feb 14 00:21:39 2005
|
||
@@ -0,0 +1,51 @@
|
||
+/*
|
||
+ * Copyright (C) 2001, 2002 Free Software Foundation
|
||
+ *
|
||
+ * This library 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; either
|
||
+ * version 2 of the License, or (at your option) any later version.
|
||
+ *
|
||
+ * This library 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 library; if not, write to the Free
|
||
+ * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||
+ *
|
||
+ * Authors : Joe Marcus Clarke <marcus@FreeBSD.org>
|
||
+ */
|
||
+
|
||
+#ifndef __CPUFREQ_SYSCTL_H__
|
||
+#define __CPUFREQ_SYSCTL_H__
|
||
+
|
||
+#include <glib-object.h>
|
||
+
|
||
+#include "cpufreq.h"
|
||
+
|
||
+#define TYPE_CPUFREQ_SYSCTL (cpufreq_sysctl_get_type ())
|
||
+#define CPUFREQ_SYSCTL(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_CPUFREQ_SYSCTL, CPUFreqSysctl))
|
||
+#define CPUFREQ_SYSCTL_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass), TYPE_CPUFREQ_SYSCTL, CPUFreqSysctlClass))
|
||
+#define IS_CPUFREQ_SYSCTL(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_CPUFREQ_SYSCTL))
|
||
+#define IS_CPUFREQ_SYSCTL_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_CPUFREQ_SYSCTL))
|
||
+#define CPUFREQ_SYSCTL_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_CPUFREQ_SYSCTL, CPUFreqSysctlClass))
|
||
+
|
||
+typedef struct _CPUFreqSysctl CPUFreqSysctl;
|
||
+typedef struct _CPUFreqSysctlClass CPUFreqSysctlClass;
|
||
+typedef struct _CPUFreqSysctlPriv CPUFreqSysctlPriv;
|
||
+
|
||
+struct _CPUFreqSysctl {
|
||
+ CPUFreq parent;
|
||
+};
|
||
+
|
||
+struct _CPUFreqSysctlClass {
|
||
+ CPUFreqClass parent_class;
|
||
+};
|
||
+
|
||
+
|
||
+GType cpufreq_sysctl_get_type ();
|
||
+CPUFreqSysctl *cpufreq_sysctl_new ();
|
||
+
|
||
+#endif /* __CPUFREQ_SYSCTL_H__ */
|
||
--- cpufreq/src/cpufreq-selector/cpufreq-sysctl.c.orig Mon Feb 14 00:38:52 2005
|
||
+++ cpufreq/src/cpufreq-selector/cpufreq-sysctl.c Mon Feb 14 00:44:43 2005
|
||
@@ -0,0 +1,235 @@
|
||
+/*
|
||
+ * Copyright (C) 2001, 2002 Free Software Foundation
|
||
+ *
|
||
+ * This library 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; either
|
||
+ * version 2 of the License, or (at your option) any later version.
|
||
+ *
|
||
+ * This library 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 library; if not, write to the Free
|
||
+ * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||
+ *
|
||
+ * Authors : Joe Marcus Clarke <marcus@FreeBSD.org>
|
||
+ */
|
||
+
|
||
+#include <glib.h>
|
||
+#include <stdio.h>
|
||
+#include <stdlib.h>
|
||
+
|
||
+#ifdef __FreeBSD__
|
||
+#include <sys/types.h>
|
||
+#include <sys/sysctl.h>
|
||
+#endif /* __FreeBSD__ */
|
||
+
|
||
+#include "cpufreq-sysctl.h"
|
||
+
|
||
+#define PARENT_TYPE TYPE_CPUFREQ
|
||
+
|
||
+#define CPUFREQ_SYSCTL_GET_PRIVATE(obj) (G_TYPE_INSTANCE_GET_PRIVATE((obj), TYPE_CPUFREQ_SYSCTL, CPUFreqSysctlPrivate))
|
||
+
|
||
+static void cpufreq_sysctl_init (CPUFreqSysctl *cfq);
|
||
+static void cpufreq_sysctl_class_init (CPUFreqSysctlClass *klass);
|
||
+static void cpufreq_sysctl_finalize (GObject *object);
|
||
+
|
||
+static void cpufreq_sysctl_set_governor (CPUFreq *cfq, const gchar *governor);
|
||
+static void cpufreq_sysctl_set_frequency (CPUFreq *cfq, gint frequency);
|
||
+
|
||
+static void cpufreq_sysctl_setup (CPUFreqSysctl *cfq);
|
||
+
|
||
+static GObjectClass *parent_class = NULL;
|
||
+
|
||
+typedef struct _CPUFreqSysctlPrivate CPUFreqSysctlPrivate;
|
||
+
|
||
+struct _CPUFreqSysctlPrivate
|
||
+{
|
||
+ gint pmax;
|
||
+};
|
||
+
|
||
+GType cpufreq_sysctl_get_type ()
|
||
+{
|
||
+ static GType type = 0;
|
||
+
|
||
+ if (!type) {
|
||
+ static const GTypeInfo info = {
|
||
+ sizeof (CPUFreqSysctlClass),
|
||
+ (GBaseInitFunc) NULL,
|
||
+ (GBaseFinalizeFunc) NULL,
|
||
+ (GClassInitFunc) cpufreq_sysctl_class_init,
|
||
+ NULL,
|
||
+ NULL,
|
||
+ sizeof (CPUFreqSysctl),
|
||
+ 0,
|
||
+ (GInstanceInitFunc) cpufreq_sysctl_init
|
||
+ };
|
||
+
|
||
+ type = g_type_register_static (PARENT_TYPE, "CPUFreqSysctl",
|
||
+ &info, 0);
|
||
+ }
|
||
+
|
||
+ return type;
|
||
+}
|
||
+
|
||
+static void
|
||
+cpufreq_sysctl_init (CPUFreqSysctl *cfq)
|
||
+{
|
||
+ CPUFreqSysctlPrivate *private;
|
||
+
|
||
+ g_return_if_fail (IS_CPUFREQ_SYSCTL (cfq));
|
||
+
|
||
+ private = CPUFREQ_SYSCTL_GET_PRIVATE (cfq);
|
||
+}
|
||
+
|
||
+static void
|
||
+cpufreq_sysctl_class_init (CPUFreqSysctlClass *klass)
|
||
+{
|
||
+ GObjectClass *object_class = G_OBJECT_CLASS (klass);
|
||
+ CPUFreqClass *cfq_class = CPUFREQ_CLASS (klass);
|
||
+
|
||
+ parent_class = g_type_class_peek_parent (klass);
|
||
+
|
||
+ g_type_class_add_private (klass, sizeof (CPUFreqSysctlPrivate));
|
||
+
|
||
+ cfq_class->set_governor = cpufreq_sysctl_set_governor;
|
||
+ cfq_class->set_frequency = cpufreq_sysctl_set_frequency;
|
||
+
|
||
+ object_class->finalize = cpufreq_sysctl_finalize;
|
||
+}
|
||
+
|
||
+static void
|
||
+cpufreq_sysctl_finalize (GObject *object)
|
||
+{
|
||
+ if (G_OBJECT_CLASS (parent_class)->finalize)
|
||
+ (* G_OBJECT_CLASS (parent_class)->finalize) (object);
|
||
+}
|
||
+
|
||
+CPUFreqSysctl *
|
||
+cpufreq_sysctl_new ()
|
||
+{
|
||
+ CPUFreqSysctl *cfq;
|
||
+
|
||
+ cfq = g_object_new (TYPE_CPUFREQ_SYSCTL, NULL);
|
||
+
|
||
+ cpufreq_sysctl_setup (cfq);
|
||
+
|
||
+ return cfq;
|
||
+}
|
||
+
|
||
+static void
|
||
+cpufreq_sysctl_set_governor (CPUFreq *cfq, const gchar *governor)
|
||
+{
|
||
+ /* Not implemented. */
|
||
+}
|
||
+
|
||
+static void
|
||
+cpufreq_sysctl_set_frequency (CPUFreq *cfq, gint frequency)
|
||
+{
|
||
+ gint cpu, i;
|
||
+ size_t len;
|
||
+ gchar *freq_oid;
|
||
+
|
||
+ g_return_if_fail (IS_CPUFREQ_SYSCTL (cfq));
|
||
+
|
||
+ g_object_get (G_OBJECT (cfq), "n_cpu", &cpu, NULL);
|
||
+
|
||
+ frequency = (gint) ((gdouble) frequency / 1000); /* Convert back to MHz*/
|
||
+
|
||
+ for (i = 0; i < cpu; i++) {
|
||
+ freq_oid = g_strdup_printf ("dev.cpu.%d.freq", i);
|
||
+
|
||
+ sysctlbyname (freq_oid, NULL, &len, &frequency, sizeof (frequency));
|
||
+ g_free (freq_oid);
|
||
+ }
|
||
+}
|
||
+
|
||
+
|
||
+static void
|
||
+cpufreq_sysctl_setup (CPUFreqSysctl *cfq)
|
||
+{
|
||
+ guint cpu;
|
||
+ gint fmax, fmin;
|
||
+ gint pmax;
|
||
+ gint ifreq;
|
||
+ gint mib[4];
|
||
+ gchar *governor, *levels;
|
||
+ gchar **levelsp, **frpr, **l;
|
||
+ size_t len;
|
||
+ CPUFreqSysctlPrivate *private;
|
||
+
|
||
+ g_return_if_fail (IS_CPUFREQ_SYSCTL (cfq));
|
||
+
|
||
+ private = CPUFREQ_SYSCTL_GET_PRIVATE (cfq);
|
||
+
|
||
+ pmax = 100;
|
||
+ fmax = 0;
|
||
+ fmin = 0;
|
||
+ ifreq = 0;
|
||
+
|
||
+ private->pmax = pmax;
|
||
+
|
||
+ len = sizeof (cpu);
|
||
+
|
||
+ if (sysctlbyname ("hw.ncpu", &cpu, &len, NULL, 0) == -1)
|
||
+ cpu = 1;
|
||
+
|
||
+ len = 4;
|
||
+ sysctlnametomib ("dev.cpu.0.freq_levels", mib, &len);
|
||
+ len = sizeof (levels);
|
||
+
|
||
+ if (sysctl (mib, 4, NULL, &len, NULL, 0) == -1) {
|
||
+ g_warning ("Failed to fetch dev.cpu.0.freq_levels");
|
||
+ return;
|
||
+ }
|
||
+
|
||
+ levels = g_malloc (len);
|
||
+ if (sysctl (mib, 4, levels, &len, NULL, 0) == -1) {
|
||
+ g_warning ("Failed to fetch data for dev.cpu.0.freq_levels");
|
||
+ return;
|
||
+ }
|
||
+
|
||
+ levelsp = g_strsplit (levels, " ", 0);
|
||
+ g_free (levels);
|
||
+
|
||
+ frpr = g_strsplit (levelsp[0], "/", 0); /* MAX */
|
||
+ if (frpr && frpr[0] != NULL)
|
||
+ fmax = atoi (frpr[0]);
|
||
+ g_strfreev (frpr);
|
||
+
|
||
+ for (l = levelsp; l && *l; l++) /* Walk to the last frequency */
|
||
+ ;
|
||
+
|
||
+ l --;
|
||
+ frpr = g_strsplit (*l, "/", 0);
|
||
+ if (frpr && frpr[0] != NULL)
|
||
+ fmin = atoi (frpr[0]);
|
||
+
|
||
+ g_strfreev (frpr);
|
||
+ g_strfreev (levelsp);
|
||
+
|
||
+ len = sizeof (ifreq);
|
||
+ if (sysctlbyname ("dev.cpu.0.freq", &ifreq, &len, NULL, 0) == -1) {
|
||
+ g_warning ("Failed to fetch data for dev.cpu.0.freq");
|
||
+ return;
|
||
+ }
|
||
+
|
||
+ if (ifreq == fmax)
|
||
+ governor = g_strdup ("performance");
|
||
+ else if (ifreq == fmin)
|
||
+ governor = g_strdup ("economy");
|
||
+ else
|
||
+ governor = g_strdup ("other");
|
||
+
|
||
+ fmax *= 1000;
|
||
+ fmin *= 1000;
|
||
+
|
||
+ g_object_set (G_OBJECT (cfq), "n_cpu", cpu,
|
||
+ "sc_max", fmax, "sc_min", fmin,
|
||
+ "governor", governor, NULL);
|
||
+
|
||
+ g_free (governor);
|
||
+}
|
||
--- cpufreq/src/cpufreq-selector/main.c.orig Sun Apr 3 12:03:13 2005
|
||
+++ cpufreq/src/cpufreq-selector/main.c Sun Jul 3 17:16:19 2005
|
||
@@ -17,6 +17,7 @@
|
||
* Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||
*
|
||
* Authors : Carlos Garc<72>a Campos <carlosgc@gnome.org>
|
||
+ * Joe Marcus Clarke <marcus@FreeBSD.org>
|
||
*/
|
||
|
||
#include <glib-object.h>
|
||
@@ -26,6 +27,9 @@
|
||
#include "cpufreq.h"
|
||
#include "cpufreq-sysfs.h"
|
||
#include "cpufreq-procfs.h"
|
||
+#ifdef __FreeBSD__
|
||
+#include "cpufreq-sysctl.h"
|
||
+#endif /* __FreeBSD__ */
|
||
|
||
gint
|
||
main (gint argc, gchar **argv)
|
||
@@ -34,6 +38,9 @@ main (gint argc, gchar **argv)
|
||
static gint cpu = 0;
|
||
static gchar *governor = NULL;
|
||
static gulong frequency = 0;
|
||
+#ifdef __FreeBSD__
|
||
+ size_t len;
|
||
+#endif /* __FreeBSD__ */
|
||
GError *error = NULL;
|
||
CPUFreq *cfq;
|
||
|
||
@@ -71,10 +78,15 @@ main (gint argc, gchar **argv)
|
||
|
||
g_option_context_free (context);
|
||
|
||
+#ifndef __FreeBSD__
|
||
if (g_file_test ("/sys/devices/system/cpu/cpu0/cpufreq", G_FILE_TEST_EXISTS)) { /* 2.6 kernel */
|
||
cfq = CPUFREQ (cpufreq_sysfs_new ());
|
||
} else if (g_file_test ("/proc/cpufreq", G_FILE_TEST_EXISTS)) { /* 2.4 kernel */
|
||
cfq = CPUFREQ (cpufreq_procfs_new ());
|
||
+#else
|
||
+ if (sysctlbyname ("dev.cpu.0.freq", NULL, &len, NULL, 0) == 0) {
|
||
+ cfq = CPUFREQ (cpufreq_sysctl_new ());
|
||
+#endif /* __FreeBSD__ */
|
||
} else {
|
||
g_print ("No cpufreq support\n");
|
||
return 1;
|
||
--- cpufreq/src/cpufreq-selector/Makefile.in.orig Tue Oct 4 00:21:25 2005
|
||
+++ cpufreq/src/cpufreq-selector/Makefile.in Tue Oct 4 00:27:54 2005
|
||
@@ -55,7 +55,7 @@
|
||
PROGRAMS = $(bin_PROGRAMS)
|
||
am_cpufreq_selector_OBJECTS = cpufreq.$(OBJEXT) \
|
||
cpufreq-sysfs.$(OBJEXT) cpufreq-procfs.$(OBJEXT) \
|
||
- main.$(OBJEXT)
|
||
+ cpufreq-sysctl.$(OBJEXT) main.$(OBJEXT)
|
||
cpufreq_selector_OBJECTS = $(am_cpufreq_selector_OBJECTS)
|
||
am__DEPENDENCIES_1 =
|
||
cpufreq_selector_DEPENDENCIES = $(am__DEPENDENCIES_1)
|
||
@@ -64,6 +64,7 @@
|
||
am__depfiles_maybe = depfiles
|
||
@AMDEP_TRUE@DEP_FILES = ./$(DEPDIR)/cpufreq-procfs.Po \
|
||
@AMDEP_TRUE@ ./$(DEPDIR)/cpufreq-sysfs.Po \
|
||
+@AMDEP_TRUE@ ./$(DEPDIR)/cpufreq-sysctl.Po \
|
||
@AMDEP_TRUE@ ./$(DEPDIR)/cpufreq.Po ./$(DEPDIR)/main.Po
|
||
COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
|
||
$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
|
||
@@ -332,6 +333,7 @@
|
||
cpufreq.c cpufreq.h \
|
||
cpufreq-sysfs.c cpufreq-sysfs.h \
|
||
cpufreq-procfs.c cpufreq-procfs.h \
|
||
+ cpufreq-sysctl.c cpufreq-sysctl.h \
|
||
main.c
|
||
|
||
cpufreq_selector_LDADD = $(CPUFREQ_SELECTOR_LIBS) -lpopt
|
||
@@ -407,6 +409,7 @@
|
||
-rm -f *.tab.c
|
||
|
||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cpufreq-procfs.Po@am__quote@
|
||
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cpufreq-sysctl.Po@am__quote@
|
||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cpufreq-sysfs.Po@am__quote@
|
||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cpufreq.Po@am__quote@
|
||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/main.Po@am__quote@
|