summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--system/powernowd/README12
-rw-r--r--system/powernowd/doinst.sh22
-rw-r--r--system/powernowd/powernowd.1108
-rw-r--r--system/powernowd/powernowd.SlackBuild65
-rw-r--r--system/powernowd/powernowd.info8
-rw-r--r--system/powernowd/rc.powernowd.new54
-rw-r--r--system/powernowd/slack-desc19
7 files changed, 288 insertions, 0 deletions
diff --git a/system/powernowd/README b/system/powernowd/README
new file mode 100644
index 0000000000..3014a4bcc5
--- /dev/null
+++ b/system/powernowd/README
@@ -0,0 +1,12 @@
+This is a very simple program that will adjust the speed of your CPU
+depending on system load. It works as a client of the CPUFreq driver.
+It is designed for use with CPU's supporting AMD's PowerNow power
+management scheme, as it's algorithm works better if there are more
+than two CPU speeds available. (aka, ARM, AMD K6/K7, Via C3, and
+Crusoe as opposed to traditional Intel and Ultrasparc).
+
+Powernowd uses the userspace governor, which is included in the Slackware
+kernel images.
+
+It is not wise to run two concurrent cpu frequency adjusting programs,
+for example, cpufreqd and powernowd simultaneously.
diff --git a/system/powernowd/doinst.sh b/system/powernowd/doinst.sh
new file mode 100644
index 0000000000..4fdea56905
--- /dev/null
+++ b/system/powernowd/doinst.sh
@@ -0,0 +1,22 @@
+config() {
+ NEW="$1"
+ OLD="$(dirname $NEW)/$(basename $NEW .new)"
+ # If there's no config file by that name, mv it over:
+ if [ ! -r $OLD ]; then
+ mv $NEW $OLD
+ elif [ "$(cat $OLD | md5sum)" = "$(cat $NEW | md5sum)" ]; then
+ # toss the redundant copy
+ rm $NEW
+ fi
+ # Otherwise, we leave the .new copy for the admin to consider...
+}
+
+# Keep same perms on rc.powernowd.new:
+if [ -e etc/rc.d/rc.powernowd ]; then
+ cp -a etc/rc.d/rc.powernowd etc/rc.d/rc.powernowd.new.incoming
+ cat etc/rc.d/rc.powernowd.new > etc/rc.d/rc.powernowd.new.incoming
+ mv etc/rc.d/rc.powernowd.new.incoming etc/rc.d/rc.powernowd.new
+fi
+
+config etc/rc.d/rc.powernowd.new
+
diff --git a/system/powernowd/powernowd.1 b/system/powernowd/powernowd.1
new file mode 100644
index 0000000000..232c990f8d
--- /dev/null
+++ b/system/powernowd/powernowd.1
@@ -0,0 +1,108 @@
+.\" Hey, EMACS: -*- nroff -*-
+.\" First parameter, NAME, should be all caps
+.\" Second parameter, SECTION, should be 1-8, maybe w/ subsection
+.\" other parameters are allowed: see man(7), man(1)
+.TH POWERNOWD 1 "November 3, 2003"
+.\" Please adjust this date whenever revising the manpage.
+.\"
+.\" Some roff macros, for reference:
+.\" .nh disable hyphenation
+.\" .hy enable hyphenation
+.\" .ad l left justify
+.\" .ad b justify to both left and right margins
+.\" .nf disable filling
+.\" .fi enable filling
+.\" .br insert line break
+.\" .sp <n> insert n+1 empty lines
+.\" for manpage-specific macros, see man(7)
+.SH NAME
+powernowd \- control the speed and voltage of cpus
+.SH SYNOPSIS
+.B powernowd
+.RI [ options ]
+.SH DESCRIPTION
+This is a simple client to the cpufreq driver, and uses the sysfs interface
+in Linux kernel version 2.6. You need a supported cpu, and a
+kernel that supports sysfs to run this daemon.
+
+The name is somewhat misleading, as any processor supported by the kernel
+cpufreq driver will work, not just processors supporting AMD's
+PowerNow! technology. This daemon works best with processors that support
+more then 2 frequency steps, like those with AMD's PowerNow!, and Intel's
+Pentium M family.
+.SH OPTIONS
+.TP
+.B \-h
+Prints a help message.
+.TP
+.B \-d
+Don't detach from terminal (default is to detach and run in the background)
+.TP
+.B \-v
+Increase output verbosity, can be used more than once.
+.TP
+.B \-q
+Quiet mode, only emergency output.
+.TP
+.B \-n
+Include nice'd processes in calculations.
+.TP
+.B \-m
+Modes of operation, 0 = SINE, 1 = AGGRESSIVE (default), 2 = PASSIVE, 3 = LEAPS
+.TP
+.B \-s
+Frequency step in kHz (default = 100000)
+.TP
+.B \-p
+Polling frequency in msecs (default = 1000)
+.TP
+.B \-u
+CPU usage upper limit percentage [0 .. 100, default 80]
+.TP
+.B \-l
+CPU usage lower limit percentage [0 .. 100, default 20]
+.SH MODES
+There are 4 modes supported by this client:
+
+Mode 0, SINE, changes the frequency as a sine wave function, raising the
+frequency by "step" Hz every time the CPU usage goes over 80%,
+and decreases it by "step" Hz when the CPU usage falls under 20%.
+
+Mode 1, AGGRESSIVE, changes frequency by a sawtooth function.
+Immediately jumps to the highest frequency whenever CPU usage goes
+over 80%, and decreases by "step" Hz as usage drops below
+20%. This is the default behavior.
+
+Mode 2, PASSIVE, is the inverse of AGGRESSIVE.
+Immediately jump to lowest frequency when usage drops below 20%.
+Raise by "step" Hz if it goes above 80%.
+
+Mode 3, LEAPS, immediately jumps to the highest frequency if usage is above
+80%, and immediately jumps to the lowest frequency if usage is below 20%.
+.SH PHILOSOPHY
+Why another CPUFreq client daemon?
+
+Some other daemons are better suited for two speed states, and
+toggle between two states based upon load. This daemon does a better job
+handling intermediate steps.
+
+Other daemons are written in Perl, Python, or C++. This is a simple C
+program.
+
+Some other daemons rely on APM or ACPI.
+The sysfs interface to the 2.6
+kernel is simple, completely sufficient, and completely portable to all
+architectures that support the CPUfreq support in the kernel.
+
+Some other daemons change thier behavior based upon battery status, AC
+status, temperature, etc. What good is having a nice powerful laptop if
+you can't use it at full speed, even for a few seconds, while on battery
+power? This daemon just measures CPU load, and bases decisions solely
+upon that.
+
+SMP systems are supported, making this daemon useful for servers, too!
+.SH AUTHOR
+The powernowd program was written by John Clemens <clemej@alum.rpi.edu>
+
+This manual page was written by Bdale Garbee <bdale@gag.com>,
+for the Debian project (but may be used by others).
diff --git a/system/powernowd/powernowd.SlackBuild b/system/powernowd/powernowd.SlackBuild
new file mode 100644
index 0000000000..8671a5a2ad
--- /dev/null
+++ b/system/powernowd/powernowd.SlackBuild
@@ -0,0 +1,65 @@
+#!/bin/sh
+
+# Slackware build script for powernowd
+
+# Written by Daniel LEVAI leva@ecentrum.hu
+
+PRGNAM=powernowd
+VERSION=${VERSION:-1.00}
+ARCH=${ARCH:-i486}
+BUILD=${BUILD:-1}
+TAG=${TAG:-_SBo}
+
+CWD=$(pwd)
+TMP=${TMP:-/tmp/SBo}
+PKG=$TMP/package-$PRGNAM
+OUTPUT=${OUTPUT:-/tmp}
+
+if [ "$ARCH" = "i486" ]; then
+ SLKCFLAGS="-O2 -march=i486 -mtune=i686"
+elif [ "$ARCH" = "i686" ]; then
+ SLKCFLAGS="-O2 -march=i686 -mtune=i686"
+elif [ "$ARCH" = "x86_64" ]; then
+ SLKCFLAGS="-O2 -fPIC"
+fi
+
+set -e # Exit on most errors
+
+rm -rf $PKG
+mkdir -p $TMP $PKG $OUTPUT
+cd $TMP
+rm -rf $PRGNAM-$VERSION
+tar xvf $CWD/$PRGNAM-$VERSION.tar.gz
+cd $PRGNAM-$VERSION
+chown -R root:root .
+find . \
+ \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \
+ -exec chmod 755 {} \; -o \
+ \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
+ -exec chmod 644 {} \;
+
+# We'll do all of this manually
+gcc $SLKCFLAGS -Wall -o powernowd powernowd.c
+
+mkdir -p $PKG/usr/sbin
+strip --strip-unneeded powernowd
+install -m 755 powernowd $PKG/usr/sbin/
+
+mkdir -p $PKG/etc/rc.d/
+cat $CWD/rc.powernowd.new > $PKG/etc/rc.d/rc.powernowd.new
+
+mkdir -p $PKG/usr/man/man1
+gzip -9c $CWD/powernowd.1 > $PKG/usr/man/man1/powernowd.1.gz
+
+mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
+cp -a \
+ README \
+ $PKG/usr/doc/$PRGNAM-$VERSION
+cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
+
+mkdir -p $PKG/install
+cat $CWD/slack-desc > $PKG/install/slack-desc
+cat $CWD/doinst.sh > $PKG/install/doinst.sh
+
+cd $PKG
+/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.tgz
diff --git a/system/powernowd/powernowd.info b/system/powernowd/powernowd.info
new file mode 100644
index 0000000000..8e21b7779c
--- /dev/null
+++ b/system/powernowd/powernowd.info
@@ -0,0 +1,8 @@
+PRGNAM="powernowd"
+VERSION="1.00"
+HOMEPAGE="http://deater.net/john/powernowd.html"
+DOWNLOAD="http://deater.net/john/powernowd-1.00.tar.gz"
+MD5SUM="abc48b690d104e9e71a85400ba19d799"
+MAINTAINER="Daniel LEVAI"
+EMAIL="leva@ecentrum.hu"
+APPROVED="rworkman"
diff --git a/system/powernowd/rc.powernowd.new b/system/powernowd/rc.powernowd.new
new file mode 100644
index 0000000000..fe6f50f15e
--- /dev/null
+++ b/system/powernowd/rc.powernowd.new
@@ -0,0 +1,54 @@
+#!/bin/sh
+
+# Written by Daniel LEVAI for the Slackware package
+# Modified by Robby Workman <rworkman@slackbuilds.org>
+
+# For the options, see the README of the man page
+#OPTS='-q'
+
+powernowd_start() {
+ local PID=$(pgrep -x powernowd);
+ if [ $PID ];then
+ echo "powernowd is already running ($PID)"
+ exit 1
+ else
+ /usr/sbin/powernowd $OPTS
+ fi
+}
+
+powernowd_stop() {
+ local PID=$(pgrep -x powernowd);
+ if [ -z $PID ];then
+ echo "powernowd is not running"
+ exit 1
+ else
+ local i=1
+ while pgrep -x powernowd > /dev/null;do
+ if [ $i -gt 3 ];then
+ echo "Couldn't stop powernowd..."
+ exit 1
+ fi
+ pkill -x powernowd
+ i=$(( $i + 1 ));
+ sleep 1;
+ done
+ fi
+}
+
+case "$1" in
+start)
+ powernowd_start
+;;
+stop)
+ powernowd_stop
+;;
+restart)
+ powernowd_stop
+ sleep 1
+ powernowd_start
+;;
+*)
+ echo "$0 <start|stop|restart>"
+;;
+esac
+
diff --git a/system/powernowd/slack-desc b/system/powernowd/slack-desc
new file mode 100644
index 0000000000..0ee78d0492
--- /dev/null
+++ b/system/powernowd/slack-desc
@@ -0,0 +1,19 @@
+# HOW TO EDIT THIS FILE:
+# The "handy ruler" below makes it easier to edit a package description. Line
+# up the first '|' above the ':' following the base package name, and the '|'
+# on the right side marks the last column you can put a character in. You must
+# make exactly 11 lines for the formatting to be correct. It's also
+# customary to leave one space after the ':'.
+
+ |-----handy-ruler-------------------------------------------------------|
+powernowd: This is a very simple program that will adjust the speed of your CPU
+powernowd: depending on system load. It works as a client of the CPUFreq driver.
+powernowd: It is designed for use with CPU's supporting AMD's PowerNow power
+powernowd: management scheme, as it's algorithm works better if there are more
+powernowd: then two CPU speeds available. (aka, ARM, AMD K6/K7, Via C3, and
+powernowd: Crusoe as opposed to traditional Intel and Ultrasparc).
+powernowd:
+powernowd: http://deater.net/john/powernowd.html
+powernowd:
+powernowd:
+powernowd: