cvs commit: src/usr.sbin/powerd powerd.c
Hajimu UMEMOTO
ume at FreeBSD.org
Wed Aug 24 11:15:02 GMT 2005
Hi,
>>>>> On Wed, 24 Aug 2005 07:52:59 +0000 (UTC)
>>>>> Bruno Ducrot <bruno at FreeBSD.org> said:
bruno> Modified files:
bruno> usr.sbin/powerd powerd.c
bruno> Log:
bruno> Change the default adaptive algorithm for phk's one. Thanks to phk
bruno> and Kevin Oberman for this work.
It feels too lazy for my laptop. One freq level for decreasing and
two freq level for incresing is comfortable to me. Is there any
chance to add an option for changing step for increasing or decreasing
CPU freq level?
Index: usr.sbin/powerd/powerd.8
diff -u usr.sbin/powerd/powerd.8.orig usr.sbin/powerd/powerd.8
--- usr.sbin/powerd/powerd.8.orig Thu Jul 21 18:35:33 2005
+++ usr.sbin/powerd/powerd.8 Wed Aug 24 20:02:59 2005
@@ -37,6 +37,7 @@
.Op Fl i percent
.Op Fl n mode
.Op Fl p ival
+.Op Fl s step
.Op Fl r percent
.Op Fl v
.Sh DESCRIPTION
@@ -82,6 +83,10 @@
Specifies a different polling interval (in milliseconds) for AC line state
and system idle levels.
The default is 500 ms.
+.It Fl s Ar step
+Specifies the step for increasing or decreasing the CPU frequency
+level.
+The default is 1.
.It Fl r Ar percent
Specifies the CPU idle percent level where
adaptive
Index: usr.sbin/powerd/powerd.c
diff -u -p usr.sbin/powerd/powerd.c.orig usr.sbin/powerd/powerd.c
--- usr.sbin/powerd/powerd.c.orig Wed Aug 24 19:38:34 2005
+++ usr.sbin/powerd/powerd.c Wed Aug 24 20:04:48 2005
@@ -244,7 +244,7 @@ usage(void)
{
fprintf(stderr,
-"usage: powerd [-v] [-a mode] [-b mode] [-i %%] [-n mode] [-p ival] [-r %%]\n");
+"usage: powerd [-v] [-a mode] [-b mode] [-i %%] [-n mode] [-p ival] [-r %%] [-s step]\n");
exit(1);
}
@@ -253,7 +253,7 @@ main(int argc, char * argv[])
{
long idle, total;
int curfreq, *freqs, i, *mwatts, numfreqs;
- int ch, mode_ac, mode_battery, mode_none, acline, mode, vflag;
+ int ch, mode_ac, mode_battery, mode_none, acline, mode, vflag, step;
uint64_t mjoules_used;
size_t len;
@@ -264,9 +264,10 @@ main(int argc, char * argv[])
poll_ival = DEFAULT_POLL_INTERVAL;
mjoules_used = 0;
vflag = 0;
+ step = 1;
apm_fd = -1;
- while ((ch = getopt(argc, argv, "a:b:i:n:p:r:v")) != EOF)
+ while ((ch = getopt(argc, argv, "a:b:i:n:p:r:s:v")) != EOF)
switch (ch) {
case 'a':
parse_mode(optarg, &mode_ac, ch);
@@ -300,6 +301,13 @@ main(int argc, char * argv[])
usage();
}
break;
+ case 's':
+ step = atoi(optarg);
+ if (step < 1) {
+ warnx("%d is not a valid step", step);
+ usage();
+ }
+ break;
case 'v':
vflag = 1;
break;
@@ -427,7 +435,7 @@ main(int argc, char * argv[])
}
if (idle < (total * cpu_running_mark) / 100 &&
curfreq < freqs[0]) {
- i -= 2;
+ i -= step * 2;
if (i < 0)
i = 0;
if (vflag) {
@@ -440,7 +448,9 @@ main(int argc, char * argv[])
freqs[i]);
} else if (idle > (total * cpu_idle_mark) / 100 &&
curfreq > freqs[numfreqs - 1]) {
- i++;
+ i += step;
+ if (i >= numfreqs)
+ i = numfreqs - 1;
if (vflag) {
printf("idle time > %d%%, decreasing clock"
" speed from %d MHz to %d MHz\n",
Sincerely,
--
Hajimu UMEMOTO @ Internet Mutual Aid Society Yokohama, Japan
ume at mahoroba.org ume@{,jp.}FreeBSD.org
http://www.imasy.org/~ume/
More information about the cvs-src
mailing list