summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEugeni Dodonov <eugeni@dodonov.net>2011-08-26 12:19:14 -0300
committerEugeni Dodonov <eugeni@dodonov.net>2011-08-26 12:19:14 -0300
commit1bec2dbc30d220d07dbffde53a44539ab3289fc2 (patch)
tree331affec291b39cdeb5d90de91643240f6497f3b
imported to git for android build
-rw-r--r--.gitignore5
-rw-r--r--Android.mk42
-rw-r--r--COPYING340
-rw-r--r--Changelog128
-rw-r--r--README44
-rw-r--r--ahci-alpm.c266
-rw-r--r--alsa-power.c202
-rw-r--r--bluetooth.c157
-rw-r--r--config.c117
-rw-r--r--cpufreq.c120
-rw-r--r--cpufreqstats.c191
-rw-r--r--devicepm.c385
-rw-r--r--display.c319
-rw-r--r--dmesg.c63
-rw-r--r--ethernet.c137
-rw-r--r--intelcstates.c158
-rw-r--r--kernel-patches/linux-2.6.35-rc4-ahci-alpm-accounting.patch300
-rw-r--r--kernel-patches/linux-2.6.35-rc4-annotate-device-pm.patch223
-rw-r--r--kernel-patches/linux-2.6.35-rc4-vfs-tracepoints.patch116
-rw-r--r--kernel-patches/readme.txt8
-rw-r--r--misctips.c294
-rw-r--r--perf.c282
-rw-r--r--perf_event.h863
-rw-r--r--po/Makefile34
-rw-r--r--po/de.po615
-rw-r--r--po/es.po678
-rw-r--r--po/fi.po659
-rw-r--r--po/fr.po691
-rw-r--r--po/hu.po677
-rw-r--r--po/id.po794
-rw-r--r--po/it.po599
-rw-r--r--po/ja.po778
-rw-r--r--po/nl.po678
-rw-r--r--po/pl.po626
-rw-r--r--po/pt_BR.po623
-rw-r--r--po/ro.po621
-rw-r--r--po/ru.po660
-rw-r--r--po/zh_CN.po545
-rw-r--r--po/zh_TW.po753
-rw-r--r--powertop.838
-rw-r--r--powertop.c1300
-rw-r--r--powertop.h160
-rw-r--r--process.c94
-rw-r--r--sata.c107
-rw-r--r--suggestions.c156
-rw-r--r--urbnum.c225
-rw-r--r--usb.c121
-rw-r--r--wifi-new.c205
-rw-r--r--wireless.c320
-rw-r--r--xrandr.c82
50 files changed, 17599 insertions, 0 deletions
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..e8d406e
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,5 @@
+*.o
+*~
+po/*mo
+powertop
+powertop.8.gz
diff --git a/Android.mk b/Android.mk
new file mode 100644
index 0000000..6fc433f
--- /dev/null
+++ b/Android.mk
@@ -0,0 +1,42 @@
+LOCAL_PATH:= $(call my-dir)
+include $(CLEAR_VARS)
+
+LOCAL_SRC_FILES:=\
+ powertop.c \
+ config.c \
+ process.c \
+ misctips.c \
+ bluetooth.c \
+ display.c \
+ suggestions.c \
+ wireless.c \
+ cpufreq.c \
+ sata.c \
+ xrandr.c \
+ ethernet.c \
+ cpufreqstats.c \
+ usb.c \
+ urbnum.c \
+ intelcstates.c \
+ wifi-new.c \
+ perf.c \
+ alsa-power.c \
+ ahci-alpm.c \
+ dmesg.c \
+ devicepm.c
+
+LOCAL_CFLAGS := -O2 -g
+LOCAL_CFLAGS += -DHAVE_CONFIG_H -D_U_="__attribute__((unused))"
+
+LOCAL_C_INCLUDES += \
+ $(LOCAL_PATH)/missing\
+ external/openssl/include\
+ external/libpcap
+
+LOCAL_MODULE_PATH := $(TARGET_OUT_OPTIONAL_EXECUTABLES)
+
+LOCAL_MODULE_TAGS := eng
+
+LOCAL_MODULE := powertop
+
+include $(BUILD_EXECUTABLE)
diff --git a/COPYING b/COPYING
new file mode 100644
index 0000000..d60c31a
--- /dev/null
+++ b/COPYING
@@ -0,0 +1,340 @@
+ GNU GENERAL PUBLIC LICENSE
+ Version 2, June 1991
+
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.
+ 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+ Preamble
+
+ The licenses for most software are designed to take away your
+freedom to share and change it. By contrast, the GNU General Public
+License is intended to guarantee your freedom to share and change free
+software--to make sure the software is free for all its users. This
+General Public License applies to most of the Free Software
+Foundation's software and to any other program whose authors commit to
+using it. (Some other Free Software Foundation software is covered by
+the GNU Library General Public License instead.) You can apply it to
+your programs, too.
+
+ When we speak of free software, we are referring to freedom, not
+price. Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+this service if you wish), that you receive source code or can get it
+if you want it, that you can change the software or use pieces of it
+in new free programs; and that you know you can do these things.
+
+ To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if you
+distribute copies of the software, or if you modify it.
+
+ For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must give the recipients all the rights that
+you have. You must make sure that they, too, receive or can get the
+source code. And you must show them these terms so they know their
+rights.
+
+ We protect your rights with two steps: (1) copyright the software, and
+(2) offer you this license which gives you legal permission to copy,
+distribute and/or modify the software.
+
+ Also, for each author's protection and ours, we want to make certain
+that everyone understands that there is no warranty for this free
+software. If the software is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original, so
+that any problems introduced by others will not reflect on the original
+authors' reputations.
+
+ Finally, any free program is threatened constantly by software
+patents. We wish to avoid the danger that redistributors of a free
+program will individually obtain patent licenses, in effect making the
+program proprietary. To prevent this, we have made it clear that any
+patent must be licensed for everyone's free use or not licensed at all.
+
+ The precise terms and conditions for copying, distribution and
+modification follow.
+
+ GNU GENERAL PUBLIC LICENSE
+ TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+ 0. This License applies to any program or other work which contains
+a notice placed by the copyright holder saying it may be distributed
+under the terms of this General Public License. The "Program", below,
+refers to any such program or work, and a "work based on the Program"
+means either the Program or any derivative work under copyright law:
+that is to say, a work containing the Program or a portion of it,
+either verbatim or with modifications and/or translated into another
+language. (Hereinafter, translation is included without limitation in
+the term "modification".) Each licensee is addressed as "you".
+
+Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope. The act of
+running the Program is not restricted, and the output from the Program
+is covered only if its contents constitute a work based on the
+Program (independent of having been made by running the Program).
+Whether that is true depends on what the Program does.
+
+ 1. You may copy and distribute verbatim copies of the Program's
+source code as you receive it, in any medium, provided that you
+conspicuously and appropriately publish on each copy an appropriate
+copyright notice and disclaimer of warranty; keep intact all the
+notices that refer to this License and to the absence of any warranty;
+and give any other recipients of the Program a copy of this License
+along with the Program.
+
+You may charge a fee for the physical act of transferring a copy, and
+you may at your option offer warranty protection in exchange for a fee.
+
+ 2. You may modify your copy or copies of the Program or any portion
+of it, thus forming a work based on the Program, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+ a) You must cause the modified files to carry prominent notices
+ stating that you changed the files and the date of any change.
+
+ b) You must cause any work that you distribute or publish, that in
+ whole or in part contains or is derived from the Program or any
+ part thereof, to be licensed as a whole at no charge to all third
+ parties under the terms of this License.
+
+ c) If the modified program normally reads commands interactively
+ when run, you must cause it, when started running for such
+ interactive use in the most ordinary way, to print or display an
+ announcement including an appropriate copyright notice and a
+ notice that there is no warranty (or else, saying that you provide
+ a warranty) and that users may redistribute the program under
+ these conditions, and telling the user how to view a copy of this
+ License. (Exception: if the Program itself is interactive but
+ does not normally print such an announcement, your work based on
+ the Program is not required to print an announcement.)
+
+These requirements apply to the modified work as a whole. If
+identifiable sections of that work are not derived from the Program,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works. But when you
+distribute the same sections as part of a whole which is a work based
+on the Program, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Program.
+
+In addition, mere aggregation of another work not based on the Program
+with the Program (or with a work based on the Program) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+ 3. You may copy and distribute the Program (or a work based on it,
+under Section 2) in object code or executable form under the terms of
+Sections 1 and 2 above provided that you also do one of the following:
+
+ a) Accompany it with the complete corresponding machine-readable
+ source code, which must be distributed under the terms of Sections
+ 1 and 2 above on a medium customarily used for software interchange; or,
+
+ b) Accompany it with a written offer, valid for at least three
+ years, to give any third party, for a charge no more than your
+ cost of physically performing source distribution, a complete
+ machine-readable copy of the corresponding source code, to be
+ distributed under the terms of Sections 1 and 2 above on a medium
+ customarily used for software interchange; or,
+
+ c) Accompany it with the information you received as to the offer
+ to distribute corresponding source code. (This alternative is
+ allowed only for noncommercial distribution and only if you
+ received the program in object code or executable form with such
+ an offer, in accord with Subsection b above.)
+
+The source code for a work means the preferred form of the work for
+making modifications to it. For an executable work, complete source
+code means all the source code for all modules it contains, plus any
+associated interface definition files, plus the scripts used to
+control compilation and installation of the executable. However, as a
+special exception, the source code distributed need not include
+anything that is normally distributed (in either source or binary
+form) with the major components (compiler, kernel, and so on) of the
+operating system on which the executable runs, unless that component
+itself accompanies the executable.
+
+If distribution of executable or object code is made by offering
+access to copy from a designated place, then offering equivalent
+access to copy the source code from the same place counts as
+distribution of the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+ 4. You may not copy, modify, sublicense, or distribute the Program
+except as expressly provided under this License. Any attempt
+otherwise to copy, modify, sublicense or distribute the Program is
+void, and will automatically terminate your rights under this License.
+However, parties who have received copies, or rights, from you under
+this License will not have their licenses terminated so long as such
+parties remain in full compliance.
+
+ 5. You are not required to accept this License, since you have not
+signed it. However, nothing else grants you permission to modify or
+distribute the Program or its derivative works. These actions are
+prohibited by law if you do not accept this License. Therefore, by
+modifying or distributing the Program (or any work based on the
+Program), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Program or works based on it.
+
+ 6. Each time you redistribute the Program (or any work based on the
+Program), the recipient automatically receives a license from the
+original licensor to copy, distribute or modify the Program subject to
+these terms and conditions. You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
+this License.
+
+ 7. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License. If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Program at all. For example, if a patent
+license would not permit royalty-free redistribution of the Program by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Program.
+
+If any portion of this section is held invalid or unenforceable under
+any particular circumstance, the balance of the section is intended to
+apply and the section as a whole is intended to apply in other
+circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system, which is
+implemented by public license practices. Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+ 8. If the distribution and/or use of the Program is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Program under this License
+may add an explicit geographical distribution limitation excluding
+those countries, so that distribution is permitted only in or among
+countries not thus excluded. In such case, this License incorporates
+the limitation as if written in the body of this License.
+
+ 9. The Free Software Foundation may publish revised and/or new versions
+of the General Public License from time to time. Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+Each version is given a distinguishing version number. If the Program
+specifies a version number of this License which applies to it and "any
+later version", you have the option of following the terms and conditions
+either of that version or of any later version published by the Free
+Software Foundation. If the Program does not specify a version number of
+this License, you may choose any version ever published by the Free Software
+Foundation.
+
+ 10. If you wish to incorporate parts of the Program into other free
+programs whose distribution conditions are different, write to the author
+to ask for permission. For software which is copyrighted by the Free
+Software Foundation, write to the Free Software Foundation; we sometimes
+make exceptions for this. Our decision will be guided by the two goals
+of preserving the free status of all derivatives of our free software and
+of promoting the sharing and reuse of software generally.
+
+ NO WARRANTY
+
+ 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
+FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
+PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
+REPAIR OR CORRECTION.
+
+ 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
+OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
+TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
+YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
+PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGES.
+
+ END OF TERMS AND CONDITIONS
+
+ How to Apply These Terms to Your New Programs
+
+ If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+ To do so, attach the following notices to the program. It is safest
+to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+ <one line to give the program's name and a brief idea of what it does.>
+ Copyright (C) <year> <name of author>
+
+ This program 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 program 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 program; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+
+
+Also add information on how to contact you by electronic and paper mail.
+
+If the program is interactive, make it output a short notice like this
+when it starts in an interactive mode:
+
+ Gnomovision version 69, Copyright (C) year name of author
+ Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+ This is free software, and you are welcome to redistribute it
+ under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License. Of course, the commands you use may
+be called something other than `show w' and `show c'; they could even be
+mouse-clicks or menu items--whatever suits your program.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the program, if
+necessary. Here is a sample; alter the names:
+
+ Yoyodyne, Inc., hereby disclaims all copyright interest in the program
+ `Gnomovision' (which makes passes at compilers) written by James Hacker.
+
+ <signature of Ty Coon>, 1 April 1989
+ Ty Coon, President of Vice
+
+This General Public License does not permit incorporating your program into
+proprietary programs. If your program is a subroutine library, you may
+consider it more useful to permit linking proprietary applications with the
+library. If this is what you want to do, use the GNU Library General
+Public License instead of this License.
diff --git a/Changelog b/Changelog
new file mode 100644
index 0000000..04a659a
--- /dev/null
+++ b/Changelog
@@ -0,0 +1,128 @@
+
+1.11 --
+ * Fix compilation with PIC
+ * polling hint now refers to /dev/cdrom instead of /dev/scd0
+ * fix calculations for systems that vary in power draw proc info
+ * Display mwait usage
+ * fix EOF at input
+ * add --version|-v option
+ * spelling error in tips.
+
+1.10 --
+ * add the "P" key to show the PIDs of the processes when possible
+ * Add support for reading C-state info via sysfs
+ (Kevin Hilman, Venki Pallipadi)
+ * Show USB suspend statistics of USB devices in "-d" dump mode
+ * Show USB suspend statistics as a low priority hint for busy
+ devices
+ * Add support for using the sysfs power supply class
+ (Donnie Berkholz)
+ * Fix USB suspend suggestion to take semi blacklisted stuff into
+ account
+ * Add support for Intel's 4965 wireless power saving mode
+ * On new enough cpus (and kernel 2.6.25), report which C-states the
+ cpu and bios report/support.
+
+1.9 --
+ * add support for mac80211 based wireless power saving
+ * improve bluetooth inactivity detection (David Woodhouse)
+ * report USB activity (needs 2.6.24-rc kernel)
+ * support the newly reported interrupt events in 2.6.24-rc
+
+1.8 --
+ * add suggestion to increase VM writeback timeout
+ * add suggestion to enable INOTIFY in the kernel
+ * fix socket fd leak, found by Nikerabbit on #powertop
+ * Add support for deferrable timers (Scott Lamb)
+ * Add active hint to enable USB autosuspend on Fedora 7
+ * Show blue color if the cpu is 25% or more busy to indicate
+ that idle wakeups no longer is the nr 1 power causer
+ (Santiago Gala)
+ * merge the -d option from Bill Nottingham (Fedora) to allow
+ automated collection of data
+
+1.7 -- Jun 17th, 2007
+ * add suggestion to disable TV out
+ * add suggestion to disable Wake-On-Lan for unused ethernet
+ * Show P-states (frequencies)
+
+1.6 -- Jun 8th, 2007
+ * Add suggestion to rf_kill unused wireless interfaces
+ * Propose killing "sealert"; this is a new thing in F7 that wakes up
+ 10 times per second for no reason
+ * avoid showing the laptop mode hint when on AC - Val Henson
+ * suggest enabling noatime to save disk IO's
+ * suggest enabling SATA AHCI Link powermanagement
+ * suggest enabling the SMP Power Aware Scheduler
+
+1.5 -- May 27th, 2007
+ * fix resize-corrupts-screen-content bug
+ * add interrupts to the wakeups/second data in the emulated
+ (non-mobile) case
+ * calculate a long term power usage from battery charge deltas;
+ this should help people whos battery doesn't report discharge
+ rates, and also will provide a less noisy datapoint
+ * Add option to use `kill` on some known power hogs if they are
+ actually waking up a lot:
+ - beagle (even latest wakes up 10 times/second when not indexing)
+ - hal (suggest to stop cdrom polling)
+ - gnome-power-manager
+ These only show if these actually wake up the cpu 'a lot'; so if
+ these get fixed then the suggestion will not display.
+
+1.4 -- May 25th, 2007
+ * use gettext to allow translation
+ (with lots of thanks to the various translators, especially
+ to Benjamin Pineau who showed me how to use gettext tools)
+ * fix bluethooth-checks-cause-autload-of-bluetooth bug
+ * use ncurses (Sebastian Kuzminsky)
+ * rotate through the suggestions randomly, so that all of them
+ will show over time
+ * Fix the CONFIG_SND_AC97_POWER_SAVE check to only report on ac97 hw
+ * report "hidden but suprious" timer ticks (due to missing hpet or
+ lack of NO_HZ)
+ * check for HPET being present; if not suggest user to toggle in
+ BIOS or apply the patch
+ * Some suggestions have become "active", you can press a key to
+ tune it right away.
+ * Add active suggestion to enable AC97 powersave mode at runtime
+ * Add active suggestion to enable wireless powersave mode at runtime
+ * Add active suggestion to enable ondemand
+
+
+1.3 -- May 21st, 2007
+ * Add suggestion for CONFIG_SND_AC97_POWER_SAVE
+ * Fix inefficient code for readdir (Vince Pinter)
+ * Highlight the worst offenders in bold (Vince Pinter)
+ * Fix crash when running on 2.4 kernels (Harald Fernengel)
+ * Check fgets() return values (Timom Hoenig @ SuSE)
+ * add suggestion to enable laptop mode (when disabled)
+ * add suggestion to disable bluetooth when unused
+
+1.2 -- May 14th, 2007
+ * Manpage contributed by Carlo Segre from the Debian project
+ * Fix "shows power usage even on AC" bug, spotted by Steinar
+ Gunderson
+ * Fix for batteries that report mA instead of mW from Friedrich
+ Oslage
+
+1.1 -- May 13th, 2007
+ * Fix bug that shows "you don't have C-states" on mobile CPUs when
+ the cpu is 100% busy as reported by Friedrich
+ * Cosmetic code cleanups (Lindent) as suggested by David Brownell
+ * Get rid of popen() and the static sized events array
+ (Keith Packard)
+ * Add some more tips for kernel config options based on various
+ reports/feedback
+ * Improve "you are not root so can't get timerstats" message to say
+ that you need to be root rather than that you need to change your
+ kernel config
+ * Make a better effort at locating the kernel .config file
+ * Don't show "please turn CONFIG_FOO off" if the kernel you have
+ doesn't even support CONFIG_FOO (yet)
+ * Show absolute per-second wakeup counts too (multiple requestors)
+ * Add capability to suggest disabling daemons and the like
+
+
+1.0 -- May 11th, 2007
+ * Initial Release
diff --git a/README b/README
new file mode 100644
index 0000000..4cdff30
--- /dev/null
+++ b/README
@@ -0,0 +1,44 @@
+What's eating the battery life of my laptop? Why isn't it many more
+hours? Which software component causes the most power to be burned?
+These are important questions without a good answer... until now.
+
+The Linux 2.6.21 kernel introduces the so called tickless-idle
+feature. This feature allows the processor to be really idle for long
+periods of time, rather than having to wake up every millisecond for
+the timer tick. Current processors save a lot of power if they are
+idle for long periods, which translates into a longer battery life for
+your laptop, or a lower energy bill for your datacenter. However, a
+Linux system consists of more software than just the kernel, and there
+are many tunables involved. It's not easy to see what is going on, and
+as a result the behavior is sometimes far from optimal, and a lot of
+power is wasted.
+
+Intel is proud to announce the PowerTOP tool
+(http://www.linuxpowertop.org), a program that collects the various
+pieces of information from your system and presents an overview of how
+well your laptop is doing in terms of power savings. In addition,
+PowerTOP will provide an indication of which tunables and software
+components are the biggest offenders in slurping up your battery time.
+PowerTOP will update it's display frequently so that you can directly
+see the impact of any changes you are making.
+
+A typical Linux distribution has many components that wake the
+processor up frequently for no good reason. In our testing with
+PowerTOP, we have seen many cases where with some simple fixes, the
+battery life of typical laptops was increased by one hour or more!
+
+We are providing fixes for several of the issues we identified, and we
+encourage the Linux community to help us in this quest to get the
+maximum battery life out of your (hopefully Intel based) laptops. Try
+the PowerTOP tool, join the mailing list or the IRC channel and
+provide feedback, problem reports or fixes!
+
+Website: http://www.linuxpowertop.org
+IRC: irc.oftc.net #powertop channel
+Mailing list: http://www.bughost.org/mailman/listinfo/power
+Tags: intel, linux
+
+
+
+If you have bugreports or patches, I prefer that you use the mailing list
+but you can email me directly at arjan@linux.intel.com.
diff --git a/ahci-alpm.c b/ahci-alpm.c
new file mode 100644
index 0000000..0a97a44
--- /dev/null
+++ b/ahci-alpm.c
@@ -0,0 +1,266 @@
+/*
+ * Copyright 2009, Intel Corporation
+ *
+ * This file is part of PowerTOP
+ *
+ * This program file 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; version 2 of the License.
+ *
+ * This program 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 program in a file named COPYING; if not, write to the
+ * Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301 USA
+ *
+ * Authors:
+ * Arjan van de Ven <arjan@linux.intel.com>
+ */
+
+#include <unistd.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <stdint.h>
+#include <sys/types.h>
+#include <dirent.h>
+#include <assert.h>
+
+#include "powertop.h"
+
+struct device_data;
+
+struct device_data {
+ struct device_data *next;
+ char pathname[4096];
+ char human_name[4096];
+ uint64_t active, partial, slumber, total;
+ uint64_t previous_active, previous_partial, previous_slumber, previous_total;
+};
+
+
+static struct device_data *devices;
+
+static void cachunk_data(void)
+{
+ struct device_data *ptr;
+ ptr = devices;
+ while (ptr) {
+ ptr->previous_active = ptr->active;
+ ptr->previous_partial = ptr->partial;
+ ptr->previous_slumber = ptr->slumber;
+ ptr->previous_total = ptr->total;
+ ptr = ptr->next;
+ }
+}
+
+static char *disk_name(char *path, char *target, char *shortname)
+{
+
+ DIR *dir;
+ struct dirent *dirent;
+ char pathname[PATH_MAX];
+
+ sprintf(pathname, "%s/%s", path, target);
+ dir = opendir(pathname);
+ if (!dir)
+ return strdup(shortname);
+
+ while ((dirent = readdir(dir))) {
+ char line[4096], *c;
+ FILE *file;
+ if (dirent->d_name[0]=='.')
+ continue;
+
+ if (!strchr(dirent->d_name, ':'))
+ continue;
+
+ sprintf(line, "%s/%s/model", pathname, dirent->d_name);
+ file = fopen(line, "r");
+ if (file) {
+ if (fgets(line, 4096, file) == NULL)
+ return strdup(shortname);
+ fclose(file);
+ c = strchr(line, '\n');
+ if (c)
+ *c = 0;
+ return strdup(line);
+ }
+ }
+ closedir(dir);
+
+ return strdup(shortname);
+}
+
+static char *model_name(char *path, char *shortname)
+{
+
+ DIR *dir;
+ struct dirent *dirent;
+ char pathname[PATH_MAX];
+
+ sprintf(pathname, "%s/device", path);
+
+ dir = opendir(pathname);
+ if (!dir)
+ return strdup(shortname);
+
+ while ((dirent = readdir(dir))) {
+ if (dirent->d_name[0]=='.')
+ continue;
+
+ if (!strchr(dirent->d_name, ':'))
+ continue;
+ if (!strstr(dirent->d_name, "target"))
+ continue;
+ return disk_name(pathname, dirent->d_name, shortname);
+ }
+ closedir(dir);
+
+ return strdup(shortname);
+}
+
+static int first_time = 1;
+static void update_ahci_device(char *path, char *shortname)
+{
+ struct device_data *ptr;
+ FILE *file;
+ char fullpath[4096];
+ char name[4096], *c;
+ ptr = devices;
+
+ sprintf(fullpath, "%s/ahci_alpm_accounting", path);
+
+ if (access(fullpath, R_OK))
+ return;
+
+ if (first_time) {
+ file = fopen(fullpath, "w");
+ if (file) fprintf(file, "1\n");
+ if (file) fclose(file);
+ }
+
+ while (ptr) {
+ if (strcmp(ptr->pathname, path)==0) {
+ sprintf(fullpath, "%s/ahci_alpm_active", path);
+ file = fopen(fullpath, "r");
+ if (!file)
+ return;
+ fgets(name, 4096, file);
+ ptr->active = strtoull(name, NULL, 10);
+ fclose(file);
+
+ sprintf(fullpath, "%s/ahci_alpm_partial", path);
+ file = fopen(fullpath, "r");
+ if (!file)
+ return;
+ fgets(name, 4096, file);
+ ptr->partial = strtoull(name, NULL, 10);
+ fclose(file);
+
+ sprintf(fullpath, "%s/ahci_alpm_slumber", path);
+ file = fopen(fullpath, "r");
+ if (!file)
+ return;
+ fgets(name, 4096, file);
+ ptr->slumber = strtoull(name, NULL, 10);
+ fclose(file);
+
+ ptr->total = ptr->active + ptr->partial + ptr->slumber;
+ return;
+ }
+ ptr = ptr->next;
+ }
+ /* no luck, new one */
+ ptr = malloc(sizeof(struct device_data));
+ assert(ptr!=0);
+ memset(ptr, 0, sizeof(struct device_data));
+ ptr->next = devices;
+ devices = ptr;
+ strcpy(ptr->pathname, path);
+ c = model_name(path, shortname);
+ strcpy(ptr->human_name, c);
+ free(c);
+}
+
+void do_ahci_stats(void)
+{
+ DIR *dir;
+ struct dirent *dirent;
+ char pathname[PATH_MAX];
+
+ dir = opendir("/sys/class/scsi_host");
+ if (!dir)
+ return;
+
+ cachunk_data();
+ while ((dirent = readdir(dir))) {
+ if (dirent->d_name[0]=='.')
+ continue;
+
+ sprintf(pathname, "/sys/class/scsi_host/%s", dirent->d_name);
+ update_ahci_device(pathname, dirent->d_name);
+ }
+
+ closedir(dir);
+ first_time = 0;
+}
+
+
+void display_ahci_activity(void)
+{
+ struct device_data *dev;
+ printf("\n");
+ printf("%s\n", _("Recent SATA AHCI link activity statistics"));
+ printf("%s\n", _("Active\tPartial\tSlumber\tDevice name"));
+ dev = devices;
+ while (dev) {
+ if (dev->total > 0)
+ printf("%5.1f%%\t%5.1f%%\t%5.1f%%\t%s\n",
+ 100.0*(dev->active - dev->previous_active) / (0.00001 + dev->total - dev->previous_total),
+ 100.0*(dev->partial - dev->previous_partial) / (0.00001 + dev->total - dev->previous_total),
+ 100.0*(dev->slumber - dev->previous_slumber) / (0.00001 + dev->total - dev->previous_total),
+ dev->human_name);
+ dev = dev->next;
+ }
+
+}
+
+void ahci_activity_hint(void)
+{
+ int total_active = 0;
+ int pick;
+ struct device_data *dev;
+ dev = devices;
+ while (dev) {
+ if (dev->active-1 > dev->previous_active && dev->active)
+ total_active++;
+ dev = dev->next;
+ }
+ if (!total_active)
+ return;
+
+ pick = rand() % total_active;
+ total_active = 0;
+ dev = devices;
+ while (dev) {
+ if (dev->active-1 > dev->previous_active && dev->active) {
+ if (total_active == pick) {
+ char ahci_hint[8000];
+ sprintf(ahci_hint, _("A SATA device is active %1.1f%% of the time:\n%s"),
+ 100.0*(dev->active - dev->previous_active) / (0.00001 + dev->total - dev->previous_total),
+ dev->human_name);
+ add_suggestion(ahci_hint,
+ 15, 'S', _(" S - SATA Link Power Management "), activate_alpm);
+ }
+ total_active++;
+ }
+ dev = dev->next;
+ }
+
+}
diff --git a/alsa-power.c b/alsa-power.c
new file mode 100644
index 0000000..327b9ac
--- /dev/null
+++ b/alsa-power.c
@@ -0,0 +1,202 @@
+/*
+ * Copyright 2009, Intel Corporation
+ *
+ * This file is part of PowerTOP
+ *
+ * This program file 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; version 2 of the License.
+ *
+ * This program 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 program in a file named COPYING; if not, write to the
+ * Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301 USA
+ *
+ * Authors:
+ * Arjan van de Ven <arjan@linux.intel.com>
+ */
+
+#include <unistd.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <stdint.h>
+#include <sys/types.h>
+#include <dirent.h>
+#include <assert.h>
+
+#include "powertop.h"
+
+struct device_data;
+
+struct device_data {
+ struct device_data *next;
+ char pathname[4096];
+ char human_name[4096];
+ uint64_t power_on, power_off;
+ uint64_t previous_power_on, previous_power_off;
+};
+
+
+static struct device_data *devices;
+
+static void cachunk_data(void)
+{
+ struct device_data *ptr;
+ ptr = devices;
+ while (ptr) {
+ ptr->previous_power_on = ptr->power_on;
+ ptr->previous_power_off = ptr->power_off;
+ ptr = ptr->next;
+ }
+}
+
+static char *long_name(char *path, char *shortname)
+{
+ static char line[4096];
+ char filename[4096], temp[4096], *c;
+ FILE *file;
+ sprintf(line, "%s ", shortname);
+
+ sprintf(filename, "%s/vendor_name", path);
+ file = fopen(filename, "r");
+ if (file) {
+ if (fgets(temp, 4096, file))
+ strcat(line, temp);
+ fclose(file);
+ }
+
+ sprintf(filename, "%s/chip_name", path);
+ file = fopen(filename, "r");
+ if (file) {
+ if (fgets(temp, 4096, file))
+ strcat(line, temp);
+ fclose(file);
+ }
+
+ while ((c = strchr(line, '\n')))
+ *c = ' ';
+ return line;
+}
+static void update_alsa_device(char *path, char *shortname)
+{
+ struct device_data *ptr;
+ FILE *file;
+ char fullpath[4096];
+ char name[4096];
+ ptr = devices;
+
+ sprintf(fullpath, "%s/power_off_acct", path);
+
+ if (access(fullpath, R_OK))
+ return;
+
+ while (ptr) {
+ if (strcmp(ptr->pathname, path)==0) {
+ file = fopen(fullpath, "r");
+ if (!file)
+ return;
+ fgets(name, 4096, file);
+ ptr->power_off = strtoull(name, NULL, 10);
+ fclose(file);
+ sprintf(fullpath, "%s/power_on_acct", path);
+ file = fopen(fullpath, "r");
+ if (!file)
+ return;
+ fgets(name, 4096, file);
+ ptr->power_on = strtoull(name, NULL, 10);
+ fclose(file);
+
+ return;
+ }
+ ptr = ptr->next;
+ }
+ /* no luck, new one */
+ ptr = malloc(sizeof(struct device_data));
+ assert(ptr!=0);
+ memset(ptr, 0, sizeof(struct device_data));
+ ptr->next = devices;
+ devices = ptr;
+ strcpy(ptr->pathname, path);
+ strcpy(ptr->human_name, long_name(path, shortname));
+}
+
+void do_alsa_stats(void)
+{
+ DIR *dir;
+ struct dirent *dirent;
+ char pathname[PATH_MAX];
+
+ dir = opendir("/sys/class/sound/card0");
+ if (!dir)
+ return;
+
+ cachunk_data();
+ while ((dirent = readdir(dir))) {
+ if (dirent->d_name[0]=='.')
+ continue;
+
+ sprintf(pathname, "/sys/class/sound/card0/%s", dirent->d_name);
+ update_alsa_device(pathname, dirent->d_name);
+ }
+
+ closedir(dir);
+}
+
+
+void display_alsa_activity(void)
+{
+ struct device_data *dev;
+ printf("\n");
+ printf("%s\n", _("Recent audio activity statistics"));
+ printf("%s\n", _("Active Device name"));
+ dev = devices;
+ while (dev) {
+ printf("%5.1f%%\t%s\n", 100.0*(dev->power_on - dev->previous_power_on) /
+ (0.00001 + dev->power_on + dev->power_off - dev->previous_power_on - dev->previous_power_off),
+ dev->human_name);
+ dev = dev->next;
+ }
+
+}
+
+void alsa_activity_hint(void)
+{
+ int total_active = 0;
+ int pick;
+ struct device_data *dev;
+ dev = devices;
+ while (dev) {
+ if (dev->power_on-1 > dev->previous_power_on)
+ total_active++;
+ dev = dev->next;
+ }
+ if (!total_active)
+ return;
+
+ pick = rand() % total_active;
+ total_active = 0;
+ dev = devices;
+ while (dev) {
+ if (dev->power_on-1 > dev->previous_power_on) {
+ if (total_active == pick) {
+ char alsa_hint[8000];
+ sprintf(alsa_hint, _("An audio device is active %4.1f%% of the time:\n%s"),
+ 100.0*(dev->power_on - dev->previous_power_on) /
+ (0.00001 + dev->power_on + dev->power_off - dev->previous_power_on - dev->previous_power_off),
+ dev->human_name);
+ add_suggestion(alsa_hint,
+ 1, 'A', _(" A - Turn HD audio powersave on "), hda_power_on);
+ }
+ total_active++;
+ }
+ dev = dev->next;
+ }
+
+}
diff --git a/bluetooth.c b/bluetooth.c
new file mode 100644
index 0000000..1d9f416
--- /dev/null
+++ b/bluetooth.c
@@ -0,0 +1,157 @@
+/*
+ * Copyright 2007, Intel Corporation
+ *
+ * This file is part of PowerTOP
+ *
+ * This program file 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; version 2 of the License.
+ *
+ * This program 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 program in a file named COPYING; if not, write to the
+ * Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301 USA
+ *
+ * Authors:
+ * Arjan van de Ven <arjan@linux.intel.com>
+ */
+
+#include <unistd.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <stdint.h>
+#include <sys/types.h>
+#include <dirent.h>
+#include <sys/types.h>
+#include <sys/socket.h>
+#include <sys/ioctl.h>
+#include <errno.h>
+
+#include "powertop.h"
+
+
+/* structure definitions copied from include/net/bluetooth/hci.h from the 2.6.20 kernel */
+#define HCIGETDEVINFO _IOR('H', 211, int)
+#define BTPROTO_HCI 1
+
+#define __u16 uint16_t
+#define __u8 uint8_t
+#define __u32 uint32_t
+
+static int suggested = 0;
+
+typedef struct {
+ __u8 b[6];
+} __attribute__((packed)) bdaddr_t;
+
+struct hci_dev_stats {
+ __u32 err_rx;
+ __u32 err_tx;
+ __u32 cmd_tx;
+ __u32 evt_rx;
+ __u32 acl_tx;
+ __u32 acl_rx;
+ __u32 sco_tx;
+ __u32 sco_rx;
+ __u32 byte_rx;
+ __u32 byte_tx;
+};
+
+
+struct hci_dev_info {
+ __u16 dev_id;
+ char name[8];
+
+ bdaddr_t bdaddr;
+
+ __u32 flags;
+ __u8 type;
+
+ __u8 features[8];
+
+ __u32 pkt_type;
+ __u32 link_policy;
+ __u32 link_mode;
+
+ __u16 acl_mtu;
+ __u16 acl_pkts;
+ __u16 sco_mtu;
+ __u16 sco_pkts;
+
+ struct hci_dev_stats stat;
+};
+
+static int previous_bytes = -1;
+
+void turn_bluetooth_off(void)
+{
+ suggested = 1;
+ system("/usr/sbin/hciconfig hci0 down &> /dev/null");
+ system("/sbin/rmmod hci_usb &> /dev/null");
+}
+
+void suggest_bluetooth_off(void)
+{
+ struct hci_dev_info devinfo;
+ FILE *file;
+ int fd;
+ int ret;
+ int thisbytes = 0;
+
+ if (suggested)
+ return;
+
+ /* first check if /sys/modules/bluetooth exists, if not, don't probe bluetooth because
+ it would trigger an autoload */
+
+ if (access("/sys/module/bluetooth",F_OK))
+ return;
+
+ fd = socket(AF_BLUETOOTH, SOCK_RAW, BTPROTO_HCI);
+ if (fd < 0)
+ return;
+
+ memset(&devinfo, 0, sizeof(devinfo));
+ strcpy(devinfo.name, "hci0");
+ ret = ioctl(fd, HCIGETDEVINFO, (void *) &devinfo);
+ if (ret < 0)
+ goto out;
+
+ if ( (devinfo.flags & 1) == 0 &&
+ access("/sys/module/hci_usb",F_OK)) /* interface down already */
+ goto out;
+
+ thisbytes += devinfo.stat.byte_rx;
+ thisbytes += devinfo.stat.byte_tx;
+
+ if (thisbytes != previous_bytes)
+ goto out;
+
+ /* now, also check for active connections */
+ file = popen("/usr/bin/hcitool con 2> /dev/null", "r");
+ if (file) {
+ char line[2048];
+ /* first line is standard header */
+ fgets(line,2048,file);
+ memset(line, 0, 2048);
+ fgets(line, 2047, file);
+ pclose(file);
+ if (strlen(line)>0)
+ goto out;
+ }
+
+ add_suggestion( _("Suggestion: Disable the unused bluetooth interface with the following command:\n"
+ " hciconfig hci0 down ; rmmod hci_usb\n"
+ "Bluetooth is a radio and consumes quite some power, and keeps USB busy as well.\n"), 40, 'B' , _(" B - Turn Bluetooth off "), turn_bluetooth_off);
+out:
+ previous_bytes = thisbytes;
+ close(fd);
+ return;
+}
diff --git a/config.c b/config.c
new file mode 100644
index 0000000..b2567f2
--- /dev/null
+++ b/config.c
@@ -0,0 +1,117 @@
+/*
+ * Copyright 2007, Intel Corporation
+ *
+ * This file is part of PowerTOP
+ *
+ * This program file 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; version 2 of the License.
+ *
+ * This program 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 program in a file named COPYING; if not, write to the
+ * Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301 USA
+ *
+ * Authors:
+ * Arjan van de Ven <arjan@linux.intel.com>
+ */
+
+#include <unistd.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <stdint.h>
+#include <sys/types.h>
+#include <dirent.h>
+
+#include "powertop.h"
+
+/* static arrays are not nice programming.. but they're easy */
+#define MAXCONFIGLINES 10000
+static char configlines[MAXCONFIGLINES][100];
+static int configcount;
+
+static void read_kernel_config(void)
+{
+ FILE *file;
+ char version[100], *c;
+ char filename[100];
+ if (configcount)
+ return;
+ if (access("/proc/config.gz", R_OK) == 0) {
+ file = popen("zcat /proc/config.gz 2> /dev/null", "r");
+ while (file && !feof(file)) {
+ char line[100];
+ if (fgets(line, 100, file) == NULL)
+ break;
+ if (configcount >= MAXCONFIGLINES)
+ break;
+ strcpy(configlines[configcount++], line);
+ }
+ pclose(file);
+ return;
+ }
+ file = fopen("/proc/sys/kernel/osrelease", "r");
+ if (!file)
+ return;
+ if (fgets(version, 100, file) == NULL) {
+ fclose(file);
+ return;
+ }
+ fclose(file);
+ c = strchr(version, '\n');
+ if (c)
+ *c = 0;
+ sprintf(filename, "/boot/config-%s", version);
+ file = fopen(filename, "r");
+ if (!file) {
+ sprintf(filename, "/lib/modules/%s/build/.config", version);
+ file = fopen(filename, "r");
+ }
+ if (!file)
+ return;
+ while (!feof(file)) {
+ char line[100];
+ if (fgets(line, 100, file) == NULL)
+ break;
+ if (configcount >= MAXCONFIGLINES)
+ break;
+ strcpy(configlines[configcount++], line);
+ }
+ fclose(file);
+}
+
+/*
+ * Suggest the user to turn on/off a kernel config option.
+ * "comment" gets displayed if it's not already set to the right value
+ */
+void suggest_kernel_config(char *string, int onoff, char *comment, int weight)
+{
+ int i;
+ char searchon[100];
+ char searchoff[100];
+ int found = 0;
+
+ read_kernel_config();
+
+ sprintf(searchon, "%s=", string);
+ sprintf(searchoff, "# %s is not set", string);
+
+ for (i = 0; i < configcount; i++) {
+ if (onoff && strstr(configlines[i], searchon))
+ return;
+ if (onoff==0 && strstr(configlines[i], searchoff))
+ return;
+ if (onoff==0 && strstr(configlines[i], searchon))
+ found = 1;
+ }
+ if (onoff || found)
+ add_suggestion(comment, weight, 0, NULL, NULL);
+ fflush(stdout);
+}
diff --git a/cpufreq.c b/cpufreq.c
new file mode 100644
index 0000000..0030e31
--- /dev/null
+++ b/cpufreq.c
@@ -0,0 +1,120 @@
+/*
+ * Copyright 2007, Intel Corporation
+ *
+ * This file is part of PowerTOP
+ *
+ * This program file 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; version 2 of the License.
+ *
+ * This program 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 program in a file named COPYING; if not, write to the
+ * Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301 USA
+ *
+ * Authors:
+ * Arjan van de Ven <arjan@linux.intel.com>
+ */
+
+#include <unistd.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <stdint.h>
+#include <sys/types.h>
+#include <dirent.h>
+
+#include "powertop.h"
+
+static void activate_ondemand(void)
+{
+ DIR *dir;
+ struct dirent *dirent;
+ FILE *file;
+ char filename[PATH_MAX];
+
+ system("/sbin/modprobe cpufreq_ondemand > /dev/null 2>&1");
+
+
+ dir = opendir("/sys/devices/system/cpu");
+ if (!dir)
+ return;
+
+ while ((dirent = readdir(dir))) {
+ if (dirent->d_name[0]=='.')
+ continue;
+ sprintf(filename, "/sys/devices/system/cpu/%s/cpufreq/scaling_governor", dirent->d_name);
+ file = fopen(filename, "w");
+ if (!file)
+ continue;
+ fprintf(file, "ondemand\n");
+ fclose(file);
+ }
+
+ closedir(dir);
+}
+
+void suggest_ondemand_governor(void)
+{
+ DIR *dir;
+ struct dirent *dirent;
+ FILE *file;
+ char filename[PATH_MAX];
+ char line[1024];
+
+ char gov[1024];
+ int ret = 0;
+
+
+ gov[0] = 0;
+
+
+ dir = opendir("/sys/devices/system/cpu");
+ if (!dir)
+ return;
+
+ while ((dirent = readdir(dir))) {
+ if (dirent->d_name[0]=='.')
+ continue;
+ sprintf(filename, "/sys/devices/system/cpu/%s/cpufreq/scaling_governor", dirent->d_name);
+ file = fopen(filename, "r");
+ if (!file)
+ continue;
+ memset(line, 0, 1024);
+ if (fgets(line, 1023,file)==NULL) {
+ fclose(file);
+ continue;
+ }
+ if (strlen(gov)==0)
+ strcpy(gov, line);
+ else
+ /* if the governors are inconsistent, warn */
+ if (strcmp(gov, line))
+ ret = 1;
+ fclose(file);
+ }
+
+ closedir(dir);
+
+ /* if the governor is set to userspace, also warn */
+ if (strstr(gov, "userspace"))
+ ret = 1;
+
+ /* if the governor is set to performance, also warn */
+ /* FIXME: check if this is fair on all cpus */
+ if (strstr(gov, "performance"))
+ ret = 1;
+
+
+ if (ret) {
+ add_suggestion(_("Suggestion: Enable the ondemand cpu speed governor for all processors via: \n"
+ " echo ondemand > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor \n"),
+ 15, 'O', _(" O - enable Ondemand governor "), activate_ondemand);
+ }
+}
diff --git a/cpufreqstats.c b/cpufreqstats.c
new file mode 100644
index 0000000..d10b047
--- /dev/null
+++ b/cpufreqstats.c
@@ -0,0 +1,191 @@
+/*
+ * Copyright 2007, Intel Corporation
+ *
+ * This file is part of PowerTOP
+ *
+ * This program file 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; version 2 of the License.
+ *
+ * This program 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 program in a file named COPYING; if not, write to the
+ * Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301 USA
+ *
+ * Authors:
+ * Arjan van de Ven <arjan@linux.intel.com>
+ */
+
+#include <unistd.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <stdint.h>
+#include <sys/types.h>
+#include <dirent.h>
+
+#include "powertop.h"
+
+struct cpufreqdata {
+ uint64_t frequency;
+ uint64_t count;
+};
+
+struct cpufreqdata freqs[16];
+struct cpufreqdata oldfreqs[16];
+
+struct cpufreqdata delta[16];
+
+char cpufreqstrings[6][80];
+int topfreq = -1;
+
+static void zap(void)
+{
+ memset(freqs, 0, sizeof(freqs));
+}
+
+int sort_by_count (const void *av, const void *bv)
+{
+ const struct cpufreqdata *a = av, *b = bv;
+ return b->count - a->count;
+}
+
+int sort_by_freq (const void *av, const void *bv)
+{
+ const struct cpufreqdata *a = av, *b = bv;
+ return b->frequency - a->frequency;
+}
+
+
+static unsigned long turbo_hz;
+
+static int is_turbo(unsigned long hz)
+{
+ if (hz == turbo_hz)
+ return 1;
+ return 0;
+}
+
+
+static char *HzToHuman(unsigned long hz)
+{
+ static char buffer[1024];
+ memset(buffer, 0, 1024);
+ unsigned long long Hz;
+
+ Hz = hz;
+
+ /* default: just put the Number in */
+ sprintf(buffer,_("%9lli"), Hz);
+
+ if (Hz>1000)
+ sprintf(buffer, _("%6lli Mhz"), (Hz+500)/1000);
+
+ if (Hz>1500000)
+ sprintf(buffer, _("%6.2f Ghz"), (Hz+5000.0)/1000000);
+
+ if (is_turbo(hz))
+ sprintf(buffer, "%s", _("Turbo Mode"));
+
+
+ return buffer;
+}
+
+
+void do_cpufreq_stats(void)
+{
+ DIR *dir;
+ struct dirent *dirent;
+ FILE *file;
+ char filename[PATH_MAX];
+ char line[1024];
+
+ int ret = 0;
+ int maxfreq = 0;
+ uint64_t total_time = 0;
+
+ memcpy(&oldfreqs, &freqs, sizeof(freqs));
+ memset(&cpufreqstrings, 0, sizeof(cpufreqstrings));
+ sprintf(cpufreqstrings[0], _("P-states (frequencies)\n"));
+
+ for (ret = 0; ret<16; ret++)
+ freqs[ret].count = 0;
+
+ dir = opendir("/sys/devices/system/cpu");
+ if (!dir)
+ return;
+
+ while ((dirent = readdir(dir))) {
+ int i;
+ if (dirent->d_name[0]=='.')
+ continue;
+ sprintf(filename, "/sys/devices/system/cpu/%s/cpufreq/stats/time_in_state", dirent->d_name);
+ file = fopen(filename, "r");
+ if (!file)
+ continue;
+ memset(line, 0, 1024);
+
+ i = 0;
+ while (!feof(file)) {
+ uint64_t f,count;
+ char *c;
+ if (fgets(line, 1023,file)==NULL)
+ break;
+ f = strtoull(line, &c, 10);
+ if (!c)
+ break;
+ count = strtoull(c, NULL, 10);
+
+ if (freqs[i].frequency && freqs[i].frequency != f) {
+ zap();
+ break;
+ }
+
+ freqs[i].frequency = f;
+ freqs[i].count += count;
+
+ if (f && maxfreq < i)
+ maxfreq = i;
+ i++;
+ if (i>15)
+ break;
+ }
+ fclose(file);
+ }
+
+ closedir(dir);
+
+ for (ret = 0; ret < 16; ret++) {
+ delta[ret].count = freqs[ret].count - oldfreqs[ret].count;
+ total_time += delta[ret].count;
+ delta[ret].frequency = freqs[ret].frequency;
+ if (freqs[ret].frequency != oldfreqs[ret].frequency)
+ return; /* duff data */
+ }
+
+
+ if (!total_time)
+ return;
+
+ qsort(&delta, maxfreq+1, sizeof(struct cpufreqdata), sort_by_count);
+ if (maxfreq>4)
+ maxfreq=4;
+ qsort(&delta, maxfreq+1, sizeof(struct cpufreqdata), sort_by_freq);
+
+ if (delta[0].frequency == delta[1].frequency + 1000)
+ turbo_hz = delta[0].frequency;
+
+ topfreq = -1;
+ for (ret = 0 ; ret<=maxfreq; ret++) {
+ sprintf(cpufreqstrings[ret+1], "%6s %5.1f%%\n", HzToHuman(delta[ret].frequency), delta[ret].count * 100.0 / total_time);
+ if (delta[ret].count > total_time/2)
+ topfreq = ret;
+ }
+
+}
diff --git a/devicepm.c b/devicepm.c
new file mode 100644
index 0000000..15deb68
--- /dev/null
+++ b/devicepm.c
@@ -0,0 +1,385 @@
+/*
+ * Copyright 2007, Intel Corporation
+ *
+ * This file is part of PowerTOP
+ *
+ * This program file 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; version 2 of the License.
+ *
+ * This program 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 program in a file named COPYING; if not, write to the
+ * Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301 USA
+ *
+ * Authors:
+ * Arjan van de Ven <arjan@linux.intel.com>
+ */
+
+#include <unistd.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <stdint.h>
+#include <sys/types.h>
+#include <dirent.h>
+#include <assert.h>
+
+#include "powertop.h"
+
+
+
+void activate_runtime_suspend_path(char *path)
+{
+ DIR *dir;
+ struct dirent *dirent;
+ FILE *file;
+ char filename[PATH_MAX];
+
+ dir = opendir(path);
+ if (!dir)
+ return;
+
+ while ((dirent = readdir(dir))) {
+ if (dirent->d_name[0]=='.')
+ continue;
+
+ sprintf(filename, "%s/%s/power/control", path, dirent->d_name);
+ file = fopen(filename, "w");
+ if (!file)
+ continue;
+ fprintf(file, "auto\n");
+ fclose(file);
+ }
+
+ closedir(dir);
+}
+
+void activate_runtime_suspend(void)
+{
+ activate_runtime_suspend_path("/sys/bus/pci/devices");
+ activate_runtime_suspend_path("/sys/bus/spi/devices");
+ activate_runtime_suspend_path("/sys/bus/i2c/devices");
+}
+
+void suggest_runtime_suspend_path(char *path)
+{
+ DIR *dir;
+ struct dirent *dirent;
+ FILE *file;
+ char filename[PATH_MAX];
+ char line[1024];
+ int need_hint = 0;
+
+ dir = opendir(path);
+ if (!dir)
+ return;
+
+ while ((dirent = readdir(dir))) {
+ if (dirent->d_name[0]=='.')
+ continue;
+
+ sprintf(filename, "%s/%s/power/runtime_active_time", path, dirent->d_name);
+ file = fopen(filename, "r");
+ if (file) {
+ memset(line, 0, 1024);
+ if (fgets(line, 1023,file)==NULL)
+ memset(line, 0, 1024);
+ fclose(file);
+ /* this device does not support runtime pm */
+ if (strcmp(line, "0\n") == 0)
+ continue;
+ }
+
+
+ sprintf(filename, "%s/%s/power/control", path, dirent->d_name);
+ file = fopen(filename, "r");
+ if (!file)
+ continue;
+ memset(line, 0, 1024);
+ if (fgets(line, 1023,file)==NULL) {
+ fclose(file);
+ continue;
+ }
+ if (strstr(line, "on"))
+ need_hint = 1;
+
+ fclose(file);
+
+
+ }
+
+ closedir(dir);
+
+ if (need_hint) {
+ add_suggestion(_("Suggestion: Enable Device Power Management by pressing the P key\n"
+ ),
+ 45, 'P', _(" P - Enable Runtime PM"), activate_runtime_suspend);
+ }
+}
+
+void suggest_runtime_suspend(void)
+{
+ suggest_runtime_suspend_path("/sys/bus/pci/devices");
+ suggest_runtime_suspend_path("/sys/bus/spi/devices");
+ suggest_runtime_suspend_path("/sys/bus/i2c/devices");
+}
+
+
+struct device_data;
+
+struct device_data {
+ struct device_data *next;
+ char pathname[4096];
+ char human_name[4096];
+ uint64_t active, suspended;
+ uint64_t previous_active, previous_suspended;
+};
+
+
+static struct device_data *devices;
+
+static void cachunk_devs(void)
+{
+ struct device_data *ptr;
+ ptr = devices;
+ while (ptr) {
+ ptr->previous_active = ptr->active;
+ ptr->previous_suspended = ptr->suspended;
+ ptr = ptr->next;
+ }
+}
+
+static void update_devstats_pci(char *path, char *shortname)
+{
+ struct device_data *ptr;
+ FILE *file;
+ char fullpath[4096], name[4096];
+ ptr = devices;
+ char *c;
+
+ while (ptr) {
+ if (strcmp(ptr->pathname, path)==0) {
+ sprintf(fullpath, "%s/power/runtime_active_time", path);
+ file = fopen(fullpath, "r");
+ if (!file)
+ return;
+ fgets(name, 4096, file);
+ ptr->active = strtoull(name, NULL, 10);
+ fclose(file);
+ sprintf(fullpath, "%s/power/runtime_suspended_time", path);
+ file = fopen(fullpath, "r");
+ if (!file)
+ return;
+ fgets(name, 4096, file);
+ ptr->suspended = strtoull(name, NULL, 10);
+ fclose(file);
+
+ return;
+ }
+ ptr = ptr->next;
+ }
+ /* no luck, new one */
+ ptr = malloc(sizeof(struct device_data));
+ assert(ptr!=0);
+ memset(ptr, 0, sizeof(struct device_data));
+ ptr->next = devices;
+ devices = ptr;
+ strcpy(ptr->pathname, path);
+
+ strcpy(ptr->human_name, shortname);
+
+ sprintf(fullpath, "lspci -s %s", shortname);
+ if (!access("/sbin/lspci", X_OK))
+ sprintf(fullpath, "/sbin/lspci -s %s", shortname);
+ if (!access("/usr/bin/lspci", X_OK))
+ sprintf(fullpath, "/usr/bin/lspci -s %s", shortname);
+
+ if (strlen(fullpath) < 4)
+ return;
+ file = popen(fullpath, "r");
+ if (!file)
+ return;
+ fgets(ptr->human_name, 4095, file);
+ pclose(file);
+ c = strchr(ptr->human_name, '\n');
+ if (c) *c = 0;
+ c = strstr(ptr->human_name, "(rev");
+ if (c) *c = 0;
+}
+
+static void update_devstats_spi(char *path, char *shortname)
+{
+ struct device_data *ptr;
+ FILE *file;
+ char fullpath[4096], name[4096];
+ ptr = devices;
+ char *c;
+
+ while (ptr) {
+ if (strcmp(ptr->pathname, path)==0) {
+ sprintf(fullpath, "%s/power/runtime_active_time", path);
+ file = fopen(fullpath, "r");
+ if (!file)
+ return;
+ fgets(name, 4096, file);
+ ptr->active = strtoull(name, NULL, 10);
+ fclose(file);
+ sprintf(fullpath, "%s/power/runtime_suspended_time", path);
+ file = fopen(fullpath, "r");
+ if (!file)
+ return;
+ fgets(name, 4096, file);
+ ptr->suspended = strtoull(name, NULL, 10);
+ fclose(file);
+
+ return;
+ }
+ ptr = ptr->next;
+ }
+ /* no luck, new one */
+ ptr = malloc(sizeof(struct device_data));
+ assert(ptr!=0);
+ memset(ptr, 0, sizeof(struct device_data));
+ ptr->next = devices;
+ devices = ptr;
+ strcpy(ptr->pathname, path);
+
+ sprintf(fullpath, "%s/modalias", path);
+ file = fopen(fullpath, "r");
+ if (file) {
+ fgets(ptr->human_name, sizeof(ptr->human_name), file);
+ fclose(file);
+ }
+
+
+ c = strchr(ptr->human_name, '\n');
+ if (c) *c = 0;
+}
+
+void count_device_pm(void)
+{
+ DIR *dir;
+ struct dirent *dirent;
+ char pathname[PATH_MAX];
+
+ dir = opendir("/sys/bus/pci/devices");
+ if (!dir)
+ return;
+
+ cachunk_devs();
+ while ((dirent = readdir(dir))) {
+ if (dirent->d_name[0]=='.')
+ continue;
+ sprintf(pathname, "/sys/bus/pci/devices/%s", dirent->d_name);
+
+ update_devstats_pci(pathname, dirent->d_name);
+ }
+
+ closedir(dir);
+
+
+ dir = opendir("/sys/bus/spi/devices");
+ if (!dir)
+ return;
+
+ cachunk_devs();
+ while ((dirent = readdir(dir))) {
+ if (dirent->d_name[0]=='.')
+ continue;
+ sprintf(pathname, "/sys/bus/spi/devices/%s", dirent->d_name);
+
+ update_devstats_spi(pathname, dirent->d_name);
+ }
+
+ closedir(dir);
+
+ dir = opendir("/sys/bus/i2c/devices");
+ if (!dir)
+ return;
+
+ cachunk_devs();
+ while ((dirent = readdir(dir))) {
+ if (dirent->d_name[0]=='.')
+ continue;
+ sprintf(pathname, "/sys/bus/i2c/devices/%s", dirent->d_name);
+
+ update_devstats_spi(pathname, dirent->d_name);
+ }
+
+ closedir(dir);
+}
+
+
+void display_runtime_activity(void)
+{
+ int displayed = 0;
+ struct device_data *dev;
+ printf("\n");
+ printf("%s\n", _("Runtime Device Power Management statistics"));
+ printf("%s\n", _("Active Device name"));
+ dev = devices;
+ while (dev) {
+ if (dev->active + dev->suspended > 0)
+ printf("%5.1f%%\t%s\n", 100.0*(dev->active - dev->previous_active) /
+ (0.00001 + dev->active - dev->previous_active + dev->suspended - dev->previous_suspended), dev->human_name);
+ dev = dev->next;
+ }
+
+ dev = devices;
+ printf("\n");
+ printf("%s\n", _("Devices without runtime PM"));
+ dev = devices;
+ while (dev) {
+ if (dev->active + dev->suspended == 0) {
+ if (displayed++ < 20)
+ printf("%s\n", dev->human_name);
+ }
+ dev = dev->next;
+ }
+ if (displayed > 20)
+ printf(_("%i more devices without runtime PM ommitted\n"), displayed - 20);
+
+}
+
+void devicepm_activity_hint(void)
+{
+ int total_active = 0;
+ int pick;
+ struct device_data *dev;
+ dev = devices;
+ while (dev) {
+ if (dev->active-1 > dev->previous_active)
+ total_active++;
+ dev = dev->next;
+ }
+ if (!total_active)
+ return;
+
+ pick = rand() % total_active;
+ total_active = 0;
+ dev = devices;
+ while (dev) {
+ if (dev->active-1 > dev->previous_active) {
+ if (total_active == pick) {
+ char devicepm_hint[8000];
+
+ sprintf(devicepm_hint, _("A device is active %4.1f%% of the time:\n%s"),
+ 100.0*(dev->active - dev->previous_active) /
+ (0.00001 + dev->active - dev->previous_active + dev->suspended - dev->previous_suspended),
+ dev->human_name);
+ add_suggestion(devicepm_hint,
+ 1, 'P', _(" P - Enable device power management "), activate_runtime_suspend);
+ }
+ total_active++;
+ }
+ dev = dev->next;
+ }
+
+}
diff --git a/display.c b/display.c
new file mode 100644
index 0000000..79732ab
--- /dev/null
+++ b/display.c
@@ -0,0 +1,319 @@
+/*
+ * Copyright 2007, Intel Corporation
+ *
+ * This file is part of PowerTOP
+ *
+ * This program file 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; version 2 of the License.
+ *
+ * This program 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 program in a file named COPYING; if not, write to the
+ * Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301 USA
+ *
+ * Authors:
+ * Arjan van de Ven <arjan@linux.intel.com>
+ */
+
+#include <unistd.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <stdint.h>
+#include <sys/types.h>
+#include <dirent.h>
+#include <ncurses.h>
+#include <time.h>
+#include <wchar.h>
+
+#include "powertop.h"
+
+static WINDOW *title_bar_window;
+static WINDOW *cstate_window;
+static WINDOW *wakeup_window;
+static WINDOW *battery_power_window;
+static WINDOW *timerstat_window;
+static WINDOW *suggestion_window;
+static WINDOW *status_bar_window;
+
+#define print(win, y, x, fmt, args...) do { if (dump) printf(fmt, ## args); else mvwprintw(win, y, x, fmt, ## args); } while (0)
+
+char status_bar_slots[10][40];
+
+static void cleanup_curses(void) {
+ endwin();
+}
+
+static void zap_windows(void)
+{
+ if (title_bar_window) {
+ delwin(title_bar_window);
+ title_bar_window = NULL;
+ }
+ if (cstate_window) {
+ delwin(cstate_window);
+ cstate_window = NULL;
+ }
+ if (wakeup_window) {
+ delwin(wakeup_window);
+ wakeup_window = NULL;
+ }
+ if (battery_power_window) {
+ delwin(battery_power_window);
+ battery_power_window = NULL;
+ }
+ if (timerstat_window) {
+ delwin(timerstat_window);
+ timerstat_window = NULL;
+ }
+ if (suggestion_window) {
+ delwin(suggestion_window);
+ suggestion_window = NULL;
+ }
+ if (status_bar_window) {
+ delwin(status_bar_window);
+ status_bar_window = NULL;
+ }
+}
+
+
+int maxx, maxy;
+
+int maxtimerstats = 50;
+int maxwidth = 200;
+
+void setup_windows(void)
+{
+ getmaxyx(stdscr, maxy, maxx);
+
+ zap_windows();
+
+ title_bar_window = subwin(stdscr, 1, maxx, 0, 0);
+ cstate_window = subwin(stdscr, 7, maxx, 2, 0);
+ wakeup_window = subwin(stdscr, 1, maxx, 9, 0);
+ battery_power_window = subwin(stdscr, 2, maxx, 10, 0);
+ timerstat_window = subwin(stdscr, maxy-16, maxx, 12, 0);
+ maxtimerstats = maxy-16 -2;
+ maxwidth = maxx - 18;
+ suggestion_window = subwin(stdscr, 3, maxx, maxy-4, 0);
+ status_bar_window = subwin(stdscr, 1, maxx, maxy-1, 0);
+
+ strcpy(status_bar_slots[0], _(" Q - Quit "));
+ strcpy(status_bar_slots[1], _(" R - Refresh "));
+
+ werase(stdscr);
+ refresh();
+}
+
+void initialize_curses(void)
+{
+ initscr();
+ start_color();
+ keypad(stdscr, TRUE); /* enable keyboard mapping */
+ nonl(); /* tell curses not to do NL->CR/NL on output */
+ cbreak(); /* take input chars one at a time, no wait for \n */
+ noecho(); /* dont echo input */
+ curs_set(0); /* turn off cursor */
+ use_default_colors();
+
+ init_pair(PT_COLOR_DEFAULT, COLOR_WHITE, COLOR_BLACK);
+ init_pair(PT_COLOR_HEADER_BAR, COLOR_BLACK, COLOR_WHITE);
+ init_pair(PT_COLOR_ERROR, COLOR_BLACK, COLOR_RED);
+ init_pair(PT_COLOR_RED, COLOR_WHITE, COLOR_RED);
+ init_pair(PT_COLOR_YELLOW, COLOR_WHITE, COLOR_YELLOW);
+ init_pair(PT_COLOR_GREEN, COLOR_WHITE, COLOR_GREEN);
+ init_pair(PT_COLOR_BLUE, COLOR_WHITE, COLOR_BLUE);
+ init_pair(PT_COLOR_BRIGHT, COLOR_WHITE, COLOR_BLACK);
+
+ atexit(cleanup_curses);
+}
+
+void show_title_bar(void)
+{
+ int i;
+ int x;
+ wattrset(title_bar_window, COLOR_PAIR(PT_COLOR_HEADER_BAR));
+ wbkgd(title_bar_window, COLOR_PAIR(PT_COLOR_HEADER_BAR));
+ werase(title_bar_window);
+
+ print(title_bar_window, 0, 0, " PowerTOP version %s (C) 2007 Intel Corporation", VERSION);
+
+ wrefresh(title_bar_window);
+
+ werase(status_bar_window);
+
+ x = 0;
+ for (i=0; i<10; i++) {
+ if (strlen(status_bar_slots[i])==0)
+ continue;
+ wattron(status_bar_window, A_REVERSE);
+ print(status_bar_window, 0, x, "%s", status_bar_slots[i]);
+ wattroff(status_bar_window, A_REVERSE);
+ x+= strlen(status_bar_slots[i])+1;
+ }
+ wrefresh(status_bar_window);
+}
+
+void show_cstates(void)
+{
+ int i, count = 0;
+ werase(cstate_window);
+
+ for (i=0; i < 10; i++) {
+ if (i == topcstate+1)
+ wattron(cstate_window, A_BOLD);
+ else
+ wattroff(cstate_window, A_BOLD);
+ if (strlen(cstate_lines[i]) && count <= 6) {
+ print(cstate_window, count, 0, "%s", cstate_lines[i]);
+ count++;
+ }
+ }
+
+ for (i=0; i<6; i++) {
+ if (i == topfreq+1)
+ wattron(cstate_window, A_BOLD);
+ else
+ wattroff(cstate_window, A_BOLD);
+ print(cstate_window, i, 38, "%s", cpufreqstrings[i]);
+ }
+
+ wrefresh(cstate_window);
+}
+
+
+void show_acpi_power_line(double rate, double cap, double capdelta, time_t ti)
+{
+ char buffer[1024];
+
+ sprintf(buffer, _("no ACPI power usage estimate available") );
+
+ werase(battery_power_window);
+ if (rate > 0.001) {
+ char *c;
+ sprintf(buffer, _("Power usage (ACPI estimate): %3.1fW (%3.1f hours)"), rate, cap/rate);
+ strcat(buffer, " ");
+ c = &buffer[strlen(buffer)];
+ if (ti>180 && capdelta > 0)
+ sprintf(c, _("(long term: %3.1fW,/%3.1fh)"), 3600*capdelta / ti, cap / (3600*capdelta/ti+0.01));
+ }
+ else if (ti>120 && capdelta > 0.001)
+ sprintf(buffer, _("Power usage (5 minute ACPI estimate) : %5.1f W (%3.1f hours left)"), 3600*capdelta / ti, cap / (3600*capdelta/ti+0.01));
+
+ print(battery_power_window, 0, 0, "%s\n", buffer);
+ wrefresh(battery_power_window);
+}
+
+void show_pmu_power_line(unsigned sum_voltage_mV,
+ unsigned sum_charge_mAh, unsigned sum_max_charge_mAh,
+ int sum_discharge_mA)
+{
+ char buffer[1024];
+
+ if (sum_discharge_mA != 0)
+ {
+ unsigned remaining_charge_mAh;
+
+ if (sum_discharge_mA < 0)
+ {
+ /* we are currently discharging */
+ sum_discharge_mA = -sum_discharge_mA;
+ remaining_charge_mAh = sum_charge_mAh;
+ }
+ else
+ {
+ /* we are currently charging */
+ remaining_charge_mAh = (sum_max_charge_mAh
+ - sum_charge_mAh);
+ }
+
+ snprintf(buffer, sizeof(buffer),
+ _("Power usage: %3.1fW (%3.1f hours)"),
+ sum_voltage_mV * sum_discharge_mA / 1e6,
+ (double)remaining_charge_mAh / sum_discharge_mA);
+ }
+ else
+ snprintf(buffer, sizeof(buffer),
+ _("no power usage estimate available") );
+
+ werase(battery_power_window);
+ print(battery_power_window, 0, 0, "%s\n", buffer);
+ wrefresh(battery_power_window);
+}
+
+
+void show_wakeups(double d, double interval, double C0time)
+{
+ werase(wakeup_window);
+
+ wbkgd(wakeup_window, COLOR_PAIR(PT_COLOR_RED));
+ if (d <= 25.0)
+ wbkgd(wakeup_window, COLOR_PAIR(PT_COLOR_YELLOW));
+ if (d <= 10.0)
+ wbkgd(wakeup_window, COLOR_PAIR(PT_COLOR_GREEN));
+
+ /*
+ * if the cpu is really busy.... then make it blue to indicate
+ * that it's not the primary power consumer anymore
+ */
+ if (C0time > 25.0)
+ wbkgd(wakeup_window, COLOR_PAIR(PT_COLOR_BLUE));
+
+ wattron(wakeup_window, A_BOLD);
+ print(wakeup_window, 0, 0, _("Wakeups-from-idle per second : %4.1f\tinterval: %0.1fs\n"), d, interval);
+ wrefresh(wakeup_window);
+}
+
+void show_timerstats(int nostats, int ticktime)
+{
+ int i;
+ werase(timerstat_window);
+
+ if (!nostats) {
+ int counter = 0;
+ print(timerstat_window, 0, 0, _("Top causes for wakeups:\n"));
+ for (i = 0; i < linehead; i++)
+ if ((lines[i].count > 0 || lines[i].disk_count > 0) && counter++ < maxtimerstats) {
+ char c = ' ';
+ if (lines[i].disk_count)
+ c = 'D';
+ if ((lines[i].count * 1.0 / ticktime) >= 10.0)
+ wattron(timerstat_window, A_BOLD);
+ else
+ wattroff(timerstat_window, A_BOLD);
+ if (showpids)
+ print(timerstat_window, i+1, 0," %5.1f%% (%5.1f)%c [%6s] %s\n", lines[i].count * 100.0 / linectotal,
+ lines[i].count * 1.0 / ticktime, c,
+ lines[i].pid, lines[i].string);
+ else
+ print(timerstat_window, i+1, 0," %5.1f%% (%5.1f)%c %s\n", lines[i].count * 100.0 / linectotal,
+ lines[i].count * 1.0 / ticktime, c,
+ lines[i].string);
+ }
+ } else {
+ if (geteuid() == 0) {
+ print(timerstat_window, 0, 0, _("No detailed statistics available; please enable the CONFIG_TIMER_STATS kernel option\n"));
+ print(timerstat_window, 1, 0, _("This option is located in the Kernel Debugging section of menuconfig\n"));
+ print(timerstat_window, 2, 0, _("(which is CONFIG_DEBUG_KERNEL=y in the config file)\n"));
+ print(timerstat_window, 3, 0, _("Note: this is only available in 2.6.21 and later kernels\n"));
+ } else
+ print(timerstat_window, 0, 0, _("No detailed statistics available; PowerTOP needs root privileges for that\n"));
+ }
+
+
+ wrefresh(timerstat_window);
+}
+
+void show_suggestion(char *sug)
+{
+ werase(suggestion_window);
+ print(suggestion_window, 0, 0, "%s", sug);
+ wrefresh(suggestion_window);
+}
diff --git a/dmesg.c b/dmesg.c
new file mode 100644
index 0000000..5811614
--- /dev/null
+++ b/dmesg.c
@@ -0,0 +1,63 @@
+/*
+ * Copyright 2009, Intel Corporation
+ *
+ * This file is part of PowerTOP
+ *
+ * This program file 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; version 2 of the License.
+ *
+ * This program 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 program in a file named COPYING; if not, write to the
+ * Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301 USA
+ *
+ * Authors:
+ * Arjan van de Ven <arjan@linux.intel.com>
+ */
+
+#include <unistd.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <stdint.h>
+#include <sys/types.h>
+#include <dirent.h>
+#include <sys/klog.h>
+
+int klogctl(int type, char *bufp, int len);
+#include "powertop.h"
+
+/* static arrays are not nice programming.. but they're easy */
+static char *dmesg_content;
+
+static void read_dmesg(void)
+{
+ int size;
+
+ if (dmesg_content)
+ return;
+
+ size = klogctl(10, NULL, 0);
+
+ if (size <= 0)
+ return;
+
+ dmesg_content = calloc(size + 1, 1);
+
+ klogctl(3, dmesg_content, size);
+}
+
+void suggest_on_dmesg(char *string, char *comment, int weight)
+{
+ read_dmesg();
+
+ if (strstr(dmesg_content, string))
+ add_suggestion(comment, weight, 0, NULL, NULL);
+}
diff --git a/ethernet.c b/ethernet.c
new file mode 100644
index 0000000..d79b7ee
--- /dev/null
+++ b/ethernet.c
@@ -0,0 +1,137 @@
+/*
+ * Copyright 2007, Intel Corporation
+ *
+ * This file is part of PowerTOP
+ *
+ * This program file 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; version 2 of the License.
+ *
+ * This program 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 program in a file named COPYING; if not, write to the
+ * Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301 USA
+ *
+ * Authors:
+ * Arjan van de Ven <arjan@linux.intel.com>
+ */
+
+#include <unistd.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <stdint.h>
+#include <sys/types.h>
+#include <dirent.h>
+#include <linux/types.h>
+#include <net/if.h>
+#include <linux/sockios.h>
+#include <sys/ioctl.h>
+
+/* work around a bug in debian -- it exposes kernel internal types to userspace */
+#define u64 __u64
+#define u32 __u32
+#define u16 __u16
+#define u8 __u8
+#include <linux/ethtool.h>
+#undef u64
+#undef u32
+#undef u16
+#undef u8
+
+
+
+#include "powertop.h"
+
+void activate_WOL_suggestion(void)
+{
+ int sock;
+ struct ifreq ifr;
+ struct ethtool_wolinfo wol;
+ int ret;
+
+ memset(&ifr, 0, sizeof(struct ifreq));
+
+ sock = socket(AF_INET, SOCK_DGRAM, 0);
+ if (sock<0)
+ return;
+
+ strcpy(ifr.ifr_name, "eth0");
+
+ /* Check if the interface is up */
+ ret = ioctl(sock, SIOCGIFFLAGS, &ifr);
+ if (ret<0) {
+ close(sock);
+ return;
+ }
+
+ if (ifr.ifr_flags & (IFF_UP | IFF_RUNNING)) {
+ close(sock);
+ return;
+ }
+
+ memset(&wol, 0, sizeof(wol));
+
+ wol.cmd = ETHTOOL_GWOL;
+ ifr.ifr_data = (caddr_t)&wol;
+ ioctl(sock, SIOCETHTOOL, &ifr);
+ wol.cmd = ETHTOOL_SWOL;
+ wol.wolopts = 0;
+ ioctl(sock, SIOCETHTOOL, &ifr);
+
+ close(sock);
+}
+
+
+
+void suggest_WOL_off(void)
+{
+ int sock;
+ struct ifreq ifr;
+ struct ethtool_wolinfo wol;
+ int ret;
+
+ memset(&ifr, 0, sizeof(struct ifreq));
+
+ sock = socket(AF_INET, SOCK_DGRAM, 0);
+ if (sock<0)
+ return;
+
+ strcpy(ifr.ifr_name, "eth0");
+
+ /* Check if the interface is up */
+ ret = ioctl(sock, SIOCGIFFLAGS, &ifr);
+ if (ret<0) {
+ close(sock);
+ return;
+ }
+
+ if (ifr.ifr_flags & (IFF_UP | IFF_RUNNING)) {
+ close(sock);
+ return;
+ }
+
+ memset(&wol, 0, sizeof(wol));
+
+ wol.cmd = ETHTOOL_GWOL;
+ ifr.ifr_data = (caddr_t)&wol;
+ ioctl(sock, SIOCETHTOOL, &ifr);
+
+ if (wol.wolopts) {
+ add_suggestion(_(
+ "Disable Ethernet Wake-On-Lan with the following command:\n"
+ " ethtool -s eth0 wol d \n"
+ "Wake-on-Lan keeps the phy active, this costs power."), 5,
+ 'W', _(" W - disable Wake-On-Lan "), activate_WOL_suggestion);
+
+
+ }
+
+ close(sock);
+}
diff --git a/intelcstates.c b/intelcstates.c
new file mode 100644
index 0000000..a2025de
--- /dev/null
+++ b/intelcstates.c
@@ -0,0 +1,158 @@
+/*
+ * Copyright 2008, Intel Corporation
+ *
+ * This file is part of PowerTOP
+ *
+ * This program file 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; version 2 of the License.
+ *
+ * This program 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 program in a file named COPYING; if not, write to the
+ * Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301 USA
+ *
+ * Authors:
+ * Arjan van de Ven <arjan@linux.intel.com>
+ */
+
+#include <unistd.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <stdint.h>
+#include <sys/types.h>
+#include <dirent.h>
+#include <ctype.h>
+
+#include "powertop.h"
+
+#ifdef __i386
+
+
+/*
+ * Perform a CPU ID operation; with various registers set
+ */
+static void cpuid( unsigned int *eax,
+ unsigned int *ebx,
+ unsigned int *ecx,
+ unsigned int *edx)
+{
+ /* call the cpuid instruction with the registers as input and output
+ * modification by Dwokfur based on Sam Hocevar's discussion on
+ * how to make Assemly code PIC compatible:
+ * http://sam.zoy.org/blog/2007-04-13-shlib-with-non-pic-code-have-inline-assembly-and-pic-mix-well
+ */
+ __asm__("pushl %%ebx \n\t" /* save %ebx */
+ "cpuid \n\t"
+ "movl %%ebx, %1 \n\t" /* save what cpuid just put in %ebx */
+ "popl %%ebx \n\t" /* restore the old %ebx */
+ : "=a" (*eax),
+ "=r" (*ebx),
+ "=c" (*ecx),
+ "=d" (*edx)
+ : "0" (*eax),
+ "1" (*ebx),
+ "2" (*ecx),
+ "3" (*edx)
+ );
+}
+
+#endif
+
+
+void print_intel_cstates(void)
+{
+#ifdef __i386__
+
+ int bios_table[8];
+ int bioscount = 0;
+ DIR *cpudir;
+ DIR *dir;
+ struct dirent *entry;
+ FILE *file = NULL;
+ char line[4096];
+ char filename[128], *f;
+ int len, i;
+ unsigned int eax, ebx, ecx, edx;
+
+ memset(bios_table, 0, sizeof(bios_table));
+
+
+ cpudir = opendir("/sys/devices/system/cpu");
+ if (!cpudir)
+ return;
+
+ /* Loop over cpuN entries */
+ while ((entry = readdir(cpudir))) {
+ if (strlen(entry->d_name) < 3)
+ continue;
+
+ if (!isdigit(entry->d_name[3]))
+ continue;
+
+ len = sprintf(filename, "/sys/devices/system/cpu/%s/cpuidle",
+ entry->d_name);
+
+ dir = opendir(filename);
+ if (!dir)
+ return;
+
+ /* For each C-state, there is a stateX directory which
+ * contains a 'usage' and a 'time' (duration) file */
+ while ((entry = readdir(dir))) {
+ if (strlen(entry->d_name) < 3)
+ continue;
+ sprintf(filename + len, "/%s/desc", entry->d_name);
+ file = fopen(filename, "r");
+ if (file) {
+
+ memset(line, 0, 4096);
+ f = fgets(line, 4096, file);
+ fclose(file);
+ if (f == NULL)
+ break;
+
+ f = strstr(line, "MWAIT ");
+ if (f) {
+ f += 6;
+ bios_table[(strtoull(f, NULL, 16)>>4) + 1]++;
+ bioscount++;
+ }
+ }
+ }
+ closedir(dir);
+
+ }
+ closedir(cpudir);
+ if (!bioscount)
+ return;
+
+ eax = 5;
+ ebx = 0; ecx = 0; edx = 0;
+ cpuid(&eax, &ebx, &ecx, &edx);
+ if (!edx || ((ecx&1) == 0))
+ return;
+
+ printf(_("Your CPU supports the following C-states : "));
+ i = 0;
+ while (edx) {
+ if (edx&7)
+ printf("C%i ", i);
+ edx = edx >> 4;
+ i++;
+ }
+ printf("\n");
+ printf(_("Your BIOS reports the following C-states : "));
+ for (i = 0; i < 8; i++)
+ if (bios_table[i])
+ printf("C%i ", i);
+ printf("\n");
+#endif
+}
diff --git a/kernel-patches/linux-2.6.35-rc4-ahci-alpm-accounting.patch b/kernel-patches/linux-2.6.35-rc4-ahci-alpm-accounting.patch
new file mode 100644
index 0000000..287b679
--- /dev/null
+++ b/kernel-patches/linux-2.6.35-rc4-ahci-alpm-accounting.patch
@@ -0,0 +1,300 @@
+From: Arjan van de Ven <arjan@linux.intel.com>
+Subject: [PATCH] libata: Add ALPM power state accounting to the AHCI driver
+
+PowerTOP wants to be able to show the user how effective the ALPM link
+power management is for the user. ALPM is worth around 0.5W on a quiet
+link; PowerTOP wants to be able to find cases where the "quiet link" isn't
+actually quiet.
+
+This patch adds state accounting functionality to the AHCI driver for
+PowerTOP to use.
+The parts of the patch are
+1) the sysfs logic of exposing the stats for each state in sysfs
+2) the basic accounting logic that gets update on link change interrupts
+ (or when the user accesses the info from sysfs)
+3) a "accounting enable" flag; in order to get the accounting to work,
+ the driver needs to get phyrdy interrupts on link status changes.
+ Normally and currently this is disabled by the driver when ALPM is
+ on (to reduce overhead); when PowerTOP is running this will need
+ to be on to get usable statistics... hence the sysfs tunable.
+
+The PowerTOP output currently looks like this:
+
+Recent SATA AHCI link activity statistics
+Active Partial Slumber Device name
+ 0.5% 99.5% 0.0% host0
+
+(work to resolve "host0" to a more human readable name is in progress)
+
+Signed-off-by: Arjan van de Ven <arjan@linux.intel.com>
+
+diff --git a/drivers/ata/ahci.h b/drivers/ata/ahci.h
+index 7113c57..6a3a291 100644
+--- a/drivers/ata/ahci.h
++++ b/drivers/ata/ahci.h
+@@ -261,6 +261,13 @@ struct ahci_em_priv {
+ unsigned long led_state;
+ };
+
++enum ahci_port_states {
++ AHCI_PORT_NOLINK = 0,
++ AHCI_PORT_ACTIVE = 1,
++ AHCI_PORT_PARTIAL = 2,
++ AHCI_PORT_SLUMBER = 3
++};
++
+ struct ahci_port_priv {
+ struct ata_link *active_link;
+ struct ahci_cmd_hdr *cmd_slot;
+@@ -279,6 +286,14 @@ struct ahci_port_priv {
+ int fbs_last_dev; /* save FBS.DEV of last FIS */
+ /* enclosure management info per PM slot */
+ struct ahci_em_priv em_priv[EM_MAX_SLOTS];
++
++ /* ALPM accounting state and stats */
++ unsigned int accounting_active:1;
++ u64 active_jiffies;
++ u64 partial_jiffies;
++ u64 slumber_jiffies;
++ int previous_state;
++ int previous_jiffies;
+ };
+
+ struct ahci_host_priv {
+diff --git a/drivers/ata/libahci.c b/drivers/ata/libahci.c
+index 81e772a..c3250ee 100644
+--- a/drivers/ata/libahci.c
++++ b/drivers/ata/libahci.c
+@@ -59,6 +59,20 @@ MODULE_PARM_DESC(ignore_sss, "Ignore staggered spinup flag (0=don't ignore, 1=ig
+ static int ahci_enable_alpm(struct ata_port *ap,
+ enum link_pm policy);
+ static void ahci_disable_alpm(struct ata_port *ap);
++static ssize_t ahci_alpm_show_active(struct device *dev,
++ struct device_attribute *attr, char *buf);
++static ssize_t ahci_alpm_show_slumber(struct device *dev,
++ struct device_attribute *attr, char *buf);
++static ssize_t ahci_alpm_show_partial(struct device *dev,
++ struct device_attribute *attr, char *buf);
++
++static ssize_t ahci_alpm_show_accounting(struct device *dev,
++ struct device_attribute *attr, char *buf);
++
++static ssize_t ahci_alpm_set_accounting(struct device *dev,
++ struct device_attribute *attr,
++ const char *buf, size_t count);
++
+ static ssize_t ahci_led_show(struct ata_port *ap, char *buf);
+ static ssize_t ahci_led_store(struct ata_port *ap, const char *buf,
+ size_t size);
+@@ -118,6 +132,12 @@ static DEVICE_ATTR(ahci_host_caps, S_IRUGO, ahci_show_host_caps, NULL);
+ static DEVICE_ATTR(ahci_host_cap2, S_IRUGO, ahci_show_host_cap2, NULL);
+ static DEVICE_ATTR(ahci_host_version, S_IRUGO, ahci_show_host_version, NULL);
+ static DEVICE_ATTR(ahci_port_cmd, S_IRUGO, ahci_show_port_cmd, NULL);
++static DEVICE_ATTR(ahci_alpm_active, S_IRUGO, ahci_alpm_show_active, NULL);
++static DEVICE_ATTR(ahci_alpm_partial, S_IRUGO, ahci_alpm_show_partial, NULL);
++static DEVICE_ATTR(ahci_alpm_slumber, S_IRUGO, ahci_alpm_show_slumber, NULL);
++static DEVICE_ATTR(ahci_alpm_accounting, S_IRUGO | S_IWUSR,
++ ahci_alpm_show_accounting, ahci_alpm_set_accounting);
++
+ static DEVICE_ATTR(em_buffer, S_IWUSR | S_IRUGO,
+ ahci_read_em_buffer, ahci_store_em_buffer);
+
+@@ -129,6 +149,10 @@ static struct device_attribute *ahci_shost_attrs[] = {
+ &dev_attr_ahci_host_cap2,
+ &dev_attr_ahci_host_version,
+ &dev_attr_ahci_port_cmd,
++ &dev_attr_ahci_alpm_active,
++ &dev_attr_ahci_alpm_partial,
++ &dev_attr_ahci_alpm_slumber,
++ &dev_attr_ahci_alpm_accounting,
+ &dev_attr_em_buffer,
+ NULL
+ };
+@@ -734,9 +758,14 @@ static int ahci_enable_alpm(struct ata_port *ap,
+ * getting woken up due to spurious phy ready interrupts
+ * TBD - Hot plug should be done via polling now, is
+ * that even supported?
++ *
++ * However, when accounting_active is set, we do want
++ * the interrupts for accounting purposes.
+ */
+- pp->intr_mask &= ~PORT_IRQ_PHYRDY;
+- writel(pp->intr_mask, port_mmio + PORT_IRQ_MASK);
++ if (!pp->accounting_active) {
++ pp->intr_mask &= ~PORT_IRQ_PHYRDY;
++ writel(pp->intr_mask, port_mmio + PORT_IRQ_MASK);
++ }
+
+ /*
+ * Set a flag to indicate that we should ignore all PhyRdy
+@@ -1645,6 +1674,162 @@ static void ahci_error_intr(struct ata_port *ap, u32 irq_stat)
+ ata_port_abort(ap);
+ }
+
++static int get_current_alpm_state(struct ata_port *ap)
++{
++ u32 status = 0;
++
++ ahci_scr_read(&ap->link, SCR_STATUS, &status);
++
++ /* link status is in bits 11-8 */
++ status = status >> 8;
++ status = status & 0x7;
++
++ if (status == 6)
++ return AHCI_PORT_SLUMBER;
++ if (status == 2)
++ return AHCI_PORT_PARTIAL;
++ if (status == 1)
++ return AHCI_PORT_ACTIVE;
++ return AHCI_PORT_NOLINK;
++}
++
++static void account_alpm_stats(struct ata_port *ap)
++{
++ struct ahci_port_priv *pp;
++
++ int new_state;
++ u64 new_jiffies, jiffies_delta;
++
++ if (ap == NULL)
++ return;
++ pp = ap->private_data;
++
++ if (!pp) return;
++
++ new_state = get_current_alpm_state(ap);
++ new_jiffies = jiffies;
++
++ jiffies_delta = new_jiffies - pp->previous_jiffies;
++
++ switch (pp->previous_state) {
++ case AHCI_PORT_NOLINK:
++ pp->active_jiffies = 0;
++ pp->partial_jiffies = 0;
++ pp->slumber_jiffies = 0;
++ break;
++ case AHCI_PORT_ACTIVE:
++ pp->active_jiffies += jiffies_delta;
++ break;
++ case AHCI_PORT_PARTIAL:
++ pp->partial_jiffies += jiffies_delta;
++ break;
++ case AHCI_PORT_SLUMBER:
++ pp->slumber_jiffies += jiffies_delta;
++ break;
++ default:
++ break;
++ }
++ pp->previous_state = new_state;
++ pp->previous_jiffies = new_jiffies;
++}
++
++static ssize_t ahci_alpm_show_active(struct device *dev,
++ struct device_attribute *attr, char *buf)
++{
++ struct Scsi_Host *shost = class_to_shost(dev);
++ struct ata_port *ap = ata_shost_to_port(shost);
++ struct ahci_port_priv *pp;
++
++ if (!ap || ata_port_is_dummy(ap))
++ return -EINVAL;
++ pp = ap->private_data;
++ account_alpm_stats(ap);
++
++ return sprintf(buf, "%u\n", jiffies_to_msecs(pp->active_jiffies));
++}
++
++static ssize_t ahci_alpm_show_partial(struct device *dev,
++ struct device_attribute *attr, char *buf)
++{
++ struct Scsi_Host *shost = class_to_shost(dev);
++ struct ata_port *ap = ata_shost_to_port(shost);
++ struct ahci_port_priv *pp;
++
++ if (!ap || ata_port_is_dummy(ap))
++ return -EINVAL;
++
++ pp = ap->private_data;
++ account_alpm_stats(ap);
++
++ return sprintf(buf, "%u\n", jiffies_to_msecs(pp->partial_jiffies));
++}
++
++static ssize_t ahci_alpm_show_slumber(struct device *dev,
++ struct device_attribute *attr, char *buf)
++{
++ struct Scsi_Host *shost = class_to_shost(dev);
++ struct ata_port *ap = ata_shost_to_port(shost);
++ struct ahci_port_priv *pp;
++
++ if (!ap || ata_port_is_dummy(ap))
++ return -EINVAL;
++
++ pp = ap->private_data;
++
++ account_alpm_stats(ap);
++
++ return sprintf(buf, "%u\n", jiffies_to_msecs(pp->slumber_jiffies));
++}
++
++static ssize_t ahci_alpm_show_accounting(struct device *dev,
++ struct device_attribute *attr, char *buf)
++{
++ struct Scsi_Host *shost = class_to_shost(dev);
++ struct ata_port *ap = ata_shost_to_port(shost);
++ struct ahci_port_priv *pp;
++
++ if (!ap || ata_port_is_dummy(ap))
++ return -EINVAL;
++
++ pp = ap->private_data;
++
++ return sprintf(buf, "%u\n", pp->accounting_active);
++}
++
++static ssize_t ahci_alpm_set_accounting(struct device *dev,
++ struct device_attribute *attr,
++ const char *buf, size_t count)
++{
++ unsigned long flags;
++ struct Scsi_Host *shost = class_to_shost(dev);
++ struct ata_port *ap = ata_shost_to_port(shost);
++ struct ahci_port_priv *pp;
++ void __iomem *port_mmio;
++
++ if (!ap || ata_port_is_dummy(ap))
++ return 1;
++
++ pp = ap->private_data;
++ port_mmio = ahci_port_base(ap);
++
++ if (!pp)
++ return 1;
++ if (buf[0] == '0')
++ pp->accounting_active = 0;
++ if (buf[0] == '1')
++ pp->accounting_active = 1;
++
++ /* we need to enable the PHYRDY interrupt when we want accounting */
++ if (pp->accounting_active) {
++ spin_lock_irqsave(ap->lock, flags);
++ pp->intr_mask |= PORT_IRQ_PHYRDY;
++ writel(pp->intr_mask, port_mmio + PORT_IRQ_MASK);
++ spin_unlock_irqrestore(ap->lock, flags);
++ }
++ return count;
++}
++
++
+ static void ahci_port_intr(struct ata_port *ap)
+ {
+ void __iomem *port_mmio = ahci_port_base(ap);
+@@ -1670,6 +1855,7 @@ static void ahci_port_intr(struct ata_port *ap)
+ if ((hpriv->flags & AHCI_HFLAG_NO_HOTPLUG) &&
+ (status & PORT_IRQ_PHYRDY)) {
+ status &= ~PORT_IRQ_PHYRDY;
++ account_alpm_stats(ap);
+ ahci_scr_write(&ap->link, SCR_ERROR, ((1 << 16) | (1 << 18)));
+ }
+
diff --git a/kernel-patches/linux-2.6.35-rc4-annotate-device-pm.patch b/kernel-patches/linux-2.6.35-rc4-annotate-device-pm.patch
new file mode 100644
index 0000000..3a684e1
--- /dev/null
+++ b/kernel-patches/linux-2.6.35-rc4-annotate-device-pm.patch
@@ -0,0 +1,223 @@
+From: Arjan van de Ven <arjan@linux.intel.com>
+Subject: [PATCH v2] pm: Add runtime PM statistics
+
+In order for PowerTOP to be able to report how well the new runtime PM is
+working for the various drivers, the kernel needs to export some basic
+statistics in sysfs.
+
+This patch adds two sysfs files in the runtime PM domain that expose the
+total time a device has been active, and the time a device has been
+suspended.
+
+With this PowerTOP can compute the activity percentage
+
+Active %age = 100 * (delta active) / (delta active + delta suspended)
+
+and present the information to the user.
+
+I've written the PowerTOP code (slated for version 1.12) already, and the
+output looks like this:
+
+Runtime Device Power Management statistics
+Active Device name
+ 10.0% 06:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8101E/RTL8102E PCI Express Fast Ethernet controller
+
+
+[version 2: fix stat update bugs noticed by Alan Stern]
+
+Signed-off-by: Arjan van de Ven <arjan@linux.intel.com>
+
+
+diff --git a/drivers/base/power/runtime.c b/drivers/base/power/runtime.c
+index b0ec0e9..b78c401 100644
+--- a/drivers/base/power/runtime.c
++++ b/drivers/base/power/runtime.c
+@@ -123,6 +123,45 @@ int pm_runtime_idle(struct device *dev)
+ }
+ EXPORT_SYMBOL_GPL(pm_runtime_idle);
+
++
++/**
++ * update_pm_runtime_accounting - Update the time accounting of power states
++ * @dev: Device to update the accounting for
++ *
++ * In order to be able to have time accounting of the various power states
++ * (as used by programs such as PowerTOP to show the effectiveness of runtime
++ * PM), we need to track the time spent in each state.
++ * update_pm_runtime_accounting must be called each time before the
++ * runtime_status field is updated, to account the time in the old state
++ * correctly.
++ */
++void update_pm_runtime_accounting(struct device *dev)
++{
++ unsigned long now = jiffies;
++ int delta;
++
++ delta = now - dev->power.accounting_timestamp;
++
++ if (delta < 0)
++ delta = 0;
++
++ dev->power.accounting_timestamp = now;
++
++ if (dev->power.disable_depth > 0)
++ return;
++
++ if (dev->power.runtime_status == RPM_SUSPENDED)
++ dev->power.suspended_jiffies += delta;
++ else
++ dev->power.active_jiffies += delta;
++}
++
++static void __update_runtime_status(struct device *dev, enum rpm_status status)
++{
++ update_pm_runtime_accounting(dev);
++ dev->power.runtime_status = status;
++}
++
+ /**
+ * __pm_runtime_suspend - Carry out run-time suspend of given device.
+ * @dev: Device to suspend.
+@@ -197,7 +236,7 @@ int __pm_runtime_suspend(struct device *dev, bool from_wq)
+ goto repeat;
+ }
+
+- dev->power.runtime_status = RPM_SUSPENDING;
++ __update_runtime_status(dev, RPM_SUSPENDING);
+ dev->power.deferred_resume = false;
+
+ if (dev->bus && dev->bus->pm && dev->bus->pm->runtime_suspend) {
+@@ -228,7 +267,7 @@ int __pm_runtime_suspend(struct device *dev, bool from_wq)
+ }
+
+ if (retval) {
+- dev->power.runtime_status = RPM_ACTIVE;
++ __update_runtime_status(dev, RPM_ACTIVE);
+ if (retval == -EAGAIN || retval == -EBUSY) {
+ if (dev->power.timer_expires == 0)
+ notify = true;
+@@ -237,7 +276,7 @@ int __pm_runtime_suspend(struct device *dev, bool from_wq)
+ pm_runtime_cancel_pending(dev);
+ }
+ } else {
+- dev->power.runtime_status = RPM_SUSPENDED;
++ __update_runtime_status(dev, RPM_SUSPENDED);
+ pm_runtime_deactivate_timer(dev);
+
+ if (dev->parent) {
+@@ -381,7 +420,7 @@ int __pm_runtime_resume(struct device *dev, bool from_wq)
+ goto repeat;
+ }
+
+- dev->power.runtime_status = RPM_RESUMING;
++ __update_runtime_status(dev, RPM_RESUMING);
+
+ if (dev->bus && dev->bus->pm && dev->bus->pm->runtime_resume) {
+ spin_unlock_irq(&dev->power.lock);
+@@ -411,10 +450,10 @@ int __pm_runtime_resume(struct device *dev, bool from_wq)
+ }
+
+ if (retval) {
+- dev->power.runtime_status = RPM_SUSPENDED;
++ __update_runtime_status(dev, RPM_SUSPENDED);
+ pm_runtime_cancel_pending(dev);
+ } else {
+- dev->power.runtime_status = RPM_ACTIVE;
++ __update_runtime_status(dev, RPM_ACTIVE);
+ if (parent)
+ atomic_inc(&parent->power.child_count);
+ }
+@@ -848,7 +887,7 @@ int __pm_runtime_set_status(struct device *dev, unsigned int status)
+ }
+
+ out_set:
+- dev->power.runtime_status = status;
++ __update_runtime_status(dev, status);
+ dev->power.runtime_error = 0;
+ out:
+ spin_unlock_irqrestore(&dev->power.lock, flags);
+@@ -1077,6 +1116,7 @@ void pm_runtime_init(struct device *dev)
+ dev->power.request_pending = false;
+ dev->power.request = RPM_REQ_NONE;
+ dev->power.deferred_resume = false;
++ dev->power.accounting_timestamp = jiffies;
+ INIT_WORK(&dev->power.work, pm_runtime_work);
+
+ dev->power.timer_expires = 0;
+diff --git a/drivers/base/power/sysfs.c b/drivers/base/power/sysfs.c
+index a4c33bc..f45c316 100644
+--- a/drivers/base/power/sysfs.c
++++ b/drivers/base/power/sysfs.c
+@@ -6,6 +6,7 @@
+ #include <linux/string.h>
+ #include <linux/pm_runtime.h>
+ #include <asm/atomic.h>
++#include <linux/jiffies.h>
+ #include "power.h"
+
+ /*
+@@ -190,9 +191,34 @@ static ssize_t rtpm_status_show(struct device *dev,
+ return -EIO;
+ }
+
++static ssize_t rtpm_active_time_show(struct device *dev,
++ struct device_attribute *attr, char *buf)
++{
++ int ret;
++ spin_lock_irq(&dev->power.lock);
++ update_pm_runtime_accounting(dev);
++ ret = sprintf(buf, "%i\n", jiffies_to_msecs(dev->power.active_jiffies));
++ spin_unlock_irq(&dev->power.lock);
++ return ret;
++}
++
++static ssize_t rtpm_suspended_time_show(struct device *dev,
++ struct device_attribute *attr, char *buf)
++{
++ int ret;
++ spin_lock_irq(&dev->power.lock);
++ update_pm_runtime_accounting(dev);
++ ret = sprintf(buf, "%i\n",
++ jiffies_to_msecs(dev->power.suspended_jiffies));
++ spin_unlock_irq(&dev->power.lock);
++ return ret;
++}
++
+ static DEVICE_ATTR(runtime_usage, 0444, rtpm_usagecount_show, NULL);
+ static DEVICE_ATTR(runtime_active_kids, 0444, rtpm_children_show, NULL);
+ static DEVICE_ATTR(runtime_status, 0444, rtpm_status_show, NULL);
++static DEVICE_ATTR(runtime_active_time, 0444, rtpm_active_time_show, NULL);
++static DEVICE_ATTR(runtime_suspended_time, 0444, rtpm_suspended_time_show, NULL);
+ static DEVICE_ATTR(runtime_enabled, 0444, rtpm_enabled_show, NULL);
+
+ #endif
+@@ -234,6 +260,8 @@ static struct attribute * power_attrs[] = {
+ &dev_attr_async.attr,
+ #ifdef CONFIG_PM_RUNTIME
+ &dev_attr_runtime_usage.attr,
++ &dev_attr_runtime_suspended_time.attr,
++ &dev_attr_runtime_active_time.attr,
+ &dev_attr_runtime_active_kids.attr,
+ &dev_attr_runtime_status.attr,
+ &dev_attr_runtime_enabled.attr,
+diff --git a/include/linux/pm.h b/include/linux/pm.h
+index 8e258c7..dca597f 100644
+--- a/include/linux/pm.h
++++ b/include/linux/pm.h
+@@ -476,9 +476,15 @@ struct dev_pm_info {
+ enum rpm_request request;
+ enum rpm_status runtime_status;
+ int runtime_error;
++ unsigned long active_jiffies;
++ unsigned long suspended_jiffies;
++ unsigned long accounting_timestamp;
+ #endif
+ };
+
++extern void update_pm_runtime_accounting(struct device *dev);
++
++
+ /*
+ * The PM_EVENT_ messages are also used by drivers implementing the legacy
+ * suspend framework, based on the ->suspend() and ->resume() callbacks common
+
diff --git a/kernel-patches/linux-2.6.35-rc4-vfs-tracepoints.patch b/kernel-patches/linux-2.6.35-rc4-vfs-tracepoints.patch
new file mode 100644
index 0000000..b1509f0
--- /dev/null
+++ b/kernel-patches/linux-2.6.35-rc4-vfs-tracepoints.patch
@@ -0,0 +1,116 @@
+From f56c995174cf42d84fdad06beebacd56e700b05d Mon Sep 17 00:00:00 2001
+From: Arjan van de Ven <arjan@linux.intel.com>
+Date: Sun, 25 Oct 2009 15:37:04 -0700
+Subject: [PATCH] vfs: Add a trace point in the mark_inode_dirty function
+
+PowerTOP would like to be able to show who is keeping the disk
+busy by dirtying data. The most logical spot for this is in the vfs
+in the mark_inode_dirty() function, doing this on the block level
+is not possible because by the time the IO hits the block layer the
+guilty party can no longer be found ("kjournald" and "pdflush" are not
+useful answers to "who caused this file to be dirty).
+
+The trace point follows the same logic/style as the block_dump code
+and pretty much dumps the same data, just not to dmesg (and thus to
+/var/log/messages) but via the trace events streams.
+
+Signed-of-by: Arjan van de Ven <arjan@linux.intel.com>
+---
+ fs/fs-writeback.c | 4 +++
+ fs/inode.c | 4 +++
+ include/trace/events/vfs.h | 53 ++++++++++++++++++++++++++++++++++++++++++++
+ 3 files changed, 61 insertions(+), 0 deletions(-)
+ create mode 100644 include/trace/events/vfs.h
+
+Index: linux-2.6.34/fs/fs-writeback.c
+===================================================================
+--- linux-2.6.34.orig/fs/fs-writeback.c
++++ linux-2.6.34/fs/fs-writeback.c
+@@ -26,6 +26,7 @@
+ #include <linux/blkdev.h>
+ #include <linux/backing-dev.h>
+ #include <linux/buffer_head.h>
++#include <trace/events/vfs.h>
+ #include "internal.h"
+
+ #define inode_to_bdi(inode) ((inode)->i_mapping->backing_dev_info)
+@@ -1076,6 +1077,9 @@ void __mark_inode_dirty(struct inode *in
+ sb->s_op->dirty_inode(inode);
+ }
+
++ if (flags & (I_DIRTY_SYNC | I_DIRTY_DATASYNC | I_DIRTY_PAGES))
++ trace_dirty_inode(inode, current);
++
+ /*
+ * make sure that changes are seen by all cpus before we test i_state
+ * -- mikulas
+Index: linux-2.6.34/fs/inode.c
+===================================================================
+--- linux-2.6.34.orig/fs/inode.c
++++ linux-2.6.34/fs/inode.c
+@@ -1626,3 +1626,7 @@ void inode_init_owner(struct inode *inod
+ inode->i_mode = mode;
+ }
+ EXPORT_SYMBOL(inode_init_owner);
++
++#define CREATE_TRACE_POINTS
++#include <trace/events/vfs.h>
++
+Index: linux-2.6.34/include/trace/events/vfs.h
+===================================================================
+--- /dev/null
++++ linux-2.6.34/include/trace/events/vfs.h
+@@ -0,0 +1,53 @@
++#undef TRACE_SYSTEM
++#define TRACE_SYSTEM vfs
++
++#if !defined(_TRACE_VFS_H) || defined(TRACE_HEADER_MULTI_READ)
++#define _TRACE_VFS_H
++
++/*
++ * Tracepoint for dirtying an inode:
++ */
++TRACE_EVENT(dirty_inode,
++
++ TP_PROTO(struct inode *inode, struct task_struct *task),
++
++ TP_ARGS(inode, task),
++
++ TP_STRUCT__entry(
++ __array( char, comm, TASK_COMM_LEN )
++ __field( pid_t, pid )
++ __array( char, dev, 16 )
++ __array( char, file, 32 )
++ ),
++
++ TP_fast_assign(
++ if (inode->i_ino || strcmp(inode->i_sb->s_id, "bdev")) {
++ struct dentry *dentry;
++ const char *name = "?";
++
++ dentry = d_find_alias(inode);
++ if (dentry) {
++ spin_lock(&dentry->d_lock);
++ name = (const char *) dentry->d_name.name;
++ }
++
++ memcpy(__entry->comm, task->comm, TASK_COMM_LEN);
++ __entry->pid = task->pid;
++ strlcpy(__entry->file, name, 32);
++ strlcpy(__entry->dev, inode->i_sb->s_id, 16);
++
++ if (dentry) {
++ spin_unlock(&dentry->d_lock);
++ dput(dentry);
++ }
++ }
++ ),
++
++ TP_printk("task=%i (%s) file=%s dev=%s",
++ __entry->pid, __entry->comm, __entry->file, __entry->dev)
++);
++
++#endif /* _TRACE_VFS_H */
++
++/* This part must be outside protection */
++#include <trace/define_trace.h>
diff --git a/kernel-patches/readme.txt b/kernel-patches/readme.txt
new file mode 100644
index 0000000..5c38bda
--- /dev/null
+++ b/kernel-patches/readme.txt
@@ -0,0 +1,8 @@
+It's not our intention to have long term kernel patches for PowerTOP.
+However, occasionally we develop PowerTOP features that involve a kernel
+patch. We'd like our users to be able to use these latest features without
+having to wait upto 3 months for Linus to make a release with the kernel
+portion.
+
+We'll remove the patches in this directory aggressively as Linus
+releases kernels with these patches included.
diff --git a/misctips.c b/misctips.c
new file mode 100644
index 0000000..6254fcc
--- /dev/null
+++ b/misctips.c
@@ -0,0 +1,294 @@
+/*
+ * Copyright 2007, Intel Corporation
+ *
+ * This file is part of PowerTOP
+ *
+ * This program file 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; version 2 of the License.
+ *
+ * This program 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 program in a file named COPYING; if not, write to the
+ * Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301 USA
+ *
+ * Authors:
+ * Arjan van de Ven <arjan@linux.intel.com>
+ */
+
+#include <unistd.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <stdint.h>
+#include <sys/types.h>
+#include <dirent.h>
+
+#include "powertop.h"
+
+void nmi_watchdog_off(void)
+{
+ FILE *file;
+ file = fopen("/proc/sys/kernel/nmi_watchdog", "w");
+ if (!file)
+ return;
+ fprintf(file,"0\n");
+ fclose(file);
+}
+void suggest_nmi_watchdog(void)
+{
+ FILE *file;
+ int i;
+ char buffer[1024];
+ file = fopen("/proc/sys/kernel/nmi_watchdog", "r");
+ if (!file)
+ return;
+ memset(buffer, 0, 1024);
+ if (!fgets(buffer, 1023, file)) {
+ fclose(file);
+ return;
+ }
+ i = strtoul(buffer, NULL, 10);
+ if (i!=0) {
+ add_suggestion( _("Suggestion: disable the NMI watchdog by executing the following command:\n"
+ " echo 0 > /proc/sys/kernel/nmi_watchdog \n"
+ "The NMI watchdog is a kernel debug mechanism to detect deadlocks"), 25, 'N', _(" N - Turn NMI watchdog off "), nmi_watchdog_off);
+ }
+ fclose(file);
+}
+
+void suggest_hpet(void)
+{
+ FILE *file;
+ char buffer[1024];
+ file = fopen("/sys/devices/system/clocksource/clocksource0/available_clocksource", "r");
+ if (!file)
+ return;
+ memset(buffer, 0, 1024);
+
+ if (!fgets(buffer, 1023, file)) {
+ fclose(file);
+ return;
+ }
+
+ if (strstr(buffer, "hpet")) {
+ fclose(file);
+ return;
+ }
+
+ fclose(file);
+
+ add_suggestion( _("Suggestion: enable the HPET (Multimedia Timer) in your BIOS or add \n"
+ "the kernel patch to force-enable HPET. HPET support allows Linux to \n"
+ "have much longer sleep intervals."), 7, 0, NULL, NULL);
+}
+
+void ac97_power_on(void)
+{
+ FILE *file;
+ file = fopen("/sys/module/snd_ac97_codec/parameters/power_save", "w");
+ if (!file)
+ return;
+ fprintf(file,"1");
+ fclose(file);
+ if (access("/dev/dsp", F_OK))
+ return;
+ /* kick power mgmt update to the driver */
+ file = fopen("/dev/dsp", "w");
+ if (file) {
+ fprintf(file,"1");
+ fclose(file);
+ }
+}
+
+void suggest_ac97_powersave(void)
+{
+ FILE *file;
+ char buffer[1024];
+ file = fopen("/sys/module/snd_ac97_codec/parameters/power_save", "r");
+ if (!file)
+ return;
+ memset(buffer, 0, 1024);
+ if (!fgets(buffer, 1023, file)) {
+ fclose(file);
+ return;
+ }
+ if (buffer[0]=='N') {
+ add_suggestion( _("Suggestion: enable AC97 powersave mode by executing the following command:\n"
+ " echo 1 > /sys/module/snd_ac97_codec/parameters/power_save \n"
+ "or by passing power_save=1 as module parameter."), 25, 'A', _(" A - Turn AC97 powersave on "), ac97_power_on);
+ }
+ fclose(file);
+}
+
+void hda_power_on(void)
+{
+ FILE *file;
+
+ file = fopen("/sys/module/snd_hda_intel/parameters/power_save", "w");
+ if (!file)
+ return;
+ fprintf(file,"1");
+ fclose(file);
+ if (access("/dev/dsp", F_OK))
+ return;
+ /* kick power mgmt update to the driver */
+ file = fopen("/dev/dsp", "w");
+ if (file) {
+ fprintf(file,"1");
+ fclose(file);
+ }
+}
+
+void suggest_hda_powersave(void)
+{
+ FILE *file;
+ char buffer[1024];
+
+ file = fopen("/sys/module/snd_hda_intel/parameters/power_save", "r");
+ if (!file)
+ return;
+ memset(buffer, 0, 1024);
+ if (!fgets(buffer, 1023, file)) {
+ fclose(file);
+ return;
+ }
+ if (buffer[0]=='0') {
+ add_suggestion( _("Suggestion: enable HD audio powersave mode by executing the following command:\n"
+ " echo 1 > /sys/module/snd_hda_intel/parameters/power_save \n"
+ "or by passing power_save=1 as module parameter."), 25, 'A', _(" A - Turn HD audio powersave on "), hda_power_on);
+ }
+ fclose(file);
+}
+
+void noatime_on(void)
+{
+ system("/bin/mount -o remount,noatime,nodiratime /");
+}
+
+void suggest_noatime(void)
+{
+ FILE *file;
+ char buffer[1024];
+ int suggest = 0;
+ file = fopen("/proc/mounts","r");
+ if (!file)
+ return;
+ while (!feof(file)) {
+ memset(buffer, 0, 1024);
+ if (!fgets(buffer, 1023, file))
+ break;
+ if (strstr(buffer, " / ext3") && !strstr(buffer, "noatime") && !strstr(buffer, "relatime"))
+ suggest = 1;
+
+ }
+ if (suggest) {
+ add_suggestion( _("Suggestion: enable the noatime filesystem option by executing the following command:\n"
+ " mount -o remount,noatime / or by pressing the T key \n"
+ "noatime disables persistent access time of file accesses, which causes lots of disk IO."), 5, 'T', _(" T - enable noatime "), noatime_on);
+ }
+ fclose(file);
+}
+
+void powersched_on(void)
+{
+ FILE *file;
+ file = fopen("/sys/devices/system/cpu/sched_mc_power_savings", "w");
+ if (!file)
+ return;
+ fprintf(file,"1");
+ fclose(file);
+}
+
+void suggest_powersched(void)
+{
+ FILE *file;
+ char buffer[1024];
+ int suggest = 0;
+ int cpu;
+
+ file = fopen("/sys/devices/system/cpu/sched_mc_power_savings","r");
+ if (!file)
+ return;
+ memset(buffer, 0, 1024);
+ if (!fgets(buffer, 1023, file)) {
+ fclose(file);
+ return;
+ }
+ fclose(file);
+ if (buffer[0]!='0')
+ return;
+ /* ok so power saving scheduler is off; now to see if we actually have a multi-package system */
+ cpu = sysconf(_SC_NPROCESSORS_ONLN);
+
+ if (cpu<2)
+ return; /* UP system */
+
+ file = fopen("/proc/cpuinfo", "r");
+ suggest = 1;
+ if (!file)
+ return;
+ while (!feof(file)) {
+ memset(buffer, 0, 1024);
+ if (!fgets(buffer, 1023, file))
+ break;
+ if (strstr(buffer, "cpu cores")) {
+ char *c = strchr(buffer, ':');
+ if (!c)
+ continue;
+ c++;
+ if (strtoll(c, NULL, 10) >= cpu)
+ suggest = 0;
+ }
+ }
+ fclose(file);
+
+
+ if (suggest) {
+ add_suggestion( _("Suggestion: enable the power aware CPU scheduler with the following command:\n"
+ " echo 1 > /sys/devices/system/cpu/sched_mc_power_savings\n"
+ "or by pressing the C key."), 5, 'C', _(" C - Power aware CPU scheduler "), powersched_on);
+ }
+}
+
+
+void writeback_long(void)
+{
+ FILE *file;
+ file = fopen("/proc/sys/vm/dirty_writeback_centisecs", "w");
+ if (!file)
+ return;
+ fprintf(file,"1500");
+ fclose(file);
+}
+
+void suggest_writeback_time(void)
+{
+ FILE *file;
+ char buffer[1024];
+ int i;
+ file = fopen("/proc/sys/vm/dirty_writeback_centisecs", "r");
+ if (!file)
+ return;
+ memset(buffer, 0, 1024);
+ if (!fgets(buffer, 1023, file)) {
+ fclose(file);
+ return;
+ }
+ i = strtoull(buffer, NULL, 10);
+ if (i<1400) {
+ char line[1024];
+ sprintf(line,_("Suggestion: increase the VM dirty writeback time from %1.2f to 15 seconds with:\n"
+ " echo 1500 > /proc/sys/vm/dirty_writeback_centisecs \n"
+ "This wakes the disk up less frequently for background VM activity"),
+ i/100.0);
+ add_suggestion(line, 15, 'W', _(" W - Increase Writeback time "), writeback_long);
+ }
+ fclose(file);
+}
diff --git a/perf.c b/perf.c
new file mode 100644
index 0000000..1ce35a2
--- /dev/null
+++ b/perf.c
@@ -0,0 +1,282 @@
+/*
+ * Copyright 2009, Intel Corporation
+ *
+ * This file is part of PowerTOP
+ *
+ * Portions borrowed from the "perf" tool (C) Ingo Molnar and others
+ *
+ * This program file 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; version 2 of the License.
+ *
+ * This program 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 program in a file named COPYING; if not, write to the
+ * Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301 USA
+ *
+ * Authors:
+ * Arjan van de Ven <arjan@linux.intel.com>
+ */
+
+#define _GNU_SOURCE /* or _BSD_SOURCE or _SVID_SOURCE */
+#include <unistd.h>
+#include <sys/syscall.h> /* For SYS_xxx definitions */
+#include <stdio.h>
+#include <stdlib.h>
+#include <errno.h>
+#include <string.h>
+#include <sys/mman.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <sys/ioctl.h>
+
+#include <fcntl.h>
+
+#include "perf_event.h"
+
+#include "powertop.h"
+
+
+/* some people have stale headers */
+#ifndef __NR_perf_event_open
+#ifdef __i386__
+#define __NR_perf_event_open 336
+#endif
+#if __x86_64__
+#define __NR_perf_event_open 298
+#endif
+#endif
+
+static int perf_fd = -1;
+static void * perf_mmap;
+static void * data_mmap;
+
+static struct perf_event_mmap_page *pc;
+
+static inline int
+sys_perf_event_open(struct perf_event_attr *attr,
+ pid_t pid, int cpu, int group_fd,
+ unsigned long flags)
+{
+ attr->size = sizeof(*attr);
+ return syscall(__NR_perf_event_open, attr, pid, cpu,
+ group_fd, flags);
+}
+
+static int this_trace = 0;
+
+static int get_trace_type(void)
+{
+ FILE *file;
+ char line[4096];
+ file = fopen("/sys/kernel/debug/tracing/events/vfs/dirty_inode/id", "r");
+ if (!file)
+ return 0;
+
+ if (fgets(line, 4095, file) == NULL)
+ return 0;
+
+ this_trace = strtoull(line, NULL, 10);
+ fclose(file);
+ return this_trace;
+}
+
+static void create_perf_event(void)
+{
+ struct perf_event_attr attr;
+ int ret;
+
+ struct {
+ __u64 count;
+ __u64 time_enabled;
+ __u64 time_running;
+ __u64 id;
+ } read_data;
+
+ memset(&attr, 0, sizeof(attr));
+
+ attr.read_format = PERF_FORMAT_TOTAL_TIME_ENABLED |
+ PERF_FORMAT_TOTAL_TIME_RUNNING |
+ PERF_FORMAT_ID;
+
+ attr.sample_freq = 0;
+ attr.sample_period = 1;
+ attr.sample_type |= PERF_SAMPLE_RAW;
+
+ attr.mmap = 1;
+ attr.comm = 1;
+ attr.inherit = 0;
+ attr.disabled = 1;
+
+ attr.type = PERF_TYPE_TRACEPOINT;
+ attr.config = get_trace_type();
+
+ if (attr.config <= 0)
+ return;
+
+ perf_fd = sys_perf_event_open(&attr, -1, 0, -1, 0);
+
+ if (perf_fd < 0) {
+ fprintf(stderr, "Perf syscall failed: %i / %i (%s)\n", perf_fd, errno, strerror(errno));
+ return;
+ }
+ if (read(perf_fd, &read_data, sizeof(read_data)) == -1) {
+ perror("Unable to read perf file descriptor\n");
+ exit(-1);
+ }
+
+ fcntl(perf_fd, F_SETFL, O_NONBLOCK);
+
+ perf_mmap = mmap(NULL, (128+1)*getpagesize(),
+ PROT_READ | PROT_WRITE, MAP_SHARED, perf_fd, 0);
+ if (perf_mmap == MAP_FAILED) {
+ fprintf(stderr, "failed to mmap with %d (%s)\n", errno, strerror(errno));
+ return;
+ }
+
+ ret = ioctl(perf_fd, PERF_EVENT_IOC_ENABLE);
+
+ if (ret < 0)
+ fprintf(stderr, "failed to enable perf \n");
+
+ pc = perf_mmap;
+ data_mmap = perf_mmap + getpagesize();
+
+
+}
+
+
+void start_data_dirty_capture(void)
+{
+ create_perf_event();
+}
+
+void end_data_dirty_capture(void)
+{
+ if (perf_fd >= 0)
+ close(perf_fd);
+ perf_fd = -1;
+}
+
+struct trace_entry {
+ __u32 size;
+ unsigned short type;
+ unsigned char flags;
+ unsigned char preempt_count;
+ int pid;
+ int tgid;
+};
+
+#define TASK_COMM_LEN 16
+struct dirty_inode {
+ char comm[TASK_COMM_LEN];
+ int pid;
+ char dev[16];
+ char file[32];
+};
+
+
+struct sample_event{
+ struct perf_event_header header;
+ struct trace_entry trace;
+ struct dirty_inode inode;
+};
+
+
+static void parse_event(void *ptr, int verbose)
+{
+ char line[8192];
+ char pid[14];
+ char realcomm[17];
+ int suggested = 0;
+ struct sample_event *event = ptr;
+
+ memset(line, 0, sizeof(line));
+ memset(realcomm, 0, 17);
+
+ if (event->trace.type != this_trace)
+ return;
+
+ if (event->trace.size < sizeof(struct dirty_inode))
+ return;
+
+ if (event->inode.pid == 0)
+ return;
+
+ memcpy(realcomm, event->inode.comm, 16);
+
+ if (strcmp(realcomm, "powertop") == 0)
+ return;
+ /*
+ * btrfs kernel threads are internal and only
+ * do IO on behalf of others that also got recorded
+ */
+
+ if (strcmp(realcomm, "btrfs-") == 0)
+ return;
+ /*
+ * don't record "IO" to tmpfs or /proc
+ */
+ if (strcmp(event->inode.dev, "tmpfs") == 0)
+ return;
+ if (strcmp(event->inode.dev, "proc") == 0)
+ return;
+ if (strcmp(event->inode.dev, "pipefs") == 0)
+ return;
+ if (strcmp(event->inode.dev, "sysfs") == 0)
+ return;
+ if (strcmp(event->inode.dev, "anon_inodefs") == 0)
+ return;
+
+ sprintf(pid, "%i", event->inode.pid);
+ sprintf(line, "%s", realcomm);
+ push_line_pid(line, 0, 1, pid);
+
+ if (!suggested && strcmp(event->inode.file, "?")) {
+ suggested = 1;
+ sprintf(line,_("The program '%s' is writing to file '%s' on /dev/%s.\nThis prevents the disk from going to powersave mode."),
+ realcomm, event->inode.file, event->inode.dev);
+ add_suggestion(line, 30, 0, NULL, NULL);
+ }
+ if (verbose)
+ printf(_("The application '%s' is writing to file '%s' on /dev/%s\n"),
+ realcomm, event->inode.file, event->inode.dev);
+
+}
+
+void parse_data_dirty_buffer(void)
+{
+ struct perf_event_header *header;
+ int i = 0;
+
+ if (perf_fd < 0)
+ return;
+
+ if (dump)
+ printf(_("Disk accesses:\n"));
+
+ while (pc->data_tail != pc->data_head && i++ < 5000) {
+ while (pc->data_tail >= 128U * getpagesize())
+ pc->data_tail -= 128 * getpagesize();
+
+ header = data_mmap + pc->data_tail;
+
+ if (header->size == 0)
+ break;
+
+ pc->data_tail += header->size;
+
+ while (pc->data_tail >= 128U * getpagesize())
+ pc->data_tail -= 128 * getpagesize();
+
+ if (header->type == PERF_RECORD_SAMPLE)
+ parse_event(header, dump);
+ }
+ pc->data_tail = pc->data_head;
+}
diff --git a/perf_event.h b/perf_event.h
new file mode 100644
index 0000000..0f0097d
--- /dev/null
+++ b/perf_event.h
@@ -0,0 +1,863 @@
+/*
+ * Performance events:
+ *
+ * Copyright (C) 2008-2009, Thomas Gleixner <tglx@linutronix.de>
+ * Copyright (C) 2008-2009, Red Hat, Inc., Ingo Molnar
+ * Copyright (C) 2008-2009, Red Hat, Inc., Peter Zijlstra
+ *
+ * Data type definitions, declarations, prototypes.
+ *
+ * Started by: Thomas Gleixner and Ingo Molnar
+ *
+ * For licencing details see kernel-base/COPYING
+ */
+#ifndef _LINUX_PERF_EVENT_H
+#define _LINUX_PERF_EVENT_H
+
+#include <linux/types.h>
+#include <linux/ioctl.h>
+#include <asm/byteorder.h>
+
+/*
+ * User-space ABI bits:
+ */
+
+/*
+ * attr.type
+ */
+enum perf_type_id {
+ PERF_TYPE_HARDWARE = 0,
+ PERF_TYPE_SOFTWARE = 1,
+ PERF_TYPE_TRACEPOINT = 2,
+ PERF_TYPE_HW_CACHE = 3,
+ PERF_TYPE_RAW = 4,
+
+ PERF_TYPE_MAX, /* non-ABI */
+};
+
+/*
+ * Generalized performance event event_id types, used by the
+ * attr.event_id parameter of the sys_perf_event_open()
+ * syscall:
+ */
+enum perf_hw_id {
+ /*
+ * Common hardware events, generalized by the kernel:
+ */
+ PERF_COUNT_HW_CPU_CYCLES = 0,
+ PERF_COUNT_HW_INSTRUCTIONS = 1,
+ PERF_COUNT_HW_CACHE_REFERENCES = 2,
+ PERF_COUNT_HW_CACHE_MISSES = 3,
+ PERF_COUNT_HW_BRANCH_INSTRUCTIONS = 4,
+ PERF_COUNT_HW_BRANCH_MISSES = 5,
+ PERF_COUNT_HW_BUS_CYCLES = 6,
+
+ PERF_COUNT_HW_MAX, /* non-ABI */
+};
+
+/*
+ * Generalized hardware cache events:
+ *
+ * { L1-D, L1-I, LLC, ITLB, DTLB, BPU } x
+ * { read, write, prefetch } x
+ * { accesses, misses }
+ */
+enum perf_hw_cache_id {
+ PERF_COUNT_HW_CACHE_L1D = 0,
+ PERF_COUNT_HW_CACHE_L1I = 1,
+ PERF_COUNT_HW_CACHE_LL = 2,
+ PERF_COUNT_HW_CACHE_DTLB = 3,
+ PERF_COUNT_HW_CACHE_ITLB = 4,
+ PERF_COUNT_HW_CACHE_BPU = 5,
+
+ PERF_COUNT_HW_CACHE_MAX, /* non-ABI */
+};
+
+enum perf_hw_cache_op_id {
+ PERF_COUNT_HW_CACHE_OP_READ = 0,
+ PERF_COUNT_HW_CACHE_OP_WRITE = 1,
+ PERF_COUNT_HW_CACHE_OP_PREFETCH = 2,
+
+ PERF_COUNT_HW_CACHE_OP_MAX, /* non-ABI */
+};
+
+enum perf_hw_cache_op_result_id {
+ PERF_COUNT_HW_CACHE_RESULT_ACCESS = 0,
+ PERF_COUNT_HW_CACHE_RESULT_MISS = 1,
+
+ PERF_COUNT_HW_CACHE_RESULT_MAX, /* non-ABI */
+};
+
+/*
+ * Special "software" events provided by the kernel, even if the hardware
+ * does not support performance events. These events measure various
+ * physical and sw events of the kernel (and allow the profiling of them as
+ * well):
+ */
+enum perf_sw_ids {
+ PERF_COUNT_SW_CPU_CLOCK = 0,
+ PERF_COUNT_SW_TASK_CLOCK = 1,
+ PERF_COUNT_SW_PAGE_FAULTS = 2,
+ PERF_COUNT_SW_CONTEXT_SWITCHES = 3,
+ PERF_COUNT_SW_CPU_MIGRATIONS = 4,
+ PERF_COUNT_SW_PAGE_FAULTS_MIN = 5,
+ PERF_COUNT_SW_PAGE_FAULTS_MAJ = 6,
+
+ PERF_COUNT_SW_MAX, /* non-ABI */
+};
+
+/*
+ * Bits that can be set in attr.sample_type to request information
+ * in the overflow packets.
+ */
+enum perf_event_sample_format {
+ PERF_SAMPLE_IP = 1U << 0,
+ PERF_SAMPLE_TID = 1U << 1,
+ PERF_SAMPLE_TIME = 1U << 2,
+ PERF_SAMPLE_ADDR = 1U << 3,
+ PERF_SAMPLE_READ = 1U << 4,
+ PERF_SAMPLE_CALLCHAIN = 1U << 5,
+ PERF_SAMPLE_ID = 1U << 6,
+ PERF_SAMPLE_CPU = 1U << 7,
+ PERF_SAMPLE_PERIOD = 1U << 8,
+ PERF_SAMPLE_STREAM_ID = 1U << 9,
+ PERF_SAMPLE_RAW = 1U << 10,
+
+ PERF_SAMPLE_MAX = 1U << 11, /* non-ABI */
+};
+
+/*
+ * The format of the data returned by read() on a perf event fd,
+ * as specified by attr.read_format:
+ *
+ * struct read_format {
+ * { u64 value;
+ * { u64 time_enabled; } && PERF_FORMAT_ENABLED
+ * { u64 time_running; } && PERF_FORMAT_RUNNING
+ * { u64 id; } && PERF_FORMAT_ID
+ * } && !PERF_FORMAT_GROUP
+ *
+ * { u64 nr;
+ * { u64 time_enabled; } && PERF_FORMAT_ENABLED
+ * { u64 time_running; } && PERF_FORMAT_RUNNING
+ * { u64 value;
+ * { u64 id; } && PERF_FORMAT_ID
+ * } cntr[nr];
+ * } && PERF_FORMAT_GROUP
+ * };
+ */
+enum perf_event_read_format {
+ PERF_FORMAT_TOTAL_TIME_ENABLED = 1U << 0,
+ PERF_FORMAT_TOTAL_TIME_RUNNING = 1U << 1,
+ PERF_FORMAT_ID = 1U << 2,
+ PERF_FORMAT_GROUP = 1U << 3,
+
+ PERF_FORMAT_MAX = 1U << 4, /* non-ABI */
+};
+
+#define PERF_ATTR_SIZE_VER0 64 /* sizeof first published struct */
+
+/*
+ * Hardware event_id to monitor via a performance monitoring event:
+ */
+struct perf_event_attr {
+
+ /*
+ * Major type: hardware/software/tracepoint/etc.
+ */
+ __u32 type;
+
+ /*
+ * Size of the attr structure, for fwd/bwd compat.
+ */
+ __u32 size;
+
+ /*
+ * Type specific configuration information.
+ */
+ __u64 config;
+
+ union {
+ __u64 sample_period;
+ __u64 sample_freq;
+ };
+
+ __u64 sample_type;
+ __u64 read_format;
+
+ __u64 disabled : 1, /* off by default */
+ inherit : 1, /* children inherit it */
+ pinned : 1, /* must always be on PMU */
+ exclusive : 1, /* only group on PMU */
+ exclude_user : 1, /* don't count user */
+ exclude_kernel : 1, /* ditto kernel */
+ exclude_hv : 1, /* ditto hypervisor */
+ exclude_idle : 1, /* don't count when idle */
+ mmap : 1, /* include mmap data */
+ comm : 1, /* include comm data */
+ freq : 1, /* use freq, not period */
+ inherit_stat : 1, /* per task counts */
+ enable_on_exec : 1, /* next exec enables */
+ task : 1, /* trace fork/exit */
+ watermark : 1, /* wakeup_watermark */
+
+ __reserved_1 : 49;
+
+ union {
+ __u32 wakeup_events; /* wakeup every n events */
+ __u32 wakeup_watermark; /* bytes before wakeup */
+ };
+ __u32 __reserved_2;
+
+ __u64 __reserved_3;
+};
+
+/*
+ * Ioctls that can be done on a perf event fd:
+ */
+#define PERF_EVENT_IOC_ENABLE _IO ('$', 0)
+#define PERF_EVENT_IOC_DISABLE _IO ('$', 1)
+#define PERF_EVENT_IOC_REFRESH _IO ('$', 2)
+#define PERF_EVENT_IOC_RESET _IO ('$', 3)
+#define PERF_EVENT_IOC_PERIOD _IOW('$', 4, u64)
+#define PERF_EVENT_IOC_SET_OUTPUT _IO ('$', 5)
+
+enum perf_event_ioc_flags {
+ PERF_IOC_FLAG_GROUP = 1U << 0,
+};
+
+/*
+ * Structure of the page that can be mapped via mmap
+ */
+struct perf_event_mmap_page {
+ __u32 version; /* version number of this structure */
+ __u32 compat_version; /* lowest version this is compat with */
+
+ /*
+ * Bits needed to read the hw events in user-space.
+ *
+ * u32 seq;
+ * s64 count;
+ *
+ * do {
+ * seq = pc->lock;
+ *
+ * barrier()
+ * if (pc->index) {
+ * count = pmc_read(pc->index - 1);
+ * count += pc->offset;
+ * } else
+ * goto regular_read;
+ *
+ * barrier();
+ * } while (pc->lock != seq);
+ *
+ * NOTE: for obvious reason this only works on self-monitoring
+ * processes.
+ */
+ __u32 lock; /* seqlock for synchronization */
+ __u32 index; /* hardware event identifier */
+ __s64 offset; /* add to hardware event value */
+ __u64 time_enabled; /* time event active */
+ __u64 time_running; /* time event on cpu */
+
+ /*
+ * Hole for extension of the self monitor capabilities
+ */
+
+ __u64 __reserved[123]; /* align to 1k */
+
+ /*
+ * Control data for the mmap() data buffer.
+ *
+ * User-space reading the @data_head value should issue an rmb(), on
+ * SMP capable platforms, after reading this value -- see
+ * perf_event_wakeup().
+ *
+ * When the mapping is PROT_WRITE the @data_tail value should be
+ * written by userspace to reflect the last read data. In this case
+ * the kernel will not over-write unread data.
+ */
+ __u64 data_head; /* head in the data section */
+ __u64 data_tail; /* user-space written tail */
+};
+
+#define PERF_RECORD_MISC_CPUMODE_MASK (3 << 0)
+#define PERF_RECORD_MISC_CPUMODE_UNKNOWN (0 << 0)
+#define PERF_RECORD_MISC_KERNEL (1 << 0)
+#define PERF_RECORD_MISC_USER (2 << 0)
+#define PERF_RECORD_MISC_HYPERVISOR (3 << 0)
+
+struct perf_event_header {
+ __u32 type;
+ __u16 misc;
+ __u16 size;
+};
+
+enum perf_event_type {
+
+ /*
+ * The MMAP events record the PROT_EXEC mappings so that we can
+ * correlate userspace IPs to code. They have the following structure:
+ *
+ * struct {
+ * struct perf_event_header header;
+ *
+ * u32 pid, tid;
+ * u64 addr;
+ * u64 len;
+ * u64 pgoff;
+ * char filename[];
+ * };
+ */
+ PERF_RECORD_MMAP = 1,
+
+ /*
+ * struct {
+ * struct perf_event_header header;
+ * u64 id;
+ * u64 lost;
+ * };
+ */
+ PERF_RECORD_LOST = 2,
+
+ /*
+ * struct {
+ * struct perf_event_header header;
+ *
+ * u32 pid, tid;
+ * char comm[];
+ * };
+ */
+ PERF_RECORD_COMM = 3,
+
+ /*
+ * struct {
+ * struct perf_event_header header;
+ * u32 pid, ppid;
+ * u32 tid, ptid;
+ * u64 time;
+ * };
+ */
+ PERF_RECORD_EXIT = 4,
+
+ /*
+ * struct {
+ * struct perf_event_header header;
+ * u64 time;
+ * u64 id;
+ * u64 stream_id;
+ * };
+ */
+ PERF_RECORD_THROTTLE = 5,
+ PERF_RECORD_UNTHROTTLE = 6,
+
+ /*
+ * struct {
+ * struct perf_event_header header;
+ * u32 pid, ppid;
+ * u32 tid, ptid;
+ * u64 time;
+ * };
+ */
+ PERF_RECORD_FORK = 7,
+
+ /*
+ * struct {
+ * struct perf_event_header header;
+ * u32 pid, tid;
+ *
+ * struct read_format values;
+ * };
+ */
+ PERF_RECORD_READ = 8,
+
+ /*
+ * struct {
+ * struct perf_event_header header;
+ *
+ * { u64 ip; } && PERF_SAMPLE_IP
+ * { u32 pid, tid; } && PERF_SAMPLE_TID
+ * { u64 time; } && PERF_SAMPLE_TIME
+ * { u64 addr; } && PERF_SAMPLE_ADDR
+ * { u64 id; } && PERF_SAMPLE_ID
+ * { u64 stream_id;} && PERF_SAMPLE_STREAM_ID
+ * { u32 cpu, res; } && PERF_SAMPLE_CPU
+ * { u64 period; } && PERF_SAMPLE_PERIOD
+ *
+ * { struct read_format values; } && PERF_SAMPLE_READ
+ *
+ * { u64 nr,
+ * u64 ips[nr]; } && PERF_SAMPLE_CALLCHAIN
+ *
+ * #
+ * # The RAW record below is opaque data wrt the ABI
+ * #
+ * # That is, the ABI doesn't make any promises wrt to
+ * # the stability of its content, it may vary depending
+ * # on event, hardware, kernel version and phase of
+ * # the moon.
+ * #
+ * # In other words, PERF_SAMPLE_RAW contents are not an ABI.
+ * #
+ *
+ * { u32 size;
+ * char data[size];}&& PERF_SAMPLE_RAW
+ * };
+ */
+ PERF_RECORD_SAMPLE = 9,
+
+ PERF_RECORD_MAX, /* non-ABI */
+};
+
+enum perf_callchain_context {
+ PERF_CONTEXT_HV = (__u64)-32,
+ PERF_CONTEXT_KERNEL = (__u64)-128,
+ PERF_CONTEXT_USER = (__u64)-512,
+
+ PERF_CONTEXT_GUEST = (__u64)-2048,
+ PERF_CONTEXT_GUEST_KERNEL = (__u64)-2176,
+ PERF_CONTEXT_GUEST_USER = (__u64)-2560,
+
+ PERF_CONTEXT_MAX = (__u64)-4095,
+};
+
+#define PERF_FLAG_FD_NO_GROUP (1U << 0)
+#define PERF_FLAG_FD_OUTPUT (1U << 1)
+
+#ifdef __KERNEL__
+/*
+ * Kernel-internal data types and definitions:
+ */
+
+#ifdef CONFIG_PERF_EVENTS
+# include <asm/perf_event.h>
+#endif
+
+#include <linux/list.h>
+#include <linux/mutex.h>
+#include <linux/rculist.h>
+#include <linux/rcupdate.h>
+#include <linux/spinlock.h>
+#include <linux/hrtimer.h>
+#include <linux/fs.h>
+#include <linux/pid_namespace.h>
+#include <linux/workqueue.h>
+#include <asm/atomic.h>
+
+#define PERF_MAX_STACK_DEPTH 255
+
+struct perf_callchain_entry {
+ __u64 nr;
+ __u64 ip[PERF_MAX_STACK_DEPTH];
+};
+
+struct perf_raw_record {
+ u32 size;
+ void *data;
+};
+
+struct task_struct;
+
+/**
+ * struct hw_perf_event - performance event hardware details:
+ */
+struct hw_perf_event {
+#ifdef CONFIG_PERF_EVENTS
+ union {
+ struct { /* hardware */
+ u64 config;
+ unsigned long config_base;
+ unsigned long event_base;
+ int idx;
+ };
+ struct { /* software */
+ s64 remaining;
+ struct hrtimer hrtimer;
+ };
+ };
+ atomic64_t prev_count;
+ u64 sample_period;
+ u64 last_period;
+ atomic64_t period_left;
+ u64 interrupts;
+
+ u64 freq_count;
+ u64 freq_interrupts;
+ u64 freq_stamp;
+#endif
+};
+
+struct perf_event;
+
+/**
+ * struct pmu - generic performance monitoring unit
+ */
+struct pmu {
+ int (*enable) (struct perf_event *event);
+ void (*disable) (struct perf_event *event);
+ void (*read) (struct perf_event *event);
+ void (*unthrottle) (struct perf_event *event);
+};
+
+/**
+ * enum perf_event_active_state - the states of a event
+ */
+enum perf_event_active_state {
+ PERF_EVENT_STATE_ERROR = -2,
+ PERF_EVENT_STATE_OFF = -1,
+ PERF_EVENT_STATE_INACTIVE = 0,
+ PERF_EVENT_STATE_ACTIVE = 1,
+};
+
+struct file;
+
+struct perf_mmap_data {
+ struct rcu_head rcu_head;
+#ifdef CONFIG_PERF_USE_VMALLOC
+ struct work_struct work;
+#endif
+ int data_order;
+ int nr_pages; /* nr of data pages */
+ int writable; /* are we writable */
+ int nr_locked; /* nr pages mlocked */
+
+ atomic_t poll; /* POLL_ for wakeups */
+ atomic_t events; /* event_id limit */
+
+ atomic_long_t head; /* write position */
+ atomic_long_t done_head; /* completed head */
+
+ atomic_t lock; /* concurrent writes */
+ atomic_t wakeup; /* needs a wakeup */
+ atomic_t lost; /* nr records lost */
+
+ long watermark; /* wakeup watermark */
+
+ struct perf_event_mmap_page *user_page;
+ void *data_pages[0];
+};
+
+struct perf_pending_entry {
+ struct perf_pending_entry *next;
+ void (*func)(struct perf_pending_entry *);
+};
+
+/**
+ * struct perf_event - performance event kernel representation:
+ */
+struct perf_event {
+#ifdef CONFIG_PERF_EVENTS
+ struct list_head group_entry;
+ struct list_head event_entry;
+ struct list_head sibling_list;
+ int nr_siblings;
+ struct perf_event *group_leader;
+ struct perf_event *output;
+ const struct pmu *pmu;
+
+ enum perf_event_active_state state;
+ atomic64_t count;
+
+ /*
+ * These are the total time in nanoseconds that the event
+ * has been enabled (i.e. eligible to run, and the task has
+ * been scheduled in, if this is a per-task event)
+ * and running (scheduled onto the CPU), respectively.
+ *
+ * They are computed from tstamp_enabled, tstamp_running and
+ * tstamp_stopped when the event is in INACTIVE or ACTIVE state.
+ */
+ u64 total_time_enabled;
+ u64 total_time_running;
+
+ /*
+ * These are timestamps used for computing total_time_enabled
+ * and total_time_running when the event is in INACTIVE or
+ * ACTIVE state, measured in nanoseconds from an arbitrary point
+ * in time.
+ * tstamp_enabled: the notional time when the event was enabled
+ * tstamp_running: the notional time when the event was scheduled on
+ * tstamp_stopped: in INACTIVE state, the notional time when the
+ * event was scheduled off.
+ */
+ u64 tstamp_enabled;
+ u64 tstamp_running;
+ u64 tstamp_stopped;
+
+ struct perf_event_attr attr;
+ struct hw_perf_event hw;
+
+ struct perf_event_context *ctx;
+ struct file *filp;
+
+ /*
+ * These accumulate total time (in nanoseconds) that children
+ * events have been enabled and running, respectively.
+ */
+ atomic64_t child_total_time_enabled;
+ atomic64_t child_total_time_running;
+
+ /*
+ * Protect attach/detach and child_list:
+ */
+ struct mutex child_mutex;
+ struct list_head child_list;
+ struct perf_event *parent;
+
+ int oncpu;
+ int cpu;
+
+ struct list_head owner_entry;
+ struct task_struct *owner;
+
+ /* mmap bits */
+ struct mutex mmap_mutex;
+ atomic_t mmap_count;
+ struct perf_mmap_data *data;
+
+ /* poll related */
+ wait_queue_head_t waitq;
+ struct fasync_struct *fasync;
+
+ /* delayed work for NMIs and such */
+ int pending_wakeup;
+ int pending_kill;
+ int pending_disable;
+ struct perf_pending_entry pending;
+
+ atomic_t event_limit;
+
+ void (*destroy)(struct perf_event *);
+ struct rcu_head rcu_head;
+
+ struct pid_namespace *ns;
+ u64 id;
+#endif
+};
+
+/**
+ * struct perf_event_context - event context structure
+ *
+ * Used as a container for task events and CPU events as well:
+ */
+struct perf_event_context {
+ /*
+ * Protect the states of the events in the list,
+ * nr_active, and the list:
+ */
+ spinlock_t lock;
+ /*
+ * Protect the list of events. Locking either mutex or lock
+ * is sufficient to ensure the list doesn't change; to change
+ * the list you need to lock both the mutex and the spinlock.
+ */
+ struct mutex mutex;
+
+ struct list_head group_list;
+ struct list_head event_list;
+ int nr_events;
+ int nr_active;
+ int is_active;
+ int nr_stat;
+ atomic_t refcount;
+ struct task_struct *task;
+
+ /*
+ * Context clock, runs when context enabled.
+ */
+ u64 time;
+ u64 timestamp;
+
+ /*
+ * These fields let us detect when two contexts have both
+ * been cloned (inherited) from a common ancestor.
+ */
+ struct perf_event_context *parent_ctx;
+ u64 parent_gen;
+ u64 generation;
+ int pin_count;
+ struct rcu_head rcu_head;
+};
+
+/**
+ * struct perf_event_cpu_context - per cpu event context structure
+ */
+struct perf_cpu_context {
+ struct perf_event_context ctx;
+ struct perf_event_context *task_ctx;
+ int active_oncpu;
+ int max_pertask;
+ int exclusive;
+
+ /*
+ * Recursion avoidance:
+ *
+ * task, softirq, irq, nmi context
+ */
+ int recursion[4];
+};
+
+struct perf_output_handle {
+ struct perf_event *event;
+ struct perf_mmap_data *data;
+ unsigned long head;
+ unsigned long offset;
+ int nmi;
+ int sample;
+ int locked;
+ unsigned long flags;
+};
+
+#ifdef CONFIG_PERF_EVENTS
+
+/*
+ * Set by architecture code:
+ */
+extern int perf_max_events;
+
+extern const struct pmu *hw_perf_event_init(struct perf_event *event);
+
+extern void perf_event_task_sched_in(struct task_struct *task, int cpu);
+extern void perf_event_task_sched_out(struct task_struct *task,
+ struct task_struct *next, int cpu);
+extern void perf_event_task_tick(struct task_struct *task, int cpu);
+extern int perf_event_init_task(struct task_struct *child);
+extern void perf_event_exit_task(struct task_struct *child);
+extern void perf_event_free_task(struct task_struct *task);
+extern void set_perf_event_pending(void);
+extern void perf_event_do_pending(void);
+extern void perf_event_print_debug(void);
+extern void __perf_disable(void);
+extern bool __perf_enable(void);
+extern void perf_disable(void);
+extern void perf_enable(void);
+extern int perf_event_task_disable(void);
+extern int perf_event_task_enable(void);
+extern int hw_perf_group_sched_in(struct perf_event *group_leader,
+ struct perf_cpu_context *cpuctx,
+ struct perf_event_context *ctx, int cpu);
+extern void perf_event_update_userpage(struct perf_event *event);
+
+struct perf_sample_data {
+ u64 type;
+
+ u64 ip;
+ struct {
+ u32 pid;
+ u32 tid;
+ } tid_entry;
+ u64 time;
+ u64 addr;
+ u64 id;
+ u64 stream_id;
+ struct {
+ u32 cpu;
+ u32 reserved;
+ } cpu_entry;
+ u64 period;
+ struct perf_callchain_entry *callchain;
+ struct perf_raw_record *raw;
+};
+
+extern void perf_output_sample(struct perf_output_handle *handle,
+ struct perf_event_header *header,
+ struct perf_sample_data *data,
+ struct perf_event *event);
+extern void perf_prepare_sample(struct perf_event_header *header,
+ struct perf_sample_data *data,
+ struct perf_event *event,
+ struct pt_regs *regs);
+
+extern int perf_event_overflow(struct perf_event *event, int nmi,
+ struct perf_sample_data *data,
+ struct pt_regs *regs);
+
+/*
+ * Return 1 for a software event, 0 for a hardware event
+ */
+static inline int is_software_event(struct perf_event *event)
+{
+ return (event->attr.type != PERF_TYPE_RAW) &&
+ (event->attr.type != PERF_TYPE_HARDWARE) &&
+ (event->attr.type != PERF_TYPE_HW_CACHE);
+}
+
+extern atomic_t perf_swevent_enabled[PERF_COUNT_SW_MAX];
+
+extern void __perf_sw_event(u32, u64, int, struct pt_regs *, u64);
+
+static inline void
+perf_sw_event(u32 event_id, u64 nr, int nmi, struct pt_regs *regs, u64 addr)
+{
+ if (atomic_read(&perf_swevent_enabled[event_id]))
+ __perf_sw_event(event_id, nr, nmi, regs, addr);
+}
+
+extern void __perf_event_mmap(struct vm_area_struct *vma);
+
+static inline void perf_event_mmap(struct vm_area_struct *vma)
+{
+ if (vma->vm_flags & VM_EXEC)
+ __perf_event_mmap(vma);
+}
+
+extern void perf_event_comm(struct task_struct *tsk);
+extern void perf_event_fork(struct task_struct *tsk);
+
+extern struct perf_callchain_entry *perf_callchain(struct pt_regs *regs);
+
+extern int sysctl_perf_event_paranoid;
+extern int sysctl_perf_event_mlock;
+extern int sysctl_perf_event_sample_rate;
+
+extern void perf_event_init(void);
+extern void perf_tp_event(int event_id, u64 addr, u64 count,
+ void *record, int entry_size);
+
+#ifndef perf_misc_flags
+#define perf_misc_flags(regs) (user_mode(regs) ? PERF_RECORD_MISC_USER : \
+ PERF_RECORD_MISC_KERNEL)
+#define perf_instruction_pointer(regs) instruction_pointer(regs)
+#endif
+
+extern int perf_output_begin(struct perf_output_handle *handle,
+ struct perf_event *event, unsigned int size,
+ int nmi, int sample);
+extern void perf_output_end(struct perf_output_handle *handle);
+extern void perf_output_copy(struct perf_output_handle *handle,
+ const void *buf, unsigned int len);
+#else
+static inline void
+perf_event_task_sched_in(struct task_struct *task, int cpu) { }
+static inline void
+perf_event_task_sched_out(struct task_struct *task,
+ struct task_struct *next, int cpu) { }
+static inline void
+perf_event_task_tick(struct task_struct *task, int cpu) { }
+static inline int perf_event_init_task(struct task_struct *child) { return 0; }
+static inline void perf_event_exit_task(struct task_struct *child) { }
+static inline void perf_event_free_task(struct task_struct *task) { }
+static inline void perf_event_do_pending(void) { }
+static inline void perf_event_print_debug(void) { }
+static inline void perf_disable(void) { }
+static inline void perf_enable(void) { }
+static inline int perf_event_task_disable(void) { return -EINVAL; }
+static inline int perf_event_task_enable(void) { return -EINVAL; }
+
+static inline void
+perf_sw_event(u32 event_id, u64 nr, int nmi,
+ struct pt_regs *regs, u64 addr) { }
+
+static inline void perf_event_mmap(struct vm_area_struct *vma) { }
+static inline void perf_event_comm(struct task_struct *tsk) { }
+static inline void perf_event_fork(struct task_struct *tsk) { }
+static inline void perf_event_init(void) { }
+
+#endif
+
+#define perf_output_put(handle, x) \
+ perf_output_copy((handle), &(x), sizeof(x))
+
+#endif /* __KERNEL__ */
+#endif /* _LINUX_PERF_EVENT_H */
diff --git a/po/Makefile b/po/Makefile
new file mode 100644
index 0000000..e8a6ca1
--- /dev/null
+++ b/po/Makefile
@@ -0,0 +1,34 @@
+SRC=$(wildcard *.po)
+OBJ= $(SRC:.po=.mo)
+INST= $(SRC:.po=.inst)
+
+translations: $(OBJ)
+
+%.mo: %.po
+ msgfmt -o $@ $<
+
+clean:
+ rm -f *.mo *~ powertop.pot
+
+powertop.pot: Makefile
+ xgettext -C -s -k_ -o powertop.pot ../*.c ../*.h
+
+# hack to automate installation dynamicaly, without previous knowledge of
+# the po/mo file list (we fool make by pretending the need for .inst files).
+install: $(OBJ) $(INST)
+
+%.inst: %.mo
+ mkdir -p $(DESTDIR)$(LOCALESDIR)/$*/LC_MESSAGES/
+ -cp -f $< $(DESTDIR)$(LOCALESDIR)/$*/LC_MESSAGES/powertop.mo
+
+uptrans: $(LG).po
+
+$(LG).po: powertop.pot
+ifdef LG
+ msgmerge -U $@ $<
+ msgfmt --statistics $@
+else
+ @echo "Usage : make uptrans LG=xx # with xx = de, es, fi ..."
+ @exit 1
+endif
+
diff --git a/po/de.po b/po/de.po
new file mode 100644
index 0000000..bc15422
--- /dev/null
+++ b/po/de.po
@@ -0,0 +1,615 @@
+# translation of de.po to
+# Johannes Engel <j-engel@gmx.de>, 2007.
+# Johannes Engel <j-engel@web.de>, 2007.
+# Friedrich Oslage <bluebird@mnet-online.de>, 2007.
+# Martin Kortmann <email@kortmann.de>, 2007.
+# Copyright (C) 2007
+# This file is distributed under the same license as the PowerTop package.
+msgid ""
+msgstr ""
+"Project-Id-Version: de\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2009-08-12 15:39-0700\n"
+"PO-Revision-Date: 2010-03-28 04:22-0800\n"
+"Last-Translator: Andreas Machoy <amachoy@hotmail.com>\n"
+"Language-Team: <de@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=n!=1;\n"
+"X-Poedit-Language: German\n"
+"X-Poedit-SourceCharset: utf-8\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#: ../powertop.c:303 ../powertop.c:306
+#, c-format
+msgid " <interrupt> : %s"
+msgstr " <interrupt> : %s"
+
+#: ../powertop.c:1072
+msgid " <interrupt> : extra timer interrupt"
+msgstr " <interrupt> : extra timer interrupt"
+
+#: ../powertop.c:301
+#, c-format
+msgid " <kernel IPI> : %s"
+msgstr " <Kernel IPI> : %s"
+
+#: ../powertop.c:821
+#, c-format
+msgid " -d, --dump read wakeups once and print list of top offenders\n"
+msgstr " -d, --dump Ermittelt einmal alle Daten und listet diese auf\n"
+
+#: ../powertop.c:824
+#, c-format
+msgid " -h, --help Show this help message\n"
+msgstr " -h, --help Zeigt diese Meldung\n"
+
+#: ../powertop.c:823
+#, c-format
+msgid " -p, --pids show pids in wakeups list\n"
+msgstr " -p, --pids pids in Wakeups-Liste anzeigen\n"
+
+#: ../powertop.c:822
+#, c-format
+msgid " -t, --time=DOUBLE default time to gather data in seconds\n"
+msgstr " -t, --time=DOUBLE Zeitintervall in dem Daten gesammelt werden\n"
+
+#: ../powertop.c:825
+#, c-format
+msgid " -v, --version Show version information and exit\n"
+msgstr " -v, --version Zeige Versions-Informationen und beende\n"
+
+#: ../misctips.c:125
+msgid " A - Turn AC97 powersave on "
+msgstr " A - AC97 Stromsparfunktionen einschalten"
+
+#: ../misctips.c:165
+msgid " A - Turn HD audio powersave on "
+msgstr " A - HD-Audio Stromsparfunktionen einschalten"
+
+#: ../bluetooth.c:146
+msgid " B - Turn Bluetooth off "
+msgstr " B - Bluetooth ausschalten"
+
+#: ../misctips.c:257
+msgid " C - Power aware CPU scheduler "
+msgstr " C - Stromsparenden CPU Scheduler aktivieren"
+
+#: ../wifi-new.c:196
+msgid " D - disable wireless "
+msgstr " D - WLAN deaktivieren"
+
+#: ../wireless.c:322
+msgid " I - disable WIFI Radio "
+msgstr " I - WIFI Sender ausschalten"
+
+#: ../process.c:84
+#, c-format
+msgid " K - kill %s "
+msgstr " K - kille %s "
+
+#: ../misctips.c:61
+msgid " N - Turn NMI watchdog off "
+msgstr " N - NMI Wächter ausschalten"
+
+#: ../cpufreq.c:118
+msgid " O - enable Ondemand governor "
+msgstr " O - \"Ondemand governor\" aktivieren"
+
+#: ../wifi-new.c:201
+msgid " P - Enable wireless power saving "
+msgstr " P - WLAN Stromsparfunktionen aktivieren "
+
+#: ../display.c:108
+msgid " Q - Quit "
+msgstr " Q - Beenden"
+
+#: ../display.c:109
+msgid " R - Refresh "
+msgstr " R - Aktualisieren"
+
+#: ../sata.c:104
+msgid " S - SATA Link Power Management "
+msgstr " S - SATA Link Stromsparfunktionen einschalten "
+
+#: ../misctips.c:194
+msgid " T - enable noatime "
+msgstr " T - \"noatime\" aktivieren"
+
+#: ../urbnum.c:222 ../usb.c:116
+msgid " U - Enable USB suspend "
+msgstr " U - USB suspend einschalten"
+
+#: ../xrandr.c:78
+msgid " V - Disable TV out "
+msgstr " I - TV Ausgang ausschalten"
+
+#: ../wireless.c:311 ../wireless.c:317
+msgid " W - Enable wireless power saving "
+msgstr " W - WLAN Stromsparfunktionen aktivieren "
+
+#: ../misctips.c:292
+msgid " W - Increase Writeback time "
+msgstr " W - Writeback time erhöhen"
+
+#: ../ethernet.c:131
+msgid " W - disable Wake-On-Lan "
+msgstr " I - \"Wake-On-Lan\" ausschalten"
+
+#: ../cpufreqstats.c:91
+#, c-format
+msgid "%6.2f Ghz"
+msgstr "%6.2f GHz"
+
+#: ../cpufreqstats.c:88
+#, c-format
+msgid "%6lli Mhz"
+msgstr "%6lli MHz"
+
+#: ../cpufreqstats.c:85
+#, c-format
+msgid "%9lli"
+msgstr "%9lli"
+
+#: ../powertop.c:983
+#, c-format
+msgid "%s\t%5.1fms (%4.1f%%)\n"
+msgstr "%s\t%5.1fms (%4.1f%%)\n"
+
+#: ../display.c:205
+#, c-format
+msgid "(long term: %3.1fW,/%3.1fh)"
+msgstr "(Langzeit: %3.1fW, %3.1f Std.)"
+
+#: ../display.c:301
+msgid "(which is CONFIG_DEBUG_KERNEL=y in the config file)\n"
+msgstr "(verfügbar über CONFIG_DEBUG_KERNEL=y in der config Datei)\n"
+
+#: ../powertop.c:960
+#, c-format
+msgid "< Detailed C-state information is not available.>\n"
+msgstr "<Detaillierte C-Status Informationen sind nur für Mobilprozessoren verfügbar.>\n"
+
+#: ../powertop.c:1040
+msgid "<kernel core>"
+msgstr "<Kernel Kern>"
+
+#: ../powertop.c:1036 ../powertop.c:1038
+msgid "<kernel module>"
+msgstr "<Kernel Modul>"
+
+#: ../urbnum.c:217
+#, c-format
+msgid ""
+"A USB device is active %4.1f%% of the time:\n"
+"%s"
+msgstr ""
+"Ein USB Gerät ist %4.1f%% der Zeit aktiv:\n"
+"%s"
+
+#: ../urbnum.c:186
+msgid "Active Device name"
+msgstr "Name des aktiven Gerätes"
+
+#: ../powertop.c:969
+#, c-format
+msgid "C0 (cpu running) (%4.1f%%)\n"
+msgstr "C0 (Prozessor läuft) (%4.1f%%)\n"
+
+#: ../powertop.c:966
+#, c-format
+msgid "Cn\t Avg residency\n"
+msgstr "Cn\t Verweildauer\n"
+
+#: ../powertop.c:903
+#, c-format
+msgid "Collecting data for %i seconds \n"
+msgstr "Sammle Daten für %i Sekunden \n"
+
+#: ../ethernet.c:128
+msgid ""
+"Disable Ethernet Wake-On-Lan with the following command:\n"
+" ethtool -s eth0 wol d \n"
+"Wake-on-Lan keeps the phy active, this costs power."
+msgstr ""
+"Deaktivieren Sie mit folgendem Befehl die \"Wake-On-Lan\" Funktion:\n"
+" ethtool -s eth0 wol d\n"
+"\"Wake-On-Lan\" hält die Physikalische Netzwerkverbindung aufrecht."
+
+#: ../powertop.c:1187
+msgid ""
+"Disable the SE-Alert software by removing the 'setroubleshoot-server' rpm\n"
+"SE-Alert alerts you about SELinux policy violations, but also\n"
+"has a bug that wakes it up 10 times per second."
+msgstr ""
+"Deaktivieren Sie das Programm \"SE-Alert\" indem Sie das Packet\n"
+"\"setroubleshoot-server\" entfernen. SE-Alert alamiert Sie über SELinux\n"
+"Regelverletzungen, enthält aber einen Fehler, der das System oft aufweckt."
+
+#: ../display.c:304
+msgid "No detailed statistics available; PowerTOP needs root privileges for that\n"
+msgstr "Keine detaillierte Statistik verfügbar; PowerTOP benötigt root-Rechte um diese anzeigen zu können.\n"
+
+#: ../display.c:299
+msgid "No detailed statistics available; please enable the CONFIG_TIMER_STATS kernel option\n"
+msgstr "Keine detaillierte Statistik verfügbar; aktivieren Sie CONFIG_TIMER_STATS in Ihrem Kernel.\n"
+
+#: ../display.c:302
+msgid "Note: this is only available in 2.6.21 and later kernels\n"
+msgstr "Achtung: Das funktioniert erst ab Kernel 2.6.21\n"
+
+#: ../cpufreqstats.c:115
+#, c-format
+msgid "P-states (frequencies)\n"
+msgstr "P-States (Frequenzen)\n"
+
+#: ../powertop.c:170 ../powertop.c:306
+msgid "PS/2 keyboard/mouse/touchpad"
+msgstr "PS/2 keyboard/mouse/touchpad"
+
+#: ../display.c:208
+#, c-format
+msgid "Power usage (5 minute ACPI estimate) : %5.1f W (%3.1f hours left)"
+msgstr "Stromverbrauch (5 Min. ACPI-Schätzung): %5.1fW (%3.1f Stunden verbleibend)"
+
+#: ../display.c:201
+#, c-format
+msgid "Power usage (ACPI estimate): %3.1fW (%3.1f hours)"
+msgstr "Stromverbrauch (ACPI-Schätzung): %3.1fW (%3.1f Std.)"
+
+#: ../display.c:238
+#, c-format
+msgid "Power usage: %3.1fW (%3.1f hours)"
+msgstr "Stromverbrauch: %3.1fW (%3.1f Std.)"
+
+#: ../powertop.c:902
+#, c-format
+msgid "PowerTOP needs to be run as root to collect enough information\n"
+msgstr "Sie müssen PowerTOP als root ausführen, um alle Daten sehen zu können\n"
+
+#: ../urbnum.c:185
+msgid "Recent USB suspend statistics"
+msgstr "aktuelle \"USB suspend\" Statistiken"
+
+#: ../powertop.c:1181
+msgid ""
+"Suggestion: Disable 'hal' from polling your cdrom with: \n"
+"hal-disable-polling --device /dev/cdrom 'hal' is the component that auto-opens a\n"
+"window if you plug in a CD but disables SATA power saving from kicking in."
+msgstr ""
+"Vorschlag: Hindern sie mit: \"hal-disable-polling --device /dev/cdrom\"\n"
+"hal daran das CD-Laufwerk abzufragen. hal startet nach dem Einlegen einer CD\n"
+"autom. einen Dateimanager. Die Abfragen verhindern den SATA Energiesparmodus."
+
+#: ../powertop.c:1155 ../powertop.c:1159
+msgid ""
+"Suggestion: Disable or remove 'beagle' from your system. \n"
+"Beagle is the program that indexes for easy desktop search, however it's \n"
+"not very efficient and costs a significant amount of battery life."
+msgstr ""
+"Vorschlag: Deaktivieren oder entfernen Sie 'beagle'.\n"
+"Beagle indiziert die Dateien Ihres Computers für die Suche, reduziert dafür\n"
+" aber signifikant Ihre Akkulaufzeit."
+
+#: ../powertop.c:1168
+msgid ""
+"Suggestion: Disable or remove 'gnome-power-manager' from your system. \n"
+"Older versions of gnome-power-manager wake up far more often than \n"
+"needed costing you some power."
+msgstr ""
+"Vorschlag: Deaktivieren oder entfernen Sie den 'gnome-power-manager'.\n"
+"Entgegen ihrer Bezeichnung verbrauchen einige Versionen des\n"
+"gnome-power-manager mehr Energie als sie einsparen."
+
+#: ../powertop.c:1174
+msgid ""
+"Suggestion: Disable or remove 'pcscd' from your system. \n"
+"pcscd tends to keep the USB subsystem out of power save mode\n"
+"and your processor out of deeper powersave states."
+msgstr ""
+"Vorschlag: Deaktivieren oder entfernen Sie 'pcscd'. pcscd tendiert dazu,\n"
+"zu verhindern, dass das USB-Subsystem in den Energiesparmodus wechseln\n"
+"kann. Damit kann auch die CPU in keinen tieferen Energiesparmodus schalten."
+
+#: ../powertop.c:1143
+msgid ""
+"Suggestion: Disable the CONFIG_IRQBALANCE kernel configuration option.\n"
+"The in-kernel irq balancer is obsolete and wakes the CPU up far more than needed."
+msgstr ""
+"Vorschlag: Deaktivieren Sie die Option CONFIG_IRQBALANCE Ihres Kernels.\n"
+"Der Kernel-eigene Irqbalancer ist veraltet und ineffizient."
+
+#: ../wireless.c:320
+#, c-format
+msgid ""
+"Suggestion: Disable the unused WIFI radio by executing the following command:\n"
+" echo 1 > %s \n"
+msgstr ""
+"Vorschlag: Deaktivieren Sie den ungenutzten WIFI-Sender mit folgendem Befehl:\n"
+" echo 1 > %s \n"
+
+#: ../wifi-new.c:194
+#, c-format
+msgid ""
+"Suggestion: Disable the unused WIFI radio by setting the interface down:\n"
+" ifconfig %s down\n"
+msgstr ""
+"Vorschlag: Deaktivieren Sie den ungenutzten WIFI-Sender mit folgendem Befehl:\n"
+" ifconfig %s down\n"
+
+#: ../bluetooth.c:144
+msgid ""
+"Suggestion: Disable the unused bluetooth interface with the following command:\n"
+" hciconfig hci0 down ; rmmod hci_usb\n"
+"Bluetooth is a radio and consumes quite some power, and keeps USB busy as well.\n"
+msgstr ""
+"Vorschlag: Deaktivieren Sie die ungenutzte Bluetooth-Schnittstelle mit\n"
+"folgendem Befehl: hciconfig hci0 down ; rmmod hci_usb\n"
+"Bluetooth verbraucht zum Senden Strom und belastet die USB-Schnittstelle.\n"
+
+#: ../sata.c:101
+msgid ""
+"Suggestion: Enable SATA ALPM link power management via: \n"
+" echo min_power > /sys/class/scsi_host/host0/link_power_management_policy\n"
+"or press the S key."
+msgstr ""
+"Vorschlag: Aktivieren Sie das SATA ALPM link power Management mit: echo min_power > /sys/class/scsi_host/host0/link_power_management_policy\n"
+"oder durch betätigen der S-Taste."
+
+#: ../usb.c:114
+msgid "Suggestion: Enable USB autosuspend for non-input devices by pressing the U key\n"
+msgstr "Vorschlag: Aktivieren Sie USB-Autosuspend für Nicht-Eingabegeräte inden Sie die U-Taste betätigen\n"
+
+#: ../powertop.c:1131
+msgid ""
+"Suggestion: Enable the CONFIG_ACPI_BATTERY kernel configuration option.\n"
+" This option is required to get power estimages from PowerTOP"
+msgstr ""
+"Vorschlag: Aktivieren Sie die Option CONFIG_ACPI_BATTERY Ihres Kernels.\n"
+"Ohne diese Option kann PowerTOP keinen Stromverbrauch ermitteln."
+
+#: ../powertop.c:1128
+msgid ""
+"Suggestion: Enable the CONFIG_CPU_FREQ_GOV_ONDEMAND kernel configuration option.\n"
+"The 'ondemand' CPU speed governor will minimize the CPU power usage while\n"
+"giving you performance when it is needed."
+msgstr ""
+"Vorschlag: Aktivieren Sie im Kernel die Option CONFIG_CPU_FREQ_GOV_ONDEMAND.\n"
+"Der \"Ondemand Governor\" minimiert den Stromverbrauch eines nicht-\n"
+"ausgelasteten Prozessors."
+
+#: ../powertop.c:1145
+msgid ""
+"Suggestion: Enable the CONFIG_CPU_FREQ_STAT kernel configuration option.\n"
+"This option allows PowerTOP to show P-state percentages \n"
+"P-states correspond to CPU frequencies."
+msgstr ""
+"Vorschlag: Aktivieren Sie die Option CONFIG_CPU_FREQ_STAT Ihres Kernels.\n"
+"Mit dieser Option kann PowerTOP die P-States ermitteln,\n"
+"die P-States entsprechen den CPU Frequenzen."
+
+#: ../powertop.c:1134
+msgid ""
+"Suggestion: Enable the CONFIG_HPET_TIMER kernel configuration option.\n"
+"Without HPET support the kernel needs to wake up every 20 milliseconds for \n"
+"some housekeeping tasks."
+msgstr ""
+"Vorschlag: Aktivieren Sie die Option CONFIG_HPET_TIMER Ihres Kernels.\n"
+"Ohne HPET weckt der Kernel den Prozessor alle 20ms für kleinere Aufgaben auf."
+
+#: ../powertop.c:1148
+msgid ""
+"Suggestion: Enable the CONFIG_INOTIFY kernel configuration option.\n"
+"This option allows programs to wait for changes in files and directories\n"
+"instead of having to poll for these changes"
+msgstr ""
+"Vorschlag: Aktivieren Sie die Option CONFIG_INOTIFY Ihres Kernels.\n"
+"Mit dieser Option können Programme auf Veränderungen im Dateisystem\n"
+"warten, anstatt diese selber ständig abzufragen."
+
+#: ../powertop.c:1130
+msgid ""
+"Suggestion: Enable the CONFIG_NO_HZ kernel configuration option.\n"
+"This option is required to get any kind of longer sleep times in the CPU."
+msgstr ""
+"Vorschlag: Aktivieren Sie die Option CONFIG_NO_HZ Ihres Kernels.\n"
+"Das ist nötig, um überhaupt längere Ruhezeiten des Prozessors zu erzielen."
+
+#: ../powertop.c:1139
+msgid ""
+"Suggestion: Enable the CONFIG_SND_AC97_POWER_SAVE kernel configuration option.\n"
+"This option will automatically power down your sound codec when not in use,\n"
+"and can save approximately half a Watt of power."
+msgstr ""
+"Vorschlag: Aktivieren Sie die Option CONFIG_SND_AC97_POWER_SAVE Ihres Kernels.\n"
+"Das deaktiviert den Sound-Codec, wenn er nicht benötigt wird\n"
+"und spart ca. 0,5 Watt Leistung."
+
+#: ../powertop.c:1126
+msgid ""
+"Suggestion: Enable the CONFIG_USB_SUSPEND kernel configuration option.\n"
+"This option will automatically disable UHCI USB when not in use, and may\n"
+"save approximately 1 Watt of power."
+msgstr ""
+"Vorschlag: Aktivieren Sie die Option CONFIG_USB_SUSPEND in Ihrem Kernel.\n"
+"Dies deaktiviert automatisch UHCI USB, sobald es nicht benutzt wird,\n"
+"und kann bis zu 1 Watt Leistung sparen."
+
+#: ../cpufreq.c:116
+msgid ""
+"Suggestion: Enable the ondemand cpu speed governor for all processors via: \n"
+" echo ondemand > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor \n"
+msgstr ""
+"Vorschlag: Aktivieren Sie den \"ondemand governor\" durch: \n"
+" echo ondemand > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor \n"
+
+#: ../wireless.c:314
+#, c-format
+msgid ""
+"Suggestion: Enable wireless power saving mode by executing the following command:\n"
+" echo 5 > %s \n"
+"This will sacrifice network performance slightly to save power."
+msgstr ""
+"Vorschlag: Aktivieren Sie mit folgendem Befehl die WLAN Stromsparfunktionen:\n"
+" echo 5 > %s \n"
+"Dadurch verringert sich die WLAN-Geschwindigkeit etwas, spart aber Strom."
+
+#: ../wifi-new.c:198
+#, c-format
+msgid ""
+"Suggestion: Enable wireless power saving mode by executing the following command:\n"
+" iwconfig %s power timeout 500ms\n"
+"This will sacrifice network performance slightly to save power."
+msgstr ""
+"Vorschlag: Aktivieren Sie mit folgendem Befehl die WLAN Stromsparfunktionen:\n"
+" iwconfig %s power timeout 500ms\n"
+"Dadurch verringert sich die WLAN-Geschwindigkeit etwas, spart aber Strom."
+
+#: ../wireless.c:308
+#, c-format
+msgid ""
+"Suggestion: Enable wireless power saving mode by executing the following command:\n"
+" iwpriv %s set_power 5 \n"
+"This will sacrifice network performance slightly to save power."
+msgstr ""
+"Vorschlag: Aktivieren Sie mit folgendem Befehl die WLAN Stromsparfunktionen:\n"
+" iwpriv %s set_power 5 \n"
+"Dadurch verringert sich die WLAN-Geschwindigkeit etwas, spart aber Strom."
+
+#: ../xrandr.c:75
+msgid ""
+"Suggestion: disable TV out via: \n"
+" xrandr --output TV --off \n"
+"or press the V key."
+msgstr ""
+"Vorschlag: Schalten Sie den TV-Ausgang mit folgendem Befehl ab:\n"
+" xrandr --output TV --off\n"
+"oder betätigen Sie die V-Taste."
+
+#: ../misctips.c:59
+msgid ""
+"Suggestion: disable the NMI watchdog by executing the following command:\n"
+" echo 0 > /proc/sys/kernel/nmi_watchdog \n"
+"The NMI watchdog is a kernel debug mechanism to detect deadlocks"
+msgstr ""
+"Vorschlag: Deaktivieren Sie mit folgendem Befehl den NMI Wächter:\n"
+" echo 0 > /proc/sys/kernel/nmi_watchdog \n"
+"Der NMI Wächter ist ein Kernel Debug-Mechanismus um Deadlocks aufzuspüren"
+
+#: ../misctips.c:123
+msgid ""
+"Suggestion: enable AC97 powersave mode by executing the following command:\n"
+" echo 1 > /sys/module/snd_ac97_codec/parameters/power_save \n"
+"or by passing power_save=1 as module parameter."
+msgstr ""
+"Vorschlag: Aktivieren Sie mit folgendem Befehl die AC97 Stromsparfunktionen:\n"
+" echo 1 > /sys/module/snd_ac97_codec/parameters/power_save \n"
+"oder übergeben Sie dem AC97 Modul den Parameter power_save=1."
+
+#: ../misctips.c:163
+msgid ""
+"Suggestion: enable HD audio powersave mode by executing the following command:\n"
+" echo 1 > /sys/module/snd_hda_intel/parameters/power_save \n"
+"or by passing power_save=1 as module parameter."
+msgstr ""
+"Vorschlag: Aktivieren Sie mit folgendem Befehl die HD-Audio Stromsparfunktionen:\n"
+" echo 1 > /sys/module/snd_hda_intel/parameters/power_save \n"
+"oder übergeben Sie dem Modul den Parameter power_save=1."
+
+#: ../misctips.c:87
+msgid ""
+"Suggestion: enable the HPET (Multimedia Timer) in your BIOS or add \n"
+"the kernel patch to force-enable HPET. HPET support allows Linux to \n"
+"have much longer sleep intervals."
+msgstr ""
+"Vorschlag: Aktivieren Sie HPET (Multimedia Timer) in Ihrem BIOS oder benutzen\n"
+"Sie den Kernel-Patch um HPET zu erzwingen. HPET Unterstützung erlaubt es dem\n"
+"Linux Kernel längere Ruhepausen einzulegen."
+
+#: ../misctips.c:192
+msgid ""
+"Suggestion: enable the noatime filesystem option by executing the following command:\n"
+" mount -o remount,noatime / or by pressing the T key \n"
+"noatime disables persistent access time of file accesses, which causes lots of disk IO."
+msgstr ""
+"Vorschlag: Aktivieren Sie die \"noatime\" Dateisystemoption mit dem Befehl:\n"
+" mount -o remount,noatime / oder betätigen Sie die T-Taste.\n"
+"noatime verhindert das Speichern der Zeit des letzten Zugriffs auf eine Datei."
+
+#: ../misctips.c:255
+msgid ""
+"Suggestion: enable the power aware CPU scheduler with the following command:\n"
+" echo 1 > /sys/devices/system/cpu/sched_mc_power_savings\n"
+"or by pressing the C key."
+msgstr ""
+"Vorschlag: Aktivieren Sie den Stromsparenden CPU-Scheduler mit folgendem Befehl:\n"
+" echo 1 > /sys/devices/system/cpu/sched_mc_power_savings\n"
+"oder betätigen Sie die C-Taste."
+
+#: ../misctips.c:288
+#, c-format
+msgid ""
+"Suggestion: increase the VM dirty writeback time from %1.2f to 15 seconds with:\n"
+" echo 1500 > /proc/sys/vm/dirty_writeback_centisecs \n"
+"This wakes the disk up less frequently for background VM activity"
+msgstr ""
+"Vorschlag: Erhöhen Sie die \"VM dirty writeback time\" von %1.2f auf\n"
+"15 Sekunden durch: echo 1500 > /proc/sys/vm/dirty_writeback_centisecs\n"
+"Dadurch belasten die VM Hintergrundaktivitäten die Festplatte weniger."
+
+#: ../display.c:300
+msgid "This option is located in the Kernel Debugging section of menuconfig\n"
+msgstr "Diese Option befindet sich im Abschnitt \"Kernel Debugging\" der Kernel-Konfiguration.\n"
+
+#: ../display.c:281
+msgid "Top causes for wakeups:\n"
+msgstr "Häufigste Ursachen für das Aufwachen:\n"
+
+#: ../cpufreqstats.c:94
+msgid "Turbo Mode"
+msgstr "Turbo-Modus"
+
+#: ../urbnum.c:123
+#, c-format
+msgid "USB device %4s : %s (%s)"
+msgstr "USB Gerät %4s : %s (%s)"
+
+#: ../powertop.c:820
+#, c-format
+msgid "Usage: powertop [OPTION...]\n"
+msgstr "Benutzung: powertop [Option...]\n"
+
+#: ../display.c:270
+#, c-format
+msgid "Wakeups-from-idle per second : %4.1f\tinterval: %0.1fs\n"
+msgstr "Aufwachen pro Sekunde : %4.1f\tIntervall: %0.1fs\n"
+
+#: ../intelcstates.c:152
+#, c-format
+msgid "Your BIOS reports the following C-states : "
+msgstr "Ihr BIOS meldet folgende C-Status:"
+
+#: ../intelcstates.c:143
+#, c-format
+msgid "Your CPU supports the following C-states : "
+msgstr "Ihre CPU unterstützt folgende C-Status:"
+
+#: ../display.c:196
+#, c-format
+msgid "no ACPI power usage estimate available"
+msgstr "Keine ACPI Stromverbrauch-Schätzung verfügbar"
+
+#: ../display.c:244
+#, c-format
+msgid "no power usage estimate available"
+msgstr "Keine Stromverbrauch-Schätzung verfügbar"
+
+#: ../powertop.c:433
+msgid "polling"
+msgstr "zyklisches Abfragen"
+
+#: ../powertop.c:831
+#, c-format
+msgid "powertop version %s\n"
+msgstr "powertop Version %s\n"
diff --git a/po/es.po b/po/es.po
new file mode 100644
index 0000000..5650e16
--- /dev/null
+++ b/po/es.po
@@ -0,0 +1,678 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2009-08-12 15:39-0700\n"
+"PO-Revision-Date: 2007-05-25 14:52-0700\n"
+"Last-Translator: Inaky Perez-Gonzalez <inaky.perez-gonzalez@intel.com>\n"
+"Language-Team: Spanish <es@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../misctips.c:125
+msgid " A - Turn AC97 powersave on "
+msgstr " A - Activar ahorro de energía en AC97"
+
+#: ../bluetooth.c:146
+msgid " B - Turn Bluetooth off "
+msgstr " B - Apagar Bluetooth "
+
+#: ../misctips.c:61
+msgid " N - Turn NMI watchdog off "
+msgstr " N - Apagar el vigilante de NMI "
+
+#: ../cpufreq.c:118
+msgid " O - enable Ondemand governor "
+msgstr " O - Encender el goverando basado en demanda "
+
+#: ../display.c:108
+msgid " Q - Quit "
+msgstr " Q - Salir "
+
+#: ../display.c:109
+msgid " R - Refresh "
+msgstr "R - Redibujar "
+
+#: ../wireless.c:311 ../wireless.c:317
+msgid " W - Enable wireless power saving "
+msgstr " W - Activar el ahorro de energía para red inalámbrica "
+
+#: ../display.c:301
+msgid "(which is CONFIG_DEBUG_KERNEL=y in the config file)\n"
+msgstr "(que corresponde a CONFIG_DEBUG_KERNEL=y en el fichero de configuración)\n"
+
+#: ../powertop.c:1040
+msgid "<kernel core>"
+msgstr "<núcleo>"
+
+#: ../powertop.c:1036 ../powertop.c:1038
+msgid "<kernel module>"
+msgstr "<módulo de núcleo>"
+
+#: ../powertop.c:969
+#, c-format
+msgid "C0 (cpu running) (%4.1f%%)\n"
+msgstr "C0 (cpu ejecutando) (%4.1f%%)\n"
+
+#: ../powertop.c:903
+#, c-format
+msgid "Collecting data for %i seconds \n"
+msgstr "Recolectando datos durante %i segundos\n"
+
+#: ../display.c:304
+msgid "No detailed statistics available; PowerTOP needs root privileges for that\n"
+msgstr "No hay estadísticas detalladas; PowerTOP necesita privilegios de root para ello\n"
+
+#: ../display.c:299
+msgid "No detailed statistics available; please enable the CONFIG_TIMER_STATS kernel option\n"
+msgstr ""
+"No hay estadísticas detalladas; por favor, active la opción del núcleo\n"
+"CONFIG_TIMER_STATS\n"
+
+#: ../display.c:302
+msgid "Note: this is only available in 2.6.21 and later kernels\n"
+msgstr "Nota: sólo disponible en versiones 2.6.21 y posteriores del núcleo\n"
+
+#: ../powertop.c:902
+#, c-format
+msgid "PowerTOP needs to be run as root to collect enough information\n"
+msgstr "PowerTOP necesita ser ejecutado como usuario root para poder recolectar información suficiente.\n"
+
+#: ../powertop.c:1155 ../powertop.c:1159
+msgid ""
+"Suggestion: Disable or remove 'beagle' from your system. \n"
+"Beagle is the program that indexes for easy desktop search, however it's \n"
+"not very efficient and costs a significant amount of battery life."
+msgstr ""
+"Sugerencia: Desactive o elimine el programa 'beagle' de su sistema.\n"
+"Beagle es el programa que crea índicies para facilitar la búsqueda de\n"
+"ficheros en su escritorio, pero no es muy eficiente y tiene un alto\n"
+"coste en términos de consumo eléctrico."
+
+#: ../powertop.c:1143
+msgid ""
+"Suggestion: Disable the CONFIG_IRQBALANCE kernel configuration option.\n"
+"The in-kernel irq balancer is obsolete and wakes the CPU up far more than needed."
+msgstr ""
+"Sugerencia: Desactive la opción del núcleo CONFIG_IRQBALANCE.\n"
+"El nivelador de interrupciones del núcleo está obsoleto y activa la\n"
+"CPU más veces de las necesarias."
+
+#: ../powertop.c:1128
+msgid ""
+"Suggestion: Enable the CONFIG_CPU_FREQ_GOV_ONDEMAND kernel configuration option.\n"
+"The 'ondemand' CPU speed governor will minimize the CPU power usage while\n"
+"giving you performance when it is needed."
+msgstr ""
+"Sugerencia: Active la opción del núcleo CONFIG_CPU_FREQ_GOV_ONDEMAND.\n"
+"El gobernador de velocidad de CPU en demanda minimiza el uso de\n"
+"electricidad de la CPU, proveyendo de capacidad de proceso cuando se\n"
+"necesita."
+
+#: ../powertop.c:1134
+msgid ""
+"Suggestion: Enable the CONFIG_HPET_TIMER kernel configuration option.\n"
+"Without HPET support the kernel needs to wake up every 20 milliseconds for \n"
+"some housekeeping tasks."
+msgstr ""
+"Sugerencia: Active la opción del núcleo CONFIG_HPET_TIMER.\n"
+"Si no hay soporte HPET, el núcleo necesita activarse cada 20\n"
+"milisegundos para realizar tareas de mantenimiento."
+
+#: ../powertop.c:1130
+msgid ""
+"Suggestion: Enable the CONFIG_NO_HZ kernel configuration option.\n"
+"This option is required to get any kind of longer sleep times in the CPU."
+msgstr ""
+"Sugerencia: Active la opción del núcleo CONFIG_NO_HZ.\n"
+"Esta opción se necesita para poder beneficiarse de periodos de\n"
+"suspensión más largos en la CPU. "
+
+#: ../powertop.c:1139
+msgid ""
+"Suggestion: Enable the CONFIG_SND_AC97_POWER_SAVE kernel configuration option.\n"
+"This option will automatically power down your sound codec when not in use,\n"
+"and can save approximately half a Watt of power."
+msgstr ""
+"Sugerencia: Active la opción del núcleo CONFIG_SND_AC97_POWER_SAVE.\n"
+"Esta opción apagará automaticamente el codificador de audio cuando no\n"
+"se necesite, y le ahorrará aproximadamente medio watio de electricidad."
+
+#: ../powertop.c:1126
+msgid ""
+"Suggestion: Enable the CONFIG_USB_SUSPEND kernel configuration option.\n"
+"This option will automatically disable UHCI USB when not in use, and may\n"
+"save approximately 1 Watt of power."
+msgstr ""
+"Sugerencia: Active la opción del núcleo CONFIG_USB_SUSPEND. Esta\n"
+"opción desactivará el soporte UHCI de USB cuando no sea usado y puede\n"
+"ahorrar aproximadamente 1 Watio de electricidad."
+
+#: ../cpufreq.c:116
+msgid ""
+"Suggestion: Enable the ondemand cpu speed governor for all processors via: \n"
+" echo ondemand > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor \n"
+msgstr ""
+"Sugerencia: Active el gobernador de velocidad de CPU en demanda en\n"
+"todos los procesadores ejecutando:\n"
+" echo ondemand > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor \n"
+
+#: ../wireless.c:308
+#, c-format
+msgid ""
+"Suggestion: Enable wireless power saving mode by executing the following command:\n"
+" iwpriv %s set_power 5 \n"
+"This will sacrifice network performance slightly to save power."
+msgstr ""
+"Sugerencia: active el modo de ahorro de energía para redes\n"
+"inalámbricas ejecutando: \n"
+" iwpriv %s set_power 5 \n"
+"Este modo sacrifica algo de velocidad a favor de ahorro de consumo\n"
+"eléctrico."
+
+#: ../misctips.c:87
+msgid ""
+"Suggestion: enable the HPET (Multimedia Timer) in your BIOS or add \n"
+"the kernel patch to force-enable HPET. HPET support allows Linux to \n"
+"have much longer sleep intervals."
+msgstr ""
+"Sugerencia: active HPET (Temporizador Multimedia) en su BIOS o añada\n"
+"al núcleo los parches que fuerzan la activación de HPET. El soporte de\n"
+"HPET permite a Linux suspenderse durante más tiempo."
+
+#: ../display.c:300
+msgid "This option is located in the Kernel Debugging section of menuconfig\n"
+msgstr "Esta opción se encuentra en la seción Kernel Debugging de menuconfig\n"
+
+#: ../display.c:196
+#, c-format
+msgid "no ACPI power usage estimate available"
+msgstr "las estimaciones de ACPI sobre el uso de corriente no están disponibles"
+
+#: ../powertop.c:303 ../powertop.c:306
+#, c-format
+msgid " <interrupt> : %s"
+msgstr "<interrupción> : %s"
+
+#: ../powertop.c:1072
+msgid " <interrupt> : extra timer interrupt"
+msgstr "<interrupción> : interrupción del temporizador extra"
+
+#: ../powertop.c:821
+#, c-format
+msgid " -d, --dump read wakeups once and print list of top offenders\n"
+msgstr "-d, --dump Leer las activaciones una vez e imprimir la lista de los peores ofensores\n"
+
+#: ../powertop.c:823
+#, c-format
+msgid " -p, --pids show pids in wakeups list\n"
+msgstr "-p, --pids Mostrar los PIDS en la lista de activaciones\n"
+
+#: ../powertop.c:824
+#, c-format
+msgid " -h, --help Show this help message\n"
+msgstr "-h, --help Mostrar este mensaje de ayuda\n"
+
+#: ../powertop.c:825
+#, c-format
+msgid " -v, --version Show version information and exit\n"
+msgstr "-v, --version Mostrar la información de la versión y salir\n"
+
+#: ../powertop.c:822
+#, c-format
+msgid " -t, --time=DOUBLE default time to gather data in seconds\n"
+msgstr "-t, --time=DOUBLE Tiempo predeterminado entre recogida de datos, en segundos\n"
+
+#: ../misctips.c:165
+msgid " A - Turn HD audio powersave on "
+msgstr " A - Activar el ahorro de energía para el audio de alta definición"
+
+#: ../wifi-new.c:196
+msgid " D - disable wireless "
+msgstr " D - Desactivar la red inalámbrica "
+
+#: ../misctips.c:257
+msgid " C - Power aware CPU scheduler "
+msgstr " C - Organizador de la CPU ahorrador de energía"
+
+#: ../process.c:84
+#, c-format
+msgid " K - kill %s "
+msgstr " K - Cancelar %s"
+
+#: ../wireless.c:322
+msgid " I - disable WIFI Radio "
+msgstr " I - Desactivar la red WIFI"
+
+#: ../wifi-new.c:201
+msgid " P - Enable wireless power saving "
+msgstr " P - Activar el ahorro de energía para red inalámbrica"
+
+#: ../sata.c:104
+msgid " S - SATA Link Power Management "
+msgstr " S - Gestión energética del vínculo SATA"
+
+#: ../misctips.c:194
+msgid " T - enable noatime "
+msgstr " T - Activar noatime "
+
+#: ../urbnum.c:222 ../usb.c:116
+msgid " U - Enable USB suspend "
+msgstr " U - Permitir suspender los puertos USB"
+
+#: ../xrandr.c:78
+msgid " V - Disable TV out "
+msgstr " V - Desactivar la salida a TV"
+
+#: ../misctips.c:292
+msgid " W - Increase Writeback time "
+msgstr " W - Aumentar el tiempo de reescritura (\"writeback\")"
+
+#: ../cpufreqstats.c:91
+#, c-format
+msgid "%6.2f Ghz"
+msgstr "%6.2f Ghz"
+
+#: ../ethernet.c:131
+msgid " W - disable Wake-On-Lan "
+msgstr " W - Desactivar el encendido a través de la red"
+
+#: ../cpufreqstats.c:85
+#, c-format
+msgid "%9lli"
+msgstr "%9lli"
+
+#: ../cpufreqstats.c:88
+#, c-format
+msgid "%6lli Mhz"
+msgstr "%6lli Mhz"
+
+#: ../powertop.c:983
+#, c-format
+msgid "%s\t%5.1fms (%4.1f%%)\n"
+msgstr "%s\t%5.1fms (%4.1f%%)\n"
+
+#: ../display.c:205
+#, c-format
+msgid "(long term: %3.1fW,/%3.1fh)"
+msgstr "(largo plazo: %3.1fW,/%3.1fh)"
+
+#: ../powertop.c:960
+#, c-format
+msgid "< Detailed C-state information is not available.>\n"
+msgstr "< No hay información detallada sobre los estados C.>\n"
+
+#: ../urbnum.c:217
+#, c-format
+msgid ""
+"A USB device is active %4.1f%% of the time:\n"
+"%s"
+msgstr ""
+"Hay un dispositivo USB activo el %4.1f%% del tiempo:\n"
+"%s"
+
+#: ../urbnum.c:186
+msgid "Active Device name"
+msgstr "Nombre del dispositivo activo"
+
+#: ../powertop.c:966
+#, c-format
+msgid "Cn\t Avg residency\n"
+msgstr "Cn\t Residencia media\n"
+
+#: ../powertop.c:170 ../powertop.c:306
+msgid "PS/2 keyboard/mouse/touchpad"
+msgstr "PS/2 teclado/ratón/touchpad"
+
+#: ../cpufreqstats.c:115
+#, c-format
+msgid "P-states (frequencies)\n"
+msgstr "Estados P (frecuencias)\n"
+
+#: ../ethernet.c:128
+msgid ""
+"Disable Ethernet Wake-On-Lan with the following command:\n"
+" ethtool -s eth0 wol d \n"
+"Wake-on-Lan keeps the phy active, this costs power."
+msgstr ""
+"Desactive el encendido a través de la red con el siguiente \n"
+"\r\n"
+"comando:\n"
+"\r\n"
+" ethtool -s eth0 wol d \n"
+"\r\n"
+"El encendido por red mantiene phy activo, lo que consume\n"
+"\r\n"
+"energía extra."
+
+#: ../powertop.c:1187
+msgid ""
+"Disable the SE-Alert software by removing the 'setroubleshoot-server' rpm\n"
+"SE-Alert alerts you about SELinux policy violations, but also\n"
+"has a bug that wakes it up 10 times per second."
+msgstr ""
+"Se puede desactivar el software SE-Alert eliminando el paquete rpm\n"
+"\r\n"
+"'setroubleshoot-server'. Este software alerta ante posibles violaciones de\n"
+"\r\n"
+"las normas SELinux, pero tiene un defecto que lo activa 10 veces por segundo."
+
+#: ../display.c:238
+#, c-format
+msgid "Power usage: %3.1fW (%3.1f hours)"
+msgstr "Uso de electricidad: %3.1fW (%3.1f horas)"
+
+#: ../display.c:201
+#, c-format
+msgid "Power usage (ACPI estimate): %3.1fW (%3.1f hours)"
+msgstr "Uso de electricidad (estimación de ACPI) : %3.1fW (%3.1f horas)"
+
+#: ../display.c:208
+#, c-format
+msgid "Power usage (5 minute ACPI estimate) : %5.1f W (%3.1f hours left)"
+msgstr "Uso de electricidad (5 minutos, estimación de ACPI) : %5.1f W (%3.1f horas disponibles)"
+
+#: ../powertop.c:1181
+msgid ""
+"Suggestion: Disable 'hal' from polling your cdrom with: \n"
+"hal-disable-polling --device /dev/cdrom 'hal' is the component that auto-opens a\n"
+"window if you plug in a CD but disables SATA power saving from kicking in."
+msgstr ""
+"Sugerencia: desactive 'hal' para que no esté en espera activa del cdrom con:\n"
+"\r\n"
+"hal-disable-polling --device /dev/cdrom 'hal' es el componente que abre una \n"
+"\r\n"
+"ventana al conectarse un CD, pero desactiva el ahorro de energía de SATA."
+
+#: ../urbnum.c:185
+msgid "Recent USB suspend statistics"
+msgstr "Estadísticas de las recientes suspensiones del USB"
+
+#: ../powertop.c:1168
+msgid ""
+"Suggestion: Disable or remove 'gnome-power-manager' from your system. \n"
+"Older versions of gnome-power-manager wake up far more often than \n"
+"needed costing you some power."
+msgstr ""
+"Sugerencia: desactive o elimine 'gnome-power-manager' del sistema. \n"
+"\r\n"
+"Las versiones antiguas de este paquete se activan con mucha mayor\n"
+"\r\n"
+"frecuencia de la necesaria, consumiendo energía extra."
+
+#: ../powertop.c:1174
+msgid ""
+"Suggestion: Disable or remove 'pcscd' from your system. \n"
+"pcscd tends to keep the USB subsystem out of power save mode\n"
+"and your processor out of deeper powersave states."
+msgstr ""
+"Sugerencia: desactive o elimine 'pcscd' del sistema. \n"
+"\r\n"
+"pcscd tiende a dejar el subsistema USB fuera del modo de ahorro\n"
+"\r\n"
+"de energía y el procesador fuera de los estados de menor actividad."
+
+#: ../wireless.c:320
+#, c-format
+msgid ""
+"Suggestion: Disable the unused WIFI radio by executing the following command:\n"
+" echo 1 > %s \n"
+msgstr ""
+"Sugerencia: desactive la red WIFI inactiva ejecutando el siguiente comando:\n"
+"\r\n"
+" echo 1 > %s \n"
+
+#: ../wifi-new.c:194
+#, c-format
+msgid ""
+"Suggestion: Disable the unused WIFI radio by setting the interface down:\n"
+" ifconfig %s down\n"
+msgstr ""
+"Sugerencia: desactive la red WIFI que no se está usando desactivando la interfaz:\n"
+"\r\n"
+" ifconfig %s down\n"
+
+#: ../bluetooth.c:144
+msgid ""
+"Suggestion: Disable the unused bluetooth interface with the following command:\n"
+" hciconfig hci0 down ; rmmod hci_usb\n"
+"Bluetooth is a radio and consumes quite some power, and keeps USB busy as well.\n"
+msgstr ""
+"Sugerencia: desactive el bluetooth que no se está usando con este comando:\n"
+"\r\n"
+" hciconfig hci0 down ; rmmod hci_usb\n"
+"\r\n"
+"Bluetooth es una transmisión de radio y como tal consume bastante electricidad,\n"
+"\r\n"
+"además de mantener al USB activo.\n"
+
+#: ../sata.c:101
+msgid ""
+"Suggestion: Enable SATA ALPM link power management via: \n"
+" echo min_power > /sys/class/scsi_host/host0/link_power_management_policy\n"
+"or press the S key."
+msgstr ""
+"Sugerencia: active el gestor de energía del vínculo SATA ALPM así:\n"
+"\r\n"
+" echo min_power > /sys/class/scsi_host/host0/link_power_management_policy\n"
+"\r\n"
+"o presionando la tecla S."
+
+#: ../usb.c:114
+msgid "Suggestion: Enable USB autosuspend for non-input devices by pressing the U key\n"
+msgstr ""
+"Sugerencia: active la autosuspensión de los dispositivos USB que no sean\n"
+"\r\n"
+"dispositivos de entrada presionando la tecla U.\n"
+
+#: ../powertop.c:1131
+msgid ""
+"Suggestion: Enable the CONFIG_ACPI_BATTERY kernel configuration option.\n"
+" This option is required to get power estimages from PowerTOP"
+msgstr ""
+"Sugerencia: active la opción del núcleo CONFIG_ACPI_BATTERY.\n"
+"\r\n"
+" Se necesita esta opción para obtener estimaciones de PowerTOP."
+
+#: ../powertop.c:1145
+msgid ""
+"Suggestion: Enable the CONFIG_CPU_FREQ_STAT kernel configuration option.\n"
+"This option allows PowerTOP to show P-state percentages \n"
+"P-states correspond to CPU frequencies."
+msgstr ""
+"Sugerencia: active la opción del núcleo CONFIG_CPU_FREQ_STAT.\n"
+"\r\n"
+"Esta opción permite a PowerTOP mostrar los porcentajes de los estados P.\n"
+"\r\n"
+"Los estados P se corresponden con las frecuencias de la CPU."
+
+#: ../powertop.c:1148
+msgid ""
+"Suggestion: Enable the CONFIG_INOTIFY kernel configuration option.\n"
+"This option allows programs to wait for changes in files and directories\n"
+"instead of having to poll for these changes"
+msgstr ""
+"Sugerencia: active la opción del núcleo CONFIG_INOTIFY.\n"
+"\r\n"
+"Esta opción permite que los programas esperen a que se produzcan\n"
+"\r\n"
+"cambios en los archivos en lugar de estar en espera activa."
+
+#: ../wireless.c:314
+#, c-format
+msgid ""
+"Suggestion: Enable wireless power saving mode by executing the following command:\n"
+" echo 5 > %s \n"
+"This will sacrifice network performance slightly to save power."
+msgstr ""
+"Sugerencia: active el modo de ahorro de energía ejecutando este comando:\n"
+"\r\n"
+" echo 5 > %s \n"
+"\r\n"
+"Este modo sacrifica algo del rendimiento de la red para ahorrar energía."
+
+#: ../wifi-new.c:198
+#, c-format
+msgid ""
+"Suggestion: Enable wireless power saving mode by executing the following command:\n"
+" iwconfig %s power timeout 500ms\n"
+"This will sacrifice network performance slightly to save power."
+msgstr ""
+"Sugerencia: active el modo de ahorro de energía ejecutando este comando: \n"
+"\r\n"
+" iwconfig %s power timeout 500ms\n"
+"\r\n"
+"Este modo sacrifica algo del rendimiento de la red para ahorrar energía."
+
+#: ../misctips.c:123
+msgid ""
+"Suggestion: enable AC97 powersave mode by executing the following command:\n"
+" echo 1 > /sys/module/snd_ac97_codec/parameters/power_save \n"
+"or by passing power_save=1 as module parameter."
+msgstr ""
+"Sugerencia: active el modo de ahorro de energía AC97 ejecutando este comando:\n"
+"\r\n"
+" echo 1 > /sys/module/snd_ac97_codec/parameters/power_save \n"
+"\r\n"
+"o pasando power_save=1 como parámetro del módulo."
+
+#: ../misctips.c:59
+msgid ""
+"Suggestion: disable the NMI watchdog by executing the following command:\n"
+" echo 0 > /proc/sys/kernel/nmi_watchdog \n"
+"The NMI watchdog is a kernel debug mechanism to detect deadlocks"
+msgstr ""
+"Sugerencia: desactive el guardián NMI ejecutando el siguiente comando:\n"
+"\r\n"
+" echo 0 > /proc/sys/kernel/nmi_watchdog \n"
+"\r\n"
+"El guardián NMI es un mecanismo de depuración que detecta bloqueos."
+
+#: ../xrandr.c:75
+msgid ""
+"Suggestion: disable TV out via: \n"
+" xrandr --output TV --off \n"
+"or press the V key."
+msgstr ""
+"Sugerencia: desactive la salida\n"
+"\r\n"
+"de televisión de este modo:\n"
+"\r\n"
+" xrandr --output TV --off \n"
+"\r\n"
+"o presione la tecla V."
+
+#: ../misctips.c:192
+msgid ""
+"Suggestion: enable the noatime filesystem option by executing the following command:\n"
+" mount -o remount,noatime / or by pressing the T key \n"
+"noatime disables persistent access time of file accesses, which causes lots of disk IO."
+msgstr ""
+"Sugerencia: active la opción noatime filesystem ejecutando este comando:\n"
+"\r\n"
+" mount -o remount,noatime / o presionando la tecla T.\n"
+"\r\n"
+"noatime desactiva el tiempo de acceso continuo a los archivos, que causa un montón\n"
+"\r\n"
+"de operaciones de entrada y salida en el disco."
+
+#: ../misctips.c:163
+msgid ""
+"Suggestion: enable HD audio powersave mode by executing the following command:\n"
+" echo 1 > /sys/module/snd_hda_intel/parameters/power_save \n"
+"or by passing power_save=1 as module parameter."
+msgstr ""
+"Sugerencia: active el modo de ahorro de energía del audio de alta definición\n"
+"\r\n"
+"ejecutando este comando: \n"
+"\r\n"
+" echo 1 > /sys/module/snd_hda_intel/parameters/power_save \n"
+"\r\n"
+"o pasando power_save=1 como parámetro del módulo."
+
+#: ../powertop.c:831
+#, c-format
+msgid "powertop version %s\n"
+msgstr "versión de Powertop: %s\n"
+
+#: ../misctips.c:255
+msgid ""
+"Suggestion: enable the power aware CPU scheduler with the following command:\n"
+" echo 1 > /sys/devices/system/cpu/sched_mc_power_savings\n"
+"or by pressing the C key."
+msgstr ""
+"Sugerencia: active el organizador de la CPU ahorrador de energía\n"
+"\r\n"
+"ejecutando el siguiente comando: \n"
+"\r\n"
+" echo 1 > /sys/devices/system/cpu/sched_mc_power_savings\n"
+"\r\n"
+"o presionando la tecla C."
+
+#: ../misctips.c:288
+#, c-format
+msgid ""
+"Suggestion: increase the VM dirty writeback time from %1.2f to 15 seconds with:\n"
+" echo 1500 > /proc/sys/vm/dirty_writeback_centisecs \n"
+"This wakes the disk up less frequently for background VM activity"
+msgstr ""
+"Sugerencia: aumente el tiempo de \"reescritura sucia\" (\"dirty writeback\") de la VM\n"
+"\r\n"
+"de %1.2f a 15 segundos:\n"
+"\r\n"
+" echo 1500 > /proc/sys/vm/dirty_writeback_centisecs \n"
+"\r\n"
+"Esto activa el disco con menor frecuencia en actividades de VM de fondo."
+
+#: ../powertop.c:820
+#, c-format
+msgid "Usage: powertop [OPTION...]\n"
+msgstr "Uso: powertop [OPCIÓN...]\n"
+
+#: ../urbnum.c:123
+#, c-format
+msgid "USB device %4s : %s (%s)"
+msgstr "Dispositivo USB %4s : %s (%s)"
+
+#: ../cpufreqstats.c:94
+msgid "Turbo Mode"
+msgstr "Modo turbo"
+
+#: ../display.c:281
+msgid "Top causes for wakeups:\n"
+msgstr "Principales causas de activación:\n"
+
+#: ../intelcstates.c:143
+#, c-format
+msgid "Your CPU supports the following C-states : "
+msgstr "La CPU admite los siguientes estados C:"
+
+#: ../intelcstates.c:152
+#, c-format
+msgid "Your BIOS reports the following C-states : "
+msgstr "La BIOS informa sobre los siguientes estados C:"
+
+#: ../display.c:270
+#, c-format
+msgid "Wakeups-from-idle per second : %4.1f\tinterval: %0.1fs\n"
+msgstr "Activaciones-desde-inactivo por segundo : %4.1f\tintervalo: %0.1fs\n"
+
+#: ../powertop.c:433
+msgid "polling"
+msgstr "espera activa"
+
+#: ../display.c:244
+#, c-format
+msgid "no power usage estimate available"
+msgstr "No disponemos de ninguna estimación del uso de la energía"
+
+#: ../powertop.c:301
+#, c-format
+msgid " <kernel IPI> : %s"
+msgstr "<kernel IPI> : %s"
diff --git a/po/fi.po b/po/fi.po
new file mode 100644
index 0000000..42b299e
--- /dev/null
+++ b/po/fi.po
@@ -0,0 +1,659 @@
+# translation of fi.po to Finnish
+# Niklas Laxström <niklas.laxstrom+powertop@gmail.com>, 2007-2008.
+# Translation of PowerTOP to Finnish
+# This file is distributed under the same license as the PowerTOP package.
+msgid ""
+msgstr ""
+"Project-Id-Version: fi\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2009-08-11 13:44-0700\n"
+"PO-Revision-Date: 2008-12-11 11:26+0200\n"
+"Last-Translator: Niklas Laxström <niklas.laxstrom+powertop@gmail.com>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#: ../powertop.c:303 ../powertop.c:306
+#, c-format
+msgid " <interrupt> : %s"
+msgstr " <keskeytys> : %s"
+
+#: ../powertop.c:1072
+msgid " <interrupt> : extra timer interrupt"
+msgstr " <keskeytys> : ylimääräinen ajastinkeskeytys"
+
+#: ../powertop.c:301
+#, c-format
+msgid " <kernel IPI> : %s"
+msgstr "<IPI-keskeytys> : %s"
+
+#: ../powertop.c:821
+#, c-format
+msgid ""
+" -d, --dump read wakeups once and print list of top offenders\n"
+msgstr " -d, --dump tulostaa listan pahimmista herättäjistä\n"
+
+#: ../powertop.c:824
+#, c-format
+msgid " -h, --help Show this help message\n"
+msgstr " -h, --help näyttää tämän ohjeviestin\n"
+
+#: ../powertop.c:823
+#, fuzzy, c-format
+msgid " -p, --pids show pids in wakeups list\n"
+msgstr " -h, --help näyttää tämän ohjeviestin\n"
+
+#: ../powertop.c:822
+#, c-format
+msgid " -t, --time=DOUBLE default time to gather data in seconds\n"
+msgstr " -t, --time=KESTO tilastojen keräämiseen käytetty oletusaika\n"
+
+#: ../powertop.c:825
+#, c-format
+msgid " -v, --version Show version information and exit\n"
+msgstr " -v, --version Näytä versiotiedot ja poistu\n"
+
+#: ../misctips.c:125
+msgid " A - Turn AC97 powersave on "
+msgstr " A - Aseta AC97-virransäästö päälle "
+
+#: ../misctips.c:165
+#, fuzzy
+msgid " A - Turn HD audio powersave on "
+msgstr " A - Aseta AC97-virransäästö päälle "
+
+#: ../bluetooth.c:146
+msgid " B - Turn Bluetooth off "
+msgstr " B - Aseta Bluetooth pois päältä "
+
+#: ../misctips.c:257
+msgid " C - Power aware CPU scheduler "
+msgstr " C - Aseta virrankäyttötietoinen suoritinvuorotin "
+
+#: ../wifi-new.c:196
+#, fuzzy
+msgid " D - disable wireless "
+msgstr " W - Aseta langaton verkko virransäästötilaan "
+
+#: ../wireless.c:322
+msgid " I - disable WIFI Radio "
+msgstr " I - Sulje WIFI-radio "
+
+#: ../process.c:84
+#, c-format
+msgid " K - kill %s "
+msgstr " K - Tapa %s "
+
+#: ../misctips.c:61
+msgid " N - Turn NMI watchdog off "
+msgstr " N - Sulje NMI-valvoja "
+
+#: ../cpufreq.c:118
+msgid " O - enable Ondemand governor "
+msgstr " O - Käytä ondemand-suorituskykyprofiilia "
+
+#: ../wifi-new.c:201
+#, fuzzy
+msgid " P - Enable wireless power saving "
+msgstr " W - Aseta langaton verkko virransäästötilaan "
+
+#: ../display.c:108
+msgid " Q - Quit "
+msgstr " Q - Poistu "
+
+#: ../display.c:109
+msgid " R - Refresh "
+msgstr " R - Päivitä "
+
+#: ../sata.c:104
+msgid " S - SATA Link Power Management "
+msgstr " S - Aseta SATA-linkin virranhallinta "
+
+#: ../misctips.c:194
+msgid " T - enable noatime "
+msgstr " L - Aseta levyn noatime-asetus "
+
+#: ../urbnum.c:222 ../usb.c:116
+msgid " U - Enable USB suspend "
+msgstr " U - Salli USB:n keskeytystila "
+
+#: ../xrandr.c:78
+msgid " V - Disable TV out "
+msgstr " V - Poista TV-ulostulo käytöstä "
+
+#: ../wireless.c:311 ../wireless.c:317
+msgid " W - Enable wireless power saving "
+msgstr " W - Aseta langaton verkko virransäästötilaan "
+
+#: ../misctips.c:292
+msgid " W - Increase Writeback time "
+msgstr " W - kasvata levyllekirjoitusaikaa "
+
+#: ../ethernet.c:131
+msgid " W - disable Wake-On-Lan "
+msgstr " W - Poista verkkokortin verkkoherätteisyys "
+
+#: ../cpufreqstats.c:91
+#, c-format
+msgid "%6.2f Ghz"
+msgstr "%6.2f GHz"
+
+#: ../cpufreqstats.c:88
+#, c-format
+msgid "%6lli Mhz"
+msgstr "%6lli MHz"
+
+#: ../cpufreqstats.c:85
+#, c-format
+msgid "%9lli"
+msgstr "%9lli"
+
+#: ../powertop.c:983
+#, c-format
+msgid "%s\t%5.1fms (%4.1f%%)\n"
+msgstr "%s\t%5.1fms (%4.1f%%)\n"
+
+#: ../display.c:205
+#, c-format
+msgid "(long term: %3.1fW,/%3.1fh)"
+msgstr "(keskikulutusarvio: %3.1f W,/%3.1f h)"
+
+#: ../display.c:301
+msgid "(which is CONFIG_DEBUG_KERNEL=y in the config file)\n"
+msgstr "(joka on CONFIG_DEBUG_KERNEL=y Linux-ytimen asetustiedostossa)\n"
+
+#: ../powertop.c:960
+#, c-format
+msgid "< Detailed C-state information is not available.>\n"
+msgstr "< Yksityiskohtaisia C-tilatietoja ei ole saatavilla. >\n"
+
+#: ../powertop.c:1040
+msgid "<kernel core>"
+msgstr "<ydin>"
+
+#: ../powertop.c:1036 ../powertop.c:1038
+msgid "<kernel module>"
+msgstr "<moduuli>"
+
+#: ../urbnum.c:217
+#, c-format
+msgid ""
+"A USB device is active %4.1f%% of the time:\n"
+"%s"
+msgstr ""
+"USB-laite on aktiivinen %4.1f%% ajasta:\n"
+"%s"
+
+#: ../urbnum.c:186
+msgid "Active Device name"
+msgstr "Aktiivisen laitteen nimi"
+
+#: ../powertop.c:969
+#, c-format
+msgid "C0 (cpu running) (%4.1f%%)\n"
+msgstr "C0 (suoritustila) (%4.1f%%)\n"
+
+#: ../powertop.c:966
+#, c-format
+msgid "Cn\t Avg residency\n"
+msgstr "Cn Keskimäärinen kesto\n"
+
+#: ../powertop.c:903
+#, c-format
+msgid "Collecting data for %i seconds \n"
+msgstr "Kerätään dataa %i sekunnin ajan\n"
+
+#: ../ethernet.c:128
+msgid ""
+"Disable Ethernet Wake-On-Lan with the following command:\n"
+" ethtool -s eth0 wol d \n"
+"Wake-on-Lan keeps the phy active, this costs power."
+msgstr ""
+"Poista Ethernet-verkkokortin verkkoherätteisyys (wake-on-lan) seuraavalla "
+"komennolla:\n"
+"\tethtool -s eth0 wol d \n"
+"Verkkoherätteisyys pitää verkkokortin päällä kuluttamassa virtaa."
+
+#: ../powertop.c:1187
+msgid ""
+"Disable the SE-Alert software by removing the 'setroubleshoot-server' rpm\n"
+"SE-Alert alerts you about SELinux policy violations, but also\n"
+"has a bug that wakes it up 10 times per second."
+msgstr ""
+"Poista SE-Alert käytöstä poistamalla setroubleshoot-server -rpm.\n"
+"SE-Alert ilmoittaa SELinux-käytäntöjen rikkomuksista, mutta sisältää myös "
+"ohjelmointivirheen, jonka takia se herää 10 kertaa sekunnissa."
+
+#: ../display.c:304
+msgid ""
+"No detailed statistics available; PowerTOP needs root privileges for that\n"
+msgstr ""
+"PowerTOP ei voi kerätä kaikkia tarpeellisia tietoja ilman pääkäyttäjän "
+"oikeuksia\n"
+"\n"
+
+#: ../display.c:299
+msgid ""
+"No detailed statistics available; please enable the CONFIG_TIMER_STATS "
+"kernel option\n"
+msgstr ""
+"Yksityiskohtaisia tietoja ei ole, koska ytimestä puuttuu CONFIG_TIMER_STATS-"
+"asetus.\n"
+
+#: ../display.c:302
+msgid "Note: this is only available in 2.6.21 and later kernels\n"
+msgstr ""
+"Tämä ominaisuus on saatavilla vain ytimen versiosta 2.6.21 eteenpäin.\n"
+
+#: ../cpufreqstats.c:115
+#, c-format
+msgid "P-states (frequencies)\n"
+msgstr "P-tilat (taajuudet)\n"
+
+#: ../powertop.c:170 ../powertop.c:306
+msgid "PS/2 keyboard/mouse/touchpad"
+msgstr "PS/2-hiiri, -näppäimistö tai -kosketusalusta"
+
+#: ../display.c:208
+#, c-format
+msgid "Power usage (5 minute ACPI estimate) : %5.1f W (%3.1f hours left)"
+msgstr "Virrankäyttö (5-minuutin ACPI-arvio): %3.1f W (%3.1f tuntia jäljellä)"
+
+#: ../display.c:201
+#, c-format
+msgid "Power usage (ACPI estimate): %3.1fW (%3.1f hours)"
+msgstr "Virrankäyttö (ACPI-arvio): %3.1f W (%3.1f tuntia jäljellä)"
+
+#: ../display.c:238
+#, c-format
+msgid "Power usage: %3.1fW (%3.1f hours)"
+msgstr "Virrankäyttö: %3.1f W (%3.1f tuntia)"
+
+#: ../powertop.c:902
+#, c-format
+msgid "PowerTOP needs to be run as root to collect enough information\n"
+msgstr ""
+"PowerTOP ei voi kerätä kaikkia tarpeellisia tietoja ilman pääkäyttäjän "
+"oikeuksia\n"
+
+#: ../urbnum.c:185
+msgid "Recent USB suspend statistics"
+msgstr "Tuoreet USB-lepotilatilastot"
+
+#: ../powertop.c:1181
+msgid ""
+"Suggestion: Disable 'hal' from polling your cdrom with: \n"
+"hal-disable-polling --device /dev/cdrom 'hal' is the component that auto-"
+"opens a\n"
+"window if you plug in a CD but disables SATA power saving from kicking in."
+msgstr ""
+"Ehdotus: Estä Hal-palvelua tarkkailemasta CD-asemaa seuraavalla komennolla:\n"
+"\thal-disable-polling --device /dev/cdrom\n"
+"Hal on palvelu, joka liittää CD:n tiedostojärjestelmään automaattisesti, "
+"mutta samalla estää SATA-virransäästöä aktivoitumasta."
+
+#: ../powertop.c:1155 ../powertop.c:1159
+msgid ""
+"Suggestion: Disable or remove 'beagle' from your system. \n"
+"Beagle is the program that indexes for easy desktop search, however it's \n"
+"not very efficient and costs a significant amount of battery life."
+msgstr ""
+"Ehdotus: Poista Beagle käytöstä tai kokonaan. Beagle on ohjelma, joka "
+"indeksoi tiedostoja työpöytähakua varten. Se ei kuitenkaan ole kovin tehokas "
+"ja aiheuttaa merkittävää virrankulutusta."
+
+#: ../powertop.c:1168
+msgid ""
+"Suggestion: Disable or remove 'gnome-power-manager' from your system. \n"
+"Older versions of gnome-power-manager wake up far more often than \n"
+"needed costing you some power."
+msgstr ""
+"Ehdotus: Poista gnome-power-manager käytöstä tai kokonaan. Nimestään "
+"huolimatta jotkin vanhat versiot kuluttavat virtaa enemmän kuin säästävät."
+
+#: ../powertop.c:1174
+msgid ""
+"Suggestion: Disable or remove 'pcscd' from your system. \n"
+"pcscd tends to keep the USB subsystem out of power save mode\n"
+"and your processor out of deeper powersave states."
+msgstr ""
+"Ehdotus: Poista pcscd käytöstä tai kokonaan. Pcscd saattaa estää USB-"
+"alijärjestelmää menemästä virransäästötilaan sekä suoritinta menemästä "
+"syvempiin virransäästötiloihin."
+
+#: ../powertop.c:1143
+msgid ""
+"Suggestion: Disable the CONFIG_IRQBALANCE kernel configuration option.\n"
+"The in-kernel irq balancer is obsolete and wakes the CPU up far more than "
+"needed."
+msgstr ""
+"Ehdotus: Poista ytimestä CONFIG_IRQBALANCE-asetus. Ytimen oma IRQ-"
+"tasapainotin on vanhentunut ja aiheuttaa keskeytyksiä useammin kuin olisi "
+"tarpeen."
+
+#: ../wireless.c:320
+#, c-format
+msgid ""
+"Suggestion: Disable the unused WIFI radio by executing the following "
+"command:\n"
+" echo 1 > %s \n"
+msgstr ""
+"Ehdotus: Poista käyttämätön langaton verkko käytöstä seuraavalla komennolla:"
+"\techo 1 > %s\n"
+
+#: ../wifi-new.c:194
+#, fuzzy, c-format
+msgid ""
+"Suggestion: Disable the unused WIFI radio by setting the interface down:\n"
+" ifconfig %s down\n"
+msgstr ""
+"Ehdotus: Poista käyttämätön langaton verkko käytöstä seuraavalla komennolla:"
+"\techo 1 > %s\n"
+
+#: ../bluetooth.c:144
+msgid ""
+"Suggestion: Disable the unused bluetooth interface with the following "
+"command:\n"
+" hciconfig hci0 down ; rmmod hci_usb\n"
+"Bluetooth is a radio and consumes quite some power, and keeps USB busy as "
+"well.\n"
+msgstr ""
+"Ehdotus: Käyttämättömän Bluetooth-liitännän voi poistaa käytöstä seuraavalla "
+"komennolla:\n"
+"\thciconfig hci0 down; rmmod hci_usb\n"
+"Bluetooth on radiolähetin, joka kuluttaa virtaa ja pitää USB:n päällä.\n"
+
+#: ../sata.c:101
+msgid ""
+"Suggestion: Enable SATA ALPM link power management via: \n"
+" echo min_power > /sys/class/scsi_host/host0/link_power_management_policy\n"
+"or press the S key."
+msgstr ""
+"Ehdotus: Ota SATA-linkin virranhallinta käyttöön seuraavalla komennolla:\n"
+"\techo min_power > /sys/class/scsi_host/host0/link_power_management_policy\n"
+"tai painamalla S-näppäintä."
+
+#: ../usb.c:114
+msgid ""
+"Suggestion: Enable USB autosuspend for non-input devices by pressing the U "
+"key\n"
+msgstr ""
+
+#: ../powertop.c:1131
+msgid ""
+"Suggestion: Enable the CONFIG_ACPI_BATTERY kernel configuration option.\n"
+" This option is required to get power estimages from PowerTOP"
+msgstr ""
+"Ehdotus: Käytä ytimen CONFIG_ACPI_BATTERY-asetusta, niin PowerTOP voi "
+"näyttää tietoja akun kestosta."
+
+#: ../powertop.c:1128
+msgid ""
+"Suggestion: Enable the CONFIG_CPU_FREQ_GOV_ONDEMAND kernel configuration "
+"option.\n"
+"The 'ondemand' CPU speed governor will minimize the CPU power usage while\n"
+"giving you performance when it is needed."
+msgstr ""
+"Ehdotus: Käytä ytimen CONFIG_CPU_FREQ_GOV_ONDEMAND-asetusta. ”ondemand”-\n"
+"suorituskykyprofiili minimoi suorittimen energiankäytön (ainakin Intelin\n"
+"suorittimilla) samalla antaen kaiken tehon, kun sitä tarvitaan."
+
+#: ../powertop.c:1145
+msgid ""
+"Suggestion: Enable the CONFIG_CPU_FREQ_STAT kernel configuration option.\n"
+"This option allows PowerTOP to show P-state percentages \n"
+"P-states correspond to CPU frequencies."
+msgstr ""
+"Ehdotus: Käytä ytimen CONFIG_CPU_FREQ_STAT-asetusta, niin PowerTOP voi "
+"näyttää\n"
+"tilastoja suorittimen P-tiloista. P-tilat vastaavat suorittimen eri "
+"taajuuksia."
+
+#: ../powertop.c:1134
+msgid ""
+"Suggestion: Enable the CONFIG_HPET_TIMER kernel configuration option.\n"
+"Without HPET support the kernel needs to wake up every 20 milliseconds for \n"
+"some housekeeping tasks."
+msgstr ""
+"Ehdotus: Käytä ytimen CONFIG_HPET_TIMER-asetusta. Ilman tätä asetusta "
+"ytimen\n"
+"täytyy herätä 20 millisekunnin välein tekemään ylläpitotöitä."
+
+#: ../powertop.c:1148
+msgid ""
+"Suggestion: Enable the CONFIG_INOTIFY kernel configuration option.\n"
+"This option allows programs to wait for changes in files and directories\n"
+"instead of having to poll for these changes"
+msgstr ""
+"Ehdotus: Käytä ytimen CONFIG_INOTIFY-asetusta. Inotify-tuen avulla ohjelmat\n"
+"saavat ilmoituksen tiedostojärjestelmän muutoksista, jolloin niiden ei "
+"tarvitse\n"
+"itse tarkistaa tiedostojärjestelmää säännöllisin väliajoin."
+
+#: ../powertop.c:1130
+msgid ""
+"Suggestion: Enable the CONFIG_NO_HZ kernel configuration option.\n"
+"This option is required to get any kind of longer sleep times in the CPU."
+msgstr ""
+"Ehdotus: Käytä ytimen CONFIG_NO_HZ-asetusta. Tämä asetus on välttämätön,\n"
+"jotta suoritin voisi viettää pitempiä aikoja virransäästötilassa."
+
+#: ../powertop.c:1139
+msgid ""
+"Suggestion: Enable the CONFIG_SND_AC97_POWER_SAVE kernel configuration "
+"option.\n"
+"This option will automatically power down your sound codec when not in use,\n"
+"and can save approximately half a Watt of power."
+msgstr ""
+"Ehdotus: Käytä ytimen CONFIG_SND_AC97_POWER_SAVE-asetusta. Tämä\n"
+"asetus poistaa äänikoodekin käytöstä, kun sitä ei tarvita. Tämä asetus voi\n"
+"säästään noin puoli wattia energiaa."
+
+#: ../powertop.c:1126
+msgid ""
+"Suggestion: Enable the CONFIG_USB_SUSPEND kernel configuration option.\n"
+"This option will automatically disable UHCI USB when not in use, and may\n"
+"save approximately 1 Watt of power."
+msgstr ""
+"Ehdotus: Käytä ytimen CONFIG_USB_SUSPEND-asetusta. Tämän asetuksen kanssa\n"
+"ydin lopettaa USB:n käytön, kun sitä ei tarvita, ajurien salliessa. Tällä "
+"asetus\n"
+"voi vähentää tehontarvetta jopa yhden watin."
+
+#: ../cpufreq.c:116
+msgid ""
+"Suggestion: Enable the ondemand cpu speed governor for all processors via: \n"
+" echo ondemand > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor \n"
+msgstr ""
+"Ehdotus: Aseta ondemand-suorituskykyprofiili kaikille suorittimille "
+"komennolla:\n"
+"\techo ondemand > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor\n"
+
+#: ../wireless.c:314
+#, c-format
+msgid ""
+"Suggestion: Enable wireless power saving mode by executing the following "
+"command:\n"
+" echo 5 > %s \n"
+"This will sacrifice network performance slightly to save power."
+msgstr ""
+"Ehdotus: Aseta langaton verkko virransäästötilaan seuraavalla komennolla:\n"
+"\techo 5 > %s\n"
+"Tämä asetus säästää virtaa suorituskyvyn kustannuksella."
+
+#: ../wifi-new.c:198
+#, fuzzy, c-format
+msgid ""
+"Suggestion: Enable wireless power saving mode by executing the following "
+"command:\n"
+" iwconfig %s power timeout 500ms\n"
+"This will sacrifice network performance slightly to save power."
+msgstr ""
+"Ehdotus: Aseta langaton verkko virransäästötilaan seuraavalla komennolla:\n"
+"\tiwpriv %s set_power 5\n"
+"Tämä asetus säästää virtaa suorituskyvyn kustannuksella."
+
+#: ../wireless.c:308
+#, c-format
+msgid ""
+"Suggestion: Enable wireless power saving mode by executing the following "
+"command:\n"
+" iwpriv %s set_power 5 \n"
+"This will sacrifice network performance slightly to save power."
+msgstr ""
+"Ehdotus: Aseta langaton verkko virransäästötilaan seuraavalla komennolla:\n"
+"\tiwpriv %s set_power 5\n"
+"Tämä asetus säästää virtaa suorituskyvyn kustannuksella."
+
+#: ../xrandr.c:75
+msgid ""
+"Suggestion: disable TV out via: \n"
+" xrandr --output TV --off \n"
+"or press the V key."
+msgstr ""
+"Ehdotus: Poista TV-ulostulo käytöstä seuraavalla komennolla:\n"
+"\txrandr --output TV --off\n"
+"tai painamalla V-näppäintä."
+
+#: ../misctips.c:59
+msgid ""
+"Suggestion: disable the NMI watchdog by executing the following command:\n"
+" echo 0 > /proc/sys/kernel/nmi_watchdog \n"
+"The NMI watchdog is a kernel debug mechanism to detect deadlocks"
+msgstr ""
+"Ehdotus: Poista NMI-valvoja seuraavalla komennolla:\n"
+"\techo 0 > /proc/sys/kernel/nmi_watchdog \n"
+"NMI-valvoja on ytimen vianjäljitysmekanismi lukkiutumisten havaitsemiseen."
+
+#: ../misctips.c:123
+msgid ""
+"Suggestion: enable AC97 powersave mode by executing the following command:\n"
+" echo 1 > /sys/module/snd_ac97_codec/parameters/power_save \n"
+"or by passing power_save=1 as module parameter."
+msgstr ""
+"Ehdotus: Ota AC97:n virransäästöominaisuudet käyttöön seuraavalla "
+"komennolla:\n"
+"\techo 1 > /sys/module/snd_ac97_codec/parameters/power_save\n"
+"tai antamalla moduulin parametriksi power_save=1."
+
+#: ../misctips.c:163
+#, fuzzy
+msgid ""
+"Suggestion: enable HD audio powersave mode by executing the following "
+"command:\n"
+" echo 1 > /sys/module/snd_hda_intel/parameters/power_save \n"
+"or by passing power_save=1 as module parameter."
+msgstr ""
+"Ehdotus: Ota AC97:n virransäästöominaisuudet käyttöön seuraavalla "
+"komennolla:\n"
+"\techo 1 > /sys/module/snd_ac97_codec/parameters/power_save\n"
+"tai antamalla moduulin parametriksi power_save=1."
+
+#: ../misctips.c:87
+msgid ""
+"Suggestion: enable the HPET (Multimedia Timer) in your BIOS or add \n"
+"the kernel patch to force-enable HPET. HPET support allows Linux to \n"
+"have much longer sleep intervals."
+msgstr ""
+"Ehdotus: Aseta HPET (Multimedia-ajastin) päälle Biosista tai käytä ytimen "
+"paikkaustiedostoa, jolla sen saa pakotettua käyttöön. HPET sallii ytimen "
+"viettää paljon pidempiä aikoja virransäästötilassa."
+
+#: ../misctips.c:192
+msgid ""
+"Suggestion: enable the noatime filesystem option by executing the following "
+"command:\n"
+" mount -o remount,noatime / or by pressing the T key \n"
+"noatime disables persistent access time of file accesses, which causes lots "
+"of disk IO."
+msgstr ""
+"Ehdotus: Ota tiedostojärjestelmän noatime-asetus käyttöön seuraavalla "
+"komennolla:\n"
+"\tmount -o remount,noatime /\ttai painamalla T-näppäintä\n"
+"Noatime-asetus estää tiedostojen käyttöaikojen kirjaamisen vähentäen näin "
+"kirjoitusta levylle."
+
+#: ../misctips.c:255
+msgid ""
+"Suggestion: enable the power aware CPU scheduler with the following "
+"command:\n"
+" echo 1 > /sys/devices/system/cpu/sched_mc_power_savings\n"
+"or by pressing the C key."
+msgstr ""
+"Ehdotus: Ota virrankäyttötietoinen suoritinvuorotin käyttöön seuraavalla "
+"komennolla:\n"
+"\techo 1 > /sys/devices/system/cpu/sched_mc_power_savings\n"
+"tai painamalla C-näppäintä."
+
+#: ../misctips.c:288
+#, c-format
+msgid ""
+"Suggestion: increase the VM dirty writeback time from %1.2f to 15 seconds "
+"with:\n"
+" echo 1500 > /proc/sys/vm/dirty_writeback_centisecs \n"
+"This wakes the disk up less frequently for background VM activity"
+msgstr ""
+"Ehdotus: kasvata likaisten sivujen levyllekirjoitusaikaa 15 sekuntiin\n"
+"nykyisestä %1.2f sekunnista, jotta levy alkaisi pyörimään harvemmin. "
+"Komento:\n"
+"\techo 1500 > /proc/sys/vm/dirty_writeback_centisecs"
+
+#: ../display.c:300
+msgid "This option is located in the Kernel Debugging section of menuconfig\n"
+msgstr "Tämä asetus on menuconfig-ohjelman ”Kernel Debugging”-valikon alla\n"
+
+#: ../display.c:281
+msgid "Top causes for wakeups:\n"
+msgstr "Yleisimmät keskeytysten aiheuttajat:\n"
+
+#: ../cpufreqstats.c:94
+msgid "Turbo Mode"
+msgstr ""
+
+#: ../urbnum.c:123
+#, c-format
+msgid "USB device %4s : %s (%s)"
+msgstr "USB-laite: %4s : %s (%s)"
+
+#: ../powertop.c:820
+#, c-format
+msgid "Usage: powertop [OPTION...]\n"
+msgstr "Käyttö: powertop [VALITSIMET...]\n"
+
+#: ../display.c:270
+#, c-format
+msgid "Wakeups-from-idle per second : %4.1f\tinterval: %0.1fs\n"
+msgstr ""
+"Virransäästötilasta heräämisiä sekunnissa: %4.1f\ttarkasteluväli: %01.f s\n"
+
+#: ../intelcstates.c:152
+#, c-format
+msgid "Your BIOS reports the following C-states : "
+msgstr "BIOS ilmoittaa seuraavat C-tilat: "
+
+#: ../intelcstates.c:143
+#, c-format
+msgid "Your CPU supports the following C-states : "
+msgstr "Suoritin ilmoittaa seuraavat C-tilat: "
+
+#: ../display.c:196
+#, c-format
+msgid "no ACPI power usage estimate available"
+msgstr "ACPI-virrankäyttöarviota ei ole saatavilla."
+
+#: ../display.c:244
+#, c-format
+msgid "no power usage estimate available"
+msgstr "virrankäyttöarviota ei ole saatavilla."
+
+#: ../powertop.c:433
+msgid "polling"
+msgstr "pollaus"
+
+#: ../powertop.c:831
+#, fuzzy, c-format
+msgid "powertop version %s\n"
+msgstr "powertop-versio %s\n"
+
diff --git a/po/fr.po b/po/fr.po
new file mode 100644
index 0000000..285b7bd
--- /dev/null
+++ b/po/fr.po
@@ -0,0 +1,691 @@
+# Translation of English po to French
+# This file is distributed under the same license as the PowerTOP package.
+# Benjamin Pineau <benjamin_pineau@zouh.org>, 2007
+# Antoine Cailliau <a.cailliau@ac-graphic.net>, 2007
+# $Id: fr.po,v 1.7 2007/10/28 19:46:20 ben Exp $
+msgid ""
+msgstr ""
+"Project-Id-Version: fr\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2009-08-12 15:39-0700\n"
+"PO-Revision-Date: 2009-09-25 18:08-0800\n"
+"Last-Translator: Loïc Dufresne de Virel <loic.dufresne.de.virel@intel.com>\n"
+"Language-Team: French <fr@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Poedit-Language: French\n"
+"X-Poedit-Country: FRANCE\n"
+
+#: ../powertop.c:303 ../powertop.c:306
+#, c-format
+msgid " <interrupt> : %s"
+msgstr " <interruption> : %s"
+
+#: ../powertop.c:1072
+msgid " <interrupt> : extra timer interrupt"
+msgstr "<interruption>: interruptions supplémentaires de l'horloge"
+
+#: ../powertop.c:301
+#, c-format
+msgid " <kernel IPI> : %s"
+msgstr " <IPI noyau> : %s"
+
+#: ../powertop.c:821
+#, c-format
+msgid ""
+" -d, --dump read wakeups once and print list of top offenders\n"
+msgstr ""
+" -d, --dump Lire les réveils une fois et afficher la liste des "
+"plus gros consommateurs\n"
+
+#: ../powertop.c:824
+#, c-format
+msgid " -h, --help Show this help message\n"
+msgstr " -h, --help Afficher ce message d'aide\n"
+
+#: ../powertop.c:823
+#, c-format
+msgid " -p, --pids show pids in wakeups list\n"
+msgstr " -h, --pids Afficher pids dans la liste de réveils\n"
+
+#: ../powertop.c:822
+#, c-format
+msgid " -t, --time=DOUBLE default time to gather data in seconds\n"
+msgstr ""
+" -t, --time=DOUBLE durée par défaut du recueil des données, en "
+"secondes\n"
+
+#: ../powertop.c:825
+#, c-format
+msgid " -v, --version Show version information and exit\n"
+msgstr " -v, --version Afficher le numéro de version et sortir\n"
+
+#: ../misctips.c:125
+msgid " A - Turn AC97 powersave on "
+msgstr " A - Activer l'économie d'énergie pour l'AC97 "
+
+#: ../misctips.c:165
+msgid " A - Turn HD audio powersave on "
+msgstr " A - Activer l'économie d'énergie pour l'audio HD "
+
+#: ../bluetooth.c:146
+msgid " B - Turn Bluetooth off "
+msgstr " B - Éteindre le bluetooth "
+
+#: ../misctips.c:257
+msgid " C - Power aware CPU scheduler "
+msgstr " C - activer l'ordonnanceur CPU économe "
+
+#: ../wifi-new.c:196
+msgid " D - disable wireless "
+msgstr " D - Désactiver le sans fil"
+
+#: ../wireless.c:322
+msgid " I - disable WIFI Radio "
+msgstr " I - désactiver la radio Wi-Fi "
+
+#: ../process.c:84
+#, c-format
+msgid " K - kill %s "
+msgstr " K- tuer %s "
+
+#: ../misctips.c:61
+msgid " N - Turn NMI watchdog off "
+msgstr " N - Éteindre le NMI watchdog "
+
+#: ../cpufreq.c:118
+msgid " O - enable Ondemand governor "
+msgstr " O - Activer la politique CPU « ondemand »"
+
+#: ../wifi-new.c:201
+msgid " P - Enable wireless power saving "
+msgstr " P - Activer l'économie d'énergie pour le sans fil "
+
+#: ../display.c:108
+msgid " Q - Quit "
+msgstr " Q - Quitter "
+
+#: ../display.c:109
+msgid " R - Refresh "
+msgstr " R - Rafraîchir "
+
+#: ../sata.c:104
+msgid " S - SATA Link Power Management "
+msgstr " S - activer la gestion de l'énergie sur le lien SATA "
+
+#: ../misctips.c:194
+msgid " T - enable noatime "
+msgstr " T - activer l'option noatime "
+
+#: ../urbnum.c:222 ../usb.c:116
+msgid " U - Enable USB suspend "
+msgstr " U - Activer la suspension de l'USB"
+
+#: ../xrandr.c:78
+msgid " V - Disable TV out "
+msgstr " V - désactiver la sortie TV "
+
+#: ../wireless.c:311 ../wireless.c:317
+msgid " W - Enable wireless power saving "
+msgstr " W - Activer l'économie d'énergie pour le Wi-Fi "
+
+#: ../misctips.c:292
+msgid " W - Increase Writeback time "
+msgstr "W - Augmenter l'intervalle d'écriture "
+
+#: ../ethernet.c:131
+msgid " W - disable Wake-On-Lan "
+msgstr " W - désactiver le Wake-on-LAN "
+
+#: ../cpufreqstats.c:91
+#, c-format
+msgid "%6.2f Ghz"
+msgstr "%6.2f GHz"
+
+#: ../cpufreqstats.c:88
+#, c-format
+msgid "%6lli Mhz"
+msgstr "%6lli MHz"
+
+#: ../cpufreqstats.c:85
+#, c-format
+msgid "%9lli"
+msgstr "%9lli"
+
+#: ../powertop.c:983
+#, c-format
+msgid "%s\t%5.1fms (%4.1f%%)\n"
+msgstr "%s\t%5.1fms (%4.1f%%)\n"
+
+#: ../display.c:205
+#, c-format
+msgid "(long term: %3.1fW,/%3.1fh)"
+msgstr "(long terme : %3.1fW,/%3.1fh)"
+
+#: ../display.c:301
+msgid "(which is CONFIG_DEBUG_KERNEL=y in the config file)\n"
+msgstr "(CONFIG_DEBUG_KERNEL=y dans le fichier de configuration)\n"
+
+#: ../powertop.c:960
+#, c-format
+msgid "< Detailed C-state information is not available.>\n"
+msgstr ""
+"< Les informations détaillées sur les C-states ne sont pas disponibles.>\n"
+
+#: ../powertop.c:1040
+msgid "<kernel core>"
+msgstr "<cœur du noyau>"
+
+#: ../powertop.c:1036 ../powertop.c:1038
+msgid "<kernel module>"
+msgstr "<module noyau>"
+
+#: ../urbnum.c:217
+#, c-format
+msgid ""
+"A USB device is active %4.1f%% of the time:\n"
+"%s"
+msgstr ""
+"Un périphérique USB est actif %4.1f%% du temps:\n"
+"%s"
+
+#: ../urbnum.c:186
+msgid "Active Device name"
+msgstr "Nom du périphérique actif"
+
+#: ../powertop.c:969
+#, c-format
+msgid "C0 (cpu running) (%4.1f%%)\n"
+msgstr "C0 (CPU en activité) (%4.1f%%)\n"
+
+#: ../powertop.c:966
+#, c-format
+msgid "Cn\t Avg residency\n"
+msgstr "Cn\t Résidence moy.\n"
+
+#: ../powertop.c:903
+#, c-format
+msgid "Collecting data for %i seconds \n"
+msgstr "Collecte des données pendant %i secondes \n"
+
+#: ../ethernet.c:128
+msgid ""
+"Disable Ethernet Wake-On-Lan with the following command:\n"
+" ethtool -s eth0 wol d \n"
+"Wake-on-Lan keeps the phy active, this costs power."
+msgstr ""
+"Désactiver le Wake-on-LAN Ethernet avec la commande suivante :\n"
+" ethtool -s eth0 wol d \n"
+"Le Wake-on-LAN maintient le PHY actif, ce qui consomme de l'énergie."
+
+#: ../powertop.c:1187
+msgid ""
+"Disable the SE-Alert software by removing the 'setroubleshoot-server' rpm\n"
+"SE-Alert alerts you about SELinux policy violations, but also\n"
+"has a bug that wakes it up 10 times per second."
+msgstr ""
+"Désactivez le logiciel SE-Alert en enlevant le rpm setroubleshoot-server.\n"
+"SE-Alert vous avertit des violations des politiques SELinux, mais il a\n"
+"aussi un bug qui le réveille 10 fois par seconde. "
+
+#: ../display.c:304
+msgid ""
+"No detailed statistics available; PowerTOP needs root privileges for that\n"
+msgstr ""
+"Les statistiques détaillées ne sont pas disponibles sans les privilèges "
+"root\n"
+
+#: ../display.c:299
+msgid ""
+"No detailed statistics available; please enable the CONFIG_TIMER_STATS "
+"kernel option\n"
+msgstr ""
+"Les statistiques détaillées ne sont pas disponibles ; veuillez activer \n"
+"l'option de configuration du noyau CONFIG_TIMER_STATS\n"
+
+#: ../display.c:302
+msgid "Note: this is only available in 2.6.21 and later kernels\n"
+msgstr "Note : ceci n'est disponible qu'avec les noyaux 2.6.21 et ultérieurs\n"
+
+#: ../cpufreqstats.c:115
+#, c-format
+msgid "P-states (frequencies)\n"
+msgstr "P-states (fréquences)\n"
+
+#: ../powertop.c:170 ../powertop.c:306
+msgid "PS/2 keyboard/mouse/touchpad"
+msgstr "clavier/souris/touchpad PS/2"
+
+#: ../display.c:208
+#, c-format
+msgid "Power usage (5 minute ACPI estimate) : %5.1f W (%3.1f hours left)"
+msgstr ""
+"Consommation électrique (estimation ACPI sur 5 minutes) : %5.1f W (%3.1f "
+"heures restantes)"
+
+#: ../display.c:201
+#, c-format
+msgid "Power usage (ACPI estimate): %3.1fW (%3.1f hours)"
+msgstr "Consommation électrique (estimation ACPI) : %3.1fW (%3.1f heures)"
+
+#: ../display.c:238
+#, c-format
+msgid "Power usage: %3.1fW (%3.1f hours)"
+msgstr "Consommation électrique : %3.1fW (%3.1f heures)"
+
+#: ../powertop.c:902
+#, c-format
+msgid "PowerTOP needs to be run as root to collect enough information\n"
+msgstr ""
+"PowerTOP doit être lancé en root pour collecter suffisamment d'information\n"
+
+#: ../urbnum.c:185
+msgid "Recent USB suspend statistics"
+msgstr "Statistiques des mises en veilles récentes de l'USB"
+
+#: ../powertop.c:1181
+msgid ""
+"Suggestion: Disable 'hal' from polling your cdrom with: \n"
+"hal-disable-polling --device /dev/cdrom 'hal' is the component that auto-"
+"opens a\n"
+"window if you plug in a CD but disables SATA power saving from kicking in."
+msgstr ""
+"Suggestion : empêchez hal de surveiller votre cdrom avec : hal-disable-"
+"polling --device /dev/cdrom\n"
+"hal est le composant qui ouvre automatiquement une fenêtre lorsque vous "
+"insérez\n"
+"un CD, mais qui empêche les économies d'énergie sur le bus SATA."
+
+#: ../powertop.c:1155 ../powertop.c:1159
+msgid ""
+"Suggestion: Disable or remove 'beagle' from your system. \n"
+"Beagle is the program that indexes for easy desktop search, however it's \n"
+"not very efficient and costs a significant amount of battery life."
+msgstr ""
+"Suggestion : désactivez ou enlevez 'beagle' de votre système. \n"
+"Beagle est un logiciel qui maintient des index pour faciliter la recherche\n"
+"sur le bureau, mais il n'est pas très efficace et il réduit "
+"significativement\n"
+"la durée de vie de la batterie."
+
+#: ../powertop.c:1168
+msgid ""
+"Suggestion: Disable or remove 'gnome-power-manager' from your system. \n"
+"Older versions of gnome-power-manager wake up far more often than \n"
+"needed costing you some power."
+msgstr ""
+"Suggestion : désactivez ou enlevez gnome-power-manager de votre système. \n"
+"Les vieilles versions de gnome-power-manager se réveillent beaucoup plus "
+"que \n"
+"nécessaire, ce qui coûtent de l'énergie."
+
+#: ../powertop.c:1174
+msgid ""
+"Suggestion: Disable or remove 'pcscd' from your system. \n"
+"pcscd tends to keep the USB subsystem out of power save mode\n"
+"and your processor out of deeper powersave states."
+msgstr ""
+"Suggestion : désactivez ou enlevez pcscd de votre système. \n"
+"pcscd a tendance à maintenir le sous-système USB hors du mode d'économie\n"
+"d'énergie et votre processeur hors des états d'économie avancés."
+
+#: ../powertop.c:1143
+msgid ""
+"Suggestion: Disable the CONFIG_IRQBALANCE kernel configuration option.\n"
+"The in-kernel irq balancer is obsolete and wakes the CPU up far more than "
+"needed."
+msgstr ""
+"Suggestion : désactivez l'option de configuration du noyau "
+"CONFIG_IRQBALANCE.\n"
+"Le répartiteur d'IRQ du noyau est obsolète et réveille la CPU beaucoup "
+"plus \n"
+"que nécessaire."
+
+#: ../wireless.c:320
+#, c-format
+msgid ""
+"Suggestion: Disable the unused WIFI radio by executing the following "
+"command:\n"
+" echo 1 > %s \n"
+msgstr ""
+"Suggestion : désactivez la radio Wi-Fi non utilisée en exécutant la commande "
+"suivante:\n"
+" echo 1 > %s \n"
+
+#: ../wifi-new.c:194
+#, c-format
+msgid ""
+"Suggestion: Disable the unused WIFI radio by setting the interface down:\n"
+" ifconfig %s down\n"
+msgstr ""
+"Suggestion : désactivez la radio Wi-Fi non utilisée en stoppant "
+"l'interface:\n"
+" ifconfig %s down\n"
+
+#: ../bluetooth.c:144
+msgid ""
+"Suggestion: Disable the unused bluetooth interface with the following "
+"command:\n"
+" hciconfig hci0 down ; rmmod hci_usb\n"
+"Bluetooth is a radio and consumes quite some power, and keeps USB busy as "
+"well.\n"
+msgstr ""
+"Suggestion : désactivez l'interface bluetooth non utilisée avec la "
+"commande \n"
+"suivante :\n"
+" hciconfig hci0 down ; rmmod hci_usb\n"
+"Le bluetooth est une radio et consomme beaucoup d'énergie ; de plus il\n"
+"maintient l'USB occupé.\n"
+
+#: ../sata.c:101
+msgid ""
+"Suggestion: Enable SATA ALPM link power management via: \n"
+" echo min_power > /sys/class/scsi_host/host0/link_power_management_policy\n"
+"or press the S key."
+msgstr ""
+"Suggestion : activer l'économie d'énergie (ALPM) sur le lien SATA avec :\n"
+" echo min_power > /sys/class/scsi_host/host0/link_power_management_policy\n"
+"ou appuyer sur la touche S."
+
+#: ../usb.c:114
+msgid ""
+"Suggestion: Enable USB autosuspend for non-input devices by pressing the U "
+"key\n"
+msgstr ""
+"Suggestion : activez la suspension automatique de l'USB pour les "
+"périphériques autres que de saisie à l'aide de la touche U\n"
+
+#: ../powertop.c:1131
+msgid ""
+"Suggestion: Enable the CONFIG_ACPI_BATTERY kernel configuration option.\n"
+" This option is required to get power estimages from PowerTOP"
+msgstr ""
+"Suggestion : activez l'option de configuration du noyau "
+"CONFIG_ACPI_BATTERY.\n"
+"Cette option est nécessaire à PowerTOP pour les estimations concernant\n"
+"l'électricité."
+
+#: ../powertop.c:1128
+msgid ""
+"Suggestion: Enable the CONFIG_CPU_FREQ_GOV_ONDEMAND kernel configuration "
+"option.\n"
+"The 'ondemand' CPU speed governor will minimize the CPU power usage while\n"
+"giving you performance when it is needed."
+msgstr ""
+"Suggestion : activez l'option de configuration du noyau \n"
+"CONFIG_CPU_FREQ_GOV_ONDEMAND.\n"
+"La politique CPU « ondemand » réduit la consommation électrique de la CPU \n"
+"tout en donnant des performances lorsque c'est utile."
+
+#: ../powertop.c:1145
+msgid ""
+"Suggestion: Enable the CONFIG_CPU_FREQ_STAT kernel configuration option.\n"
+"This option allows PowerTOP to show P-state percentages \n"
+"P-states correspond to CPU frequencies."
+msgstr ""
+"Suggestion : activez l'option de configuration du noyau "
+"CONFIG_CPU_FREQ_STAT.\n"
+"Cette option permet à PowerTOP d'afficher les pourcentages concernant les P-"
+"states.\n"
+"Les P-states correspondent aux fréquences de la CPU."
+
+#: ../powertop.c:1134
+msgid ""
+"Suggestion: Enable the CONFIG_HPET_TIMER kernel configuration option.\n"
+"Without HPET support the kernel needs to wake up every 20 milliseconds for \n"
+"some housekeeping tasks."
+msgstr ""
+"Suggestion : activez l'option de configuration du noyau CONFIG_HPET.\n"
+"Sans le support HPET le noyau doit se réveiller toute les 20 millisecondes \n"
+"pour certaines tâches de maintenance."
+
+#: ../powertop.c:1148
+msgid ""
+"Suggestion: Enable the CONFIG_INOTIFY kernel configuration option.\n"
+"This option allows programs to wait for changes in files and directories\n"
+"instead of having to poll for these changes"
+msgstr ""
+"Suggestion : activez l'option de configuration du noyau CONFIG_INOTIFY.\n"
+"Cette option permet aux logiciels d'attendre qu'il y ai des changements\n"
+"affectant les fichiers et répertoires, au lieu de surveiller activement."
+
+#: ../powertop.c:1130
+msgid ""
+"Suggestion: Enable the CONFIG_NO_HZ kernel configuration option.\n"
+"This option is required to get any kind of longer sleep times in the CPU."
+msgstr ""
+"Suggestion : activez l'option de configuration du noyau CONFIG_NO_HZ.\n"
+"Cette option est nécessaire pour obtenir de plus longs sommeils de la CPU."
+
+#: ../powertop.c:1139
+msgid ""
+"Suggestion: Enable the CONFIG_SND_AC97_POWER_SAVE kernel configuration "
+"option.\n"
+"This option will automatically power down your sound codec when not in use,\n"
+"and can save approximately half a Watt of power."
+msgstr ""
+"Suggestion : activez l'option de configuration du noyau \n"
+"CONFIG_SND_AC97_POWER_SAVE.\n"
+"Cette option éteint automatiquement votre codec audio lorsqu'il n'est pas \n"
+"utilisé, et peut permettre d'économiser environ un demi Watt."
+
+#: ../powertop.c:1126
+msgid ""
+"Suggestion: Enable the CONFIG_USB_SUSPEND kernel configuration option.\n"
+"This option will automatically disable UHCI USB when not in use, and may\n"
+"save approximately 1 Watt of power."
+msgstr ""
+"Suggestion : activez l'option de configuration du noyau CONFIG_USB_SUSPEND.\n"
+"Cette option va automatiquement désactiver l'UHCI USB lorsqu'il n'est pas "
+"utilisé, \n"
+"et peut économiser environ 1 Watt."
+
+#: ../cpufreq.c:116
+msgid ""
+"Suggestion: Enable the ondemand cpu speed governor for all processors via: \n"
+" echo ondemand > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor \n"
+msgstr ""
+"Suggestion : activez la politique « ondemand » de contrôle de la vitesse CPU\n"
+"pour tout les processeurs avec la commande suivante :\n"
+" echo ondemand > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor \n"
+
+#: ../wireless.c:314
+#, c-format
+msgid ""
+"Suggestion: Enable wireless power saving mode by executing the following "
+"command:\n"
+" echo 5 > %s \n"
+"This will sacrifice network performance slightly to save power."
+msgstr ""
+"Suggestion : activez le mode d'économie d'énergie pour le Wi-Fi à l'aide la "
+"commande\n"
+"suivante :\n"
+" echo 5 > %s \n"
+"Cela sacrifiera légèrement les performances réseau au profit de l'économie "
+"d'énergie."
+
+#: ../wifi-new.c:198
+#, c-format
+msgid ""
+"Suggestion: Enable wireless power saving mode by executing the following "
+"command:\n"
+" iwconfig %s power timeout 500ms\n"
+"This will sacrifice network performance slightly to save power."
+msgstr ""
+"Suggestion : activez le mode d'économie d'énergie pour le sans fil à l'aide "
+"la commande\n"
+"suivante :\n"
+" iwconfig %s power timeout 500ms\n"
+"Cela affectera légèrement les performances réseau au profit de l'économie "
+"d'énergie."
+
+#: ../wireless.c:308
+#, c-format
+msgid ""
+"Suggestion: Enable wireless power saving mode by executing the following "
+"command:\n"
+" iwpriv %s set_power 5 \n"
+"This will sacrifice network performance slightly to save power."
+msgstr ""
+"Suggestion : activez le mode d'économie d'énergie pour le Wi-Fi à l'aide la "
+"commande\n"
+"suivante :\n"
+" iwpriv %s set_power 5 \n"
+"Cela sacrifiera légèrement les performances réseau au profit de l'économie "
+"d'énergie."
+
+#: ../xrandr.c:75
+msgid ""
+"Suggestion: disable TV out via: \n"
+" xrandr --output TV --off \n"
+"or press the V key."
+msgstr ""
+"Suggestion : désactiver la sortie TV avec :\n"
+" xrandr --output TV --off \n"
+"ou appuyer sur la touche V."
+
+#: ../misctips.c:59
+msgid ""
+"Suggestion: disable the NMI watchdog by executing the following command:\n"
+" echo 0 > /proc/sys/kernel/nmi_watchdog \n"
+"The NMI watchdog is a kernel debug mechanism to detect deadlocks"
+msgstr ""
+"Suggestion : désactivez le NMI watchdog en exécutant la commande suivante :\n"
+" echo 0 > /proc/sys/kernel/nmi_watchdog \n"
+"Le NMI watchdog est un mécanisme de débogguage du noyau pour détecter les \n"
+"interblocages"
+
+#: ../misctips.c:123
+msgid ""
+"Suggestion: enable AC97 powersave mode by executing the following command:\n"
+" echo 1 > /sys/module/snd_ac97_codec/parameters/power_save \n"
+"or by passing power_save=1 as module parameter."
+msgstr ""
+"Suggestion : activez l'économie d'énergie pour l'AC97 à l'aide de la "
+"commande \n"
+"suivante :\n"
+" echo 1 > /sys/module/snd_ac97_codec/parameters/power_save \n"
+"ou en passant le paramètre power_save=1 au module."
+
+#: ../misctips.c:163
+msgid ""
+"Suggestion: enable HD audio powersave mode by executing the following "
+"command:\n"
+" echo 1 > /sys/module/snd_hda_intel/parameters/power_save \n"
+"or by passing power_save=1 as module parameter."
+msgstr ""
+"Suggestion : activez l'économie d'énergie pour l'audio HD à l'aide de la "
+"commande \n"
+"suivante :\n"
+" echo 1 > /sys/module/snd_hda_intel/parameters/power_save \n"
+"ou en passant le paramètre power_save=1 au module."
+
+#: ../misctips.c:87
+msgid ""
+"Suggestion: enable the HPET (Multimedia Timer) in your BIOS or add \n"
+"the kernel patch to force-enable HPET. HPET support allows Linux to \n"
+"have much longer sleep intervals."
+msgstr ""
+"Suggestion : activez HPET (Multimedia Timer) dans votre BIOS ou ajoutez\n"
+"le patch du noyau qui force l'activation de HPET. Le support de HPET\n"
+"permet à Linux d'avoir des périodes de sommeil beaucoup plus longues."
+
+#: ../misctips.c:192
+msgid ""
+"Suggestion: enable the noatime filesystem option by executing the following "
+"command:\n"
+" mount -o remount,noatime / or by pressing the T key \n"
+"noatime disables persistent access time of file accesses, which causes lots "
+"of disk IO."
+msgstr ""
+"Suggestion : activer l'option de montage des systèmes de fichier noatime "
+"avec :\n"
+" mount -o remount,noatime / ou en appuyant sur la touche T\n"
+"noatime désactive les mises à jour des dates d'accès aux fichiers, qui "
+"causent\n"
+"beaucoup d'E/S sur les disques."
+
+#: ../misctips.c:255
+msgid ""
+"Suggestion: enable the power aware CPU scheduler with the following "
+"command:\n"
+" echo 1 > /sys/devices/system/cpu/sched_mc_power_savings\n"
+"or by pressing the C key."
+msgstr ""
+"Suggestion : activez l'ordonnanceur CPU conscient de l'énergie avec la "
+"commande :\n"
+" echo 1 > /sys/devices/system/cpu/sched_mc_power_savings\n"
+"ou en appuyant sur la touche C."
+
+#: ../misctips.c:288
+#, c-format
+msgid ""
+"Suggestion: increase the VM dirty writeback time from %1.2f to 15 seconds "
+"with:\n"
+" echo 1500 > /proc/sys/vm/dirty_writeback_centisecs \n"
+"This wakes the disk up less frequently for background VM activity"
+msgstr ""
+"Suggestion : augmentez l'intervalle d'écriture des pages modifiées de %1.2f "
+"à 15 s avec :\n"
+" echo 1500 > /proc/sys/vm/dirty_writeback_centisecs \n"
+"Ceci réduit les réveils du disque causés par la gestion de la mémoire en "
+"arrière-plan."
+
+#: ../display.c:300
+msgid "This option is located in the Kernel Debugging section of menuconfig\n"
+msgstr ""
+"Cette option se trouve dans la section Kernel debugging de menuconfig\n"
+
+#: ../display.c:281
+msgid "Top causes for wakeups:\n"
+msgstr "Principales causes de réveils :\n"
+
+#: ../cpufreqstats.c:94
+msgid "Turbo Mode"
+msgstr "Mode Turbo"
+
+#: ../urbnum.c:123
+#, c-format
+msgid "USB device %4s : %s (%s)"
+msgstr "Périphérique USB %4s : %s (%s)"
+
+#: ../powertop.c:820
+#, c-format
+msgid "Usage: powertop [OPTION...]\n"
+msgstr "Utilisation : powertop [OPTION...]\n"
+
+#: ../display.c:270
+#, c-format
+msgid "Wakeups-from-idle per second : %4.1f\tinterval: %0.1fs\n"
+msgstr ""
+"Réveils depuis l'état de repos par seconde : %4.1f\tintervalle : %0.1fs\n"
+
+#: ../intelcstates.c:152
+#, c-format
+msgid "Your BIOS reports the following C-states : "
+msgstr "Votre BIOS expose les C-states suivants : "
+
+#: ../intelcstates.c:143
+#, c-format
+msgid "Your CPU supports the following C-states : "
+msgstr "Votre CPU supporte les C-states suivants :"
+
+#: ../display.c:196
+#, c-format
+msgid "no ACPI power usage estimate available"
+msgstr "Pas d'estimation ACPI disponible pour la consommation électrique"
+
+#: ../display.c:244
+#, c-format
+msgid "no power usage estimate available"
+msgstr "Pas d'estimation de consommation électrique disponible"
+
+#: ../powertop.c:433
+msgid "polling"
+msgstr "En cours d'interrogation"
+
+#: ../powertop.c:831
+#, c-format
+msgid "powertop version %s\n"
+msgstr "powertop version %s\n"
diff --git a/po/hu.po b/po/hu.po
new file mode 100644
index 0000000..dce2a00
--- /dev/null
+++ b/po/hu.po
@@ -0,0 +1,677 @@
+# translation of PowerTOP to Hungarian
+# PowerTOP magyar fordítás
+# This file is distributed under the same license as the PowerTOP package.
+# Kakas László <laszlo.kakas@gmail.com>, 2007.
+# Lantos Ádám <hege@playma.org>, 2007, 2008, 2009.
+msgid ""
+msgstr ""
+"Project-Id-Version: hu\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2009-08-11 13:44-0700\n"
+"PO-Revision-Date: 2009-08-12 23:15+0100\n"
+"Last-Translator: Adam Lantos <hege@playma.org>\n"
+"Language-Team: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+"X-Language: hu_HU\n"
+
+#: ../powertop.c:303 ../powertop.c:306
+#, c-format
+msgid " <interrupt> : %s"
+msgstr " <megszakítás> : %s"
+
+#: ../powertop.c:1072
+msgid " <interrupt> : extra timer interrupt"
+msgstr " <interrupt> : óramegszakítás"
+
+#: ../powertop.c:301
+#, c-format
+msgid " <kernel IPI> : %s"
+msgstr " <kernel IPI> : %s"
+
+#: ../powertop.c:821
+#, c-format
+msgid ""
+" -d, --dump read wakeups once and print list of top offenders\n"
+msgstr ""
+" -d, --dump a felébredések egyszeri vizsgálata és a legaktívabb "
+"alkalmazások kiírása\n"
+
+#: ../powertop.c:824
+#, c-format
+msgid " -h, --help Show this help message\n"
+msgstr " -h, --help Ezen súgó megjelenítése\n"
+
+#: ../powertop.c:823
+#, c-format
+msgid " -p, --pids show pids in wakeups list\n"
+msgstr " -p, --pids processzazonosítók megjelenítése\n"
+
+#: ../powertop.c:822
+#, c-format
+msgid " -t, --time=DOUBLE default time to gather data in seconds\n"
+msgstr " -t, --time=DOUBLE alapértelmezett időszelet (másodpercben)\n"
+
+#: ../powertop.c:825
+#, c-format
+msgid " -v, --version Show version information and exit\n"
+msgstr " -v, --version Verzió megjelenítése\n"
+
+#: ../misctips.c:125
+msgid " A - Turn AC97 powersave on "
+msgstr " A - AC97 energiatakarékos üzemmód "
+
+#: ../misctips.c:165
+msgid " A - Turn HD audio powersave on "
+msgstr " A - HD audio energiatakarékos mód "
+
+#: ../bluetooth.c:146
+msgid " B - Turn Bluetooth off "
+msgstr " B - Bluetooth kikapcsolása "
+
+#: ../misctips.c:257
+msgid " C - Power aware CPU scheduler "
+msgstr " C - Energiatakarékos CPU ütemező "
+
+#: ../wifi-new.c:196
+msgid " D - disable wireless "
+msgstr " D - vezeték nélküli hálózat kikapcsolása "
+
+#: ../wireless.c:322
+msgid " I - disable WIFI Radio "
+msgstr " I - WIFI adóvevő kikapcsolása "
+
+#: ../process.c:84
+#, c-format
+msgid " K - kill %s "
+msgstr " K - kill %s "
+
+#: ../misctips.c:61
+msgid " N - Turn NMI watchdog off "
+msgstr " N - NMI watchdog kikapcsolása "
+
+#: ../cpufreq.c:118
+msgid " O - enable Ondemand governor "
+msgstr " O - Ondemand szabályozó engedélyezése "
+
+#: ../wifi-new.c:201
+msgid " P - Enable wireless power saving "
+msgstr " P - Energiatakarékos vezeték nélküli mód "
+
+#: ../display.c:108
+msgid " Q - Quit "
+msgstr " Q - Kilépés "
+
+#: ../display.c:109
+msgid " R - Refresh "
+msgstr " R - Frissítés "
+
+#: ../sata.c:104
+msgid " S - SATA Link Power Management "
+msgstr " S - SATA energiatakarékosság "
+
+#: ../misctips.c:194
+msgid " T - enable noatime "
+msgstr " T - noatime engedélyezése"
+
+#: ../urbnum.c:222 ../usb.c:116
+msgid " U - Enable USB suspend "
+msgstr " U - USB suspend engedélyezése "
+
+#: ../xrandr.c:78
+msgid " V - Disable TV out "
+msgstr " V - TV kimenet kikapcsolása "
+
+#: ../wireless.c:311 ../wireless.c:317
+msgid " W - Enable wireless power saving "
+msgstr " W - WLAN energiatakarékos mód "
+
+#: ../misctips.c:292
+msgid " W - Increase Writeback time "
+msgstr " W - A Writeback idő növelése "
+
+#: ../ethernet.c:131
+msgid " W - disable Wake-On-Lan "
+msgstr " W - Wake-On-Lan kikapcsolása "
+
+#: ../cpufreqstats.c:91
+#, c-format
+msgid "%6.2f Ghz"
+msgstr "%6.2f Ghz"
+
+#: ../cpufreqstats.c:88
+#, c-format
+msgid "%6lli Mhz"
+msgstr "%6lli Mhz"
+
+#: ../cpufreqstats.c:85
+#, c-format
+msgid "%9lli"
+msgstr "%9lli"
+
+#: ../powertop.c:983
+#, c-format
+msgid "%s\t%5.1fms (%4.1f%%)\n"
+msgstr "%s\t%5.1fms (%4.1f%%)\n"
+
+#: ../display.c:205
+#, c-format
+msgid "(long term: %3.1fW,/%3.1fh)"
+msgstr "(hosszútávon: %3.1fW,/%3.1fh)"
+
+#: ../display.c:301
+msgid "(which is CONFIG_DEBUG_KERNEL=y in the config file)\n"
+msgstr "(amely CONFIG_DEBUG_KERNEL=y a konfigurációs fájlban)\n"
+
+#: ../powertop.c:960
+#, c-format
+msgid "< Detailed C-state information is not available.>\n"
+msgstr ""
+"< Részletes C-állapot információ csak mobil processzorok esetén elérhető "
+"(laptopok) >\n"
+
+#: ../powertop.c:1040
+msgid "<kernel core>"
+msgstr "<kernel core>"
+
+#: ../powertop.c:1036 ../powertop.c:1038
+msgid "<kernel module>"
+msgstr "<kernel modul>"
+
+#: ../urbnum.c:217
+#, c-format
+msgid ""
+"A USB device is active %4.1f%% of the time:\n"
+"%s"
+msgstr ""
+"Az USB eszköz az idő %4.1f%%-ában aktív:\n"
+"%s"
+
+#: ../urbnum.c:186
+msgid "Active Device name"
+msgstr "Aktív eszköz neve"
+
+#: ../powertop.c:969
+#, c-format
+msgid "C0 (cpu running) (%4.1f%%)\n"
+msgstr "C0 (processzor fut) (%4.1f%%)\n"
+
+#: ../powertop.c:966
+#, c-format
+msgid "Cn\t Avg residency\n"
+msgstr "Cn\t Átlagos tartózkodás\n"
+
+#: ../powertop.c:903
+#, c-format
+msgid "Collecting data for %i seconds \n"
+msgstr "Adatok gyűjtése %i másodpercen keresztül \n"
+
+#: ../ethernet.c:128
+msgid ""
+"Disable Ethernet Wake-On-Lan with the following command:\n"
+" ethtool -s eth0 wol d \n"
+"Wake-on-Lan keeps the phy active, this costs power."
+msgstr ""
+"Tiltsd le az Ethernet Wake-On-Lan funkciót a következő paranccsal:\n"
+" ethtool -s eth0 wol d \n"
+"A Wake-on-Lan használata esetén a hálózati eszköz folyamatosa aktív, ez "
+"energiát fogyaszt."
+
+#: ../powertop.c:1187
+msgid ""
+"Disable the SE-Alert software by removing the 'setroubleshoot-server' rpm\n"
+"SE-Alert alerts you about SELinux policy violations, but also\n"
+"has a bug that wakes it up 10 times per second."
+msgstr ""
+"Kapcsold ki a SE-Alert szoftvert a 'setroubleshoot-server' csomag "
+"eltávolításával.\n"
+"Az SE-Alert figyelmeztet az SELinux szabálysértéseknél, de ugyanakkor \n"
+"van egy hibája, amitől 10 felébredést okoz másodpercenként."
+
+#: ../display.c:304
+msgid ""
+"No detailed statistics available; PowerTOP needs root privileges for that\n"
+msgstr ""
+"Részletes statisztika nem elérhető; a PowerTOP-nak root jogra van szüksége "
+"ehhez\n"
+
+#: ../display.c:299
+msgid ""
+"No detailed statistics available; please enable the CONFIG_TIMER_STATS "
+"kernel option\n"
+msgstr ""
+"Nem áll rendelkezésre részletes statisztika, engedélyezd a "
+"CONFIG_TIMER_STATS kernel opciót\n"
+
+#: ../display.c:302
+msgid "Note: this is only available in 2.6.21 and later kernels\n"
+msgstr "Megjegyzés: ez csak a 2.6.21 és újabb kernelekben elérhető\n"
+
+#: ../cpufreqstats.c:115
+#, c-format
+msgid "P-states (frequencies)\n"
+msgstr "P-állapotok (frekvenciák)\n"
+
+#: ../powertop.c:170 ../powertop.c:306
+msgid "PS/2 keyboard/mouse/touchpad"
+msgstr "PS/2 billentyűzet/egér/touchpad"
+
+#: ../display.c:208
+#, c-format
+msgid "Power usage (5 minute ACPI estimate) : %5.1f W (%3.1f hours left)"
+msgstr ""
+"Energiafogyasztás (5 perces ACPI becsült érték): %5.1f W (%3.1f óra van "
+"hátra)"
+
+#: ../display.c:201
+#, c-format
+msgid "Power usage (ACPI estimate): %3.1fW (%3.1f hours)"
+msgstr "Energiafogyasztás (ACPI becsült érték): %3.1f W (%3.1f óra van hátra)"
+
+#: ../display.c:238
+#, c-format
+msgid "Power usage: %3.1fW (%3.1f hours)"
+msgstr "Energiafogyasztás: %3.1fW (%3.1f óra van hátra)"
+
+#: ../powertop.c:902
+#, c-format
+msgid "PowerTOP needs to be run as root to collect enough information\n"
+msgstr "A PowerTOP-ot rootként futtasd, hogy elég információt gyűjthessen\n"
+
+#: ../urbnum.c:185
+msgid "Recent USB suspend statistics"
+msgstr "Friss USB suspend statisztika"
+
+#: ../powertop.c:1181
+msgid ""
+"Suggestion: Disable 'hal' from polling your cdrom with: \n"
+"hal-disable-polling --device /dev/cdrom 'hal' is the component that "
+"auto-opens a\n"
+"window if you plug in a CD but disables SATA power saving from kicking in."
+msgstr ""
+"Tanács: Ne engedd a 'hal' alkalmazásnak a CD-meghajtó állandó figyelését: \n"
+"hal-disable-polling --device /dev/cdrom a 'hal' egy alkalmazás, ami "
+"automatikusan \n"
+"megnyit egy grafikus ablakot, ha egy CD-lemezt helyezel a meghajtóba, \n"
+"viszont ez megakadályozza a SATA energiatakarékos üzemmód bekapcsolását."
+
+#: ../powertop.c:1155 ../powertop.c:1159
+msgid ""
+"Suggestion: Disable or remove 'beagle' from your system. \n"
+"Beagle is the program that indexes for easy desktop search, however it's \n"
+"not very efficient and costs a significant amount of battery life."
+msgstr ""
+"Tanács: Kapcsold ki vagy távolítsd el a 'beagle'-t a rendszerből.\n"
+"A beagle az a program amely indexel az egyszerű desktop kereséshez, \n"
+"mindemellett nem teljesen hatékony és ez jelentős akkumulátor élettartamba "
+"kerül."
+
+#: ../powertop.c:1168
+msgid ""
+"Suggestion: Disable or remove 'gnome-power-manager' from your system. \n"
+"Older versions of gnome-power-manager wake up far more often than \n"
+"needed costing you some power."
+msgstr ""
+"Tanács: Kapcsold ki vagy távolítsd el a 'gnome-power-manager' alkalmazást. \n"
+"A neve ellenére néhány verziója nem elég hatékony, így több energiát pazarol "
+"el mint amennyit spórol."
+
+#: ../powertop.c:1174
+msgid ""
+"Suggestion: Disable or remove 'pcscd' from your system. \n"
+"pcscd tends to keep the USB subsystem out of power save mode\n"
+"and your processor out of deeper powersave states."
+msgstr ""
+"Tanács: Kapcsold ki vagy távolítsd el a 'pcscd' alkalmazást. \n"
+"A pcscd nem engedi az USB alrendszert energiatakarékos üzemmódba kapcsolni, "
+"\n"
+"és így a processzor sem éri el az alacsony fogyasztású alvási állapotokat."
+
+#: ../powertop.c:1143
+msgid ""
+"Suggestion: Disable the CONFIG_IRQBALANCE kernel configuration option.\n"
+"The in-kernel irq balancer is obsolete and wakes the CPU up far more than "
+"needed."
+msgstr ""
+"Tanács: Kapcsold ki a CONFIG_IRQBALANCE kernel konfigurációs opciót.\n"
+"A kernel irq balancer elavult és többször használja a processzort, mint "
+"ahányszor szükséges."
+
+#: ../wireless.c:320
+#, c-format
+msgid ""
+"Suggestion: Disable the unused WIFI radio by executing the following "
+"command:\n"
+" echo 1 > %s \n"
+msgstr ""
+"Tanács: Inaktiváld a használaton kívüli WIFI eszközt az alábbi parancs "
+"lefuttatásával:\n"
+" echo 1 > %s \n"
+
+#: ../wifi-new.c:194
+#, c-format
+msgid ""
+"Suggestion: Disable the unused WIFI radio by setting the interface down:\n"
+" ifconfig %s down\n"
+msgstr ""
+"Tanács: Inaktiváld a használaton kívüli WIFI eszközt az alábbi parancs "
+"lefuttatásával:\n"
+" ifconfig %s down\n"
+
+#: ../bluetooth.c:144
+msgid ""
+"Suggestion: Disable the unused bluetooth interface with the following "
+"command:\n"
+" hciconfig hci0 down ; rmmod hci_usb\n"
+"Bluetooth is a radio and consumes quite some power, and keeps USB busy as "
+"well.\n"
+msgstr ""
+"Tanács: Kapcsold ki a nem használt bluetooth interfészt az alábbi parancs "
+"lefuttatásával:\n"
+" hciconfig hci0 down; rmmod hci_usb \n"
+"A bluetooth egy rádióadó, mely némi energiát fogyaszt, valamint az USB buszt "
+"is lefoglalja.\n"
+
+#: ../sata.c:101
+msgid ""
+"Suggestion: Enable SATA ALPM link power management via: \n"
+" echo min_power > /sys/class/scsi_host/host0/link_power_management_policy\n"
+"or press the S key."
+msgstr ""
+"Tanács: Engedélyezd a SATA energiatakarékos módot az alábbi parancs "
+"lefuttatásával: \n"
+" echo min_power > /sys/class/scsi_host/host0/link_power_management_policy\n"
+"Vagy az S billentyűvel."
+
+#: ../usb.c:114
+msgid ""
+"Suggestion: Enable USB autosuspend for non-input devices by pressing the U "
+"key\n"
+msgstr "Tanács: Engedélyezd az USB energiatakarékosságot az U billentyűvel\n"
+
+#: ../powertop.c:1131
+msgid ""
+"Suggestion: Enable the CONFIG_ACPI_BATTERY kernel configuration option.\n"
+" This option is required to get power estimages from PowerTOP"
+msgstr ""
+"Tanács: Engedélyezd a CONFIG_ACPI_BATTERY kernel konfigurációs opciót.\n"
+"Ez az opció szükséges az akkumlátoros energiafelhasználás megállapításához"
+
+#: ../powertop.c:1128
+msgid ""
+"Suggestion: Enable the CONFIG_CPU_FREQ_GOV_ONDEMAND kernel configuration "
+"option.\n"
+"The 'ondemand' CPU speed governor will minimize the CPU power usage while\n"
+"giving you performance when it is needed."
+msgstr ""
+"Tanács: Engedélyezd a CONFIG_CPU_FREQ_GOV_ONDEMAND kernel konfigurációs "
+"opciót.\n"
+"Az ”ondemand” processzor sebességszabályozás minimalizálja az energia "
+"használatot, \n"
+"mindemellett teljesítményt és nagyobb sebességet biztosít amennyiben "
+"szükséges."
+
+#: ../powertop.c:1145
+msgid ""
+"Suggestion: Enable the CONFIG_CPU_FREQ_STAT kernel configuration option.\n"
+"This option allows PowerTOP to show P-state percentages \n"
+"P-states correspond to CPU frequencies."
+msgstr ""
+"Tanács: Engedélyezd a CONFIG_CPU_FREQ_STAT kernel konfigurációs opciót.\n"
+"Ez lehetővé teszi a PowerTOP számára hogy megmutassa a processzor \n"
+"különböző P-állapotban (különböző frekvenciákon) töltött idejét."
+
+#: ../powertop.c:1134
+msgid ""
+"Suggestion: Enable the CONFIG_HPET_TIMER kernel configuration option.\n"
+"Without HPET support the kernel needs to wake up every 20 milliseconds for \n"
+"some housekeeping tasks."
+msgstr ""
+"Tanács: Engedélyezd a CONFIG_HPET_TIMER kernel konfigurációs opciót.\n"
+"HPET támogatás nélkül a kernelnek 20 ezredmásodpercenként fel kell \n"
+"ébrednie néhány feladat miatt."
+
+#: ../powertop.c:1148
+msgid ""
+"Suggestion: Enable the CONFIG_INOTIFY kernel configuration option.\n"
+"This option allows programs to wait for changes in files and directories\n"
+"instead of having to poll for these changes"
+msgstr ""
+"Tanács: Engedélyezd a CONFIG_INOTIFY kernel konfigurációs opciót.\n"
+"A kernel ezen beállítása lehetővé teszi az alkalmazások számára hogy "
+"értesüljenek \n"
+"fájlok ill. könyvtárak változásáról, és így nem kell folyamatosan figyelniük "
+"erre"
+
+#: ../powertop.c:1130
+msgid ""
+"Suggestion: Enable the CONFIG_NO_HZ kernel configuration option.\n"
+"This option is required to get any kind of longer sleep times in the CPU."
+msgstr ""
+"Tanács: Engedélyezd a CONFIG_NO_HZ kernel konfigurációs opciót.\n"
+"Ez az opció szükséges a processzor bármilyen hosszabb idejű alvásához."
+
+#: ../powertop.c:1139
+msgid ""
+"Suggestion: Enable the CONFIG_SND_AC97_POWER_SAVE kernel configuration "
+"option.\n"
+"This option will automatically power down your sound codec when not in use,\n"
+"and can save approximately half a Watt of power."
+msgstr ""
+"Tanács: Engedélyezd a CONFIG_SND_AC97_POWER_SAVE kernel konfigurációs "
+"opciót.\n"
+"Ez az opció automatikusan kikapcsolja a hang kodeket ha nincs használatban,\n"
+"ezzel körülbelül fél Watt energiát takarít meg."
+
+#: ../powertop.c:1126
+msgid ""
+"Suggestion: Enable the CONFIG_USB_SUSPEND kernel configuration option.\n"
+"This option will automatically disable UHCI USB when not in use, and may\n"
+"save approximately 1 Watt of power."
+msgstr ""
+"Tanács: Engedélyezd a CONFIG_USB_SUSPEND kernel konfigurációs opciót.\n"
+"Ez az opció automatikusan kikapcsolja az USB-t ha nincs használatban, \n"
+"ezzel körülbelül 1 Watt energiát takarít meg."
+
+#: ../cpufreq.c:116
+msgid ""
+"Suggestion: Enable the ondemand cpu speed governor for all processors via: \n"
+" echo ondemand > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor \n"
+msgstr ""
+"Tanács: Engedélyezd az 'ondemand' cpu sebesség szabályozót: \n"
+" echo ondemand > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor \n"
+
+#: ../wireless.c:314
+#, c-format
+msgid ""
+"Suggestion: Enable wireless power saving mode by executing the following "
+"command:\n"
+" echo 5 > %s \n"
+"This will sacrifice network performance slightly to save power."
+msgstr ""
+"Tanács: Engedélyezd a wlan energiatakarékos módot az alábbi parancs "
+"lefuttatásával:\n"
+" echo 5 > %s \n"
+"A wlan hálózati sebessége kis mértékben csökkenni fog ettől, viszont "
+"energiát spórol."
+
+#: ../wifi-new.c:198
+#, c-format
+msgid ""
+"Suggestion: Enable wireless power saving mode by executing the following "
+"command:\n"
+" iwconfig %s power timeout 500ms\n"
+"This will sacrifice network performance slightly to save power."
+msgstr ""
+"Tanács: Engedélyezd a wlan energiatakarékos módot az alábbi parancs "
+"lefuttatásával:\n"
+" iwconfig %s power timeout 500ms\n"
+"A wlan hálózati sebessége kis mértékben csökkenni fog ettől, viszont "
+"energiát spórol."
+
+#: ../wireless.c:308
+#, c-format
+msgid ""
+"Suggestion: Enable wireless power saving mode by executing the following "
+"command:\n"
+" iwpriv %s set_power 5 \n"
+"This will sacrifice network performance slightly to save power."
+msgstr ""
+"Tanács: Engedélyezd a wlan energiatakarékos módot az alábbi parancs "
+"lefuttatásával:\n"
+" iwpriv %s set_power 5 \n"
+"A wlan hálózati sebessége kis mértékben csökkenni fog ettől, viszont "
+"energiát spórol."
+
+#: ../xrandr.c:75
+msgid ""
+"Suggestion: disable TV out via: \n"
+" xrandr --output TV --off \n"
+"or press the V key."
+msgstr ""
+"Tanács: tiltsd le a TV kimenetet a következő paranccsal : \n"
+" xrandr --output TV --off \n"
+"vagy a V billentyű megnyomásával."
+
+#: ../misctips.c:59
+msgid ""
+"Suggestion: disable the NMI watchdog by executing the following command:\n"
+" echo 0 > /proc/sys/kernel/nmi_watchdog \n"
+"The NMI watchdog is a kernel debug mechanism to detect deadlocks"
+msgstr ""
+"Tanács: Inaktiváld az NMI watchdog-ot az alábbi parancs lefuttatásával:\n"
+" echo 0 > /proc/sys/kernel/nmi_watchdog\n"
+"Az NMI watchdog egy kernel debug eszköz a deadlock-ok detektálására"
+
+#: ../misctips.c:123
+msgid ""
+"Suggestion: enable AC97 powersave mode by executing the following command:\n"
+" echo 1 > /sys/module/snd_ac97_codec/parameters/power_save \n"
+"or by passing power_save=1 as module parameter."
+msgstr ""
+"Tanács: Kapcsold be az AC97 energiatakarékos módot az alábbi parancs "
+"lefuttatásával:\n"
+" echo 1 > /sys/module/snd_ac97_codec/parameters/power_save\n"
+"vagy a power_save=1 modul paramétert használd a modul betöltésekor."
+
+#: ../misctips.c:163
+msgid ""
+"Suggestion: enable HD audio powersave mode by executing the following "
+"command:\n"
+" echo 1 > /sys/module/snd_hda_intel/parameters/power_save \n"
+"or by passing power_save=1 as module parameter."
+msgstr ""
+"Tanács: Kapcsold be a HD audio energiatakarékos módot az alábbi parancs "
+"lefuttatásával:\n"
+" echo 1 > /sys/module/snd_hda_intel/parameters/power_save\n"
+"vagy a power_save=1 modul paramétert használd a modul betöltésekor."
+
+#: ../misctips.c:87
+msgid ""
+"Suggestion: enable the HPET (Multimedia Timer) in your BIOS or add \n"
+"the kernel patch to force-enable HPET. HPET support allows Linux to \n"
+"have much longer sleep intervals."
+msgstr ""
+"Tanács: engedélyezd a HPET-et (Multimédia időzítő) a BIOS-ban vagy \n"
+"használd a 'force-enable HPET' kernel patch-et. A HPET használatával \n"
+"alkalmas rendszeren hosszabb processzor alvási ciklusok érhetőek el."
+
+#: ../misctips.c:192
+msgid ""
+"Suggestion: enable the noatime filesystem option by executing the following "
+"command:\n"
+" mount -o remount,noatime / or by pressing the T key \n"
+"noatime disables persistent access time of file accesses, which causes lots "
+"of disk IO."
+msgstr ""
+"Tanács: engedélyezd a noatime fájlrendszer-opciót az alábbi parancs "
+"lefuttatásával:\n"
+" mount -o remount,noatime / vagy a T billentyűvel. \n"
+"A noatime használatával nem íródnak ki a fájlok hozzáférési dátumai a "
+"lemezre, \n"
+"így rengeteg lemezműveletet megspórol."
+
+#: ../misctips.c:255
+msgid ""
+"Suggestion: enable the power aware CPU scheduler with the following "
+"command:\n"
+" echo 1 > /sys/devices/system/cpu/sched_mc_power_savings\n"
+"or by pressing the C key."
+msgstr ""
+"Tanács: engedélyezd az energiatakarékos CPU ütemezőt az alábbi parancs "
+"lefuttatásával:\n"
+" echo 1 > /sys/devices/system/cpu/sched_mc_power_savings\n"
+"vagy nyomd meg a C billentyűt."
+
+#: ../misctips.c:288
+#, c-format
+msgid ""
+"Suggestion: increase the VM dirty writeback time from %1.2f to 15 seconds "
+"with:\n"
+" echo 1500 > /proc/sys/vm/dirty_writeback_centisecs \n"
+"This wakes the disk up less frequently for background VM activity"
+msgstr ""
+"Tanács: növeld meg a VM dirty writeback időt %1.2f -ről 15 mp-re a következő "
+"parancssal :\n"
+" echo 1500 > /proc/sys/vm/dirty_writeback_centisecs \n"
+"Így a merevlemez ritkábban pörög fel háttérben zajló memóriaaktivitás miatt"
+
+#: ../display.c:300
+msgid "This option is located in the Kernel Debugging section of menuconfig\n"
+msgstr ""
+"Ez az opció a kernel konfiguráció Kernel Debugging szekciójában található "
+"meg\n"
+
+#: ../display.c:281
+msgid "Top causes for wakeups:\n"
+msgstr "A legtöbb felébredést okozó processzek:\n"
+
+#: ../cpufreqstats.c:94
+msgid "Turbo Mode"
+msgstr "Turbo mód"
+
+#: ../urbnum.c:123
+#, c-format
+msgid "USB device %4s : %s (%s)"
+msgstr "USB eszköz %4s : %s (%s)"
+
+#: ../powertop.c:820
+#, c-format
+msgid "Usage: powertop [OPTION...]\n"
+msgstr "Használat: powertop [OPCIÓ...]\n"
+
+#: ../display.c:270
+#, c-format
+msgid "Wakeups-from-idle per second : %4.1f\tinterval: %0.1fs\n"
+msgstr "Felébredés / másodperc: %4.1f\tidőkeret: %0.1fs\n"
+
+#: ../intelcstates.c:152
+#, c-format
+msgid "Your BIOS reports the following C-states : "
+msgstr "A BIOS a következő C-állapotokat ismeri : "
+
+#: ../intelcstates.c:143
+#, c-format
+msgid "Your CPU supports the following C-states : "
+msgstr "A processzor a következő C-állapotokat támogatja : "
+
+#: ../display.c:196
+#, c-format
+msgid "no ACPI power usage estimate available"
+msgstr "Az ACPI energiahasználat-becslés nem lekérdezhető"
+
+#: ../display.c:244
+#, c-format
+msgid "no power usage estimate available"
+msgstr "az energiahasználat nem becsülhető"
+
+#: ../powertop.c:433
+msgid "polling"
+msgstr "polling"
+
+#: ../powertop.c:831
+#, c-format
+msgid "powertop version %s\n"
+msgstr "powertop verzió %s\n"
diff --git a/po/id.po b/po/id.po
new file mode 100644
index 0000000..7786b06
--- /dev/null
+++ b/po/id.po
@@ -0,0 +1,794 @@
+# Translation of English po to Indonesian
+# This file is distributed under the same license as the PowerTOP package.
+#
+#
+# Andika Triwidada <andika@gmail.com>, 2007-2010.
+msgid ""
+msgstr ""
+"Project-Id-Version: powertop 1.12\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2010-07-14 01:14+0700\n"
+"PO-Revision-Date: 2010-07-14 01:34+0700\n"
+"Last-Translator: Andika Triwidada <andika@gmail.com>\n"
+"Language-Team: Meego Indonesian Translation Team <andika@gmail.com>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Poedit-Language: Indonesian\n"
+"X-Poedit-Country: Indonesia\n"
+
+#: ../powertop.c:832
+#, c-format
+msgid ""
+" -d, --dump read wakeups once and print list of top offenders\n"
+msgstr ""
+" -d, --dump membaca cacah bangun hanya sekali dan mencetak "
+"daftar pelanggar utama\n"
+
+#: ../powertop.c:835
+#, c-format
+msgid " -h, --help Show this help message\n"
+msgstr " -h, --help Tampilkan pesan bantuan ini\n"
+
+#: ../powertop.c:834
+#, c-format
+msgid " -p, --pids show pids in wakeups list\n"
+msgstr " -p, --pids tampilkan PIDS pada daftar cacah bangun\n"
+
+#: ../powertop.c:833
+#, c-format
+msgid " -t, --time=DOUBLE default time to gather data in seconds\n"
+msgstr ""
+" -t, --time=DOUBLE waktu baku untuk mengumpulkan data dalam detik\n"
+
+#: ../powertop.c:836
+#, c-format
+msgid " -v, --version Show version information and exit\n"
+msgstr " -v, --version Tampilkan informasi versi dan keluar\n"
+
+#: ../misctips.c:125
+msgid " A - Turn AC97 powersave on "
+msgstr " A - Nyalakan pengehematan daya AC97 "
+
+#: ../alsa-power.c:195 ../misctips.c:165
+msgid " A - Turn HD audio powersave on "
+msgstr " A - Nyalakan pengehematan daya HD audio "
+
+#: ../bluetooth.c:152
+msgid " B - Turn Bluetooth off "
+msgstr " B - Matikan Bluetooth "
+
+#: ../misctips.c:257
+msgid " C - Power aware CPU scheduler "
+msgstr " C - Skeduler CPU yang sadar daya "
+
+#: ../wifi-new.c:198
+msgid " D - disable wireless "
+msgstr " D - Matikan wireless "
+
+#: ../wireless.c:322
+msgid " I - disable WIFI Radio "
+msgstr " I - Matikan Radio WIFI "
+
+#: ../process.c:86
+#, c-format
+msgid " K - kill %s "
+msgstr " K - Matikan %s "
+
+#: ../misctips.c:61
+msgid " N - Turn NMI watchdog off "
+msgstr " N - Matikan watchdog NMI "
+
+#: ../cpufreq.c:118
+msgid " O - enable Ondemand governor "
+msgstr " O - Fungsikan governor Ondemand "
+
+#: ../devicepm.c:114
+msgid " P - Enable Runtime PM"
+msgstr " P - Fungsikan PM Runtime"
+
+#: ../devicepm.c:276
+msgid " P - Enable device power management "
+msgstr " P - Fungsikan manajemen daya piranti "
+
+#: ../display.c:108
+msgid " Q - Quit "
+msgstr " Q - Keluar "
+
+#: ../display.c:109
+msgid " R - Refresh "
+msgstr " R - Segarkan "
+
+#: ../ahci-alpm.c:259 ../sata.c:105
+msgid " S - SATA Link Power Management "
+msgstr " S - Manajemen Daya Link SATA "
+
+#: ../misctips.c:194
+msgid " T - enable noatime "
+msgstr " T - Fungsikan noatime "
+
+#: ../urbnum.c:218 ../usb.c:119
+msgid " U - Enable USB suspend "
+msgstr " U - Fungsikan suspend USB "
+
+#: ../xrandr.c:78
+msgid " V - Disable TV out "
+msgstr " V - Matikan TV out "
+
+#: ../wifi-new.c:203
+msgid " W - Enable Wireless power saving "
+msgstr " W - Fungsikan penghematan daya Wireless "
+
+#: ../wireless.c:311 ../wireless.c:317
+msgid " W - Enable wireless power saving "
+msgstr " W - Fungsikan penghematan daya wireless "
+
+#: ../misctips.c:292
+msgid " W - Increase Writeback time "
+msgstr " W - Naikkan waktu Writeback "
+
+#: ../ethernet.c:131
+msgid " W - disable Wake-On-Lan "
+msgstr " W - Matikan Bangun-Lewat-LAN "
+
+#: ../cpufreqstats.c:91
+#, c-format
+msgid "%6.2f Ghz"
+msgstr "%6.2f GHz"
+
+#: ../cpufreqstats.c:88
+#, c-format
+msgid "%6lli Mhz"
+msgstr "%6lli MHz"
+
+#: ../cpufreqstats.c:85
+#, c-format
+msgid "%9lli"
+msgstr "%9lli"
+
+#: ../devicepm.c:245
+#, c-format
+msgid "%i more devices without runtime PM ommitted\n"
+msgstr "%i piranti lain tanpa manajemen daya runtime diabaikan\n"
+
+#: ../powertop.c:1003
+#, c-format
+msgid "%s\t%5.1fms (%4.1f%%)\n"
+msgstr "%s\t%5.1fms (%4.1f%%)\n"
+
+#: ../powertop.c:317
+#, c-format
+msgid "%s interrupt"
+msgstr "%s interupsi"
+
+#: ../display.c:205
+#, c-format
+msgid "(long term: %3.1fW,/%3.1fh)"
+msgstr "(jangka pjg: %3.1fW/%3.1fj)"
+
+#: ../display.c:304
+msgid "(which is CONFIG_DEBUG_KERNEL=y in the config file)\n"
+msgstr "(yaitu CONFIG_DEBUG_KERNEL=y di berkas config)\n"
+
+#: ../powertop.c:980
+#, c-format
+msgid "< Detailed C-state information is not available.>\n"
+msgstr "< Informasi C-state terinci tidak tersedia >\n"
+
+#: ../ahci-alpm.c:255
+#, c-format
+msgid ""
+"A SATA device is active %1.1f%% of the time:\n"
+"%s"
+msgstr ""
+"Suatu piranti SATA aktif %1.1f%% dari waktu:\n"
+"%s"
+
+#: ../urbnum.c:213
+#, c-format
+msgid ""
+"A USB device is active %4.1f%% of the time:\n"
+"%s"
+msgstr ""
+"Suatu piranti USB aktif %4.1f%% dari waktu:\n"
+"%s"
+
+#: ../devicepm.c:271
+#, c-format
+msgid ""
+"A device is active %4.1f%% of the time:\n"
+"%s"
+msgstr ""
+"Suatu piranti aktif %4.1f%% dari waktu:\n"
+"%s"
+
+#: ../ahci-alpm.c:220
+msgid "Active\tPartial\tSlumber\tDevice name"
+msgstr "Aktif\tSebagian\tSlumber\tName piranti"
+
+#: ../alsa-power.c:158 ../devicepm.c:224 ../urbnum.c:181
+msgid "Active Device name"
+msgstr "Aktif Name piranti"
+
+#: ../alsa-power.c:190
+#, c-format
+msgid ""
+"An audio device is active %4.1f%% of the time:\n"
+"%s"
+msgstr ""
+"Suatu piranti audio aktif %4.1f%% dari waktu:\n"
+"%s"
+
+#: ../powertop.c:989
+#, c-format
+msgid "C0 (cpu running) (%4.1f%%)\n"
+msgstr "C0 (cpu bekerja) (%4.1f%%)\n"
+
+#: ../powertop.c:986
+#, c-format
+msgid "Cn\t Avg residency\n"
+msgstr "Cn\t Residensi rata-rata\n"
+
+#: ../powertop.c:923
+#, c-format
+msgid "Collecting data for %i seconds \n"
+msgstr "Mengumpulkan data selama %i detik \n"
+
+#: ../devicepm.c:235
+msgid "Devices without runtime PM"
+msgstr "Piranti tanpa manajemen daya runtime"
+
+#: ../ethernet.c:128
+msgid ""
+"Disable Ethernet Wake-On-Lan with the following command:\n"
+" ethtool -s eth0 wol d \n"
+"Wake-on-Lan keeps the phy active, this costs power."
+msgstr ""
+"Matikan Bangun-Lewat-LAN dari Ethernet dengan perintah berikut:\n"
+" ethtool -s eth0 wol d \n"
+"Bangun-Lewat-LAN membuat phy terus aktif, yang memakan daya."
+
+#: ../powertop.c:1234
+msgid ""
+"Disable the SE-Alert software by removing the 'setroubleshoot-server' rpm\n"
+"SE-Alert alerts you about SELinux policy violations, but also\n"
+"has a bug that wakes it up 10 times per second."
+msgstr ""
+"Hentikan SE-Alert dengan menghapus rpm 'setroubleshoot-server'\n"
+"SE-Alert mengingatkan Anda tentang pelanggaran kebijakan SELinux, tapi juga\n"
+"memiliki bug yang membangunkannya 10 kali per detik."
+
+#: ../perf.c:256
+#, c-format
+msgid "Disk accesses:\n"
+msgstr "Akses ke disk:\n"
+
+#: ../powertop.c:1060
+msgid "Load balancing tick"
+msgstr "Tick penyeimbangan beban"
+
+#: ../display.c:307
+msgid ""
+"No detailed statistics available; PowerTOP needs root privileges for that\n"
+msgstr ""
+"Tidak tersedia statistik rinci; PowerTOP perlu privilese root untuk itu\n"
+
+#: ../display.c:302
+msgid ""
+"No detailed statistics available; please enable the CONFIG_TIMER_STATS "
+"kernel option\n"
+msgstr ""
+"Tidak tersedia statistik rinci; silahkan hidupkan opsi kernel "
+"CONFIG_TIMER_STATS\n"
+
+#: ../display.c:305
+msgid "Note: this is only available in 2.6.21 and later kernels\n"
+msgstr "Catatan: ini hanya tersedia di kernel 2.6.21 dan setelahnya\n"
+
+#: ../cpufreqstats.c:115
+#, c-format
+msgid "P-states (frequencies)\n"
+msgstr "P-state (frekuensi)\n"
+
+#: ../powertop.c:317
+msgid "PS/2 keyboard/mouse/touchpad"
+msgstr "PS/2 keyboard/mouse/touchpad"
+
+#: ../display.c:208
+#, c-format
+msgid "Power usage (5 minute ACPI estimate) : %5.1f W (%3.1f hours left)"
+msgstr "Penggunaan daya (perkiraan ACPI 5 menit) : %5.1f W (%3.1f jam tersisa)"
+
+#: ../display.c:201
+#, c-format
+msgid "Power usage (ACPI estimate): %3.1fW (%3.1f hours)"
+msgstr "Penggunaan daya (perkiraan ACPI): %3.1fW (%3.1f jam)"
+
+#: ../display.c:238
+#, c-format
+msgid "Power usage: %3.1fW (%3.1f hours)"
+msgstr "Penggunaan daya: %3.1fW (%3.1f jam)"
+
+#: ../powertop.c:922
+#, c-format
+msgid "PowerTOP needs to be run as root to collect enough information\n"
+msgstr ""
+"PowerTOP perlu dijalankan sebagai root untuk mengumpulkan cukup informasi\n"
+
+#: ../ahci-alpm.c:219
+msgid "Recent SATA AHCI link activity statistics"
+msgstr "Statistik aktivitas link AHCI SATA terkini"
+
+#: ../urbnum.c:180
+msgid "Recent USB suspend statistics"
+msgstr "Statistik suspensi USB terkini"
+
+#: ../alsa-power.c:157
+msgid "Recent audio activity statistics"
+msgstr "Statistik aktivitas audio terkini"
+
+#: ../devicepm.c:223
+msgid "Runtime Device Power Management statistics"
+msgstr "Statistik Manajemen Daya Piranti Runtime"
+
+#: ../powertop.c:1228
+msgid ""
+"Suggestion: Disable 'hal' from polling your cdrom with: \n"
+"hal-disable-polling --device /dev/cdrom 'hal' is the component that auto-"
+"opens a\n"
+"window if you plug in a CD but disables SATA power saving from kicking in."
+msgstr ""
+"Saran: Atur agar 'hal' tidak melakukan polling ke cdrom Anda dengan:\n"
+"hal-disable-polling --device /dev/cdrom 'hal' akan membuka otomatis \n"
+"peramban berkas ketika CD dimasukkan tapi mencegah penghematan daya \n"
+"SATA bekerja."
+
+#: ../powertop.c:1202 ../powertop.c:1206
+msgid ""
+"Suggestion: Disable or remove 'beagle' from your system. \n"
+"Beagle is the program that indexes for easy desktop search, however it's \n"
+"not very efficient and costs a significant amount of battery life."
+msgstr ""
+"Saran: Matikan atau hapus 'beagle' dari sistem Anda. \n"
+"Beagle adalah program yang membuat indeks untuk pencarian desktop \n"
+"yang muda, namun tidak cukup efisien dan memakan cukup banyak \n"
+"umur baterai."
+
+#: ../powertop.c:1215
+msgid ""
+"Suggestion: Disable or remove 'gnome-power-manager' from your system. \n"
+"Older versions of gnome-power-manager wake up far more often than \n"
+"needed costing you some power."
+msgstr ""
+"Saran: Matikan atau hapus 'gnome-power-manager' dari sistem Anda. \n"
+"Versi-versi terdahulu gnome-power-manager bangun terlalu sering daripada\n"
+"yang diperlukan sehingga memakan daya."
+
+#: ../powertop.c:1221
+msgid ""
+"Suggestion: Disable or remove 'pcscd' from your system. \n"
+"pcscd tends to keep the USB subsystem out of power save mode\n"
+"and your processor out of deeper powersave states."
+msgstr ""
+"Saran: Matikan atau hapus 'pcscd' dari sistem Anda. \n"
+"pcscd cenderung membuat subsistem USB keluar dari mode penghematan daya dan "
+"prosesor keluar dari state penghematan daya yang lebih jauh."
+
+#: ../powertop.c:1190
+msgid ""
+"Suggestion: Disable the CONFIG_IRQBALANCE kernel configuration option.\n"
+"The in-kernel irq balancer is obsolete and wakes the CPU up far more than "
+"needed."
+msgstr ""
+"Saran: Matikan opsi konfigurasi kernel CONFIG_IRQBALANCE.\n"
+"Penyeimbang irq di kernel sudah kedaluarsa dan membangunkan CPU sangat jauh "
+"lebih banyak dari yang diperlukan."
+
+#: ../wireless.c:320
+#, c-format
+msgid ""
+"Suggestion: Disable the unused WIFI radio by executing the following "
+"command:\n"
+" echo 1 > %s \n"
+msgstr ""
+"Saran: Matikan radio WIFI yang tak dipakai dengan mengeksekusi perintah "
+"ini:\n"
+" echo 1 > %s \n"
+
+#: ../wifi-new.c:196
+#, c-format
+msgid ""
+"Suggestion: Disable the unused WIFI radio by setting the interface down:\n"
+" ifconfig %s down\n"
+msgstr ""
+"Saran: Matikan radio WIFI yang tak dipakai dengan mematikan interface-nya:\n"
+" ifconfig %s down\n"
+
+#: ../bluetooth.c:150
+msgid ""
+"Suggestion: Disable the unused bluetooth interface with the following "
+"command:\n"
+" hciconfig hci0 down ; rmmod hci_usb\n"
+"Bluetooth is a radio and consumes quite some power, and keeps USB busy as "
+"well.\n"
+msgstr ""
+"Saran: Matikan interface Bluetooth yang tidak dipakai dengan perintah "
+"berikut:\n"
+" hciconfig hci0 down ; rmmod hci_usb\n"
+"Bluetooth adalah sebuah radio dan mengkonsumsi daya lumayan, dan juga "
+"membuat USB sibuk terus.\n"
+
+#: ../devicepm.c:112
+msgid "Suggestion: Enable Device Power Management by pressing the P key\n"
+msgstr "Saran: Aktifkan Manajemen Daya Piranti dengan menekan tombol P\n"
+
+#: ../sata.c:102
+msgid ""
+"Suggestion: Enable SATA ALPM link power management via: \n"
+" echo min_power > /sys/class/scsi_host/host0/link_power_management_policy\n"
+"or press the S key."
+msgstr ""
+"Saran: Fungsikan manajemen daya link SATA ALPM melalui: \n"
+" echo min_power > /sys/class/scsi_host/host0/link_power_management_policy\n"
+"atau tekan tombol S."
+
+#: ../usb.c:117
+msgid ""
+"Suggestion: Enable USB autosuspend for non-input devices by pressing the U "
+"key\n"
+msgstr ""
+"Saran: Aktifkan autosuspend USB bagi perangkat bukan masukan dengan menekan "
+"tombol U\n"
+
+#: ../powertop.c:1175
+msgid ""
+"Suggestion: Enable the CONFIG_ACPI_BATTERY kernel configuration option.\n"
+" This option is required to get power estimages from PowerTOP"
+msgstr ""
+"Saran: Fungsikan opsi konfigurasi kernel CONFIG_ACPI_BATTERY.\n"
+"Opsi ini diperlukan untuk mendapat estimasi penggunaan daya PowerTOP"
+
+#: ../powertop.c:1172
+msgid ""
+"Suggestion: Enable the CONFIG_CPU_FREQ_GOV_ONDEMAND kernel configuration "
+"option.\n"
+"The 'ondemand' CPU speed governor will minimize the CPU power usage while\n"
+"giving you performance when it is needed."
+msgstr ""
+"Saran: Fungsikan opsi konfigurasi kernel CONFIG_CPU_FREQ_GOV_ONDEMAND.\n"
+"Pengendali kecepatan CPU 'ondemand' akan meminimalkan pemakaian daya CPU\n"
+"sambil memberikan kinerja ketika diperlukan."
+
+#: ../powertop.c:1192
+msgid ""
+"Suggestion: Enable the CONFIG_CPU_FREQ_STAT kernel configuration option.\n"
+"This option allows PowerTOP to show P-state percentages \n"
+"P-states correspond to CPU frequencies."
+msgstr ""
+"Saran: Fungsikan opsi konfigurasi kernel CONFIG_CPU_FREQ_STAT \n"
+"Opsi ini memungkinkan PowerTOP menampilkan persentase P-state \n"
+"P-state terkait dengan frekuensi-frekuensi CPU."
+
+#: ../powertop.c:1178
+msgid ""
+"Suggestion: Enable the CONFIG_HPET_TIMER kernel configuration option.\n"
+"Without HPET support the kernel needs to wake up every 20 milliseconds for \n"
+"some housekeeping tasks."
+msgstr ""
+"Saran: Fungsikan opsi konfigurasi kernel CONFIG_HPET_TIMER.\n"
+"Tanpa dukungan HPET kernel perlu bangun setiap 20 milidetik untuk \n"
+"melakukan tugas-tugas housekeeping."
+
+#: ../powertop.c:1195
+msgid ""
+"Suggestion: Enable the CONFIG_INOTIFY kernel configuration option.\n"
+"This option allows programs to wait for changes in files and directories\n"
+"instead of having to poll for these changes"
+msgstr ""
+"Saran: Fungsikan opsi konfigurasi kernel CONFIG_INOTIFY \n"
+"Opsi ini memungkinkan program menunggu pemberitahuan perubahan\n"
+"dalam berkas dan direktori tanpa harus memeriksa berulang kali"
+
+#: ../powertop.c:1174
+msgid ""
+"Suggestion: Enable the CONFIG_NO_HZ kernel configuration option.\n"
+"This option is required to get any kind of longer sleep times in the CPU."
+msgstr ""
+"Saran: Fungsikan opsi konfigurasi kernel CONFIG_NO_HZ.\n"
+"Opsi ini diperlukan untuk memperoleh sebarang waktu sleep yang lebih panjang "
+"di CPU."
+
+#: ../powertop.c:1181
+msgid ""
+"Suggestion: Enable the CONFIG_PCIEASPM kernel configuration option.\n"
+"PCI Link Powermanagement (ASPM) allows the hardware to go to low power mode\n"
+"automatically when a PCI-E device is idle."
+msgstr ""
+"Saran: Fungsikan opsi konfigurasi kernel CONFIG_PCIEASPM.\n"
+"PCI Link Powermanagement (ASPM) memungkinkan perangkat keras menuju ke mode\n"
+"daya rendah secara otomatis ketika suatu perangkat PCI-E menganggur."
+
+#: ../powertop.c:1168
+msgid ""
+"Suggestion: Enable the CONFIG_PM_ADVANCED_DEBUG kernel configuration "
+"option.\n"
+"This option will allow PowerTOP to collect runtime power management "
+"statistics."
+msgstr ""
+"Saran: Fungsikan opsi konfigurasi kernel CONFIG_PM_ADVANCED_DEBUG \n"
+"Opsi ini memungkinkan PowerTOP mengumpulkan statistik manajemen daya runtime."
+
+#: ../powertop.c:1170
+msgid ""
+"Suggestion: Enable the CONFIG_PM_RUNTIME kernel configuration option.\n"
+"This option enables the kernel to manage power for various devices in your "
+"computer."
+msgstr ""
+"Saran: Fungsikan opsi konfigurasi kernel CONFIG_PM_RUNTIME.\n"
+"Opsi ini memungkinkan kernel mengelola daya bagi berbagai piranti di "
+"komputer Anda."
+
+#: ../powertop.c:1186
+msgid ""
+"Suggestion: Enable the CONFIG_SND_AC97_POWER_SAVE kernel configuration "
+"option.\n"
+"This option will automatically power down your sound codec when not in use,\n"
+"and can save approximately half a Watt of power."
+msgstr ""
+"Saran: Fungsikan opsi konfigurasi kernel CONFIG_SND_AC97_POWER_SAVE.\n"
+"Opsi ini akan otomatis mematikan daya codec suara ketika tidak dipakai,\n"
+"dan dapat menghemat daya sekitar setengah Watt."
+
+#: ../powertop.c:1166
+msgid ""
+"Suggestion: Enable the CONFIG_USB_SUSPEND kernel configuration option.\n"
+"This option will automatically disable UHCI USB when not in use, and may\n"
+"save approximately 1 Watt of power."
+msgstr ""
+"Saran: Fungsikan opsi konfigurasi kernel CONFIG_USB_SUSPEND.\n"
+"Opsi ini akan otomatis menonaktifkan UHCI USB ketika tidak dipakai, \n"
+"dan mungkin menghemat daya sekitar 1 Watt."
+
+#: ../cpufreq.c:116
+msgid ""
+"Suggestion: Enable the ondemand cpu speed governor for all processors via: \n"
+" echo ondemand > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor \n"
+msgstr ""
+"Saran: Fungsikan pengatur kecepatan cpu ondemand untuk semua prosesor "
+"melalui: \n"
+" echo ondemand > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor \n"
+
+#: ../wireless.c:314
+#, c-format
+msgid ""
+"Suggestion: Enable wireless power saving mode by executing the following "
+"command:\n"
+" echo 5 > %s \n"
+"This will sacrifice network performance slightly to save power."
+msgstr ""
+"Saran: Fungsikan penghematan daya wireless dengan menjalankan perintah "
+"berikut:\n"
+" echo 5 > %s \n"
+"Ini akan sedikit mengorbankan kinerja jaringan untuk menghemat daya."
+
+#: ../wifi-new.c:200
+#, c-format
+msgid ""
+"Suggestion: Enable wireless power saving mode by executing the following "
+"command:\n"
+" iwconfig %s power timeout 500ms\n"
+"This will sacrifice network performance slightly to save power."
+msgstr ""
+"Saran: Fungsikan penghematan daya wireless dengan menjalankan perintah "
+"berikut:\n"
+" iwconfig %s power timeout 500ms\n"
+"Ini akan sedikit mengorbankan kinerja jaringan untuk menghemat daya."
+
+#: ../wireless.c:308
+#, c-format
+msgid ""
+"Suggestion: Enable wireless power saving mode by executing the following "
+"command:\n"
+" iwpriv %s set_power 5 \n"
+"This will sacrifice network performance slightly to save power."
+msgstr ""
+"Saran: Fungsikan penghematan daya wireless dengan menjalankan perintah "
+"berikut:\n"
+" iwpriv %s set_power 5 \n"
+"Ini akan sedikit mengorbankan kinerja jaringan untuk menghemat daya."
+
+#: ../xrandr.c:75
+msgid ""
+"Suggestion: disable TV out via: \n"
+" xrandr --output TV --off \n"
+"or press the V key."
+msgstr ""
+"Saran: Matikan TV out melalui: \n"
+" xrandr --output TV --off \n"
+"atau tekan tombol V."
+
+#: ../misctips.c:59
+msgid ""
+"Suggestion: disable the NMI watchdog by executing the following command:\n"
+" echo 0 > /proc/sys/kernel/nmi_watchdog \n"
+"The NMI watchdog is a kernel debug mechanism to detect deadlocks"
+msgstr ""
+"Saran: Matikan watchdog NMI dengan menjalankan perintah berikut:\n"
+" echo 0 > /proc/sys/kernel/nmi_watchdog \n"
+"Watchdog NMI adalah sebuah mekanisme debug kernel untuk mendeteksi deadlock"
+
+#: ../misctips.c:123
+msgid ""
+"Suggestion: enable AC97 powersave mode by executing the following command:\n"
+" echo 1 > /sys/module/snd_ac97_codec/parameters/power_save \n"
+"or by passing power_save=1 as module parameter."
+msgstr ""
+"Saran: Fungsikan mode penghematan daya AC97 dengan menjalankan perintah "
+"ini:\n"
+" echo 1 > /sys/module/snd_ac97_codec/parameters/power_save \n"
+"atau dengan menambahkan parameter modul power_save=1."
+
+#: ../misctips.c:163
+msgid ""
+"Suggestion: enable HD audio powersave mode by executing the following "
+"command:\n"
+" echo 1 > /sys/module/snd_hda_intel/parameters/power_save \n"
+"or by passing power_save=1 as module parameter."
+msgstr ""
+"Saran: Fungsikan mode penghematan daya HD audio dengan menjalankan perintah "
+"ini:\n"
+" echo 1 > /sys/module/snd_hda_intel/parameters/power_save \n"
+"atau dengan menambahkan parameter modul power_save=1."
+
+#: ../misctips.c:87
+msgid ""
+"Suggestion: enable the HPET (Multimedia Timer) in your BIOS or add \n"
+"the kernel patch to force-enable HPET. HPET support allows Linux to \n"
+"have much longer sleep intervals."
+msgstr ""
+"Saran: Fungsikan HPET (Multimedia Timer) pada BIOS Anda atau \n"
+"tambahkan patch kernel untuk memaksa-fungsikan HPET. Dukungan \n"
+"HPET memungkinkan Linux untuk memiliki interval sleep lebih panjang."
+
+#: ../misctips.c:192
+msgid ""
+"Suggestion: enable the noatime filesystem option by executing the following "
+"command:\n"
+" mount -o remount,noatime / or by pressing the T key \n"
+"noatime disables persistent access time of file accesses, which causes lots "
+"of disk IO."
+msgstr ""
+"Saran: Fungsikan opsi sistem berkas noatime dengan menjalankan perintah "
+"ini:\n"
+" mount -o remount,noatime / atau dengan menekan tombol T \n"
+"noatime mematikan waktu akses persisten dari pengaksesan berkas, yang "
+"menyebabkan banyak IO disk."
+
+#: ../misctips.c:255
+msgid ""
+"Suggestion: enable the power aware CPU scheduler with the following "
+"command:\n"
+" echo 1 > /sys/devices/system/cpu/sched_mc_power_savings\n"
+"or by pressing the C key."
+msgstr ""
+"Saran: Fungsikan skeduler CPU yang sadar daya dengan perintah berikut:\n"
+" echo 1 > /sys/devices/system/cpu/sched_mc_power_savings\n"
+"atau dengan menekan tombol C."
+
+#: ../misctips.c:288
+#, c-format
+msgid ""
+"Suggestion: increase the VM dirty writeback time from %1.2f to 15 seconds "
+"with:\n"
+" echo 1500 > /proc/sys/vm/dirty_writeback_centisecs \n"
+"This wakes the disk up less frequently for background VM activity"
+msgstr ""
+"Saran: Naikkan waktu VM dirty writeback dari %1.2f ke 15 detik dengan:\n"
+" echo 1500 > /proc/sys/vm/dirty_writeback_centisecs \n"
+"Hal ini membangunkan disk lebih jarang untuk aktivitas latarbelakang VM"
+
+#: ../powertop.c:1239
+msgid ""
+"The Intel Integrated Graphics driver failed to enable Memory self refresh.\n"
+"Memory Self Refresh is important for good memory power savings.\n"
+"Please check your OS vendor for a kernel update and/or report a bug."
+msgstr ""
+"Driver Intel Integrated Graphics gagal mengaktifkan Memory self refresh.\n"
+"Memory Self Refresh penting bagi penghematan daya memori yang baik.\n"
+"Silakan periksa vendor OS Anda untuk kernel mutakhir dan/atau laporkan bug."
+
+#: ../perf.c:242
+#, c-format
+msgid "The application '%s' is writing to file '%s' on /dev/%s\n"
+msgstr "Aplikasi '%s' sedang menulis ke berkas '%s' pada /dev/%s\n"
+
+#: ../perf.c:237
+#, c-format
+msgid ""
+"The program '%s' is writing to file '%s' on /dev/%s.\n"
+"This prevents the disk from going to powersave mode."
+msgstr ""
+"Program '%s' sedang menulis ke berkas '%s' pada /dev/%s.\n"
+"Hal ini mencegah disk menuju mode penghematan daya."
+
+#: ../display.c:303
+msgid "This option is located in the Kernel Debugging section of menuconfig\n"
+msgstr "Opsi ini terletak di bagian Kernel Debugging dari menuconfig\n"
+
+#: ../display.c:281
+msgid "Top causes for wakeups:\n"
+msgstr "Penyebab utama bangun:\n"
+
+#: ../cpufreqstats.c:94
+msgid "Turbo Mode"
+msgstr "Mode Turbo"
+
+#: ../urbnum.c:123
+#, c-format
+msgid "USB device %4s : %s (%s)"
+msgstr "Piranti USB %s : %s (%s)4"
+
+#: ../powertop.c:831
+#, c-format
+msgid "Usage: powertop [OPTION...]\n"
+msgstr "Penggunaan: powertop [OPSI...]\n"
+
+#: ../display.c:270
+#, c-format
+msgid "Wakeups-from-idle per second : %4.1f\tinterval: %0.1fs\n"
+msgstr "Bangun-dari-menganggur per detik: %4.1f\tinterval: %0.1fd\n"
+
+#: ../intelcstates.c:152
+#, c-format
+msgid "Your BIOS reports the following C-states : "
+msgstr "BIOS Anda melaporkan state C berikut : "
+
+#: ../intelcstates.c:143
+#, c-format
+msgid "Your CPU supports the following C-states : "
+msgstr "CPU Anda mendukung state C berikut : "
+
+#: ../powertop.c:314
+#, c-format
+msgid "[%s] <interrupt>"
+msgstr "[%s] <interupsi>"
+
+#: ../powertop.c:312
+#, c-format
+msgid "[%s] <kernel IPI>"
+msgstr "[%s] <kernel IPI>"
+
+#: ../powertop.c:1108
+msgid "[extra timer interrupt]"
+msgstr "[interupsi timer ekstra]"
+
+#: ../powertop.c:1067
+msgid "[kernel core]"
+msgstr "[core kernel]"
+
+#: ../powertop.c:1063 ../powertop.c:1065
+msgid "[kernel module]"
+msgstr "[modul kernel]"
+
+#: ../powertop.c:1059
+msgid "[kernel scheduler]"
+msgstr "[scheduler kernel]"
+
+#: ../display.c:196
+#, c-format
+msgid "no ACPI power usage estimate available"
+msgstr "tidak tersedia estimasi penggunaan daya ACPI"
+
+#: ../display.c:244
+#, c-format
+msgid "no power usage estimate available"
+msgstr "tidak tersedia estimasi penggunaan daya"
+
+#: ../powertop.c:444
+msgid "polling"
+msgstr "polling"
+
+#: ../powertop.c:842
+#, c-format
+msgid "powertop version %s\n"
+msgstr "powertop versi %s\n"
diff --git a/po/it.po b/po/it.po
new file mode 100644
index 0000000..3a2cf21
--- /dev/null
+++ b/po/it.po
@@ -0,0 +1,599 @@
+# Dutch translations for PACKAGE package.
+# Copyright (C) 2007 THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# Arjan van de Ven <arjan@linux.intel.com>, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2009-08-12 15:39-0700\n"
+"PO-Revision-Date: 2010-04-09 09:48+0100\n"
+"Last-Translator: Lorenzo <lorenzo.gennaro@ptiglobal.net>\n"
+"Language-Team: Italian\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Poedit-SourceCharset: utf-8\n"
+
+#: ../powertop.c:303
+#: ../powertop.c:306
+#, c-format
+msgid " <interrupt> : %s"
+msgstr " <interrupt> : %s"
+
+#: ../powertop.c:1072
+msgid " <interrupt> : extra timer interrupt"
+msgstr " <interrupt> : extra timer interrupt"
+
+#: ../powertop.c:301
+#, c-format
+msgid " <kernel IPI> : %s"
+msgstr " <kernel IPI> : %s"
+
+#: ../powertop.c:821
+#, c-format
+msgid " -d, --dump read wakeups once and print list of top offenders\n"
+msgstr " -d, --dump leggi wakeup una volta e stampa lista dei primi trasgressori\n"
+
+#: ../powertop.c:824
+#, c-format
+msgid " -h, --help Show this help message\n"
+msgstr " -h, --help Mostra questo messaggio di aiuto\n"
+
+#: ../powertop.c:823
+#, c-format
+msgid " -p, --pids show pids in wakeups list\n"
+msgstr " -p, --pids mostra i pid nella lista wakeup\n"
+
+#: ../powertop.c:822
+#, c-format
+msgid " -t, --time=DOUBLE default time to gather data in seconds\n"
+msgstr " -t, --time=DOUBLE tempo predefinito per raccogliere dati in pochi secondi\n"
+
+#: ../powertop.c:825
+#, c-format
+msgid " -v, --version Show version information and exit\n"
+msgstr " -v, --versione Mostra informazioni sulla versione ed esci\n"
+
+#: ../misctips.c:125
+msgid " A - Turn AC97 powersave on "
+msgstr " A - Accendi il risparmio energetico AC97"
+
+#: ../misctips.c:165
+msgid " A - Turn HD audio powersave on "
+msgstr " A - Accendi il risparmio energetico per audio HD"
+
+#: ../bluetooth.c:146
+msgid " B - Turn Bluetooth off "
+msgstr " B - Spegni Bluetooth"
+
+#: ../misctips.c:257
+msgid " C - Power aware CPU scheduler "
+msgstr " C - Programmatore Power aware CPU"
+
+#: ../wifi-new.c:196
+msgid " D - disable wireless "
+msgstr " D - disattiva wireless "
+
+#: ../wireless.c:322
+msgid " I - disable WIFI Radio "
+msgstr " I - disattiva Radio WIFI"
+
+#: ../process.c:84
+#, c-format
+msgid " K - kill %s "
+msgstr " K - chiudi %s "
+
+#: ../misctips.c:61
+msgid " N - Turn NMI watchdog off "
+msgstr " N - Spegni watchdog NMI"
+
+#: ../cpufreq.c:118
+msgid " O - enable Ondemand governor "
+msgstr " O - attiva Ondemand governor "
+
+#: ../wifi-new.c:201
+msgid " P - Enable wireless power saving "
+msgstr " P - Attiva risparmio energetico wireless"
+
+#: ../display.c:108
+msgid " Q - Quit "
+msgstr " Q - Esci"
+
+#: ../display.c:109
+msgid " R - Refresh "
+msgstr " R - Aggiorna"
+
+#: ../sata.c:104
+msgid " S - SATA Link Power Management "
+msgstr " S - Gestione SATA Link Power"
+
+#: ../misctips.c:194
+msgid " T - enable noatime "
+msgstr " T - attiva noatime "
+
+#: ../urbnum.c:222
+#: ../usb.c:116
+msgid " U - Enable USB suspend "
+msgstr " U - Attiva sospensione USB"
+
+#: ../xrandr.c:78
+msgid " V - Disable TV out "
+msgstr " V - Disattiva uscita TV"
+
+#: ../wireless.c:311
+#: ../wireless.c:317
+msgid " W - Enable wireless power saving "
+msgstr " W - Attiva risparmio energetico wireless"
+
+#: ../misctips.c:292
+msgid " W - Increase Writeback time "
+msgstr " W - Incrementa tempo di writeback"
+
+#: ../ethernet.c:131
+msgid " W - disable Wake-On-Lan "
+msgstr " W - disattiva Wake-On-Lan "
+
+#: ../cpufreqstats.c:91
+#, c-format
+msgid "%6.2f Ghz"
+msgstr "%6.2f Ghz"
+
+#: ../cpufreqstats.c:88
+#, c-format
+msgid "%6lli Mhz"
+msgstr "%6lli Mhz"
+
+#: ../cpufreqstats.c:85
+#, c-format
+msgid "%9lli"
+msgstr "%9lli"
+
+#: ../powertop.c:983
+#, c-format
+msgid "%s\t%5.1fms (%4.1f%%)\n"
+msgstr "%s\t%5.1fms (%4.1f%%)\n"
+
+#: ../display.c:205
+#, c-format
+msgid "(long term: %3.1fW,/%3.1fh)"
+msgstr "(long term: %3.1fW,/%3.1fh)"
+
+#: ../display.c:301
+msgid "(which is CONFIG_DEBUG_KERNEL=y in the config file)\n"
+msgstr "(che è CONFIG_DEBUG_KERNEL=y nel file .config)\n"
+
+#: ../powertop.c:960
+#, c-format
+msgid "< Detailed C-state information is not available.>\n"
+msgstr "< Informazioni dettagliate su i C-state non sono disponibili.>\n"
+
+#: ../powertop.c:1040
+msgid "<kernel core>"
+msgstr "<kernel core>"
+
+#: ../powertop.c:1036
+#: ../powertop.c:1038
+msgid "<kernel module>"
+msgstr "<modulo del kernel>"
+
+#: ../urbnum.c:217
+#, c-format
+msgid ""
+"A USB device is active %4.1f%% of the time:\n"
+"%s"
+msgstr ""
+"Un dispositivo USB è attivo %4.1f%% del tempo:\n"
+"%s"
+
+#: ../urbnum.c:186
+msgid "Active Device name"
+msgstr "Nome del dispositivo attivo"
+
+#: ../powertop.c:969
+#, c-format
+msgid "C0 (cpu running) (%4.1f%%)\n"
+msgstr "C0 (cpu occupata) (%4.1f%%)\n"
+
+#: ../powertop.c:966
+#, c-format
+msgid "Cn\t Avg residency\n"
+msgstr "Cn\t Avg residency\n"
+
+#: ../powertop.c:903
+#, c-format
+msgid "Collecting data for %i seconds \n"
+msgstr "Raccolta dati per %i secondi \n"
+
+#: ../ethernet.c:128
+msgid ""
+"Disable Ethernet Wake-On-Lan with the following command:\n"
+" ethtool -s eth0 wol d \n"
+"Wake-on-Lan keeps the phy active, this costs power."
+msgstr ""
+"Disattiva Wake-On-Lan ethernet con il comando seguente:\n"
+" ethtool -s eth0 wol d \n"
+"Wake-on-Lan mantiene attivo il phy. Questo consuma energia."
+
+#: ../powertop.c:1187
+msgid ""
+"Disable the SE-Alert software by removing the 'setroubleshoot-server' rpm\n"
+"SE-Alert alerts you about SELinux policy violations, but also\n"
+"has a bug that wakes it up 10 times per second."
+msgstr ""
+"Disattiva il software SE-Alert rimuovendo il 'setroubleshoot-server' rpm\n"
+"SE-Alert ti avverte sulle violazioni alle policy SELinux, ma ha anche\n"
+"un bug che lo riattiva 10 volte al secondo."
+
+#: ../display.c:304
+msgid "No detailed statistics available; PowerTOP needs root privileges for that\n"
+msgstr "Nessuna statistica dettagliata: PowerTOP ha bisogno di essere root\n"
+
+#: ../display.c:299
+msgid "No detailed statistics available; please enable the CONFIG_TIMER_STATS kernel option\n"
+msgstr "Nessuna statistica dettagliata disponibile; abilitare CONFIG_TIMER_STATSnel kernel\n"
+
+#: ../display.c:302
+msgid "Note: this is only available in 2.6.21 and later kernels\n"
+msgstr "Nota: è disponibile solo nei kernel 2.6.21 e successivi\n"
+
+#: ../cpufreqstats.c:115
+#, c-format
+msgid "P-states (frequencies)\n"
+msgstr "P-states (frequenze)\n"
+
+#: ../powertop.c:170
+#: ../powertop.c:306
+msgid "PS/2 keyboard/mouse/touchpad"
+msgstr "tastiera/mouse/touchpad PS/2"
+
+#: ../display.c:208
+#, c-format
+msgid "Power usage (5 minute ACPI estimate) : %5.1f W (%3.1f hours left)"
+msgstr "Energia utilizzata (stima ACPI di 5 minuti): %5.1f W (%3.1f ore rimanenti)"
+
+#: ../display.c:201
+#, c-format
+msgid "Power usage (ACPI estimate): %3.1fW (%3.1f hours)"
+msgstr "Energia utilizzata (stima ACPI): %3.1fW (%3.1f ore)"
+
+#: ../display.c:238
+#, c-format
+msgid "Power usage: %3.1fW (%3.1f hours)"
+msgstr "Energia utilizzata: %3.1fW (%3.1f ore)"
+
+#: ../powertop.c:902
+#, c-format
+msgid "PowerTOP needs to be run as root to collect enough information\n"
+msgstr "PowerTOP deve essere eseguito da root per ottenere informazioni sufficienti\n"
+
+#: ../urbnum.c:185
+msgid "Recent USB suspend statistics"
+msgstr "Statistiche di sospensione di recenti USB"
+
+#: ../powertop.c:1181
+msgid ""
+"Suggestion: Disable 'hal' from polling your cdrom with: \n"
+"hal-disable-polling --device /dev/cdrom 'hal' is the component that auto-opens a\n"
+"window if you plug in a CD but disables SATA power saving from kicking in."
+msgstr ""
+
+#: ../powertop.c:1155
+#: ../powertop.c:1159
+msgid ""
+"Suggestion: Disable or remove 'beagle' from your system. \n"
+"Beagle is the program that indexes for easy desktop search, however it's \n"
+"not very efficient and costs a significant amount of battery life."
+msgstr ""
+"Suggerimento: disabilitare o rimuovere 'beagle' dal sistema\n"
+"Beagle è il programma che indicizza per faciltare la ricerca, purtroppo\n"
+"non è molto efficiente, e puù consumare molta batteria"
+
+#: ../powertop.c:1168
+msgid ""
+"Suggestion: Disable or remove 'gnome-power-manager' from your system. \n"
+"Older versions of gnome-power-manager wake up far more often than \n"
+"needed costing you some power."
+msgstr ""
+"Suggerimento: disabilitare o rimuovere 'gnome-power-manager' dal sistema. \n"
+"Le versioni più vecchie di gnome-power-manager si riattivano molto più spesso di quanto \n"
+"necessario utilizzando più energia."
+
+#: ../powertop.c:1174
+msgid ""
+"Suggestion: Disable or remove 'pcscd' from your system. \n"
+"pcscd tends to keep the USB subsystem out of power save mode\n"
+"and your processor out of deeper powersave states."
+msgstr ""
+"Suggerimento: disabilitare o rimuovere 'pcscd' dal sistema. \n"
+"pcscd tende a mantenere il sottosistema USB fuori dalla modalità di risparmio energetico \n"
+"e il processore fuori da stati di risparmio energetico."
+
+#: ../powertop.c:1143
+msgid ""
+"Suggestion: Disable the CONFIG_IRQBALANCE kernel configuration option.\n"
+"The in-kernel irq balancer is obsolete and wakes the CPU up far more than needed."
+msgstr ""
+"Suggerimento: disabilitare CONFIG_IRQBALANCE nel kernel\n"
+"IRQBALANCE è obsoleto e usa la CPU molto più del necessario."
+
+#: ../wireless.c:320
+#, c-format
+msgid ""
+"Suggestion: Disable the unused WIFI radio by executing the following command:\n"
+" echo 1 > %s \n"
+msgstr ""
+"Suggerimento: disabilitare la radio WIFI inutilizzata eseguendo il seguente comando:\n"
+" echo 1 > %s \n"
+
+#: ../wifi-new.c:194
+#, c-format
+msgid ""
+"Suggestion: Disable the unused WIFI radio by setting the interface down:\n"
+" ifconfig %s down\n"
+msgstr ""
+"Suggerimento: disabilitare la radio WIFI inutilizzata impostando l'interfaccia verso il basso:\n"
+" ifconfig %s down\n"
+
+#: ../bluetooth.c:144
+msgid ""
+"Suggestion: Disable the unused bluetooth interface with the following command:\n"
+" hciconfig hci0 down ; rmmod hci_usb\n"
+"Bluetooth is a radio and consumes quite some power, and keeps USB busy as well.\n"
+msgstr ""
+"Suggerimento: disabilitare l'interfaccia bluetooth inutilizzata con il seguente comando:\n"
+" hciconfig hci0 down ; rmmod hci_usb\n"
+"Bluetooth è un radiotrasmettitore, quindi consuma energia. E tiene anche impegnata l'USB\n"
+
+#: ../sata.c:101
+msgid ""
+"Suggestion: Enable SATA ALPM link power management via: \n"
+" echo min_power > /sys/class/scsi_host/host0/link_power_management_policy\n"
+"or press the S key."
+msgstr ""
+
+#: ../usb.c:114
+msgid "Suggestion: Enable USB autosuspend for non-input devices by pressing the U key\n"
+msgstr ""
+
+#: ../powertop.c:1131
+msgid ""
+"Suggestion: Enable the CONFIG_ACPI_BATTERY kernel configuration option.\n"
+" This option is required to get power estimages from PowerTOP"
+msgstr ""
+"Suggerimento: abilitare l'opzione di configurazione del kernel CONFIG_ACPI_BATTERY\n"
+"Questa opzione è necessaria per ottenere stime di consumo da PowerTOP"
+
+#: ../powertop.c:1128
+msgid ""
+"Suggestion: Enable the CONFIG_CPU_FREQ_GOV_ONDEMAND kernel configuration option.\n"
+"The 'ondemand' CPU speed governor will minimize the CPU power usage while\n"
+"giving you performance when it is needed."
+msgstr ""
+"Suggestion: Enable the CONFIG_CPU_FREQ_GOV_ONDEMAND kernel configuration option.\n"
+"The 'ondemand' CPU speed governor will minimize the CPU power usage while\n"
+"giving you performance when it is needed."
+
+#: ../powertop.c:1145
+msgid ""
+"Suggestion: Enable the CONFIG_CPU_FREQ_STAT kernel configuration option.\n"
+"This option allows PowerTOP to show P-state percentages \n"
+"P-states correspond to CPU frequencies."
+msgstr ""
+"Suggestion: Enable the CONFIG_CPU_FREQ_STAT kernel configuration option.\n"
+"This option allows PowerTOP to show P-state percentages \n"
+"P-states correspond to CPU frequencies."
+
+#: ../powertop.c:1134
+msgid ""
+"Suggestion: Enable the CONFIG_HPET_TIMER kernel configuration option.\n"
+"Without HPET support the kernel needs to wake up every 20 milliseconds for \n"
+"some housekeeping tasks."
+msgstr ""
+"Suggerimento: abilitare CONFIG_HPET_TIMER nel kernel.\n"
+"Senza il supporto per HPET support il kernel deve fare alcune operazioni ogni 20ms for \n"
+"some housekeeping tasks."
+
+#: ../powertop.c:1148
+msgid ""
+"Suggestion: Enable the CONFIG_INOTIFY kernel configuration option.\n"
+"This option allows programs to wait for changes in files and directories\n"
+"instead of having to poll for these changes"
+msgstr ""
+"Suggestion: Enable the CONFIG_INOTIFY kernel configuration option.\n"
+"This option allows programs to wait for changes in files and directories\n"
+"instead of having to poll for these changes"
+
+#: ../powertop.c:1130
+msgid ""
+"Suggestion: Enable the CONFIG_NO_HZ kernel configuration option.\n"
+"This option is required to get any kind of longer sleep times in the CPU."
+msgstr ""
+"Suggerimento: abilitare CONFIG_NO_HZ nel kernel\n"
+"Questa opzione è necessaria per ottenere periodi di riposo più lunghi nella CPU"
+
+#: ../powertop.c:1139
+msgid ""
+"Suggestion: Enable the CONFIG_SND_AC97_POWER_SAVE kernel configuration option.\n"
+"This option will automatically power down your sound codec when not in use,\n"
+"and can save approximately half a Watt of power."
+msgstr ""
+"Suggerimento: abilitare CONFIG_SND_AC97_POWER_SAVE nel kernel\n"
+"Questa opzione spegnerà automaticamente la scheda audio quando non è\n"
+"utilizzata, e può salvare circa mezzo Watt di potenza."
+
+#: ../powertop.c:1126
+msgid ""
+"Suggestion: Enable the CONFIG_USB_SUSPEND kernel configuration option.\n"
+"This option will automatically disable UHCI USB when not in use, and may\n"
+"save approximately 1 Watt of power."
+msgstr ""
+"Suggerimento: abilitare CONFIG_USB_SUSPEND nel kernel.\n"
+"Questa opzione disabilita automaticamente UHCI USB quando non è utilizzato\n"
+"Può far risparmiare fino a 1 Watt di energia"
+
+#: ../cpufreq.c:116
+msgid ""
+"Suggestion: Enable the ondemand cpu speed governor for all processors via: \n"
+" echo ondemand > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor \n"
+msgstr ""
+
+#: ../wireless.c:314
+#, c-format
+msgid ""
+"Suggestion: Enable wireless power saving mode by executing the following command:\n"
+" echo 5 > %s \n"
+"This will sacrifice network performance slightly to save power."
+msgstr ""
+"Suggerimento: abilitare modalità risparmio energetico wireless, eseguendo il seguente comando:\n"
+" echo 5 > %s \n"
+"Questo scrificherà la performance del network per risparmiare energia."
+
+#: ../wifi-new.c:198
+#, c-format
+msgid ""
+"Suggestion: Enable wireless power saving mode by executing the following command:\n"
+" iwconfig %s power timeout 500ms\n"
+"This will sacrifice network performance slightly to save power."
+msgstr ""
+"Suggerimento: abilitare modalità risparmio energetico wireless, eseguendo il seguente comando:\n"
+" iwconfig %s power timeout 500ms\n"
+"Questo scrificherà la performance del network per risparmiare energia."
+
+#: ../wireless.c:308
+#, c-format
+msgid ""
+"Suggestion: Enable wireless power saving mode by executing the following command:\n"
+" iwpriv %s set_power 5 \n"
+"This will sacrifice network performance slightly to save power."
+msgstr ""
+"Suggerimento: abilitare modalità di risparmio energetico wirelessi eseguendo il seguente comando:\n"
+" iwpriv %s set_power 5 \n"
+"Questo sacrificherà leggermente le prestazioni del network per risparmiare energia."
+
+#: ../xrandr.c:75
+msgid ""
+"Suggestion: disable TV out via: \n"
+" xrandr --output TV --off \n"
+"or press the V key."
+msgstr ""
+"Suggerimento: disattivare l'uscita TV attraverso: \n"
+" xrandr --output TV --off \n"
+"o premendo il tasto V."
+
+#: ../misctips.c:59
+msgid ""
+"Suggestion: disable the NMI watchdog by executing the following command:\n"
+" echo 0 > /proc/sys/kernel/nmi_watchdog \n"
+"The NMI watchdog is a kernel debug mechanism to detect deadlocks"
+msgstr ""
+"Suggerimento: disabilitare NMI watchdog, eseguendo il seguente comando:\n"
+"echo 0 > /proc/sys/kernel/nmi_watchdog \n"
+"Il NMI watchdog è un meccanisco kernel di debug per scoprire deadlocks"
+
+#: ../misctips.c:123
+msgid ""
+"Suggestion: enable AC97 powersave mode by executing the following command:\n"
+" echo 1 > /sys/module/snd_ac97_codec/parameters/power_save \n"
+"or by passing power_save=1 as module parameter."
+msgstr ""
+"Suggerimento: abilitare modalità di risparmio energetico AC97, eseguendo il seguente comando:\n"
+" echo 1 > /sys/module/snd_ac97_codec/parameters/power_save \n"
+"o passando power_save = 1 come parametro del modulo."
+
+#: ../misctips.c:163
+msgid ""
+"Suggestion: enable HD audio powersave mode by executing the following command:\n"
+" echo 1 > /sys/module/snd_hda_intel/parameters/power_save \n"
+"or by passing power_save=1 as module parameter."
+msgstr ""
+"Suggerimento: abilitare risparmio energetico HD audio, eseguendo il seguente comando:\n"
+" echo 1 > /sys/module/snd_hda_intel/parameters/power_save \n"
+"o aggiungendolo in /etc/rc.local"
+
+#: ../misctips.c:87
+msgid ""
+"Suggestion: enable the HPET (Multimedia Timer) in your BIOS or add \n"
+"the kernel patch to force-enable HPET. HPET support allows Linux to \n"
+"have much longer sleep intervals."
+msgstr ""
+
+#: ../misctips.c:192
+msgid ""
+"Suggestion: enable the noatime filesystem option by executing the following command:\n"
+" mount -o remount,noatime / or by pressing the T key \n"
+"noatime disables persistent access time of file accesses, which causes lots of disk IO."
+msgstr ""
+
+#: ../misctips.c:255
+msgid ""
+"Suggestion: enable the power aware CPU scheduler with the following command:\n"
+" echo 1 > /sys/devices/system/cpu/sched_mc_power_savings\n"
+"or by pressing the C key."
+msgstr ""
+
+#: ../misctips.c:288
+#, c-format
+msgid ""
+"Suggestion: increase the VM dirty writeback time from %1.2f to 15 seconds with:\n"
+" echo 1500 > /proc/sys/vm/dirty_writeback_centisecs \n"
+"This wakes the disk up less frequently for background VM activity"
+msgstr ""
+
+#: ../display.c:300
+msgid "This option is located in the Kernel Debugging section of menuconfig\n"
+msgstr "Questa opzione si trova in Kernel Debugging in menuconfig\n"
+
+#: ../display.c:281
+msgid "Top causes for wakeups:\n"
+msgstr "Cause principali di wakeup:\n"
+
+#: ../cpufreqstats.c:94
+msgid "Turbo Mode"
+msgstr "Modalità turbo"
+
+#: ../urbnum.c:123
+#, c-format
+msgid "USB device %4s : %s (%s)"
+msgstr "Dispositivo USB %4s : %s (%s)"
+
+#: ../powertop.c:820
+#, c-format
+msgid "Usage: powertop [OPTION...]\n"
+msgstr "Utilizzo: powertop [OPZIONE...]\n"
+
+#: ../display.c:270
+#, c-format
+msgid "Wakeups-from-idle per second : %4.1f\tinterval: %0.1fs\n"
+msgstr "Wakeups da idle per secondo : %4.1f\tinterval: %0.1fs\n"
+
+#: ../intelcstates.c:152
+#, c-format
+msgid "Your BIOS reports the following C-states : "
+msgstr "Il BIOS riporta i seguenti C-states:"
+
+#: ../intelcstates.c:143
+#, c-format
+msgid "Your CPU supports the following C-states : "
+msgstr "La CPU supporta i seguenti C-states:"
+
+#: ../display.c:196
+#, c-format
+msgid "no ACPI power usage estimate available"
+msgstr "nessuna stima disponibile per l'utilizzo di energia da parte di ACPI"
+
+#: ../display.c:244
+#, c-format
+msgid "no power usage estimate available"
+msgstr "nessuna stima disponibile per l'utilizzo di energia"
+
+#: ../powertop.c:433
+msgid "polling"
+msgstr "polling"
+
+#: ../powertop.c:831
+#, c-format
+msgid "powertop version %s\n"
+msgstr "versione powertop %s\n"
+
diff --git a/po/ja.po b/po/ja.po
new file mode 100644
index 0000000..648990f
--- /dev/null
+++ b/po/ja.po
@@ -0,0 +1,778 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# MATSUU Takuto <matsuu@gmail.com>, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2010-07-15 07:43+0900\n"
+"PO-Revision-Date: 2010-07-17 10:41+0900\n"
+"Last-Translator: MATSUU Takuto <matsuu@gentoo.org>\n"
+"Language-Team: Japanese <ja@li.org>\n"
+"Language: ja\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../powertop.c:832
+#, c-format
+msgid ""
+" -d, --dump read wakeups once and print list of top offenders\n"
+msgstr " -d, --dump CPU起床プロセス上位一覧を1回だけ表示する\n"
+
+#: ../powertop.c:835
+#, c-format
+msgid " -h, --help Show this help message\n"
+msgstr " -h, --help このヘルプメッセージを表示する\n"
+
+#: ../powertop.c:834
+#, c-format
+msgid " -p, --pids show pids in wakeups list\n"
+msgstr ""
+" -p, --pids CPU起床プロセス上位一覧にプロセスIDを表示する\n"
+
+#: ../powertop.c:833
+#, c-format
+msgid " -t, --time=DOUBLE default time to gather data in seconds\n"
+msgstr " -t, --time=DOUBLE データを取得する間隔を秒単位で指定する\n"
+
+#: ../powertop.c:836
+#, c-format
+msgid " -v, --version Show version information and exit\n"
+msgstr " -v, --version バージョン情報を表示して終了する\n"
+
+#: ../misctips.c:125
+msgid " A - Turn AC97 powersave on "
+msgstr " A - AC97省電力モード有効 "
+
+#: ../alsa-power.c:195 ../misctips.c:165
+msgid " A - Turn HD audio powersave on "
+msgstr " A - HDオーディオ省電力モード有効 "
+
+#: ../bluetooth.c:152
+msgid " B - Turn Bluetooth off "
+msgstr " B - Bluetooth無効 "
+
+#: ../misctips.c:256
+msgid " C - Power aware CPU scheduler "
+msgstr " C - CPUスケジューラ省電力モード有効 "
+
+#: ../wifi-new.c:198
+msgid " D - disable wireless "
+msgstr " D - 無線LAN無効 "
+
+#: ../wireless.c:317
+msgid " I - disable WIFI Radio "
+msgstr " I - WiFi通信無効 "
+
+#: ../process.c:86
+#, c-format
+msgid " K - kill %s "
+msgstr " K - %s強制終了 "
+
+#: ../misctips.c:61
+msgid " N - Turn NMI watchdog off "
+msgstr " N - NMI監視無効 "
+
+#: ../cpufreq.c:118
+msgid " O - enable Ondemand governor "
+msgstr " O - オンデマンド周波数制御有効 "
+
+#: ../devicepm.c:114
+msgid " P - Enable Runtime PM"
+msgstr " T - ランタイム電源管理有効 "
+
+#: ../devicepm.c:276
+msgid " P - Enable device power management "
+msgstr " P - デバイスの省電力有効 "
+
+#: ../display.c:108
+msgid " Q - Quit "
+msgstr " Q - 終了 "
+
+#: ../display.c:109
+msgid " R - Refresh "
+msgstr " R - 更新 "
+
+#: ../ahci-alpm.c:259 ../sata.c:105
+msgid " S - SATA Link Power Management "
+msgstr " S - SATAリンク電源管理有効 "
+
+#: ../misctips.c:194
+msgid " T - enable noatime "
+msgstr " T - noatime有効 "
+
+#: ../urbnum.c:218 ../usb.c:119
+msgid " U - Enable USB suspend "
+msgstr " U - USBサスペンド有効 "
+
+#: ../xrandr.c:78
+msgid " V - Disable TV out "
+msgstr " V - TV出力無効 "
+
+#: ../wifi-new.c:203
+msgid " W - Enable Wireless power saving "
+msgstr " W - 無線省電力モード有効 "
+
+#: ../wireless.c:306 ../wireless.c:312
+msgid " W - Enable wireless power saving "
+msgstr " W - 無線省電力モード有効 "
+
+#: ../misctips.c:291
+msgid " W - Increase Writeback time "
+msgstr " W - 書き戻し間隔を延長 "
+
+#: ../ethernet.c:131
+msgid " W - disable Wake-On-Lan "
+msgstr " W - Wake-on-LAN無効 "
+
+#: ../cpufreqstats.c:91
+#, c-format
+msgid "%6.2f Ghz"
+msgstr "%6.2f GHz"
+
+#: ../cpufreqstats.c:88
+#, c-format
+msgid "%6lli Mhz"
+msgstr "%6lli MHz"
+
+#: ../cpufreqstats.c:85
+#, c-format
+msgid "%9lli"
+msgstr "%9lli"
+
+#: ../devicepm.c:245
+#, c-format
+msgid "%i more devices without runtime PM ommitted\n"
+msgstr "他にも%i個以上の電源管理されていないデバイスがあります\n"
+
+#: ../powertop.c:1003
+#, c-format
+msgid "%s\t%5.1fms (%4.1f%%)\n"
+msgstr "%s\t%5.1fms (%4.1f%%)\n"
+
+#: ../powertop.c:317
+#, c-format
+msgid "%s interrupt"
+msgstr "%s 割り込み"
+
+#: ../display.c:205
+#, c-format
+msgid "(long term: %3.1fW,/%3.1fh)"
+msgstr "(長期: %3.1fW,/%3.1fh)"
+
+#: ../display.c:304
+msgid "(which is CONFIG_DEBUG_KERNEL=y in the config file)\n"
+msgstr "(コンフィグファイルにおいてはCONFIG_DEBUG_KERNEL=yが該当します)\n"
+
+#: ../powertop.c:980
+#, c-format
+msgid "< Detailed C-state information is not available.>\n"
+msgstr "< 詳細なCステート情報が取得できません >\n"
+
+#: ../ahci-alpm.c:255
+#, c-format
+msgid ""
+"A SATA device is active %1.1f%% of the time:\n"
+"%s"
+msgstr ""
+"このSATAデバイスの活動率は時間あたり%1.1f%%です:\n"
+"%s"
+
+#: ../urbnum.c:213
+#, c-format
+msgid ""
+"A USB device is active %4.1f%% of the time:\n"
+"%s"
+msgstr ""
+"このUSBデバイスの活動率は時間あたり%4.1f%%です:\n"
+"%s"
+
+#: ../devicepm.c:271
+#, c-format
+msgid ""
+"A device is active %4.1f%% of the time:\n"
+"%s"
+msgstr ""
+"このデバイスの活動率は時間あたり%4.1f%%です:\n"
+"%s"
+
+#: ../ahci-alpm.c:220
+msgid "Active\tPartial\tSlumber\tDevice name"
+msgstr "活動率\t部分\t休止率\tデバイス名称"
+
+#: ../alsa-power.c:158 ../devicepm.c:224 ../urbnum.c:181
+msgid "Active Device name"
+msgstr "活動率 デバイス名称"
+
+#: ../alsa-power.c:190
+#, c-format
+msgid ""
+"An audio device is active %4.1f%% of the time:\n"
+"%s"
+msgstr ""
+"このオーディオデバイスの活動率は時間あたり%4.1f%%です:\n"
+"%s"
+
+#: ../powertop.c:989
+#, c-format
+msgid "C0 (cpu running) (%4.1f%%)\n"
+msgstr "C0 (CPU動作状態) (%4.1f%%)\n"
+
+#: ../powertop.c:986
+#, c-format
+msgid "Cn\t Avg residency\n"
+msgstr "Cステート\t 平均滞在時間\n"
+
+#: ../powertop.c:923
+#, c-format
+msgid "Collecting data for %i seconds \n"
+msgstr "%i秒間データを取得します。\n"
+
+#: ../devicepm.c:235
+msgid "Devices without runtime PM"
+msgstr "電源管理されていないデバイス"
+
+#: ../ethernet.c:128
+msgid ""
+"Disable Ethernet Wake-On-Lan with the following command:\n"
+" ethtool -s eth0 wol d \n"
+"Wake-on-Lan keeps the phy active, this costs power."
+msgstr ""
+"以下のコマンドでイーサネットのWake-on-LANを無効にしてください。\n"
+" ethtool -s eth0 wol d \n"
+"Wake-on-LAN設定ではPHYが常に動作するため、電力を消費します。"
+
+#: ../powertop.c:1234
+msgid ""
+"Disable the SE-Alert software by removing the 'setroubleshoot-server' rpm\n"
+"SE-Alert alerts you about SELinux policy violations, but also\n"
+"has a bug that wakes it up 10 times per second."
+msgstr ""
+"setroubleshoot-serverをアンインストールし、SE-Alertを無効にしてください。\n"
+"SELinuxのポリシー違反について警告するSE-Alertは、\n"
+"1秒あたり10回割り込みが発生するバグを抱えています。"
+
+#: ../perf.c:256
+#, c-format
+msgid "Disk accesses:\n"
+msgstr "ディスクアクセス:\n"
+
+#: ../powertop.c:1060
+msgid "Load balancing tick"
+msgstr "カーネルタイマー割り込み"
+
+#: ../display.c:307
+msgid ""
+"No detailed statistics available; PowerTOP needs root privileges for that\n"
+msgstr "統計情報を取得できません。取得するためにはroot権限が必要です。\n"
+
+#: ../display.c:302
+msgid ""
+"No detailed statistics available; please enable the CONFIG_TIMER_STATS "
+"kernel option\n"
+msgstr ""
+"統計情報を取得できません。カーネル設定でCONFIG_TIMER_STATSを有効にしてくださ"
+"い。\n"
+
+#: ../display.c:305
+msgid "Note: this is only available in 2.6.21 and later kernels\n"
+msgstr "注意: この設定はバージョン2.6.21以降のカーネルでのみ有効です\n"
+
+#: ../cpufreqstats.c:115
+#, c-format
+msgid "P-states (frequencies)\n"
+msgstr "Pステート (周波数)\n"
+
+#: ../powertop.c:317
+msgid "PS/2 keyboard/mouse/touchpad"
+msgstr "PS/2 キーボード/マウス/タッチパッド"
+
+#: ../display.c:208
+#, c-format
+msgid "Power usage (5 minute ACPI estimate) : %5.1f W (%3.1f hours left)"
+msgstr "消費電力(ACPI見積り5分間平均) : %5.1f W (%3.1f時間経過)"
+
+#: ../display.c:201
+#, c-format
+msgid "Power usage (ACPI estimate): %3.1fW (%3.1f hours)"
+msgstr "消費電力(ACPI見積り): %3.1fW (%3.1f時間)"
+
+#: ../display.c:238
+#, c-format
+msgid "Power usage: %3.1fW (%3.1f hours)"
+msgstr "消費電力: %3.1fW (%3.1f時間)"
+
+#: ../powertop.c:922
+#, c-format
+msgid "PowerTOP needs to be run as root to collect enough information\n"
+msgstr "十分な情報を得るにはroot権限で実行する必要があります。\n"
+
+#: ../ahci-alpm.c:219
+msgid "Recent SATA AHCI link activity statistics"
+msgstr "直近のSATA AHCIリンク稼働状況"
+
+#: ../urbnum.c:180
+msgid "Recent USB suspend statistics"
+msgstr "直近のUSBサスペンド状況"
+
+#: ../alsa-power.c:157
+msgid "Recent audio activity statistics"
+msgstr "直近のオーディオデバイス稼働状況"
+
+#: ../devicepm.c:223
+msgid "Runtime Device Power Management statistics"
+msgstr "実行中のデバイス電源管理状況"
+
+#: ../powertop.c:1228
+msgid ""
+"Suggestion: Disable 'hal' from polling your cdrom with: \n"
+"hal-disable-polling --device /dev/cdrom 'hal' is the component that auto-"
+"opens a\n"
+"window if you plug in a CD but disables SATA power saving from kicking in."
+msgstr ""
+"提案: 次のコマンドでhalによるcdromのポーリング機能が無効になります。\n"
+"hal-disable-polling --device /dev/cdrom\n"
+"halはCD挿入時の自動実行機能を提供しますが、SATAの省電力が無効になります。"
+
+#: ../powertop.c:1202 ../powertop.c:1206
+msgid ""
+"Suggestion: Disable or remove 'beagle' from your system. \n"
+"Beagle is the program that indexes for easy desktop search, however it's \n"
+"not very efficient and costs a significant amount of battery life."
+msgstr ""
+"提案: Beagleを無効にするかアンインストールしてください。\n"
+"デスクトップ検索ツールであるBeagleは非常に効率が悪く、多くのバッテリーを\n"
+"消費します。"
+
+#: ../powertop.c:1215
+msgid ""
+"Suggestion: Disable or remove 'gnome-power-manager' from your system. \n"
+"Older versions of gnome-power-manager wake up far more often than \n"
+"needed costing you some power."
+msgstr ""
+"提案: gnome-power-managerを無効にするかアンインストールしてください。\n"
+"古いバージョンのgnome-power-managerは、必要以上に頻繁に起動して電力を\n"
+"チェックし、逆に電力を消費します。"
+
+#: ../powertop.c:1221
+msgid ""
+"Suggestion: Disable or remove 'pcscd' from your system. \n"
+"pcscd tends to keep the USB subsystem out of power save mode\n"
+"and your processor out of deeper powersave states."
+msgstr ""
+"提案: pcscdを無効にするかアンインストールしてください。\n"
+"pcscdを使用している場合、USBサブシステムは省電力モードに移行せず、CPUは\n"
+"より効率的な省電力ステートに移行しません。"
+
+#: ../powertop.c:1190
+msgid ""
+"Suggestion: Disable the CONFIG_IRQBALANCE kernel configuration option.\n"
+"The in-kernel irq balancer is obsolete and wakes the CPU up far more than "
+"needed."
+msgstr ""
+"提案: カーネル設定でCONFIG_IRQBALANCEを無効にしてください。\n"
+"カーネルによるIRQバランサは必要以上にCPU割り込みが発生するため推奨されませ"
+"ん。"
+
+#: ../wireless.c:315
+#, c-format
+msgid ""
+"Suggestion: Disable the unused WIFI radio by executing the following "
+"command:\n"
+" echo 1 > %s \n"
+msgstr ""
+"提案: 以下のコマンドで使用していないWiFi通信が無効になります。\n"
+" echo 1 > %s \n"
+
+#: ../wifi-new.c:196
+#, c-format
+msgid ""
+"Suggestion: Disable the unused WIFI radio by setting the interface down:\n"
+" ifconfig %s down\n"
+msgstr ""
+"提案: 以下のコマンドで使用していないWiFiインタフェースが無効になります。\n"
+" ifconfig %s down\n"
+
+#: ../bluetooth.c:150
+msgid ""
+"Suggestion: Disable the unused bluetooth interface with the following "
+"command:\n"
+" hciconfig hci0 down ; rmmod hci_usb\n"
+"Bluetooth is a radio and consumes quite some power, and keeps USB busy as "
+"well.\n"
+msgstr ""
+"提案: 以下のコマンドで使用していないBluetoothインタフェースが無効になりま"
+"す。\n"
+" hciconfig hci0 down ; rmmod hci_usb\n"
+"Bluetoothは多くの電力を消費し、USBをビジー状態にします。\n"
+
+#: ../devicepm.c:112
+msgid "Suggestion: Enable Device Power Management by pressing the P key\n"
+msgstr ""
+"提案: Pキーを押すことでデバイスの電源管理が有効になります。\n"
+
+#: ../sata.c:102
+msgid ""
+"Suggestion: Enable SATA ALPM link power management via: \n"
+" echo min_power > /sys/class/scsi_host/host0/link_power_management_policy\n"
+"or press the S key."
+msgstr ""
+"提案: 以下のコマンドでSATAリンク電源管理が有効になります。\n"
+" echo min_power > /sys/class/scsi_host/host0/link_power_management_policy\n"
+"またはSキーを押してください。"
+
+#: ../usb.c:117
+msgid ""
+"Suggestion: Enable USB autosuspend for non-input devices by pressing the U "
+"key\n"
+msgstr ""
+"提案: Uキーを押すことで入力デバイス以外のUSBデバイスの自動サスペンドが有効に"
+"なります。\n"
+
+#: ../powertop.c:1175
+msgid ""
+"Suggestion: Enable the CONFIG_ACPI_BATTERY kernel configuration option.\n"
+" This option is required to get power estimages from PowerTOP"
+msgstr ""
+"提案: カーネル設定でCONFIG_ACPI_BATTERYを有効にしてください。\n"
+"この設定は消費電力の見積りを得るために必要としています。"
+
+#: ../powertop.c:1172
+msgid ""
+"Suggestion: Enable the CONFIG_CPU_FREQ_GOV_ONDEMAND kernel configuration "
+"option.\n"
+"The 'ondemand' CPU speed governor will minimize the CPU power usage while\n"
+"giving you performance when it is needed."
+msgstr ""
+"提案: カーネル設定でCONFIG_CPU_FREQ_GOV_ONDEMANDを有効にしてください。\n"
+"オンデマンド周波数制御は必要なパフォーマンスに応じてCPUの消費電力を\n"
+"最小限に保つことができます。"
+
+#: ../powertop.c:1192
+msgid ""
+"Suggestion: Enable the CONFIG_CPU_FREQ_STAT kernel configuration option.\n"
+"This option allows PowerTOP to show P-state percentages \n"
+"P-states correspond to CPU frequencies."
+msgstr ""
+"提案: カーネル設定でCONFIG_CPU_FREQ_STATを有効にしてください。\n"
+"この設定により、PowerTOPでPステートが表示できるようになります。\n"
+"PステートはCPU周波数に相当します。"
+
+#: ../powertop.c:1178
+msgid ""
+"Suggestion: Enable the CONFIG_HPET_TIMER kernel configuration option.\n"
+"Without HPET support the kernel needs to wake up every 20 milliseconds for \n"
+"some housekeeping tasks."
+msgstr ""
+"提案: カーネル設定でCONFIG_HPET_TIMERを有効にしてください。\n"
+"HPETが無効の場合、タスク管理のために20ミリ秒毎に割り込みが発生します。"
+
+#: ../powertop.c:1195
+msgid ""
+"Suggestion: Enable the CONFIG_INOTIFY kernel configuration option.\n"
+"This option allows programs to wait for changes in files and directories\n"
+"instead of having to poll for these changes"
+msgstr ""
+"提案: カーネル設定でCONFIG_INOTIFYを有効にしてください。\n"
+"この設定により、プログラムはファイルやディレクトリの変更を検出するために\n"
+"ポーリング処理をせずイベント待ちすることが可能になります。"
+
+#: ../powertop.c:1174
+msgid ""
+"Suggestion: Enable the CONFIG_NO_HZ kernel configuration option.\n"
+"This option is required to get any kind of longer sleep times in the CPU."
+msgstr ""
+"提案: カーネル設定でCONFIG_NO_HZを有効にしてください。\n"
+"この設定はCPUにより長いスリープ時間を設定するために必要としています。"
+
+#: ../powertop.c:1181
+msgid ""
+"Suggestion: Enable the CONFIG_PCIEASPM kernel configuration option.\n"
+"PCI Link Powermanagement (ASPM) allows the hardware to go to low power mode\n"
+"automatically when a PCI-E device is idle."
+msgstr ""
+"提案: カーネル設定でCONFIG_PCIEASPMを有効にしてください。\n"
+"PCIリンク電源管理(ASPM)は、PCI-Eデバイスがアイドル時に、自動的に低電力に\n"
+"移行させることができます。"
+
+#: ../powertop.c:1168
+msgid ""
+"Suggestion: Enable the CONFIG_PM_ADVANCED_DEBUG kernel configuration "
+"option.\n"
+"This option will allow PowerTOP to collect runtime power management "
+"statistics."
+msgstr ""
+"提案: カーネル設定でCONFIG_PM_ADVANCED_DEBUGを有効にしてください。\n"
+"この設定により、PowerTOPは実行中の電源管理の統計情報を得ることができます。"
+
+#: ../powertop.c:1170
+msgid ""
+"Suggestion: Enable the CONFIG_PM_RUNTIME kernel configuration option.\n"
+"This option enables the kernel to manage power for various devices in your "
+"computer."
+msgstr ""
+"提案: カーネル設定でCONFIG_PM_RUNTIMEを有効にしてください。\n"
+"この設定により、カーネルは様々なデバイスの電源を管理できるようになります。"
+
+#: ../powertop.c:1186
+msgid ""
+"Suggestion: Enable the CONFIG_SND_AC97_POWER_SAVE kernel configuration "
+"option.\n"
+"This option will automatically power down your sound codec when not in use,\n"
+"and can save approximately half a Watt of power."
+msgstr ""
+"提案: カーネル設定でCONFIG_SND_AC97_POWER_SAVEを有効にしてください。\n"
+"この設定は音声コーデックが使用していない場合に自動的に電源を切ることで、\n"
+"消費電力を約0.5ワット抑えることができます。"
+
+#: ../powertop.c:1166
+msgid ""
+"Suggestion: Enable the CONFIG_USB_SUSPEND kernel configuration option.\n"
+"This option will automatically disable UHCI USB when not in use, and may\n"
+"save approximately 1 Watt of power."
+msgstr ""
+"提案: カーネル設定でCONFIG_USB_SUSPENDを有効にしてください。\n"
+"この設定でUHCI USBは未使用時に自動的にサスペンドとなり、消費電力を\n"
+"約1ワット抑えることができます。"
+
+#: ../cpufreq.c:116
+msgid ""
+"Suggestion: Enable the ondemand cpu speed governor for all processors via: \n"
+" echo ondemand > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor \n"
+msgstr ""
+"提案: 以下のコマンドで全てのCPUのオンデマンド周波数制御が有効になります。\n"
+" echo ondemand > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor \n"
+
+#: ../wireless.c:309
+#, c-format
+msgid ""
+"Suggestion: Enable wireless power saving mode by executing the following "
+"command:\n"
+" echo 5 > %s \n"
+"This will sacrifice network performance slightly to save power."
+msgstr ""
+"提案: 以下のコマンドで無線の省電力モードが有効になります。\n"
+" echo 5 > %s \n"
+"この設定はネットワーク性能が若干低下します。"
+
+#: ../wifi-new.c:200
+#, c-format
+msgid ""
+"Suggestion: Enable wireless power saving mode by executing the following "
+"command:\n"
+" iwconfig %s power timeout 500ms\n"
+"This will sacrifice network performance slightly to save power."
+msgstr ""
+"提案: 以下のコマンドで無線の省電力モードが有効になります。\n"
+" iwconfig %s power timeout 500ms\n"
+"この設定はネットワーク性能が若干低下します。"
+
+#: ../wireless.c:303
+#, c-format
+msgid ""
+"Suggestion: Enable wireless power saving mode by executing the following "
+"command:\n"
+" iwpriv %s set_power 5 \n"
+"This will sacrifice network performance slightly to save power."
+msgstr ""
+"提案: 以下のコマンドで無線の省電力モードが有効になります。\n"
+" iwpriv %s set_power 5 \n"
+"この設定はネットワーク性能が若干低下します。"
+
+#: ../xrandr.c:75
+msgid ""
+"Suggestion: disable TV out via: \n"
+" xrandr --output TV --off \n"
+"or press the V key."
+msgstr ""
+"提案: 以下のコマンドでTV出力が無効になります。\n"
+" xrandr --output TV --off \n"
+"またはVキーを押してください。"
+
+#: ../misctips.c:59
+msgid ""
+"Suggestion: disable the NMI watchdog by executing the following command:\n"
+" echo 0 > /proc/sys/kernel/nmi_watchdog \n"
+"The NMI watchdog is a kernel debug mechanism to detect deadlocks"
+msgstr ""
+"提案: 以下のコマンドでNMI監視が無効になります。\n"
+" echo 0 > /proc/sys/kernel/nmi_watchdog \n"
+"NMI監視とは、デッドロックを検出するためのカーネルのデバッグ機構です。"
+
+#: ../misctips.c:123
+msgid ""
+"Suggestion: enable AC97 powersave mode by executing the following command:\n"
+" echo 1 > /sys/module/snd_ac97_codec/parameters/power_save \n"
+"or by passing power_save=1 as module parameter."
+msgstr ""
+"提案: 以下のコマンドでAC97の省電力モードが有効になります。\n"
+" echo 1 > /sys/module/snd_ac97_codec/parameters/power_save \n"
+"またはカーネルモジュールのパラメータでpower_save=1を設定してください。"
+
+#: ../misctips.c:163
+msgid ""
+"Suggestion: enable HD audio powersave mode by executing the following "
+"command:\n"
+" echo 1 > /sys/module/snd_hda_intel/parameters/power_save \n"
+"or by passing power_save=1 as module parameter."
+msgstr ""
+"提案: 以下のコマンドでHDオーディオの省電力モードが有効になります。\n"
+" echo 1 > /sys/module/snd_hda_intel/parameters/power_save \n"
+"またはカーネルモジュールのパラメータでpower_save=1を設定してください。"
+
+#: ../misctips.c:87
+msgid ""
+"Suggestion: enable the HPET (Multimedia Timer) in your BIOS or add \n"
+"the kernel patch to force-enable HPET. HPET support allows Linux to \n"
+"have much longer sleep intervals."
+msgstr ""
+"提案: BIOSでHPET(マルチメディアタイマー)を有効にするか、HPETを強制的に有効"
+"に\n"
+"するカーネルパッチを適用してください。HPETによって長いスリープ・インターバル"
+"の\n"
+"設定が可能になります。"
+
+#: ../misctips.c:192
+msgid ""
+"Suggestion: enable the noatime filesystem option by executing the following "
+"command:\n"
+" mount -o remount,noatime / or by pressing the T key \n"
+"noatime disables persistent access time of file accesses, which causes lots "
+"of disk IO."
+msgstr ""
+"提案: 以下のコマンドでファイルシステムのnoatime設定が有効になります。\n"
+" mount -o remount,noatime / またはTキーを押してください。\n"
+"noatimeでアクセス日時が記録されなくなり、ディスクI/Oの発生が抑えられます。"
+
+#: ../misctips.c:254
+msgid ""
+"Suggestion: enable the power aware CPU scheduler with the following "
+"command:\n"
+" echo 1 > /sys/devices/system/cpu/sched_mc_power_savings\n"
+"or by pressing the C key."
+msgstr ""
+"提案: 以下のコマンドでCPUスケジューラの省電力モードが有効になります。\n"
+" echo 1 > /sys/devices/system/cpu/sched_mc_power_savings\n"
+"またはCキーを押してください。"
+
+#: ../misctips.c:287
+#, c-format
+msgid ""
+"Suggestion: increase the VM dirty writeback time from %1.2f to 15 seconds "
+"with:\n"
+" echo 1500 > /proc/sys/vm/dirty_writeback_centisecs \n"
+"This wakes the disk up less frequently for background VM activity"
+msgstr ""
+"提案: 以下のコマンドでVMの遅延書き戻し間隔を%1.2f秒から15秒に延長できます。\n"
+" echo 1500 > /proc/sys/vm/dirty_writeback_centisecs \n"
+"この設定はVMのバックグラウンド動作によるディスクアクセスの頻度が低くなりま"
+"す。"
+
+#: ../powertop.c:1239
+msgid ""
+"The Intel Integrated Graphics driver failed to enable Memory self refresh.\n"
+"Memory Self Refresh is important for good memory power savings.\n"
+"Please check your OS vendor for a kernel update and/or report a bug."
+msgstr ""
+"Intel製内蔵グラフィックスドライバのメモリのセルフリフレッシュに失敗しました。\n"
+"メモリのセルフリフリフレッシュはメモリの省電力において重要です。\n"
+"OSベンダーのカーネルアップデートを確認するか、バグ報告を行なってください。"
+
+#: ../perf.c:242
+#, c-format
+msgid "The application '%s' is writing to file '%s' on /dev/%s\n"
+msgstr "アプリケーション'%s'は'%s'に/dev/%s上で書き込んでいます\n"
+
+#: ../perf.c:237
+#, c-format
+msgid ""
+"The program '%s' is writing to file '%s' on /dev/%s.\n"
+"This prevents the disk from going to powersave mode."
+msgstr ""
+"アプリケーション'%s'は'%s'に/dev/%s上で書き込んでいます。\n"
+"これはディスクが省電力モードに移行するのを妨げています。"
+
+#: ../display.c:303
+msgid "This option is located in the Kernel Debugging section of menuconfig\n"
+msgstr "この設定はmenuconfigであればKernel Debuggingに存在します。\n"
+
+#: ../display.c:281
+msgid "Top causes for wakeups:\n"
+msgstr "CPU起床プロセス上位一覧:\n"
+
+#: ../cpufreqstats.c:94
+msgid "Turbo Mode"
+msgstr "ターボモード"
+
+#: ../urbnum.c:123
+#, c-format
+msgid "USB device %4s : %s (%s)"
+msgstr "USBデバイス%4s : %s (%s)"
+
+#: ../powertop.c:831
+#, c-format
+msgid "Usage: powertop [OPTION...]\n"
+msgstr "使用法: powertop [オプション...]\n"
+
+#: ../display.c:270
+#, c-format
+msgid "Wakeups-from-idle per second : %4.1f\tinterval: %0.1fs\n"
+msgstr "1秒あたりのCPU起床頻度 : %4.1f\t時間間隔: %0.1f秒\n"
+
+#: ../intelcstates.c:152
+#, c-format
+msgid "Your BIOS reports the following C-states : "
+msgstr "以下はBIOSによるCステート情報です : "
+
+#: ../intelcstates.c:143
+#, c-format
+msgid "Your CPU supports the following C-states : "
+msgstr "CPUは以下のCステートをサポートしています : "
+
+#: ../powertop.c:314
+#, c-format
+msgid "[%s] <interrupt>"
+msgstr "[%s] <割り込み>"
+
+#: ../powertop.c:312
+#, c-format
+msgid "[%s] <kernel IPI>"
+msgstr "[%s] <カーネルIPI>"
+
+#: ../powertop.c:1108
+msgid "[extra timer interrupt]"
+msgstr "[外部タイマー割り込み]"
+
+#: ../powertop.c:1067
+msgid "[kernel core]"
+msgstr "[カーネルコア]"
+
+#: ../powertop.c:1063 ../powertop.c:1065
+msgid "[kernel module]"
+msgstr "[カーネルモジュール]"
+
+#: ../powertop.c:1059
+msgid "[kernel scheduler]"
+msgstr "[カーネルスケジューラ]"
+
+#: ../display.c:196
+#, c-format
+msgid "no ACPI power usage estimate available"
+msgstr "ACPIの消費電力見積り機能が有効ではありません。"
+
+#: ../display.c:244
+#, c-format
+msgid "no power usage estimate available"
+msgstr "消費電力見積り機能が有効ではありません。"
+
+#: ../powertop.c:444
+msgid "polling"
+msgstr "ポーリング"
+
+#: ../powertop.c:842
+#, c-format
+msgid "powertop version %s\n"
+msgstr "powertop バージョン %s\n"
diff --git a/po/nl.po b/po/nl.po
new file mode 100644
index 0000000..f46c075
--- /dev/null
+++ b/po/nl.po
@@ -0,0 +1,678 @@
+# Dutch translations for PACKAGE package.
+# Copyright (C) 2007 THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# Arjan van de Ven <arjan@linux.intel.com>, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2010-07-08 22:34-0700\n"
+"PO-Revision-Date: 2009-08-14 10:13+0100\n"
+"Last-Translator: Sibo Attema <sibo.attema@gmail.com>\n"
+"Language-Team: Dutch <vertaling@vrijschrift.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=ASCII\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#: ../powertop.c:827
+#, c-format
+msgid ""
+" -d, --dump read wakeups once and print list of top offenders\n"
+msgstr ""
+
+#: ../powertop.c:830
+#, fuzzy, c-format
+msgid " -h, --help Show this help message\n"
+msgstr " -h, --help voor meer informatie\n"
+
+#: ../powertop.c:829
+#, c-format
+msgid " -p, --pids show pids in wakeups list\n"
+msgstr ""
+
+#: ../powertop.c:828
+#, c-format
+msgid " -t, --time=DOUBLE default time to gather data in seconds\n"
+msgstr ""
+
+#: ../powertop.c:831
+#, c-format
+msgid " -v, --version Show version information and exit\n"
+msgstr " -v, --version Toon versie informatie bij afsluiting\n"
+
+#: ../misctips.c:125
+msgid " A - Turn AC97 powersave on "
+msgstr " A - Schakel AC97 energiebesparing aan"
+
+#: ../alsa-power.c:195 ../misctips.c:165
+msgid " A - Turn HD audio powersave on "
+msgstr " A - Schakel HD audio energiebesparing aan "
+
+#: ../bluetooth.c:152
+msgid " B - Turn Bluetooth off "
+msgstr " B - Bluetooth uitschakelen"
+
+#: ../misctips.c:257
+msgid " C - Power aware CPU scheduler "
+msgstr ""
+
+#: ../wifi-new.c:198
+#, fuzzy
+msgid " D - disable wireless "
+msgstr " D - Draadloos uitschakelen"
+
+#: ../wireless.c:322
+#, fuzzy
+msgid " I - disable WIFI Radio "
+msgstr " I - WIFI Radio uitschakelen"
+
+#: ../process.c:86
+#, fuzzy, c-format
+msgid " K - kill %s "
+msgstr " K - kill %s "
+
+#: ../misctips.c:61
+#, fuzzy
+msgid " N - Turn NMI watchdog off "
+msgstr " N - NMI watchdog uitschakelen"
+
+#: ../cpufreq.c:118
+#, fuzzy
+msgid " O - enable Ondemand governor "
+msgstr " O - Schakel Ondemand governor aan"
+
+#: ../devicepm.c:101
+#, fuzzy
+msgid " P - Enable Runtime PM"
+msgstr " T - schakel noatime aan"
+
+#: ../devicepm.c:258
+#, fuzzy
+msgid " P - Enable device power management "
+msgstr " P - Schakel draadloze energiebesparing aan"
+
+#: ../display.c:108
+#, fuzzy
+msgid " Q - Quit "
+msgstr " Q - Quit "
+
+#: ../display.c:109
+#, fuzzy
+msgid " R - Refresh "
+msgstr " R - Refresh "
+
+#: ../ahci-alpm.c:259 ../sata.c:105
+#, fuzzy
+msgid " S - SATA Link Power Management "
+msgstr " S - SATA Link Energie Management "
+
+#: ../misctips.c:194
+#, fuzzy
+msgid " T - enable noatime "
+msgstr " T - schakel noatime aan"
+
+#: ../urbnum.c:217 ../usb.c:118
+#, fuzzy
+msgid " U - Enable USB suspend "
+msgstr " U - Schakel USB suspend aan"
+
+#: ../xrandr.c:78
+#, fuzzy
+msgid " V - Disable TV out "
+msgstr " V - TV out uitschakelen"
+
+#: ../wifi-new.c:203
+#, fuzzy
+msgid " W - Enable Wireless power saving "
+msgstr " W - Schakel draadloze energiebesparing aan "
+
+#: ../wireless.c:311 ../wireless.c:317
+#, fuzzy
+msgid " W - Enable wireless power saving "
+msgstr " W - Schakel draadloze energiebesparing aan "
+
+#: ../misctips.c:292
+#, fuzzy
+msgid " W - Increase Writeback time "
+msgstr " W - Verhoog Writeback tijd "
+
+#: ../ethernet.c:131
+#, fuzzy
+msgid " W - disable Wake-On-Lan "
+msgstr " W - Wake-On-Lan uitschakelen"
+
+#: ../cpufreqstats.c:91
+#, c-format
+msgid "%6.2f Ghz"
+msgstr "%6.2f Ghz"
+
+#: ../cpufreqstats.c:88
+#, c-format
+msgid "%6lli Mhz"
+msgstr "%6lli Mhz"
+
+#: ../cpufreqstats.c:85
+#, c-format
+msgid "%9lli"
+msgstr "%9lli"
+
+#: ../powertop.c:998
+#, c-format
+msgid "%s\t%5.1fms (%4.1f%%)\n"
+msgstr "%s\t%5.1fms (%4.1f%%)\n"
+
+#: ../powertop.c:312
+#, c-format
+msgid "%s interrupt"
+msgstr ""
+
+#: ../display.c:205
+#, fuzzy, c-format
+msgid "(long term: %3.1fW,/%3.1fh)"
+msgstr "(lange termijn: %3.1fW,/%3.1fh)"
+
+#: ../display.c:304
+#, fuzzy
+msgid "(which is CONFIG_DEBUG_KERNEL=y in the config file)\n"
+msgstr "(dat is CONFIG_DEBUG_KERNEL=y in het config bestand)\n"
+
+#: ../powertop.c:975
+#, fuzzy, c-format
+msgid "< Detailed C-state information is not available.>\n"
+msgstr ""
+"< Gedetailleerde C-state informatie is alleen beschikbaar op Mobile "
+"processoren (laptops) >\n"
+
+#: ../ahci-alpm.c:255
+#, fuzzy, c-format
+msgid ""
+"A SATA device is active %1.1f%% of the time:\n"
+"%s"
+msgstr ""
+"Een USB-apparaat is actief %4.1f%% van de tijd:\n"
+"%s"
+
+#: ../urbnum.c:212
+#, fuzzy, c-format
+msgid ""
+"A USB device is active %4.1f%% of the time:\n"
+"%s"
+msgstr ""
+"Een USB-apparaat is actief %4.1f%% van de tijd:\n"
+"%s"
+
+#: ../devicepm.c:253
+#, fuzzy, c-format
+msgid ""
+"A device is active %4.1f%% of the time:\n"
+"%s"
+msgstr ""
+"Een USB-apparaat is actief %4.1f%% van de tijd:\n"
+"%s"
+
+#: ../ahci-alpm.c:220
+#, fuzzy
+msgid "Active\tPartial\tSlumber\tDevice name"
+msgstr "Actieve Apparaatnaam"
+
+#: ../alsa-power.c:158 ../devicepm.c:210 ../urbnum.c:181
+msgid "Active Device name"
+msgstr "Actieve Apparaatnaam"
+
+#: ../alsa-power.c:190
+#, fuzzy, c-format
+msgid ""
+"An audio device is active %4.1f%% of the time:\n"
+"%s"
+msgstr ""
+"Een USB-apparaat is actief %4.1f%% van de tijd:\n"
+"%s"
+
+#: ../powertop.c:984
+#, c-format
+msgid "C0 (cpu running) (%4.1f%%)\n"
+msgstr "C0 (cpu running) (%4.1f%%)\n"
+
+#: ../powertop.c:981
+#, c-format
+msgid "Cn\t Avg residency\n"
+msgstr ""
+
+#: ../powertop.c:918
+#, fuzzy, c-format
+msgid "Collecting data for %i seconds \n"
+msgstr "Verzamelen van gegevens voor %i seconde \n"
+
+#: ../devicepm.c:221
+msgid "Devices without runtime PM"
+msgstr ""
+
+#: ../ethernet.c:128
+#, fuzzy
+msgid ""
+"Disable Ethernet Wake-On-Lan with the following command:\n"
+" ethtool -s eth0 wol d \n"
+"Wake-on-Lan keeps the phy active, this costs power."
+msgstr ""
+"Ethernet Wake-On-Lan uitschakelen met het volgende commando:\n"
+" ethtool -s eth0 wol d \n"
+"Wake-on-Lan houd de phy actief, dit kost energie."
+
+#: ../powertop.c:1221
+#, fuzzy
+msgid ""
+"Disable the SE-Alert software by removing the 'setroubleshoot-server' rpm\n"
+"SE-Alert alerts you about SELinux policy violations, but also\n"
+"has a bug that wakes it up 10 times per second."
+msgstr ""
+"Schakel de SE-Alert software uit voor het verwijderen van de "
+"'setroubleshoot-server' rpm\n"
+"SE-Alert waarschuwt u over SELinux policy schndingen, maar ook\n"
+"heeft de software een bug die 10 keer per seconde ontstaat."
+
+#: ../perf.c:253
+#, c-format
+msgid "Disk accesses:\n"
+msgstr ""
+
+#: ../powertop.c:1054
+msgid "Load balancing tick"
+msgstr ""
+
+#: ../display.c:307
+msgid ""
+"No detailed statistics available; PowerTOP needs root privileges for that\n"
+msgstr ""
+
+#: ../display.c:302
+msgid ""
+"No detailed statistics available; please enable the CONFIG_TIMER_STATS "
+"kernel option\n"
+msgstr ""
+
+#: ../display.c:305
+#, fuzzy
+msgid "Note: this is only available in 2.6.21 and later kernels\n"
+msgstr "Opmerking: dit is alleen beschikbaar in de kernels 2.6.21 of nieuwer\n"
+
+#: ../cpufreqstats.c:115
+#, c-format
+msgid "P-states (frequencies)\n"
+msgstr ""
+
+#: ../powertop.c:176 ../powertop.c:312
+msgid "PS/2 keyboard/mouse/touchpad"
+msgstr "PS/2 toetsenbord/muis/touchpad"
+
+#: ../display.c:208
+#, fuzzy, c-format
+msgid "Power usage (5 minute ACPI estimate) : %5.1f W (%3.1f hours left)"
+msgstr ""
+"Energie verbruik (5 minuten ACPI schatting) : %5.1f W (%3.1f uren te gaan)"
+
+#: ../display.c:201
+#, fuzzy, c-format
+msgid "Power usage (ACPI estimate): %3.1fW (%3.1f hours)"
+msgstr "Energie verbruik (ACPI schatting): %3.1fW (%3.1f uren)"
+
+#: ../display.c:238
+#, c-format
+msgid "Power usage: %3.1fW (%3.1f hours)"
+msgstr "Energie verbruik: %3.1fW (%3.1f uren)"
+
+#: ../powertop.c:917
+#, c-format
+msgid "PowerTOP needs to be run as root to collect enough information\n"
+msgstr ""
+"PowerTOP heeft 'root' gebruikersrechten nodig om alle informatie te "
+"verzamelen\n"
+
+#: ../ahci-alpm.c:219
+msgid "Recent SATA AHCI link activity statistics"
+msgstr ""
+
+#: ../urbnum.c:180
+msgid "Recent USB suspend statistics"
+msgstr ""
+
+#: ../alsa-power.c:157
+msgid "Recent audio activity statistics"
+msgstr ""
+
+#: ../devicepm.c:209
+msgid "Recent runtime PM statistics"
+msgstr ""
+
+#: ../powertop.c:1215
+msgid ""
+"Suggestion: Disable 'hal' from polling your cdrom with: \n"
+"hal-disable-polling --device /dev/cdrom 'hal' is the component that auto-"
+"opens a\n"
+"window if you plug in a CD but disables SATA power saving from kicking in."
+msgstr ""
+
+#: ../powertop.c:1189 ../powertop.c:1193
+msgid ""
+"Suggestion: Disable or remove 'beagle' from your system. \n"
+"Beagle is the program that indexes for easy desktop search, however it's \n"
+"not very efficient and costs a significant amount of battery life."
+msgstr ""
+
+#: ../powertop.c:1202
+msgid ""
+"Suggestion: Disable or remove 'gnome-power-manager' from your system. \n"
+"Older versions of gnome-power-manager wake up far more often than \n"
+"needed costing you some power."
+msgstr ""
+
+#: ../powertop.c:1208
+msgid ""
+"Suggestion: Disable or remove 'pcscd' from your system. \n"
+"pcscd tends to keep the USB subsystem out of power save mode\n"
+"and your processor out of deeper powersave states."
+msgstr ""
+
+#: ../powertop.c:1177
+msgid ""
+"Suggestion: Disable the CONFIG_IRQBALANCE kernel configuration option.\n"
+"The in-kernel irq balancer is obsolete and wakes the CPU up far more than "
+"needed."
+msgstr ""
+
+#: ../wireless.c:320
+#, c-format
+msgid ""
+"Suggestion: Disable the unused WIFI radio by executing the following "
+"command:\n"
+" echo 1 > %s \n"
+msgstr ""
+
+#: ../wifi-new.c:196
+#, c-format
+msgid ""
+"Suggestion: Disable the unused WIFI radio by setting the interface down:\n"
+" ifconfig %s down\n"
+msgstr ""
+
+#: ../bluetooth.c:150
+msgid ""
+"Suggestion: Disable the unused bluetooth interface with the following "
+"command:\n"
+" hciconfig hci0 down ; rmmod hci_usb\n"
+"Bluetooth is a radio and consumes quite some power, and keeps USB busy as "
+"well.\n"
+msgstr ""
+
+#: ../devicepm.c:99
+msgid "Suggestion: Enable Device Power Management by pressing the P key\n"
+msgstr ""
+
+#: ../sata.c:102
+msgid ""
+"Suggestion: Enable SATA ALPM link power management via: \n"
+" echo min_power > /sys/class/scsi_host/host0/link_power_management_policy\n"
+"or press the S key."
+msgstr ""
+
+#: ../usb.c:116
+msgid ""
+"Suggestion: Enable USB autosuspend for non-input devices by pressing the U "
+"key\n"
+msgstr ""
+
+#: ../powertop.c:1165
+msgid ""
+"Suggestion: Enable the CONFIG_ACPI_BATTERY kernel configuration option.\n"
+" This option is required to get power estimages from PowerTOP"
+msgstr ""
+
+#: ../powertop.c:1162
+msgid ""
+"Suggestion: Enable the CONFIG_CPU_FREQ_GOV_ONDEMAND kernel configuration "
+"option.\n"
+"The 'ondemand' CPU speed governor will minimize the CPU power usage while\n"
+"giving you performance when it is needed."
+msgstr ""
+
+#: ../powertop.c:1179
+msgid ""
+"Suggestion: Enable the CONFIG_CPU_FREQ_STAT kernel configuration option.\n"
+"This option allows PowerTOP to show P-state percentages \n"
+"P-states correspond to CPU frequencies."
+msgstr ""
+
+#: ../powertop.c:1168
+msgid ""
+"Suggestion: Enable the CONFIG_HPET_TIMER kernel configuration option.\n"
+"Without HPET support the kernel needs to wake up every 20 milliseconds for \n"
+"some housekeeping tasks."
+msgstr ""
+
+#: ../powertop.c:1182
+msgid ""
+"Suggestion: Enable the CONFIG_INOTIFY kernel configuration option.\n"
+"This option allows programs to wait for changes in files and directories\n"
+"instead of having to poll for these changes"
+msgstr ""
+
+#: ../powertop.c:1164
+msgid ""
+"Suggestion: Enable the CONFIG_NO_HZ kernel configuration option.\n"
+"This option is required to get any kind of longer sleep times in the CPU."
+msgstr ""
+
+#: ../powertop.c:1173
+msgid ""
+"Suggestion: Enable the CONFIG_SND_AC97_POWER_SAVE kernel configuration "
+"option.\n"
+"This option will automatically power down your sound codec when not in use,\n"
+"and can save approximately half a Watt of power."
+msgstr ""
+
+#: ../powertop.c:1160
+msgid ""
+"Suggestion: Enable the CONFIG_USB_SUSPEND kernel configuration option.\n"
+"This option will automatically disable UHCI USB when not in use, and may\n"
+"save approximately 1 Watt of power."
+msgstr ""
+
+#: ../cpufreq.c:116
+msgid ""
+"Suggestion: Enable the ondemand cpu speed governor for all processors via: \n"
+" echo ondemand > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor \n"
+msgstr ""
+
+#: ../wireless.c:314
+#, c-format
+msgid ""
+"Suggestion: Enable wireless power saving mode by executing the following "
+"command:\n"
+" echo 5 > %s \n"
+"This will sacrifice network performance slightly to save power."
+msgstr ""
+
+#: ../wifi-new.c:200
+#, c-format
+msgid ""
+"Suggestion: Enable wireless power saving mode by executing the following "
+"command:\n"
+" iwconfig %s power timeout 500ms\n"
+"This will sacrifice network performance slightly to save power."
+msgstr ""
+
+#: ../wireless.c:308
+#, c-format
+msgid ""
+"Suggestion: Enable wireless power saving mode by executing the following "
+"command:\n"
+" iwpriv %s set_power 5 \n"
+"This will sacrifice network performance slightly to save power."
+msgstr ""
+
+#: ../xrandr.c:75
+msgid ""
+"Suggestion: disable TV out via: \n"
+" xrandr --output TV --off \n"
+"or press the V key."
+msgstr ""
+
+#: ../misctips.c:59
+msgid ""
+"Suggestion: disable the NMI watchdog by executing the following command:\n"
+" echo 0 > /proc/sys/kernel/nmi_watchdog \n"
+"The NMI watchdog is a kernel debug mechanism to detect deadlocks"
+msgstr ""
+
+#: ../misctips.c:123
+msgid ""
+"Suggestion: enable AC97 powersave mode by executing the following command:\n"
+" echo 1 > /sys/module/snd_ac97_codec/parameters/power_save \n"
+"or by passing power_save=1 as module parameter."
+msgstr ""
+
+#: ../misctips.c:163
+msgid ""
+"Suggestion: enable HD audio powersave mode by executing the following "
+"command:\n"
+" echo 1 > /sys/module/snd_hda_intel/parameters/power_save \n"
+"or by passing power_save=1 as module parameter."
+msgstr ""
+
+#: ../misctips.c:87
+msgid ""
+"Suggestion: enable the HPET (Multimedia Timer) in your BIOS or add \n"
+"the kernel patch to force-enable HPET. HPET support allows Linux to \n"
+"have much longer sleep intervals."
+msgstr ""
+
+#: ../misctips.c:192
+msgid ""
+"Suggestion: enable the noatime filesystem option by executing the following "
+"command:\n"
+" mount -o remount,noatime / or by pressing the T key \n"
+"noatime disables persistent access time of file accesses, which causes lots "
+"of disk IO."
+msgstr ""
+
+#: ../misctips.c:255
+msgid ""
+"Suggestion: enable the power aware CPU scheduler with the following "
+"command:\n"
+" echo 1 > /sys/devices/system/cpu/sched_mc_power_savings\n"
+"or by pressing the C key."
+msgstr ""
+
+#: ../misctips.c:288
+#, c-format
+msgid ""
+"Suggestion: increase the VM dirty writeback time from %1.2f to 15 seconds "
+"with:\n"
+" echo 1500 > /proc/sys/vm/dirty_writeback_centisecs \n"
+"This wakes the disk up less frequently for background VM activity"
+msgstr ""
+
+#: ../powertop.c:1226
+msgid ""
+"The Intel Integrated Graphics driver failed to enable Memory self refresh.\n"
+"Memory Self Refresh is important for good memory power savings.\n"
+"Please check your OS vendor for a kernel update and/or report a bug."
+msgstr ""
+
+#: ../perf.c:239
+#, c-format
+msgid "The application '%s' is writing to file '%s' on /dev/%s\n"
+msgstr ""
+
+#: ../perf.c:234
+#, c-format
+msgid ""
+"The program '%s' is writing to file '%s' on /dev/%s.\n"
+"This prevents the disk from going to powersave mode."
+msgstr ""
+
+#: ../display.c:303
+msgid "This option is located in the Kernel Debugging section of menuconfig\n"
+msgstr ""
+
+#: ../display.c:281
+msgid "Top causes for wakeups:\n"
+msgstr ""
+
+#: ../cpufreqstats.c:94
+msgid "Turbo Mode"
+msgstr ""
+
+#: ../urbnum.c:123
+#, c-format
+msgid "USB device %4s : %s (%s)"
+msgstr "USB apparaat %4s : %s (%s)"
+
+#: ../powertop.c:826
+#, c-format
+msgid "Usage: powertop [OPTION...]\n"
+msgstr ""
+
+#: ../display.c:270
+#, c-format
+msgid "Wakeups-from-idle per second : %4.1f\tinterval: %0.1fs\n"
+msgstr ""
+
+#: ../intelcstates.c:152
+#, c-format
+msgid "Your BIOS reports the following C-states : "
+msgstr ""
+
+#: ../intelcstates.c:143
+#, fuzzy, c-format
+msgid "Your CPU supports the following C-states : "
+msgstr "Uw CPU ondersteund the volgende C-states :"
+
+#: ../powertop.c:309
+#, c-format
+msgid "[%s] <interrupt>"
+msgstr ""
+
+#: ../powertop.c:307
+#, fuzzy, c-format
+msgid "[%s] <kernel IPI>"
+msgstr "<kernel core>"
+
+#: ../powertop.c:1102
+msgid "[extra timer interrupt]"
+msgstr ""
+
+#: ../powertop.c:1061
+#, fuzzy
+msgid "[kernel core]"
+msgstr "<kernel core>"
+
+#: ../powertop.c:1057 ../powertop.c:1059
+#, fuzzy
+msgid "[kernel module]"
+msgstr "<kernel module>"
+
+#: ../powertop.c:1053
+#, fuzzy
+msgid "[kernel scheduler]"
+msgstr "<kernel module>"
+
+#: ../display.c:196
+#, c-format
+msgid "no ACPI power usage estimate available"
+msgstr ""
+
+#: ../display.c:244
+#, fuzzy, c-format
+msgid "no power usage estimate available"
+msgstr "Geen energie verbruik schatting beschikbaar"
+
+#: ../powertop.c:439
+msgid "polling"
+msgstr ""
+
+#: ../powertop.c:837
+#, c-format
+msgid "powertop version %s\n"
+msgstr "powertop versie %s\n"
diff --git a/po/pl.po b/po/pl.po
new file mode 100644
index 0000000..832e695
--- /dev/null
+++ b/po/pl.po
@@ -0,0 +1,626 @@
+# translation of pl.po to Polish
+# Piotr Drąg <raven@pmail.pl>, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pl\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2009-08-12 15:39-0700\n"
+"PO-Revision-Date: 2009-11-21 09:15+0100\n"
+"Last-Translator: Andrzej Zaborowski <andrew.zaborowski@intel.com>\n"
+"Language-Team: Polish <pl@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../powertop.c:303
+#: ../powertop.c:306
+#, c-format
+msgid " <interrupt> : %s"
+msgstr " <przerwanie> : %s"
+
+#: ../powertop.c:1072
+msgid " <interrupt> : extra timer interrupt"
+msgstr " <przerwanie> : nadmiarowe przerwanie zegarowe"
+
+#: ../powertop.c:301
+#, c-format
+msgid " <kernel IPI> : %s"
+msgstr " <IPI kernela> : %s"
+
+# Probably needs to be split if the line is > 80 chars but I can't see the length in Poedit and can't be bothered counting chars.
+# Poedit nie pokazuje dlugosci linii, ale jesli linia ma ponad 80 znaków to trzeba będzie podzielic i wstawić odpowiednią ilość spacji.
+#: ../powertop.c:821
+#, c-format
+msgid " -d, --dump read wakeups once and print list of top offenders\n"
+msgstr " -d, --dump czytaj jednorazowo wybudzenia i wypisz głównych winowajców\n"
+
+#: ../powertop.c:824
+#, c-format
+msgid " -h, --help Show this help message\n"
+msgstr " -h, --help Pokaż ten ekran pomocy\n"
+
+#: ../powertop.c:823
+#, c-format
+msgid " -p, --pids show pids in wakeups list\n"
+msgstr " -p, --pids Pokazuj PID na liście wybudzeń\n"
+
+#: ../powertop.c:822
+#, c-format
+msgid " -t, --time=DOUBLE default time to gather data in seconds\n"
+msgstr " -t, --time=LICZBA domyślny czas zbierania danych w sekundach (możliwy ułamek)\n"
+
+#: ../powertop.c:825
+#, c-format
+msgid " -v, --version Show version information and exit\n"
+msgstr " -v, --version Wypisz wersję i zakończ\n"
+
+#: ../misctips.c:125
+msgid " A - Turn AC97 powersave on "
+msgstr " A - włącz oszczędzanie energii AC97 "
+
+#: ../misctips.c:165
+msgid " A - Turn HD audio powersave on "
+msgstr " A - Włącz oszczędność energii dźwięku HD "
+
+#: ../bluetooth.c:146
+msgid " B - Turn Bluetooth off "
+msgstr " B - wyłącz Bluetooth "
+
+#: ../misctips.c:257
+msgid " C - Power aware CPU scheduler "
+msgstr " C - planista CPU zajmujący się zasilaniem "
+
+#: ../wifi-new.c:196
+msgid " D - disable wireless "
+msgstr " D - Wyłącz WiFi "
+
+#: ../wireless.c:322
+msgid " I - disable WIFI Radio "
+msgstr " I - wyłącz zasilanie WiFi "
+
+#: ../process.c:84
+#, c-format
+msgid " K - kill %s "
+msgstr " K - zabij %s "
+
+#: ../misctips.c:61
+msgid " N - Turn NMI watchdog off "
+msgstr " N - wyłącz NMI watchdog "
+
+#: ../cpufreq.c:118
+msgid " O - enable Ondemand governor "
+msgstr " O - włącz zarządcę ondemand "
+
+#: ../wifi-new.c:201
+msgid " P - Enable wireless power saving "
+msgstr " P - Włącz oszczędność energii WiFi "
+
+#: ../display.c:108
+msgid " Q - Quit "
+msgstr " Q - Zakończ "
+
+#: ../display.c:109
+msgid " R - Refresh "
+msgstr " R - Odśwież "
+
+#: ../sata.c:104
+msgid " S - SATA Link Power Management "
+msgstr " S - zarządzanie zasilaniem magistrali SATA "
+
+#: ../misctips.c:194
+msgid " T - enable noatime "
+msgstr " T - włącz noatime "
+
+#: ../urbnum.c:222
+#: ../usb.c:116
+msgid " U - Enable USB suspend "
+msgstr " U - Włącz usypianie USB "
+
+#: ../xrandr.c:78
+msgid " V - Disable TV out "
+msgstr " V - Wyłącz wyjście TV "
+
+#: ../wireless.c:311
+#: ../wireless.c:317
+msgid " W - Enable wireless power saving "
+msgstr " W - Włącz oszczędzanie energii WiFi "
+
+#: ../misctips.c:292
+msgid " W - Increase Writeback time "
+msgstr " W - Zwiększ czas Writebacku "
+
+#: ../ethernet.c:131
+msgid " W - disable Wake-On-Lan "
+msgstr " W - wyłącz Wake-On-Lan "
+
+#: ../cpufreqstats.c:91
+#, c-format
+msgid "%6.2f Ghz"
+msgstr "%6.2f GHz"
+
+#: ../cpufreqstats.c:88
+#, c-format
+msgid "%6lli Mhz"
+msgstr "%6lli MHz"
+
+#: ../cpufreqstats.c:85
+#, c-format
+msgid "%9lli"
+msgstr "%9lli"
+
+#: ../powertop.c:983
+#, c-format
+msgid "%s\t%5.1fms (%4.1f%%)\n"
+msgstr "%s\t%5.1fms (%4.1f%%)\n"
+
+#: ../display.c:205
+#, c-format
+msgid "(long term: %3.1fW,/%3.1fh)"
+msgstr "(długoterminowo: %3.1fW,/%3.1fh)"
+
+#: ../display.c:301
+msgid "(which is CONFIG_DEBUG_KERNEL=y in the config file)\n"
+msgstr "(czy jest CONFIG_DEBUG_KERNEL=y w pliku konfiguracji)\n"
+
+#: ../powertop.c:960
+#, c-format
+msgid "< Detailed C-state information is not available.>\n"
+msgstr "< Szczegółowe informacje o C-stanach nie są dostępne.>\n"
+
+# (literally "core size")
+#: ../powertop.c:1040
+msgid "<kernel core>"
+msgstr "<wielkość kernela>"
+
+#: ../powertop.c:1036
+#: ../powertop.c:1038
+msgid "<kernel module>"
+msgstr "<moduł kerenela>"
+
+#: ../urbnum.c:217
+#, c-format
+msgid ""
+"A USB device is active %4.1f%% of the time:\n"
+"%s"
+msgstr ""
+"Urządznie USB aktywne przez %4.1f%% czasu:\n"
+"%s"
+
+#: ../urbnum.c:186
+msgid "Active Device name"
+msgstr "Aktywne Nazwa urządznia"
+
+#: ../powertop.c:969
+#, c-format
+msgid "C0 (cpu running) (%4.1f%%)\n"
+msgstr "C0 (CPU aktywny) (%4.1f%%)\n"
+
+# Don't know if there's a good translation for residency, but let's not make up new words
+#: ../powertop.c:966
+#, c-format
+msgid "Cn\t Avg residency\n"
+msgstr "Cn\t Średnia residency\n"
+
+#: ../powertop.c:903
+#, c-format
+msgid "Collecting data for %i seconds \n"
+msgstr "Zbieranie danych przez %i sekund \n"
+
+#: ../ethernet.c:128
+msgid ""
+"Disable Ethernet Wake-On-Lan with the following command:\n"
+" ethtool -s eth0 wol d \n"
+"Wake-on-Lan keeps the phy active, this costs power."
+msgstr ""
+"Wyłącz funkcję Wake-On-Lan za pomocą poniższego polecenia:\n"
+" ethtool -s eth0 wol d \n"
+"Wake-on-Lan utrzymuje aktywne zasilanie, co powoduje stratę energii"
+
+#: ../powertop.c:1187
+msgid ""
+"Disable the SE-Alert software by removing the 'setroubleshoot-server' rpm\n"
+"SE-Alert alerts you about SELinux policy violations, but also\n"
+"has a bug that wakes it up 10 times per second."
+msgstr ""
+"Wyłącz oprogramowanie SE-Alert usuwając pakiet \"setroubleshoot-server\"\n"
+"SE-Alert powiadamia o naruszeniach polityki SELinuksa, ale ma\n"
+"błąd, który powoduje jego budzenie 10 razy na sekundę."
+
+#: ../display.c:304
+msgid "No detailed statistics available; PowerTOP needs root privileges for that\n"
+msgstr "Szczegółowe statystki są niedostępne; PowerTOP wymaga do tego uprawnień roota\n"
+
+#: ../display.c:299
+msgid "No detailed statistics available; please enable the CONFIG_TIMER_STATS kernel option\n"
+msgstr "Szczegółowe statystki są niedostępne; włącz opcję jądra CONFIG_TIMER_STATS\n"
+
+#: ../display.c:302
+msgid "Note: this is only available in 2.6.21 and later kernels\n"
+msgstr "Uwaga: ta opcja jest dostępna wyłącznie w jądrze 2.6.21 i nowszych\n"
+
+#: ../cpufreqstats.c:115
+#, c-format
+msgid "P-states (frequencies)\n"
+msgstr "P-stany (częstotliwości)\n"
+
+#: ../powertop.c:170
+#: ../powertop.c:306
+msgid "PS/2 keyboard/mouse/touchpad"
+msgstr "Klawiatura/mysz/touchpad PS/2"
+
+#: ../display.c:208
+#, c-format
+msgid "Power usage (5 minute ACPI estimate) : %5.1f W (%3.1f hours left)"
+msgstr "Użycie zasilania (średnia ACPI z 5 minut): %5.1f W (pozostało %3.1f godzin)"
+
+#: ../display.c:201
+#, c-format
+msgid "Power usage (ACPI estimate): %3.1fW (%3.1f hours)"
+msgstr "Użycie zasilania (szacunek ACPI): %3.1fW (%3.1f godzin)"
+
+#: ../display.c:238
+#, c-format
+msgid "Power usage: %3.1fW (%3.1f hours)"
+msgstr "Zużycie energii: %3.1fW (%3.1f godzin)"
+
+#: ../powertop.c:902
+#, c-format
+msgid "PowerTOP needs to be run as root to collect enough information\n"
+msgstr ""
+"PowerTOP wymaga uruchomienia jako root, aby zebrać wystarczającą \n"
+"ilość informacji\n"
+
+#: ../urbnum.c:185
+msgid "Recent USB suspend statistics"
+msgstr "Ostatnie statystyki uśpienia USB"
+
+#: ../powertop.c:1181
+msgid ""
+"Suggestion: Disable 'hal' from polling your cdrom with: \n"
+"hal-disable-polling --device /dev/cdrom 'hal' is the component that auto-opens a\n"
+"window if you plug in a CD but disables SATA power saving from kicking in."
+msgstr ""
+"Podpowiedź: wyłącz sprawdzanie CD-ROM-u przez \"hal\" za pomocą: \n"
+"hal-disable-polling /dev/cdrom \"hal\" jest składnikiem, który\n"
+"automatycznie otwiera okno, gdy włożysz CD, ale wyłącza oszczędzanie\n"
+"energii SATA."
+
+#: ../powertop.c:1155
+#: ../powertop.c:1159
+msgid ""
+"Suggestion: Disable or remove 'beagle' from your system. \n"
+"Beagle is the program that indexes for easy desktop search, however it's \n"
+"not very efficient and costs a significant amount of battery life."
+msgstr ""
+"Podpowiedź: wyłącz lub usuń \"beagle\" z systemu. \n"
+"Beagle jest programem indeksującym, dzięki któremu można łatwo wyszukiwać\n"
+"pliki, ale nie jest zbyt wydajny i szybko skraca życie baterii."
+
+#: ../powertop.c:1168
+msgid ""
+"Suggestion: Disable or remove 'gnome-power-manager' from your system. \n"
+"Older versions of gnome-power-manager wake up far more often than \n"
+"needed costing you some power."
+msgstr ""
+"Podpowiedź: wyłącz lub usuń \"gnome-power-manager\" z systemu.\n"
+"Pomimo nazwy starsze wersje gnome-power-manager zużywają więcej energii\n"
+"niż jej oszczędzają."
+
+#: ../powertop.c:1174
+msgid ""
+"Suggestion: Disable or remove 'pcscd' from your system. \n"
+"pcscd tends to keep the USB subsystem out of power save mode\n"
+"and your processor out of deeper powersave states."
+msgstr ""
+"Podpowiedź: wyłącz lub usuń \"pcscd\" z systemu. \n"
+"pcscd powstrzymuje podsystem USB od używania trybu oszczędzania energii i\n"
+"procesor od używania głębszych stanów oszczędzania energii."
+
+#: ../powertop.c:1143
+msgid ""
+"Suggestion: Disable the CONFIG_IRQBALANCE kernel configuration option.\n"
+"The in-kernel irq balancer is obsolete and wakes the CPU up far more than needed."
+msgstr ""
+"Podpowiedź: wyłącz opcję CONFIG_IRQBALANCE w konfiguracji jądra.\n"
+"Balansowanie IRQ jądra jest przestarzałe i budzi procesor o wiele częściej\n"
+"niż tego potrzeba."
+
+#: ../wireless.c:320
+#, c-format
+msgid ""
+"Suggestion: Disable the unused WIFI radio by executing the following command:\n"
+" echo 1 > %s \n"
+msgstr ""
+"Podpowiedź: wyłącz nieużywany interfejs WiFi wykonując poniższe polecenie:\n"
+" echo 1 > %s \n"
+
+#: ../wifi-new.c:194
+#, c-format
+msgid ""
+"Suggestion: Disable the unused WIFI radio by setting the interface down:\n"
+" ifconfig %s down\n"
+msgstr ""
+"Podpowiedź: wyłącz nieużywane nadajniki WiFi wyłączając ich interfejsy:\n"
+" ifconfig %s down\n"
+
+#: ../bluetooth.c:144
+msgid ""
+"Suggestion: Disable the unused bluetooth interface with the following command:\n"
+" hciconfig hci0 down ; rmmod hci_usb\n"
+"Bluetooth is a radio and consumes quite some power, and keeps USB busy as well.\n"
+msgstr ""
+"Podpowiedź: wyłącz nieużywany interfejs Bluetooth za pomocą poniższego polecenia:\n"
+" hciconfig hci0 down ; rmmod hci_usb\n"
+"Bluetooth jest urządzeniem radiowym i używa całkiem sporo energii, a także utrzymuje aktywne USB\n"
+
+#: ../sata.c:101
+msgid ""
+"Suggestion: Enable SATA ALPM link power management via: \n"
+" echo min_power > /sys/class/scsi_host/host0/link_power_management_policy\n"
+"or press the S key."
+msgstr ""
+"Podpowiedź: włącz zarządzanie zasilaniem łącza SATA ALPM przez: \n"
+" echo min_power > /sys/class/scsi_host/host0/link_power_management_policy\n"
+"lub naciśnij klawisz S."
+
+#: ../usb.c:114
+msgid "Suggestion: Enable USB autosuspend for non-input devices by pressing the U key\n"
+msgstr "Podpowiedź: Włącz auto-usypianie USB (autosuspend) dla urządzeń innych niż wejściowe, naciskając U\n"
+
+#: ../powertop.c:1131
+msgid ""
+"Suggestion: Enable the CONFIG_ACPI_BATTERY kernel configuration option.\n"
+" This option is required to get power estimages from PowerTOP"
+msgstr ""
+"Podpowiedź: włącz opcję konfiguracji jądra CONFIG_ACPI_BATTERY.\n"
+" Ta opcja jest wymagana, aby używać szacunków energii PowerTOP"
+
+#: ../powertop.c:1128
+msgid ""
+"Suggestion: Enable the CONFIG_CPU_FREQ_GOV_ONDEMAND kernel configuration option.\n"
+"The 'ondemand' CPU speed governor will minimize the CPU power usage while\n"
+"giving you performance when it is needed."
+msgstr ""
+"Podpowiedź: włącz opcję konfiguracji jądra CONFIG_CPU_FREQ_GOV_ONDEMAND.\n"
+"Zarządca prędkością CPU \"ondemand\" minimalizuje użycie energii przez CPU,\n"
+"zwiększając wydajność, kiedy jest potrzebna."
+
+#: ../powertop.c:1145
+msgid ""
+"Suggestion: Enable the CONFIG_CPU_FREQ_STAT kernel configuration option.\n"
+"This option allows PowerTOP to show P-state percentages \n"
+"P-states correspond to CPU frequencies."
+msgstr ""
+"Podpowiedź: włącz opcję konfiguracji jądra CONFIG_CPU_FREQ_STAT.\n"
+"Ta opcja umożliwia PowerTOP wyświetlanie procentów stanów P \n"
+"Stany P odpowiadają częstotliwościom CPU."
+
+#: ../powertop.c:1134
+msgid ""
+"Suggestion: Enable the CONFIG_HPET_TIMER kernel configuration option.\n"
+"Without HPET support the kernel needs to wake up every 20 milliseconds for \n"
+"some housekeeping tasks."
+msgstr ""
+"Podpowiedź: włącz opcję konfiguracji jądra CONFIG_HPET_TIMER.\n"
+"Bez obsługi HPET jądro musi budzić się co 20 milisekund, aby \n"
+"wykonać niektóre zadania."
+
+#: ../powertop.c:1148
+msgid ""
+"Suggestion: Enable the CONFIG_INOTIFY kernel configuration option.\n"
+"This option allows programs to wait for changes in files and directories\n"
+"instead of having to poll for these changes"
+msgstr ""
+"Podpowiedź: włącz opcję CONFIG_NOTIFY w konfiguracji jądra.\n"
+"Ta opcja umożliwia programom bierne śledzenie zmian w wybranych\n"
+"plikach i katalogach bez konieczności ciągłego sprawdzania ich"
+
+#: ../powertop.c:1130
+msgid ""
+"Suggestion: Enable the CONFIG_NO_HZ kernel configuration option.\n"
+"This option is required to get any kind of longer sleep times in the CPU."
+msgstr ""
+"Podpowiedź: włącz opcję konfiguracji jądra CONFIG_NO_HZ.\n"
+"Ta opcja jest wymagana, aby otrzymać jakiekolwiek dłuższe czasy uśpienia CPU."
+
+#: ../powertop.c:1139
+msgid ""
+"Suggestion: Enable the CONFIG_SND_AC97_POWER_SAVE kernel configuration option.\n"
+"This option will automatically power down your sound codec when not in use,\n"
+"and can save approximately half a Watt of power."
+msgstr ""
+"Podpowiedź: włącz opcję konfiguracji jądra CONFIG_SND_AC97_POWER_SAVE.\n"
+"Ta opcja automatycznie wyłączy kodeki dźwięku, kiedy nie są używane, i może\n"
+"zaoszczędzić około połowy wata energii."
+
+#: ../powertop.c:1126
+msgid ""
+"Suggestion: Enable the CONFIG_USB_SUSPEND kernel configuration option.\n"
+"This option will automatically disable UHCI USB when not in use, and may\n"
+"save approximately 1 Watt of power."
+msgstr ""
+"Podpowiedź: włącz opcję konfiguracji jądra CONFIG_USB_SUSPEND.\n"
+"Ta opcja automatycznie wyłączy UHCI USB, kiedy jest są używany, i może\n"
+"zaoszczędzić około jednego wata energii."
+
+#: ../cpufreq.c:116
+msgid ""
+"Suggestion: Enable the ondemand cpu speed governor for all processors via: \n"
+" echo ondemand > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor \n"
+msgstr ""
+"Podpowiedź: włącz zarządcę prędkością CPU ondemand dla wszystkich procesorów przez: \n"
+" echo ondemand > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor \n"
+
+#: ../wireless.c:314
+#, c-format
+msgid ""
+"Suggestion: Enable wireless power saving mode by executing the following command:\n"
+" echo 5 > %s \n"
+"This will sacrifice network performance slightly to save power."
+msgstr ""
+"Podpowiedź: włącz tryb oszczędzanie energii urządzeń bezprzewodowych wykonując poniższe polecenie:\n"
+" echo 5 > %s \n"
+"To nieznacznie zmniejszy wydajność sieci, aby oszczędzać energię."
+
+#: ../wifi-new.c:198
+#, c-format
+msgid ""
+"Suggestion: Enable wireless power saving mode by executing the following command:\n"
+" iwconfig %s power timeout 500ms\n"
+"This will sacrifice network performance slightly to save power."
+msgstr ""
+"Podpowiedź: włącz tryb oszczędzanie energii urządzeń bezprzewodowych komendą:\n"
+" iwconfig %s power timeout 500ms\n"
+"To nieznacznie zmniejszy wydajność sieci, aby oszczędzać energię."
+
+#: ../wireless.c:308
+#, c-format
+msgid ""
+"Suggestion: Enable wireless power saving mode by executing the following command:\n"
+" iwpriv %s set_power 5 \n"
+"This will sacrifice network performance slightly to save power."
+msgstr ""
+"Podpowiedź: włącz tryb oszczędzanie energii urządzeń bezprzewodowych wykonując poniższe polecenie:\n"
+" iwpriv %s set_power 5 \n"
+"To nieznacznie zmniejszy wydajność sieci, aby oszczędzać energię."
+
+#: ../xrandr.c:75
+msgid ""
+"Suggestion: disable TV out via: \n"
+" xrandr --output TV --off \n"
+"or press the V key."
+msgstr ""
+"Podpowiedź: wyłącz wyjście TV przez: \n"
+" xrandr --output TV --off \n"
+"lub naciśnij klawisz V."
+
+#: ../misctips.c:59
+msgid ""
+"Suggestion: disable the NMI watchdog by executing the following command:\n"
+" echo 0 > /proc/sys/kernel/nmi_watchdog \n"
+"The NMI watchdog is a kernel debug mechanism to detect deadlocks"
+msgstr ""
+"Podpowiedź: wyłącz NMI watchdog wykonując poniższe polecenie:\n"
+" echo 0 > /proc/sys/kernel/nmi_watchdog \n"
+"Jest to mechanizmem debugowania jądra służący do wykrywania blokad"
+
+#: ../misctips.c:123
+msgid ""
+"Suggestion: enable AC97 powersave mode by executing the following command:\n"
+" echo 1 > /sys/module/snd_ac97_codec/parameters/power_save \n"
+"or by passing power_save=1 as module parameter."
+msgstr ""
+"Podpowiedź: włącz tryb oszczędzania energii AC97 wykonując poniższe polecenie:\n"
+" echo 1 > /sys/module/snd_ac97_codec/parameters/power_save \n"
+"lub przez przekazanie power_save=1 jako parametr modułu."
+
+#: ../misctips.c:163
+msgid ""
+"Suggestion: enable HD audio powersave mode by executing the following command:\n"
+" echo 1 > /sys/module/snd_hda_intel/parameters/power_save \n"
+"or by passing power_save=1 as module parameter."
+msgstr ""
+"Podpowiedź: włącz tryb oszczędzania energii dźwięku HD wykonując polecenie:\n"
+" echo 1 > /sys/module/snd_hda_intel/parameters/power_save \n"
+"lub przez przekazanie power_save=1 jako parametr modułu."
+
+#: ../misctips.c:87
+msgid ""
+"Suggestion: enable the HPET (Multimedia Timer) in your BIOS or add \n"
+"the kernel patch to force-enable HPET. HPET support allows Linux to \n"
+"have much longer sleep intervals."
+msgstr ""
+"Podpowiedź: włącz HPET (Zegar multimedialny) w BIOS-ie lub dodaj\n"
+"łatę jądra, aby wymusić włączenie HPET. Obsługa HPET umożliwia Linuksowi\n"
+"dużo dłuższe czasy uśpienia."
+
+#: ../misctips.c:192
+msgid ""
+"Suggestion: enable the noatime filesystem option by executing the following command:\n"
+" mount -o remount,noatime / or by pressing the T key \n"
+"noatime disables persistent access time of file accesses, which causes lots of disk IO."
+msgstr ""
+"Podpowiedź: włącz opcję noatime systemu plików wykonując poniższe polecenie:\n"
+" mount -o remount,noatime / lub przez naciśnięcie klawisza T \n"
+"noatime wyłącza stały czas dostępu do plików, który powoduje dużo operacji wejścia/wyjścia dysku."
+
+#: ../misctips.c:255
+msgid ""
+"Suggestion: enable the power aware CPU scheduler with the following command:\n"
+" echo 1 > /sys/devices/system/cpu/sched_mc_power_savings\n"
+"or by pressing the C key."
+msgstr ""
+"Podpowiedź: włącz planistę CPU zajmującego się zasilaniem wykonując poniższe polecenie:\n"
+" echo 1 > /sys/devices/system/cpu/sched_mc_power_savings\n"
+"lub przez naciśnięcie klawisza C."
+
+#: ../misctips.c:288
+#, c-format
+msgid ""
+"Suggestion: increase the VM dirty writeback time from %1.2f to 15 seconds with:\n"
+" echo 1500 > /proc/sys/vm/dirty_writeback_centisecs \n"
+"This wakes the disk up less frequently for background VM activity"
+msgstr ""
+"Podpowiedź: wydłuż czas writebacku pamięci wirtualnej z %1.2f do 15 sekund za pomocą:\n"
+" echo 1500 > /proc/sys/vm/dirty_writeback_centisecs \n"
+"Dzięki temu dysk będzie rzadziej wybudzany przez operacje na pamięci wirtualnej"
+
+#: ../display.c:300
+msgid "This option is located in the Kernel Debugging section of menuconfig\n"
+msgstr "Ta opcja znajduje się w sekcji 'Kernel Debugging' menuconfiga\n"
+
+#: ../display.c:281
+msgid "Top causes for wakeups:\n"
+msgstr "Najczęstsze powody wybudzeń:\n"
+
+#: ../cpufreqstats.c:94
+msgid "Turbo Mode"
+msgstr "Tryb Turbo"
+
+#: ../urbnum.c:123
+#, c-format
+msgid "USB device %4s : %s (%s)"
+msgstr "Urządzenie USB %4s : %s (%s)"
+
+#: ../powertop.c:820
+#, c-format
+msgid "Usage: powertop [OPTION...]\n"
+msgstr "Składnia: powertop [OPCJA...]\n"
+
+#: ../display.c:270
+#, c-format
+msgid "Wakeups-from-idle per second : %4.1f\tinterval: %0.1fs\n"
+msgstr "Wybudzenia ze stanu bezczynności na sekundę: %4.1f\tprzedział: %0.1fs\n"
+
+#: ../intelcstates.c:152
+#, c-format
+msgid "Your BIOS reports the following C-states : "
+msgstr "Twój BIOS podaje następujące C-states :"
+
+#: ../intelcstates.c:143
+#, c-format
+msgid "Your CPU supports the following C-states : "
+msgstr "Twój procesor obsługuje następujące C-states :"
+
+#: ../display.c:196
+#, c-format
+msgid "no ACPI power usage estimate available"
+msgstr "szacowanie użycia energii ACPI jest niedostępne"
+
+#: ../display.c:244
+#, c-format
+msgid "no power usage estimate available"
+msgstr "szacowanie zużycia energii jest niedostępne"
+
+# Any better term? (again let's not make up words).
+# aktywne sondowanie?
+#: ../powertop.c:433
+msgid "polling"
+msgstr "polling"
+
+#: ../powertop.c:831
+#, c-format
+msgid "powertop version %s\n"
+msgstr "wersja powertop %s\n"
+
diff --git a/po/pt_BR.po b/po/pt_BR.po
new file mode 100644
index 0000000..14dd725
--- /dev/null
+++ b/po/pt_BR.po
@@ -0,0 +1,623 @@
+# Brazilian Portuguese translation of PowerTOP strings.
+# Copyright (C) 2007-2008
+# This file is distributed under the same license as the PowerTOP package.
+# Nelson A. de Oliveira <naoliv@debian.org>, 2007-2009.
+# Carlos R. Mafra <crmafra@gmail.com>, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: PowerTOP 1.11\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2009-08-12 15:39-0700\n"
+"PO-Revision-Date: 2009-12-19 00:07-0200\n"
+"Last-Translator: Nelson A. de Oliveira <naoliv@debian.org>\n"
+"Language-Team: Brazilian Portuguese <pt_BR@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Poedit-Language: Portuguese\n"
+"X-Poedit-Country: BRAZIL\n"
+
+#: ../powertop.c:303
+#: ../powertop.c:306
+#, c-format
+msgid " <interrupt> : %s"
+msgstr " <interrupção> : %s"
+
+#: ../powertop.c:1072
+msgid " <interrupt> : extra timer interrupt"
+msgstr " <interrupção> : interrupção extra do temporizador"
+
+#: ../powertop.c:301
+#, c-format
+msgid " <kernel IPI> : %s"
+msgstr " <kernel IPI> : %s"
+
+#: ../powertop.c:821
+#, c-format
+msgid " -d, --dump read wakeups once and print list of top offenders\n"
+msgstr " -d, --dump lê as ativações uma vez e exibe a lista das maiores causas\n"
+
+#: ../powertop.c:824
+#, c-format
+msgid " -h, --help Show this help message\n"
+msgstr " -h, --help Exibe esta mensagem de ajuda\n"
+
+#: ../powertop.c:823
+#, c-format
+msgid " -p, --pids show pids in wakeups list\n"
+msgstr " -p, --pids exibe os pids na lista de ativações\n"
+
+#: ../powertop.c:822
+#, c-format
+msgid " -t, --time=DOUBLE default time to gather data in seconds\n"
+msgstr " -t, --time=DOUBLE tempo padrão para obter os dados, em segundos\n"
+
+#: ../powertop.c:825
+#, c-format
+msgid " -v, --version Show version information and exit\n"
+msgstr " -v, --version Exibe informação da versão e sai\n"
+
+#: ../misctips.c:125
+msgid " A - Turn AC97 powersave on "
+msgstr " A - Ativar modo de economia de energia do AC97 "
+
+#: ../misctips.c:165
+msgid " A - Turn HD audio powersave on "
+msgstr " A - Ativar modo de economia de energia do áudio HD "
+
+#: ../bluetooth.c:146
+msgid " B - Turn Bluetooth off "
+msgstr " B - Desligar Bluetooth "
+
+#: ../misctips.c:257
+msgid " C - Power aware CPU scheduler "
+msgstr " C - Escalonador de CPU voltado à economia de energia "
+
+#: ../wifi-new.c:196
+msgid " D - disable wireless "
+msgstr " D - desabilitar o wireless "
+
+#: ../wireless.c:322
+msgid " I - disable WIFI Radio "
+msgstr " I - desabilitar rádio WIFI "
+
+#: ../process.c:84
+#, c-format
+msgid " K - kill %s "
+msgstr " K - terminar %s "
+
+#: ../misctips.c:61
+msgid " N - Turn NMI watchdog off "
+msgstr " N - Desligar NMI watchdog "
+
+#: ../cpufreq.c:118
+msgid " O - enable Ondemand governor "
+msgstr " O - habilitar regulador Ondemand "
+
+#: ../wifi-new.c:201
+msgid " P - Enable wireless power saving "
+msgstr " P - Habilitar modo de economia de energia da rede wireless "
+
+#: ../display.c:108
+msgid " Q - Quit "
+msgstr " Q - Sair "
+
+#: ../display.c:109
+msgid " R - Refresh "
+msgstr " R - Atualizar "
+
+#: ../sata.c:104
+msgid " S - SATA Link Power Management "
+msgstr " S - Gerenciamento de energia SATA "
+
+#: ../misctips.c:194
+msgid " T - enable noatime "
+msgstr " T - habilitar noatime "
+
+#: ../urbnum.c:222
+#: ../usb.c:116
+msgid " U - Enable USB suspend "
+msgstr " U - Habilitar suspensão USB "
+
+#: ../xrandr.c:78
+msgid " V - Disable TV out "
+msgstr " V - Desabilitar saída de TV "
+
+#: ../wireless.c:311
+#: ../wireless.c:317
+msgid " W - Enable wireless power saving "
+msgstr " W - Habilitar modo de economia de energia da rede wireless "
+
+#: ../misctips.c:292
+msgid " W - Increase Writeback time "
+msgstr " W - Aumentar tempo de escrita "
+
+#: ../ethernet.c:131
+msgid " W - disable Wake-On-Lan "
+msgstr " W - desabilitar Wake-On-Lan "
+
+#: ../cpufreqstats.c:91
+#, c-format
+msgid "%6.2f Ghz"
+msgstr "%6.2f Ghz"
+
+#: ../cpufreqstats.c:88
+#, c-format
+msgid "%6lli Mhz"
+msgstr "%6lli Mhz"
+
+#: ../cpufreqstats.c:85
+#, c-format
+msgid "%9lli"
+msgstr "%9lli"
+
+#: ../powertop.c:983
+#, c-format
+msgid "%s\t%5.1fms (%4.1f%%)\n"
+msgstr "%s\t%5.1fms (%4.1f%%)\n"
+
+#: ../display.c:205
+#, c-format
+msgid "(long term: %3.1fW,/%3.1fh)"
+msgstr "(a longo prazo: %5.1f W, %3.1fh)"
+
+#: ../display.c:301
+msgid "(which is CONFIG_DEBUG_KERNEL=y in the config file)\n"
+msgstr "(que é CONFIG_DEBUG_KERNEL=y no arquivo config)\n"
+
+#: ../powertop.c:960
+#, c-format
+msgid "< Detailed C-state information is not available.>\n"
+msgstr "< Informação detalhada do estado-C não está disponível >\n"
+
+#: ../powertop.c:1040
+msgid "<kernel core>"
+msgstr "<núcleo do kernel>"
+
+#: ../powertop.c:1036
+#: ../powertop.c:1038
+msgid "<kernel module>"
+msgstr "<módulo do kernel>"
+
+#: ../urbnum.c:217
+#, c-format
+msgid ""
+"A USB device is active %4.1f%% of the time:\n"
+"%s"
+msgstr ""
+"Um dispositivo USB está ativo %4.1f%% do tempo:\n"
+"%s"
+
+#: ../urbnum.c:186
+msgid "Active Device name"
+msgstr "Nome do dispositivo ativo"
+
+#: ../powertop.c:969
+#, c-format
+msgid "C0 (cpu running) (%4.1f%%)\n"
+msgstr "C0 (cpu ocupada) (%4.1f%%)\n"
+
+#: ../powertop.c:966
+#, c-format
+msgid "Cn\t Avg residency\n"
+msgstr "Cn\t Residência média\n"
+
+#: ../powertop.c:903
+#, c-format
+msgid "Collecting data for %i seconds \n"
+msgstr "Coletando dados por %i segundos \n"
+
+#: ../ethernet.c:128
+msgid ""
+"Disable Ethernet Wake-On-Lan with the following command:\n"
+" ethtool -s eth0 wol d \n"
+"Wake-on-Lan keeps the phy active, this costs power."
+msgstr ""
+"Desabilite Ethernet Wake-On-Lan com o seguinte comando:\n"
+" ethtool -s eth0 wol d \n"
+"Wake-on-Lan mantém o dispositivo ativo, que utiliza energia."
+
+#: ../powertop.c:1187
+msgid ""
+"Disable the SE-Alert software by removing the 'setroubleshoot-server' rpm\n"
+"SE-Alert alerts you about SELinux policy violations, but also\n"
+"has a bug that wakes it up 10 times per second."
+msgstr ""
+"Desabilite o programa SE-Alert removendo o rpm 'setroubleshoot-server'\n"
+"SE-Alert alerta você sobre violações da política SELinux, mas também\n"
+"possui um bug que o ativa 10 vezes por segundo."
+
+#: ../display.c:304
+msgid "No detailed statistics available; PowerTOP needs root privileges for that\n"
+msgstr "Estatísticas detalhadas indisponíveis; PowerTOP necessita de privilégios de root para isso\n"
+
+#: ../display.c:299
+msgid "No detailed statistics available; please enable the CONFIG_TIMER_STATS kernel option\n"
+msgstr "Estatísticas detalhadas indisponíveis; por favor, habilite a opção CONFIG_TIMER_STATS do kernel\n"
+
+#: ../display.c:302
+msgid "Note: this is only available in 2.6.21 and later kernels\n"
+msgstr "Nota: isto está disponível apenas em kernels 2.6.21 ou superiores\n"
+
+#: ../cpufreqstats.c:115
+#, c-format
+msgid "P-states (frequencies)\n"
+msgstr "Estados-P (frequências)\n"
+
+#: ../powertop.c:170
+#: ../powertop.c:306
+msgid "PS/2 keyboard/mouse/touchpad"
+msgstr "teclado/mouse/touchpad PS/2"
+
+#: ../display.c:208
+#, c-format
+msgid "Power usage (5 minute ACPI estimate) : %5.1f W (%3.1f hours left)"
+msgstr "Uso de energia (estimativa de 5 minutos por ACPI): %5.1f W (%3.1f hrs restantes)"
+
+#: ../display.c:201
+#, c-format
+msgid "Power usage (ACPI estimate): %3.1fW (%3.1f hours)"
+msgstr "Uso de energia (estimado por ACPI): %5.1f W (%3.1f horas)"
+
+#: ../display.c:238
+#, c-format
+msgid "Power usage: %3.1fW (%3.1f hours)"
+msgstr "Uso de energia: %3.1fW (%3.1f horas)"
+
+#: ../powertop.c:902
+#, c-format
+msgid "PowerTOP needs to be run as root to collect enough information\n"
+msgstr "PowerTOP necessita ser executado como root para coletar informações suficientes\n"
+
+#: ../urbnum.c:185
+msgid "Recent USB suspend statistics"
+msgstr "Estatísticas recentes da suspensão USB"
+
+#: ../powertop.c:1181
+msgid ""
+"Suggestion: Disable 'hal' from polling your cdrom with: \n"
+"hal-disable-polling --device /dev/cdrom 'hal' is the component that auto-opens a\n"
+"window if you plug in a CD but disables SATA power saving from kicking in."
+msgstr ""
+"Sugestão: Desabilite 'hal' de acessar o seu cdrom com: \n"
+"hal-stop-polling --device /dev/cdrom 'hal' é o componente que abre uma janela\n"
+"quando você insere um CD, mas desabilita o modo de economia de energia do SATA."
+
+#: ../powertop.c:1155
+#: ../powertop.c:1159
+msgid ""
+"Suggestion: Disable or remove 'beagle' from your system. \n"
+"Beagle is the program that indexes for easy desktop search, however it's \n"
+"not very efficient and costs a significant amount of battery life."
+msgstr ""
+"Sugestão: Desabilite ou remova 'beagle' do seu sistema. \n"
+"Beagle é um programa que cria índices para buscas mais fáceis, no entanto, \n"
+"não é muito eficiente e custa uma quantidade significativa da vida da bateria."
+
+#: ../powertop.c:1168
+msgid ""
+"Suggestion: Disable or remove 'gnome-power-manager' from your system. \n"
+"Older versions of gnome-power-manager wake up far more often than \n"
+"needed costing you some power."
+msgstr ""
+"Sugestão: Desabilite ou remova 'gnome-power-manager' do seu sistema. \n"
+"Versões antigas do gnome-power-manager acabam consumindo \n"
+"mais energia do que ele iria economizar."
+
+#: ../powertop.c:1174
+msgid ""
+"Suggestion: Disable or remove 'pcscd' from your system. \n"
+"pcscd tends to keep the USB subsystem out of power save mode\n"
+"and your processor out of deeper powersave states."
+msgstr ""
+"Sugestão: Desabilite ou remova 'pcscd' do seu sistema. \n"
+"pcscd tende a manter o subsistema USB fora do modo de economia de energia\n"
+"e o seu processador fora de estados mais profundos de economia de energia."
+
+#: ../powertop.c:1143
+msgid ""
+"Suggestion: Disable the CONFIG_IRQBALANCE kernel configuration option.\n"
+"The in-kernel irq balancer is obsolete and wakes the CPU up far more than needed."
+msgstr ""
+"Sugestão: Desabilite a opção de configuração do kernel CONFIG_IRQBALANCE.\n"
+"O balanceador de irq do kernel é obsoleto e acorda a CPU além do necessário."
+
+#: ../wireless.c:320
+#, c-format
+msgid ""
+"Suggestion: Disable the unused WIFI radio by executing the following command:\n"
+" echo 1 > %s \n"
+msgstr ""
+"Sugestão: Desabilite o rádio WIFI não-utilizado executando o seguindo comando:\n"
+" echo 1 > %s \n"
+
+#: ../wifi-new.c:194
+#, c-format
+msgid ""
+"Suggestion: Disable the unused WIFI radio by setting the interface down:\n"
+" ifconfig %s down\n"
+msgstr ""
+"Sugestão: Desabilite o rádio WIFI não-utilizado desabilitando a interface:\n"
+" ifconfig %s down\n"
+
+#: ../bluetooth.c:144
+msgid ""
+"Suggestion: Disable the unused bluetooth interface with the following command:\n"
+" hciconfig hci0 down ; rmmod hci_usb\n"
+"Bluetooth is a radio and consumes quite some power, and keeps USB busy as well.\n"
+msgstr ""
+"Sugestão: Desabilite a interface bluetooth não utilizada com o seguinte comando:\n"
+" hciconfig hci0 down ; rmmod hci_usb\n"
+"Bluetooth é um rádio, consome bastante energia e também mantém o USB ocupado.\n"
+
+#: ../sata.c:101
+msgid ""
+"Suggestion: Enable SATA ALPM link power management via: \n"
+" echo min_power > /sys/class/scsi_host/host0/link_power_management_policy\n"
+"or press the S key."
+msgstr ""
+"Sugestão: Habilite o gerenciamento de energia de link SATA ALPM via: \n"
+" echo min_power > /sys/class/scsi_host/host0/link_power_management_policy\n"
+"ou pressione a tecla S."
+
+#: ../usb.c:114
+msgid "Suggestion: Enable USB autosuspend for non-input devices by pressing the U key\n"
+msgstr ""
+"Sugestão: habilite a suspensão automática USB para dispositivos que não sejam\n"
+"de entrada pressionando a tecla U\n"
+
+#: ../powertop.c:1131
+msgid ""
+"Suggestion: Enable the CONFIG_ACPI_BATTERY kernel configuration option.\n"
+" This option is required to get power estimages from PowerTOP"
+msgstr ""
+"Sugestão: Habilite a opção de configuração do kernel CONFIG_ACPI_BATTERY.\n"
+" Essa opção é requerida para obter estimativas de energia do PowerTOP"
+
+#: ../powertop.c:1128
+msgid ""
+"Suggestion: Enable the CONFIG_CPU_FREQ_GOV_ONDEMAND kernel configuration option.\n"
+"The 'ondemand' CPU speed governor will minimize the CPU power usage while\n"
+"giving you performance when it is needed."
+msgstr ""
+"Sugestão: Habilite a opção de config. do kernel CONFIG_CPU_FREQ_GOV_ONDEMAND.\n"
+"O regulador 'ondemand' minimizará o consumo de energia da CPU enquanto\n"
+"fornece à você performance quando necessário."
+
+#: ../powertop.c:1145
+msgid ""
+"Suggestion: Enable the CONFIG_CPU_FREQ_STAT kernel configuration option.\n"
+"This option allows PowerTOP to show P-state percentages \n"
+"P-states correspond to CPU frequencies."
+msgstr ""
+"Sugestão: Habilite a opção de configuração do kernel CONFIG_CPU_FREQ_STAT.\n"
+"Essa opção permite ao PowerTOP exibir as porcentagens dos estados-P\n"
+"Estados-P correspondem às frequências da CPU."
+
+#: ../powertop.c:1134
+msgid ""
+"Suggestion: Enable the CONFIG_HPET_TIMER kernel configuration option.\n"
+"Without HPET support the kernel needs to wake up every 20 milliseconds for \n"
+"some housekeeping tasks."
+msgstr ""
+"Sugestão: Habilite a opção de configuração do kernel CONFIG_HPET_TIMER.\n"
+"Sem suporte ao HPET o kernel necessita acordar a cada 20 milissegundos para \n"
+"realizar algumas tarefas de manutenção."
+
+#: ../powertop.c:1148
+msgid ""
+"Suggestion: Enable the CONFIG_INOTIFY kernel configuration option.\n"
+"This option allows programs to wait for changes in files and directories\n"
+"instead of having to poll for these changes"
+msgstr ""
+"Sugestão: Habilite a opção de configuração do kernel CONFIG_INOTIFY.\n"
+"Essa opção permite que os programas esperem por mudanças em arquivos e\n"
+"diretórios, ao invés de ficarem verificando por essas mudanças"
+
+#: ../powertop.c:1130
+msgid ""
+"Suggestion: Enable the CONFIG_NO_HZ kernel configuration option.\n"
+"This option is required to get any kind of longer sleep times in the CPU."
+msgstr ""
+"Sugestão: Habilite a opção de configuração do kernel CONFIG_NO_HZ.\n"
+"Essa opção é requerida para obter tempos maiores de suspensão na CPU."
+
+#: ../powertop.c:1139
+msgid ""
+"Suggestion: Enable the CONFIG_SND_AC97_POWER_SAVE kernel configuration option.\n"
+"This option will automatically power down your sound codec when not in use,\n"
+"and can save approximately half a Watt of power."
+msgstr ""
+"Sugestão: Habilite a opção de config. do kernel CONFIG_SND_AC97_POWER_SAVE.\n"
+"Essa opção irá desligar automaticamente o codec de som quando não em uso,\n"
+"e pode salvar aproximadamente meio Watt de energia."
+
+#: ../powertop.c:1126
+msgid ""
+"Suggestion: Enable the CONFIG_USB_SUSPEND kernel configuration option.\n"
+"This option will automatically disable UHCI USB when not in use, and may\n"
+"save approximately 1 Watt of power."
+msgstr ""
+"Sugestão: Habilite a opção de configuração do kernel CONFIG_USB_SUSPEND.\n"
+"Essa opção irá automaticamente desabilitar o UHCI USB quando não estiver em\n"
+"uso, e pode salvar aproximadamente 1 Watt de energia."
+
+#: ../cpufreq.c:116
+msgid ""
+"Suggestion: Enable the ondemand cpu speed governor for all processors via: \n"
+" echo ondemand > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor \n"
+msgstr ""
+"Sugestão: Habilite o regulador ondemand para todos os processadores via: \n"
+" echo ondemand > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor \n"
+
+#: ../wireless.c:314
+#, c-format
+msgid ""
+"Suggestion: Enable wireless power saving mode by executing the following command:\n"
+" echo 5 > %s \n"
+"This will sacrifice network performance slightly to save power."
+msgstr ""
+"Sugestão: Habilite o modo de economia de energia do wirelles executando:\n"
+" echo 5 > %s \n"
+"Isso irá sacrificar um pouco da performance da rede para salvar energia."
+
+#: ../wifi-new.c:198
+#, c-format
+msgid ""
+"Suggestion: Enable wireless power saving mode by executing the following command:\n"
+" iwconfig %s power timeout 500ms\n"
+"This will sacrifice network performance slightly to save power."
+msgstr ""
+"Sugestão: Habilite o modo de economia de energia do wirelles executando:\n"
+" iwconfig %s power timeout 500ms\n"
+"Isso irá sacrificar um pouco da performance da rede para economizar energia."
+
+#: ../wireless.c:308
+#, c-format
+msgid ""
+"Suggestion: Enable wireless power saving mode by executing the following command:\n"
+" iwpriv %s set_power 5 \n"
+"This will sacrifice network performance slightly to save power."
+msgstr ""
+"Sugestão: Habilite o modo de economia de energia do wirelles executando:\n"
+" iwpriv %s set_power 5 \n"
+"Isso irá sacrificar um pouco da performance da rede para economizar energia."
+
+#: ../xrandr.c:75
+msgid ""
+"Suggestion: disable TV out via: \n"
+" xrandr --output TV --off \n"
+"or press the V key."
+msgstr ""
+"Sugestão: desabilite a saída de TV via: \n"
+" xrandr --output TV --off \n"
+"ou pressione a tecla V."
+
+#: ../misctips.c:59
+msgid ""
+"Suggestion: disable the NMI watchdog by executing the following command:\n"
+" echo 0 > /proc/sys/kernel/nmi_watchdog \n"
+"The NMI watchdog is a kernel debug mechanism to detect deadlocks"
+msgstr ""
+"Sugestão: desabilite o NMI watchdog executando o seguinte comando:\n"
+" echo 0 > /proc/sys/kernel/nmi_watchdog \n"
+"O NMI watchdog é um mecanismo de depuração do kernel para detectar deadlocks"
+
+#: ../misctips.c:123
+msgid ""
+"Suggestion: enable AC97 powersave mode by executing the following command:\n"
+" echo 1 > /sys/module/snd_ac97_codec/parameters/power_save \n"
+"or by passing power_save=1 as module parameter."
+msgstr ""
+"Sugestão: habilite o modo de economia de energia do AC97 executando:\n"
+" echo 1 > /sys/module/snd_ac97_codec/parameters/power_save \n"
+"ou passando power_save=1 como parâmetro do módulo."
+
+#: ../misctips.c:163
+msgid ""
+"Suggestion: enable HD audio powersave mode by executing the following command:\n"
+" echo 1 > /sys/module/snd_hda_intel/parameters/power_save \n"
+"or by passing power_save=1 as module parameter."
+msgstr ""
+"Sugestão: ative o modo de economia de energia do áudio HD executando:\n"
+" echo 1 > /sys/module/snd_hda_intel/parameters/power_save \n"
+"ou passando power_save=1 como parâmetro do módulo."
+
+#: ../misctips.c:87
+msgid ""
+"Suggestion: enable the HPET (Multimedia Timer) in your BIOS or add \n"
+"the kernel patch to force-enable HPET. HPET support allows Linux to \n"
+"have much longer sleep intervals."
+msgstr ""
+"Sugestão: habilite o HPET (Multimedia Timer) em sua BIOS ou adicione o patch \n"
+"do kernel para forçar a habilitação do HPET. Suporte ao HPET permite \n"
+"que o Linux tenha intervalos bem maiores de suspensão."
+
+#: ../misctips.c:192
+msgid ""
+"Suggestion: enable the noatime filesystem option by executing the following command:\n"
+" mount -o remount,noatime / or by pressing the T key \n"
+"noatime disables persistent access time of file accesses, which causes lots of disk IO."
+msgstr ""
+"Sugestão: habilite a opção do sistema de arquivos noatime executando:\n"
+" mount -o remount,noatime / ou pressione a tecla T \n"
+"noatime desabilita o tempo de acesso dos arquivos, que causa muita E/S no disco."
+
+#: ../misctips.c:255
+msgid ""
+"Suggestion: enable the power aware CPU scheduler with the following command:\n"
+" echo 1 > /sys/devices/system/cpu/sched_mc_power_savings\n"
+"or by pressing the C key."
+msgstr ""
+"Sugestão: hab. o escalonador de CPU voltado à economia de energia executando:\n"
+" echo 1 > /sys/devices/system/cpu/sched_mc_power_savings\n"
+"ou pressionando a tecla C."
+
+#: ../misctips.c:288
+#, c-format
+msgid ""
+"Suggestion: increase the VM dirty writeback time from %1.2f to 15 seconds with:\n"
+" echo 1500 > /proc/sys/vm/dirty_writeback_centisecs \n"
+"This wakes the disk up less frequently for background VM activity"
+msgstr ""
+"Sugestão: aumente o tempo de escrita da VM de %1.2f para 15 segundos com:\n"
+" echo 1500 > /proc/sys/vm/dirty_writeback_centisecs \n"
+"Isso ativa o disco com menos frequência para atividades de fundo da VM"
+
+#: ../display.c:300
+msgid "This option is located in the Kernel Debugging section of menuconfig\n"
+msgstr "Essa opção está localizada na seção Kernel Debugging do menuconfig.\n"
+
+#: ../display.c:281
+msgid "Top causes for wakeups:\n"
+msgstr "Maiores causas de ativações:\n"
+
+#: ../cpufreqstats.c:94
+msgid "Turbo Mode"
+msgstr "Modo Turbo"
+
+#: ../urbnum.c:123
+#, c-format
+msgid "USB device %4s : %s (%s)"
+msgstr "Dispositivo USB %4s : %s (%s)"
+
+#: ../powertop.c:820
+#, c-format
+msgid "Usage: powertop [OPTION...]\n"
+msgstr "Uso: powertop [OPÇÃO...]\n"
+
+#: ../display.c:270
+#, c-format
+msgid "Wakeups-from-idle per second : %4.1f\tinterval: %0.1fs\n"
+msgstr "Ativações por segundo: %4.1f\tintervalo: %0.1fs\n"
+
+#: ../intelcstates.c:152
+#, c-format
+msgid "Your BIOS reports the following C-states : "
+msgstr "Sua BIOS reporta os seguintes estados-C:"
+
+#: ../intelcstates.c:143
+#, c-format
+msgid "Your CPU supports the following C-states : "
+msgstr "Sua CPU suporta os seguintes estados-C:"
+
+#: ../display.c:196
+#, c-format
+msgid "no ACPI power usage estimate available"
+msgstr "consumo estimado de energia por ACPI não disponível"
+
+#: ../display.c:244
+#, c-format
+msgid "no power usage estimate available"
+msgstr "consumo estimado de energia não disponível"
+
+#: ../powertop.c:433
+msgid "polling"
+msgstr "polling"
+
+#: ../powertop.c:831
+#, c-format
+msgid "powertop version %s\n"
+msgstr "powertop versão %s\n"
+
diff --git a/po/ro.po b/po/ro.po
new file mode 100644
index 0000000..32bdade
--- /dev/null
+++ b/po/ro.po
@@ -0,0 +1,621 @@
+# Romanian translations for anerley package.
+# Copyright (C) 2009 The anerley copyright holder
+# This file is distributed under the same license as the anerley package.
+# Cosmin Bordeianu <elloxar@gmail.com>, 2009.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: powertop\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2009-08-12 15:39-0700\n"
+"PO-Revision-Date: 2009-09-14 12:23+0200\n"
+"Last-Translator: Cosmin Bordeianu <elloxar@gmail.com>\n"
+"Language-Team: Moblin Romania <live@moblin.ro>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Poedit-Language: Romanian\n"
+"X-Poedit-Country: ROMANIA\n"
+"X-Poedit-SourceCharset: utf-8\n"
+
+#: ../powertop.c:303
+#: ../powertop.c:306
+#, c-format
+msgid " <interrupt> : %s"
+msgstr " <întrerupe> : %s"
+
+#: ../powertop.c:1072
+msgid " <interrupt> : extra timer interrupt"
+msgstr " <întrerupe> : întrerupere extra timp"
+
+#: ../powertop.c:301
+#, c-format
+msgid " <kernel IPI> : %s"
+msgstr " <IPI kernel> : %s"
+
+#: ../powertop.c:821
+#, c-format
+msgid " -d, --dump read wakeups once and print list of top offenders\n"
+msgstr " -d, --dump citește o dată pornirile și imprimă o listă cu contravențiile importante\n"
+
+#: ../powertop.c:824
+#, c-format
+msgid " -h, --help Show this help message\n"
+msgstr " -h, --help Arată acest mesaj de ajutor\n"
+
+#: ../powertop.c:823
+#, c-format
+msgid " -p, --pids show pids in wakeups list\n"
+msgstr " -p, --pids arată aceste pid-uri în lista de porniri\n"
+
+#: ../powertop.c:822
+#, c-format
+msgid " -t, --time=DOUBLE default time to gather data in seconds\n"
+msgstr " -t, --time=DOUBLE timpul implicit în secunde pentru a colecta date\n"
+
+#: ../powertop.c:825
+#, c-format
+msgid " -v, --version Show version information and exit\n"
+msgstr " -v, --version Arată informații despre versiune apoi părăsește pagina\n"
+
+#: ../misctips.c:125
+msgid " A - Turn AC97 powersave on "
+msgstr " A - Activează economizatorul de energie pentru AC97 "
+
+#: ../misctips.c:165
+msgid " A - Turn HD audio powersave on "
+msgstr " A - Activează economizatorul de energie audio pentru HD "
+
+#: ../bluetooth.c:146
+msgid " B - Turn Bluetooth off "
+msgstr " B - Dezactivează Bluetooth "
+
+#: ../misctips.c:257
+msgid " C - Power aware CPU scheduler "
+msgstr " C - Jurnalul de putere a procesorului "
+
+#: ../wifi-new.c:196
+msgid " D - disable wireless "
+msgstr " D - dezactivează conexiunea fără fir "
+
+#: ../wireless.c:322
+msgid " I - disable WIFI Radio "
+msgstr " I - dezactivează Radio WIFI"
+
+#: ../process.c:84
+#, c-format
+msgid " K - kill %s "
+msgstr " K - termină %s "
+
+#: ../misctips.c:61
+msgid " N - Turn NMI watchdog off "
+msgstr " N - Dezactivează gardianul NMI"
+
+#: ../cpufreq.c:118
+msgid " O - enable Ondemand governor "
+msgstr " O - activează guvernatorul Ondemand "
+
+#: ../wifi-new.c:201
+msgid " P - Enable wireless power saving "
+msgstr " P - Activează economizatorul de energie pentru conexiunea fără fir "
+
+#: ../display.c:108
+msgid " Q - Quit "
+msgstr " Q - Ieșire "
+
+#: ../display.c:109
+msgid " R - Refresh "
+msgstr " R - Reîmprospătare "
+
+#: ../sata.c:104
+msgid " S - SATA Link Power Management "
+msgstr " S - Gestionarea Consumului de Energie pentru SATA Link "
+
+#: ../misctips.c:194
+msgid " T - enable noatime "
+msgstr " T - activează noatime "
+
+#: ../urbnum.c:222
+#: ../usb.c:116
+msgid " U - Enable USB suspend "
+msgstr " U - Permite suspendarea USB-ului "
+
+#: ../xrandr.c:78
+msgid " V - Disable TV out "
+msgstr " V - Dezactivează ieșirea TV "
+
+#: ../wireless.c:311
+#: ../wireless.c:317
+msgid " W - Enable wireless power saving "
+msgstr " W - Activează economizatorul de energie pentru conexiunea fără fir "
+
+#: ../misctips.c:292
+msgid " W - Increase Writeback time "
+msgstr " W - Mărește timpul de Răspuns în scris "
+
+#: ../ethernet.c:131
+msgid " W - disable Wake-On-Lan "
+msgstr " W - dezactivează Wake-On-Lan "
+
+#: ../cpufreqstats.c:91
+#, c-format
+msgid "%6.2f Ghz"
+msgstr "%6.2f Ghz"
+
+#: ../cpufreqstats.c:88
+#, c-format
+msgid "%6lli Mhz"
+msgstr "%6lli Mhz"
+
+#: ../cpufreqstats.c:85
+#, c-format
+msgid "%9lli"
+msgstr "%9lli"
+
+#: ../powertop.c:983
+#, c-format
+msgid "%s\t%5.1fms (%4.1f%%)\n"
+msgstr "%s\t%5.1fms (%4.1f%%)\n"
+
+#: ../display.c:205
+#, c-format
+msgid "(long term: %3.1fW,/%3.1fh)"
+msgstr "(termen lung: %3.1fW,/%3.1fh)"
+
+#: ../display.c:301
+msgid "(which is CONFIG_DEBUG_KERNEL=y in the config file)\n"
+msgstr "(care este CONFIG_DEBUG_KERNEL=y în fișierul de configurare)\n"
+
+#: ../powertop.c:960
+#, c-format
+msgid "< Detailed C-state information is not available.>\n"
+msgstr "< Informații detaliate despre C-state nu sunt disponibile.>\n"
+
+#: ../powertop.c:1040
+msgid "<kernel core>"
+msgstr "<nucleu kernel>"
+
+#: ../powertop.c:1036
+#: ../powertop.c:1038
+msgid "<kernel module>"
+msgstr "<modul kernel>"
+
+#: ../urbnum.c:217
+#, c-format
+msgid ""
+"A USB device is active %4.1f%% of the time:\n"
+"%s"
+msgstr ""
+"Un dispozitiv USB este activ %4.1f%% din timp:\n"
+"%s"
+
+#: ../urbnum.c:186
+msgid "Active Device name"
+msgstr "Nume Dispozitiv activ"
+
+#: ../powertop.c:969
+#, c-format
+msgid "C0 (cpu running) (%4.1f%%)\n"
+msgstr "C0 (procesorul rulează) (%4.1f%%)\n"
+
+#: ../powertop.c:966
+#, c-format
+msgid "Cn\t Avg residency\n"
+msgstr "Cn\t Rezidență medie\n"
+
+#: ../powertop.c:903
+#, c-format
+msgid "Collecting data for %i seconds \n"
+msgstr "Colecteză date pentru %i secunde \n"
+
+#: ../ethernet.c:128
+msgid ""
+"Disable Ethernet Wake-On-Lan with the following command:\n"
+" ethtool -s eth0 wol d \n"
+"Wake-on-Lan keeps the phy active, this costs power."
+msgstr ""
+"Dezactivează opțiunea Wake-On-Lan a rețelei cu următoarea comandă:\n"
+" ethtool -s eth0 wol d \n"
+"Această opțiune păstrează phy-ul activ dar și consumă energie."
+
+#: ../powertop.c:1187
+msgid ""
+"Disable the SE-Alert software by removing the 'setroubleshoot-server' rpm\n"
+"SE-Alert alerts you about SELinux policy violations, but also\n"
+"has a bug that wakes it up 10 times per second."
+msgstr ""
+"Dezactivează softul SE-Alert prin eliminarea pachetului rpm 'setroubleshoot-server'\n"
+"Acest soft vă avertizează cu privire la politica de încălcare SELinux, dar\n"
+"are un bug care îl activează la fiecare 10 secunde."
+
+#: ../display.c:304
+msgid "No detailed statistics available; PowerTOP needs root privileges for that\n"
+msgstr "Nu sunt disponibile statistici detaliate; PowerTOP are nevoie de privilegii de root pentru aceasta\n"
+
+#: ../display.c:299
+msgid "No detailed statistics available; please enable the CONFIG_TIMER_STATS kernel option\n"
+msgstr "Nu sunt disponibile statistici detaliate; vă rog să activaţi opțiunea CONFIG_TIMER_STATS al kernelului\n"
+
+#: ../display.c:302
+msgid "Note: this is only available in 2.6.21 and later kernels\n"
+msgstr "Notă: acest lucru este disponibil numai în versiunea 2.6.21 şi kernelurile ulterioare\n"
+
+#: ../cpufreqstats.c:115
+#, c-format
+msgid "P-states (frequencies)\n"
+msgstr "P-states (frecvențe)\n"
+
+#: ../powertop.c:170
+#: ../powertop.c:306
+msgid "PS/2 keyboard/mouse/touchpad"
+msgstr "tastatură PS/2/maus/touchpad"
+
+#: ../display.c:208
+#, c-format
+msgid "Power usage (5 minute ACPI estimate) : %5.1f W (%3.1f hours left)"
+msgstr "Consumul de energie (ACPI estimează 5 minute) : %5.1f W (%3.1f ore rămase)"
+
+#: ../display.c:201
+#, c-format
+msgid "Power usage (ACPI estimate): %3.1fW (%3.1f hours)"
+msgstr "Consumul de energie (ACPI estimează): %3.1fW (%3.1f ore)"
+
+#: ../display.c:238
+#, c-format
+msgid "Power usage: %3.1fW (%3.1f hours)"
+msgstr "Consumul de energie: %3.1fW (%3.1f ore)"
+
+#: ../powertop.c:902
+#, c-format
+msgid "PowerTOP needs to be run as root to collect enough information\n"
+msgstr "PowerTOP trebuie să ruleze ca root pentru a colecta informaţii suficiente\n"
+
+#: ../urbnum.c:185
+msgid "Recent USB suspend statistics"
+msgstr "Statistici USB recent suspendate"
+
+#: ../powertop.c:1181
+msgid ""
+"Suggestion: Disable 'hal' from polling your cdrom with: \n"
+"hal-disable-polling --device /dev/cdrom 'hal' is the component that auto-opens a\n"
+"window if you plug in a CD but disables SATA power saving from kicking in."
+msgstr ""
+"Sugestie: Dezactivează modul în care 'hal' obține drepturi la cdrom: \n"
+"hal-disable-polling --device /dev/cdrom 'hal' este o componentă ce deschide automat o\n"
+"fereastră dacă introduceți un CD dar și dezactivează modul econom pentru SATA."
+
+#: ../powertop.c:1155
+#: ../powertop.c:1159
+msgid ""
+"Suggestion: Disable or remove 'beagle' from your system. \n"
+"Beagle is the program that indexes for easy desktop search, however it's \n"
+"not very efficient and costs a significant amount of battery life."
+msgstr ""
+"Sugestie: Dezactivează sau eliminăi 'beagle' din sistem. \n"
+"Beagle este un program ce indexează conținutul pentru a ușura căutările, totuși nu \n"
+"este foarte eficient și scade durata de viață a bateriei."
+
+#: ../powertop.c:1168
+msgid ""
+"Suggestion: Disable or remove 'gnome-power-manager' from your system. \n"
+"Older versions of gnome-power-manager wake up far more often than \n"
+"needed costing you some power."
+msgstr ""
+"Sugestie: Dezactivează sau elimină 'gnome-power-manager' din sistem. \n"
+"Versiunile mai vechi de gnome-power-manager se deschid mult mai repede decât \n"
+"este nevoie, astfel consumul este mai mare."
+
+#: ../powertop.c:1174
+msgid ""
+"Suggestion: Disable or remove 'pcscd' from your system. \n"
+"pcscd tends to keep the USB subsystem out of power save mode\n"
+"and your processor out of deeper powersave states."
+msgstr ""
+"Sugestie: Dezactivează sau elimină 'pcscd' din sistem. \n"
+"În modul de economisire pcscd tinde să păstreze subsistemul USB fără putere\n"
+"și nu permite procesorului să ruleze la frecvențe mai joase."
+
+#: ../powertop.c:1143
+msgid ""
+"Suggestion: Disable the CONFIG_IRQBALANCE kernel configuration option.\n"
+"The in-kernel irq balancer is obsolete and wakes the CPU up far more than needed."
+msgstr ""
+"Sugestie: Dezactivează opțiunea CONFIG_IRQBALANCE a kernelului.\n"
+"Balanța in-kernel irq este absolută și folosește procesorul mai mult decât este nevoie."
+
+#: ../wireless.c:320
+#, c-format
+msgid ""
+"Suggestion: Disable the unused WIFI radio by executing the following command:\n"
+" echo 1 > %s \n"
+msgstr ""
+"Sugestie: Dezactivează rețeaua fără fir atunci când nu este folosită cu următoarea comandă:\n"
+" echo 1 > %s \n"
+
+#: ../wifi-new.c:194
+#, c-format
+msgid ""
+"Suggestion: Disable the unused WIFI radio by setting the interface down:\n"
+" ifconfig %s down\n"
+msgstr ""
+"Sugestie: Dezactivează rețeaua fără fir atunci când nu este folosită prin închiderea acesteia:\n"
+" ifconfig %s down\n"
+
+#: ../bluetooth.c:144
+msgid ""
+"Suggestion: Disable the unused bluetooth interface with the following command:\n"
+" hciconfig hci0 down ; rmmod hci_usb\n"
+"Bluetooth is a radio and consumes quite some power, and keeps USB busy as well.\n"
+msgstr ""
+"Sugestie: Dezactivează interfața bluetooth atunci când nu este folosit cu următoarea comandă:\n"
+" hciconfig hci0 down ; rmmod hci_usb\n"
+"Bluetooth-ul folosește unde, astfel consumă destul de multă energie, dar și ține portul USB ocupat.\n"
+
+#: ../sata.c:101
+msgid ""
+"Suggestion: Enable SATA ALPM link power management via: \n"
+" echo min_power > /sys/class/scsi_host/host0/link_power_management_policy\n"
+"or press the S key."
+msgstr ""
+"Sugestie: Activează modul de gestionare a energiei SATA ALPM prin intermediul comenzii: \n"
+" echo min_power > /sys/class/scsi_host/host0/link_power_management_policy\n"
+"sau apăsați tasta S."
+
+#: ../usb.c:114
+msgid "Suggestion: Enable USB autosuspend for non-input devices by pressing the U key\n"
+msgstr "Sugestie: Activează modul de suspendare automată a USB-ului pentru dispozitele non-input prin apăsarea tastei U\n"
+
+#: ../powertop.c:1131
+msgid ""
+"Suggestion: Enable the CONFIG_ACPI_BATTERY kernel configuration option.\n"
+" This option is required to get power estimages from PowerTOP"
+msgstr ""
+"Sugestie: Activează opțiunea CONFIG_ACPI_BATTERY a kernelului.\n"
+" Această opţiune este necesară pentru a obţine, de la PowerTOP, informații estimative despre puterea de consum"
+
+#: ../powertop.c:1128
+msgid ""
+"Suggestion: Enable the CONFIG_CPU_FREQ_GOV_ONDEMAND kernel configuration option.\n"
+"The 'ondemand' CPU speed governor will minimize the CPU power usage while\n"
+"giving you performance when it is needed."
+msgstr ""
+"Sugestie: Activează opțiunea CONFIG_CPU_FREQ_GOV_ONDEMAND a kernelului.\n"
+"Această opțiune va minimaliza consumul de energie a procesorului,\n"
+"oferind performanțele necesare atunci când este nevoie."
+
+#: ../powertop.c:1145
+msgid ""
+"Suggestion: Enable the CONFIG_CPU_FREQ_STAT kernel configuration option.\n"
+"This option allows PowerTOP to show P-state percentages \n"
+"P-states correspond to CPU frequencies."
+msgstr ""
+"Sugestie: Activează opțiunea CONFIG_CPU_FREQ_STAT a kernelului.\n"
+"Această opțiune permite ca PowerTOP să arate procente P-state \n"
+"Acestea corespund procentelor procesorului."
+
+#: ../powertop.c:1134
+msgid ""
+"Suggestion: Enable the CONFIG_HPET_TIMER kernel configuration option.\n"
+"Without HPET support the kernel needs to wake up every 20 milliseconds for \n"
+"some housekeeping tasks."
+msgstr ""
+"Sugestie: Activează opțiunea CONFIG_HPET_TIMER a kernelului.\n"
+"Fără suport HPET, kernelul trebuie să se activeze odată la 20 de milisecunde pentru \n"
+"sarcini de menaj."
+
+#: ../powertop.c:1148
+msgid ""
+"Suggestion: Enable the CONFIG_INOTIFY kernel configuration option.\n"
+"This option allows programs to wait for changes in files and directories\n"
+"instead of having to poll for these changes"
+msgstr ""
+"Sugestie: Activează opțiunea CONFIG_INOTIFY a kernelului.\n"
+"Această opțiune permite programelor să aștepte modificări ale fișierelor și dosarelor\n"
+"în loc să verifice fiecare fișier și dosar în parte"
+
+#: ../powertop.c:1130
+msgid ""
+"Suggestion: Enable the CONFIG_NO_HZ kernel configuration option.\n"
+"This option is required to get any kind of longer sleep times in the CPU."
+msgstr ""
+"Sugestie: Activează opțiunea CONFIG_NO_HZ a kernelului.\n"
+"Această opțiune permite procesorului să primească durate mai lungi de repaus."
+
+#: ../powertop.c:1139
+msgid ""
+"Suggestion: Enable the CONFIG_SND_AC97_POWER_SAVE kernel configuration option.\n"
+"This option will automatically power down your sound codec when not in use,\n"
+"and can save approximately half a Watt of power."
+msgstr ""
+"Sugestie: Activează opțiunea CONFIG_SND_AC97_POWER_SAVE a kernelului.\n"
+"Această opțiune va închide automat codecul de sunet atunci când nu este folosit,\n"
+"astfel se poate salva aproximativ jumătate din energia consumată."
+
+#: ../powertop.c:1126
+msgid ""
+"Suggestion: Enable the CONFIG_USB_SUSPEND kernel configuration option.\n"
+"This option will automatically disable UHCI USB when not in use, and may\n"
+"save approximately 1 Watt of power."
+msgstr ""
+"Sugestie: Activează opțiunea CONFIG_USB_SUSPEND a kernelului.\n"
+"Această opțiune va dezactiva automat UHCI USB atunci când nu este folosit, astfel se poate\n"
+"salva aproximativ 1 Watt de energie."
+
+#: ../cpufreq.c:116
+msgid ""
+"Suggestion: Enable the ondemand cpu speed governor for all processors via: \n"
+" echo ondemand > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor \n"
+msgstr ""
+"Sugestie: Activează guvernatorul de viteză a procesorului folosind comanda: \n"
+" echo ondemand > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor \n"
+
+#: ../wireless.c:314
+#, c-format
+msgid ""
+"Suggestion: Enable wireless power saving mode by executing the following command:\n"
+" echo 5 > %s \n"
+"This will sacrifice network performance slightly to save power."
+msgstr ""
+"Sugestie: Activează modul de economisire a rețelei fără fir folosind comanda:\n"
+" echo 5 > %s \n"
+"Această opțiune va sacrifica ușor performața rețelei pentru a salva energie."
+
+#: ../wifi-new.c:198
+#, c-format
+msgid ""
+"Suggestion: Enable wireless power saving mode by executing the following command:\n"
+" iwconfig %s power timeout 500ms\n"
+"This will sacrifice network performance slightly to save power."
+msgstr ""
+"Sugestie: Activează modul de economisire a rețelei fără fir folosind comanda:\n"
+" iwconfig %s power timeout 500ms\n"
+"Această opțiune va sacrifica ușor performața rețelei pentru a salva energie."
+
+#: ../wireless.c:308
+#, c-format
+msgid ""
+"Suggestion: Enable wireless power saving mode by executing the following command:\n"
+" iwpriv %s set_power 5 \n"
+"This will sacrifice network performance slightly to save power."
+msgstr ""
+"Sugestie: Activează modul de economisire a rețelei fără fir folosind comanda:\n"
+" iwpriv %s set_power 5 \n"
+"Această opțiune va sacrifica ușor performața rețelei pentru a salva energie."
+
+#: ../xrandr.c:75
+msgid ""
+"Suggestion: disable TV out via: \n"
+" xrandr --output TV --off \n"
+"or press the V key."
+msgstr ""
+"Sugestie: dezactivează ieșirea TV prin comanda: \n"
+" xrandr --output TV --off \n"
+"sau apasă tasta V."
+
+#: ../misctips.c:59
+msgid ""
+"Suggestion: disable the NMI watchdog by executing the following command:\n"
+" echo 0 > /proc/sys/kernel/nmi_watchdog \n"
+"The NMI watchdog is a kernel debug mechanism to detect deadlocks"
+msgstr ""
+"Sugestie: dezactivează gardianul NMI prin executarea următoarei comenzi:\n"
+" echo 0 > /proc/sys/kernel/nmi_watchdog \n"
+"Gardianul NMI este un mecanism de depanare a kernelului folosit pentru a detecta partajări (zone moarte)"
+
+#: ../misctips.c:123
+msgid ""
+"Suggestion: enable AC97 powersave mode by executing the following command:\n"
+" echo 1 > /sys/module/snd_ac97_codec/parameters/power_save \n"
+"or by passing power_save=1 as module parameter."
+msgstr ""
+"Sugestie: activează modul de economisire AC97 folosind următoarea comandă:\n"
+" echo 1 > /sys/module/snd_ac97_codec/parameters/power_save \n"
+"sau prin trecerea parametrului power_save=1 a modulului."
+
+#: ../misctips.c:163
+msgid ""
+"Suggestion: enable HD audio powersave mode by executing the following command:\n"
+" echo 1 > /sys/module/snd_hda_intel/parameters/power_save \n"
+"or by passing power_save=1 as module parameter."
+msgstr ""
+"Sugestie: activează modul de economisire audio HD folosind următoarea comandă:\n"
+" echo 1 > /sys/module/snd_ac97_codec/parameters/power_save \n"
+"sau prin trecerea parametrului power_save=1 a modulului."
+
+#: ../misctips.c:87
+msgid ""
+"Suggestion: enable the HPET (Multimedia Timer) in your BIOS or add \n"
+"the kernel patch to force-enable HPET. HPET support allows Linux to \n"
+"have much longer sleep intervals."
+msgstr ""
+"Sugestie: activează HPET (Multimedia Timer) în BIOS sau adaugă \n"
+"patchul force-enable HPET a kernelului. Sprijinul oferit de HPET sistemului permite acestuia\n"
+"să primească durate mai lungi de repaus."
+
+#: ../misctips.c:192
+msgid ""
+"Suggestion: enable the noatime filesystem option by executing the following command:\n"
+" mount -o remount,noatime / or by pressing the T key \n"
+"noatime disables persistent access time of file accesses, which causes lots of disk IO."
+msgstr ""
+"Sugestie: activează opțiunea de sistem noatime cu următoarea comandă:\n"
+" mount -o remount,noatime / sau prin apăsarea tastei T \n"
+"noatime dezactivează accesul repetat la fișiere, acces ce poate cauza multe defecțiuni ale discului."
+
+#: ../misctips.c:255
+msgid ""
+"Suggestion: enable the power aware CPU scheduler with the following command:\n"
+" echo 1 > /sys/devices/system/cpu/sched_mc_power_savings\n"
+"or by pressing the C key."
+msgstr ""
+"Sugestie: activează jurnalul de putere a procesorului cu ajutorul următoarei comenzi:\n"
+" echo 1 > /sys/devices/system/cpu/sched_mc_power_savings\n"
+"sau prin apăsarea tastei C."
+
+#: ../misctips.c:288
+#, c-format
+msgid ""
+"Suggestion: increase the VM dirty writeback time from %1.2f to 15 seconds with:\n"
+" echo 1500 > /proc/sys/vm/dirty_writeback_centisecs \n"
+"This wakes the disk up less frequently for background VM activity"
+msgstr ""
+"Sugestie: mărește timpul de răspuns în scris VM de la %1.2f la 15 secunde cu:\n"
+" echo 1500 > /proc/sys/vm/dirty_writeback_centisecs \n"
+"Această opțiune accesează discul mai rar pentru activitatea de fundal VM"
+
+#: ../display.c:300
+msgid "This option is located in the Kernel Debugging section of menuconfig\n"
+msgstr "Această opţiune este situată în menuconfig, secțiunea Depanare Kernel\n"
+
+#: ../display.c:281
+msgid "Top causes for wakeups:\n"
+msgstr "Top cauze pentru porniri:\n"
+
+#: ../cpufreqstats.c:94
+msgid "Turbo Mode"
+msgstr "Modul Turbo"
+
+#: ../urbnum.c:123
+#, c-format
+msgid "USB device %4s : %s (%s)"
+msgstr "Dispozitivul USB %4s : %s (%s)"
+
+#: ../powertop.c:820
+#, c-format
+msgid "Usage: powertop [OPTION...]\n"
+msgstr "În uz: powertop [OPTION...]\n"
+
+#: ../display.c:270
+#, c-format
+msgid "Wakeups-from-idle per second : %4.1f\tinterval: %0.1fs\n"
+msgstr "Wakeups-from-idle pe secundă : %4.1f\tinterval: %0.1fs\n"
+
+#: ../intelcstates.c:152
+#, c-format
+msgid "Your BIOS reports the following C-states : "
+msgstr "BIOS-ul raportează următoarele stări C-states : "
+
+#: ../intelcstates.c:143
+#, c-format
+msgid "Your CPU supports the following C-states : "
+msgstr "Procesorul suportă următoarele stări C-states : "
+
+#: ../display.c:196
+#, c-format
+msgid "no ACPI power usage estimate available"
+msgstr "nici o estimare a puterii de utilizare ACPI disponibilă"
+
+#: ../display.c:244
+#, c-format
+msgid "no power usage estimate available"
+msgstr "nici o estimare a puterii de utilizare disponibilă"
+
+#: ../powertop.c:433
+msgid "polling"
+msgstr "de votare"
+
+#: ../powertop.c:831
+#, c-format
+msgid "powertop version %s\n"
+msgstr "versiune powertop %s\n"
+
diff --git a/po/ru.po b/po/ru.po
new file mode 100644
index 0000000..768dbc8
--- /dev/null
+++ b/po/ru.po
@@ -0,0 +1,660 @@
+# translation of ru.po to Russian
+# Copyright (C) 2007 THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+#
+# Arjan van de Ven <arjan@linux.intel.com>, 2007.
+# Andrey Melentyev <andrey.melentyev@gmail.com>, 2007.
+msgid ""
+msgstr ""
+"Project-Id-Version: ru\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2009-08-11 13:44-0700\n"
+"PO-Revision-Date: 2007-06-17 12:45+0400\n"
+"Last-Translator: Andrey Melentyev <andrey.melentyev@gmail.com>\n"
+"Language-Team: Russian <ru@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%"
+"10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#: ../powertop.c:303 ../powertop.c:306
+#, c-format
+msgid " <interrupt> : %s"
+msgstr ""
+
+#: ../powertop.c:1072
+msgid " <interrupt> : extra timer interrupt"
+msgstr ""
+
+#: ../powertop.c:301
+#, c-format
+msgid " <kernel IPI> : %s"
+msgstr ""
+
+#: ../powertop.c:821
+#, c-format
+msgid ""
+" -d, --dump read wakeups once and print list of top offenders\n"
+msgstr ""
+
+#: ../powertop.c:824
+#, c-format
+msgid " -h, --help Show this help message\n"
+msgstr ""
+
+#: ../powertop.c:823
+#, c-format
+msgid " -p, --pids show pids in wakeups list\n"
+msgstr ""
+
+#: ../powertop.c:822
+#, c-format
+msgid " -t, --time=DOUBLE default time to gather data in seconds\n"
+msgstr ""
+
+#: ../powertop.c:825
+#, c-format
+msgid " -v, --version Show version information and exit\n"
+msgstr ""
+
+#: ../misctips.c:125
+msgid " A - Turn AC97 powersave on "
+msgstr " A - Включить энергосбережение AC97"
+
+#: ../misctips.c:165
+#, fuzzy
+msgid " A - Turn HD audio powersave on "
+msgstr " A - Включить энергосбережение AC97"
+
+#: ../bluetooth.c:146
+msgid " B - Turn Bluetooth off "
+msgstr "B - Отключить Bluetooth"
+
+#: ../misctips.c:257
+msgid " C - Power aware CPU scheduler "
+msgstr " C - Энергосберегательный планировщик ЦП"
+
+#: ../wifi-new.c:196
+#, fuzzy
+msgid " D - disable wireless "
+msgstr " W - Включить режим энергосбережения Wi-Fi"
+
+#: ../wireless.c:322
+msgid " I - disable WIFI Radio "
+msgstr " I - Отключить Wi-Fi радио"
+
+#: ../process.c:84
+#, c-format
+msgid " K - kill %s "
+msgstr " K - Убить %s "
+
+#: ../misctips.c:61
+msgid " N - Turn NMI watchdog off "
+msgstr " N - Отключить NMI watchdog"
+
+#: ../cpufreq.c:118
+msgid " O - enable Ondemand governor "
+msgstr " O - Включить ondemand cpufreq governer "
+
+#: ../wifi-new.c:201
+#, fuzzy
+msgid " P - Enable wireless power saving "
+msgstr " W - Включить режим энергосбережения Wi-Fi"
+
+#: ../display.c:108
+msgid " Q - Quit "
+msgstr " Q - Выйти"
+
+#: ../display.c:109
+msgid " R - Refresh "
+msgstr " R - Обновить"
+
+#: ../sata.c:104
+msgid " S - SATA Link Power Management "
+msgstr " S - Управление питанием SATA"
+
+#: ../misctips.c:194
+msgid " T - enable noatime "
+msgstr " T - Включить noatime"
+
+#: ../urbnum.c:222 ../usb.c:116
+msgid " U - Enable USB suspend "
+msgstr ""
+
+#: ../xrandr.c:78
+msgid " V - Disable TV out "
+msgstr " V - Отключить TV out"
+
+#: ../wireless.c:311 ../wireless.c:317
+msgid " W - Enable wireless power saving "
+msgstr " W - Включить режим энергосбережения Wi-Fi"
+
+#: ../misctips.c:292
+msgid " W - Increase Writeback time "
+msgstr ""
+
+#: ../ethernet.c:131
+msgid " W - disable Wake-On-Lan "
+msgstr " W - Отключить Wake-On-Lan"
+
+#: ../cpufreqstats.c:91
+#, c-format
+msgid "%6.2f Ghz"
+msgstr "%6.2f ГГц"
+
+#: ../cpufreqstats.c:88
+#, c-format
+msgid "%6lli Mhz"
+msgstr "%lli МГц"
+
+#: ../cpufreqstats.c:85
+#, c-format
+msgid "%9lli"
+msgstr ""
+
+#: ../powertop.c:983
+#, fuzzy, c-format
+msgid "%s\t%5.1fms (%4.1f%%)\n"
+msgstr "C%i\t\t%5.1fмс (%4.1f%%)\n"
+
+#: ../display.c:205
+#, c-format
+msgid "(long term: %3.1fW,/%3.1fh)"
+msgstr "(Долгосрочный: %3.1fВт,/%3.1fчас)"
+
+#: ../display.c:301
+msgid "(which is CONFIG_DEBUG_KERNEL=y in the config file)\n"
+msgstr "(которая называется CONFIG_DEBUG_KERNEL=y в конфиге)\n"
+
+#: ../powertop.c:960
+#, fuzzy, c-format
+msgid "< Detailed C-state information is not available.>\n"
+msgstr ""
+"< Детальная информация о С-states доступна только для мобильных процессоров "
+">\n"
+
+#: ../powertop.c:1040
+msgid "<kernel core>"
+msgstr ""
+
+#: ../powertop.c:1036 ../powertop.c:1038
+msgid "<kernel module>"
+msgstr ""
+
+#: ../urbnum.c:217
+#, c-format
+msgid ""
+"A USB device is active %4.1f%% of the time:\n"
+"%s"
+msgstr ""
+
+#: ../urbnum.c:186
+msgid "Active Device name"
+msgstr ""
+
+#: ../powertop.c:969
+#, c-format
+msgid "C0 (cpu running) (%4.1f%%)\n"
+msgstr "C0 (ЦП работает) (%4.1f%%)\n"
+
+#: ../powertop.c:966
+#, c-format
+msgid "Cn\t Avg residency\n"
+msgstr ""
+
+#: ../powertop.c:903
+#, c-format
+msgid "Collecting data for %i seconds \n"
+msgstr "Собираем данные %i секунд \n"
+
+#: ../ethernet.c:128
+msgid ""
+"Disable Ethernet Wake-On-Lan with the following command:\n"
+" ethtool -s eth0 wol d \n"
+"Wake-on-Lan keeps the phy active, this costs power."
+msgstr ""
+"Отключите ф-цию Wake-On-Lan следующей командой:\n"
+" ethtool -s eth0 wol d \n"
+"Wake-on-Lan держит физический интерфейс занятым."
+
+#: ../powertop.c:1187
+msgid ""
+"Disable the SE-Alert software by removing the 'setroubleshoot-server' rpm\n"
+"SE-Alert alerts you about SELinux policy violations, but also\n"
+"has a bug that wakes it up 10 times per second."
+msgstr ""
+"Выключите программу SE-Alert, удалив rpm 'setroubleshoot-server'\n"
+"SE-Alert предупреждает Вас о нарушениях политики SELinux, но также\n"
+"в программе имеется баг, который вызывает около 10 пробуждений в секунду."
+
+#: ../display.c:304
+msgid ""
+"No detailed statistics available; PowerTOP needs root privileges for that\n"
+msgstr ""
+"Детальная статистика недоступна; PowerTOP нужны привилегии root для этого\n"
+
+#: ../display.c:299
+msgid ""
+"No detailed statistics available; please enable the CONFIG_TIMER_STATS "
+"kernel option\n"
+msgstr ""
+"Детальная статистика недоступна, пожалуйста, включите опцию "
+"CONFIG_TIMER_STATS в ядре\n"
+
+#: ../display.c:302
+msgid "Note: this is only available in 2.6.21 and later kernels\n"
+msgstr "Примечание: доступно только для ядра 2.6.21 и более поздних версий\n"
+
+#: ../cpufreqstats.c:115
+#, fuzzy, c-format
+msgid "P-states (frequencies)\n"
+msgstr "Cn Среднее пребывание (за %2iс)\t\tP-states (частоты)\n"
+
+#: ../powertop.c:170 ../powertop.c:306
+msgid "PS/2 keyboard/mouse/touchpad"
+msgstr ""
+
+#: ../display.c:208
+#, c-format
+msgid "Power usage (5 minute ACPI estimate) : %5.1f W (%3.1f hours left)"
+msgstr ""
+"Потребление энергии (по оценке ACPI за 5 минут) : %5.1f Вт (%3.1f часов "
+"осталось)"
+
+#: ../display.c:201
+#, c-format
+msgid "Power usage (ACPI estimate): %3.1fW (%3.1f hours)"
+msgstr "Энергопотребление (по оценке ACPI): %3.1f Вт (%3.1f часов осталось)"
+
+#: ../display.c:238
+#, fuzzy, c-format
+msgid "Power usage: %3.1fW (%3.1f hours)"
+msgstr "Энергопотребление (по оценке ACPI): %3.1f Вт (%3.1f часов осталось)"
+
+#: ../powertop.c:902
+#, c-format
+msgid "PowerTOP needs to be run as root to collect enough information\n"
+msgstr ""
+"PowerTOP должен быть запущен с привилегиями суперпользователя root для сбора "
+"необходимой информации\n"
+
+#: ../urbnum.c:185
+msgid "Recent USB suspend statistics"
+msgstr ""
+
+#: ../powertop.c:1181
+#, fuzzy
+msgid ""
+"Suggestion: Disable 'hal' from polling your cdrom with: \n"
+"hal-disable-polling --device /dev/cdrom 'hal' is the component that auto-"
+"opens a\n"
+"window if you plug in a CD but disables SATA power saving from kicking in."
+msgstr ""
+"Совет: запретите 'hal' проверять Ваш cdrom командой: \n"
+"hal-disable-polling /dev/cdrom 'hal'автоматически открывает окно, когда \n"
+"Вы вставляете CD, но он мешает нормальной работе энергосбережения SATA."
+
+#: ../powertop.c:1155 ../powertop.c:1159
+msgid ""
+"Suggestion: Disable or remove 'beagle' from your system. \n"
+"Beagle is the program that indexes for easy desktop search, however it's \n"
+"not very efficient and costs a significant amount of battery life."
+msgstr ""
+"Совет: отключите или удалите beagle из Вашей системы.\n"
+"Beagle - это программа, которая индексирует Ваши файлы для удобного \n"
+"поиска, но она не очень эффективна и сильно уменьшает время работы \n"
+"от батареи."
+
+#: ../powertop.c:1168
+#, fuzzy
+msgid ""
+"Suggestion: Disable or remove 'gnome-power-manager' from your system. \n"
+"Older versions of gnome-power-manager wake up far more often than \n"
+"needed costing you some power."
+msgstr ""
+"Совет: отключите или удалите 'gnome-power-manager' из Вашей системы.\n"
+"Не смотря на название, некоторые версии gnome-power-manager стоят больше\n"
+"чем могут помочь сохранить."
+
+#: ../powertop.c:1174
+msgid ""
+"Suggestion: Disable or remove 'pcscd' from your system. \n"
+"pcscd tends to keep the USB subsystem out of power save mode\n"
+"and your processor out of deeper powersave states."
+msgstr ""
+"Совет: отключите или удалите 'pcscd' из Вашей системыn pcscd мешает "
+"подсистеме USB входить в режим энергосбережения\n"
+"тем самым не давая процессору возможность использовать некоторые\n"
+"режимы сбережения энергии."
+
+#: ../powertop.c:1143
+msgid ""
+"Suggestion: Disable the CONFIG_IRQBALANCE kernel configuration option.\n"
+"The in-kernel irq balancer is obsolete and wakes the CPU up far more than "
+"needed."
+msgstr ""
+"Совет: выключите опцию CONFIG_IRQBALANCE в конфигурации ядра.\n"
+"Балансировщик прерываний ядра устарел и заставляет процессор \n"
+"просыпаться n гораздо чаще, чем необходимо."
+
+#: ../wireless.c:320
+#, c-format
+msgid ""
+"Suggestion: Disable the unused WIFI radio by executing the following "
+"command:\n"
+" echo 1 > %s \n"
+msgstr ""
+"Совет: отключите неиспользуемое радио Wi-Fi следующей командой:\n"
+" echo 1 > %s \n"
+
+#: ../wifi-new.c:194
+#, fuzzy, c-format
+msgid ""
+"Suggestion: Disable the unused WIFI radio by setting the interface down:\n"
+" ifconfig %s down\n"
+msgstr ""
+"Совет: отключите неиспользуемое радио Wi-Fi следующей командой:\n"
+" echo 1 > %s \n"
+
+#: ../bluetooth.c:144
+msgid ""
+"Suggestion: Disable the unused bluetooth interface with the following "
+"command:\n"
+" hciconfig hci0 down ; rmmod hci_usb\n"
+"Bluetooth is a radio and consumes quite some power, and keeps USB busy as "
+"well.\n"
+msgstr ""
+"Совет: отключите неиспользуемый интерфейс bluetooth следующей командой:\n"
+" hciconfig hci0 down ; rmmod hci_usb\n"
+"Bluetooth это радио, а значит потребляет энергию, кроме того загружает "
+"работой USB.\n"
+
+#: ../sata.c:101
+msgid ""
+"Suggestion: Enable SATA ALPM link power management via: \n"
+" echo min_power > /sys/class/scsi_host/host0/link_power_management_policy\n"
+"or press the S key."
+msgstr ""
+"Совет: включите энергосбережение SATA ALPM командой: \n"
+" echo min_power > /sys/class/scsi_host/host0/link_power_management_policy\n"
+"или нажмите на клавишу S."
+
+#: ../usb.c:114
+msgid ""
+"Suggestion: Enable USB autosuspend for non-input devices by pressing the U "
+"key\n"
+msgstr ""
+
+#: ../powertop.c:1131
+msgid ""
+"Suggestion: Enable the CONFIG_ACPI_BATTERY kernel configuration option.\n"
+" This option is required to get power estimages from PowerTOP"
+msgstr ""
+"Совет: включите опцию CONFIG_ACPI_BATTERY в конфигурации ядра.\n"
+" Эта опция необходима для вычисления потребления энергии в PowerTOP"
+
+#: ../powertop.c:1128
+msgid ""
+"Suggestion: Enable the CONFIG_CPU_FREQ_GOV_ONDEMAND kernel configuration "
+"option.\n"
+"The 'ondemand' CPU speed governor will minimize the CPU power usage while\n"
+"giving you performance when it is needed."
+msgstr ""
+"Совет: включите опцию CONFIG_CPU_FREQ_GOV_ONDEMAND в конфигурации ядра.\n"
+"'ondemand' cpufreq governor минимизирует потребление энергии процессором, "
+"наращивая\n"
+"производительность при необходимости."
+
+#: ../powertop.c:1145
+msgid ""
+"Suggestion: Enable the CONFIG_CPU_FREQ_STAT kernel configuration option.\n"
+"This option allows PowerTOP to show P-state percentages \n"
+"P-states correspond to CPU frequencies."
+msgstr ""
+"Совет: включите опцию CONFIG_CPU_FREQ_STAT в конфигурации ядра.\n"
+"Это позволит PowerTOP показывать статистику P-states в процентах \n"
+"P-states соответствуют частотам ЦП."
+
+#: ../powertop.c:1134
+msgid ""
+"Suggestion: Enable the CONFIG_HPET_TIMER kernel configuration option.\n"
+"Without HPET support the kernel needs to wake up every 20 milliseconds for \n"
+"some housekeeping tasks."
+msgstr ""
+"Совет: включите опцию CONFIG_HPET_TIMER в конфигурации ядра.\n"
+"Без поддержки HPET ядру необходимо пробуждаться каждые 20мс для \n"
+"выполнения служебных заданий."
+
+#: ../powertop.c:1148
+#, fuzzy
+msgid ""
+"Suggestion: Enable the CONFIG_INOTIFY kernel configuration option.\n"
+"This option allows programs to wait for changes in files and directories\n"
+"instead of having to poll for these changes"
+msgstr ""
+"Совет: включите опцию CONFIG_CPU_FREQ_STAT в конфигурации ядра.\n"
+"Это позволит PowerTOP показывать статистику P-states в процентах \n"
+"P-states соответствуют частотам ЦП."
+
+#: ../powertop.c:1130
+msgid ""
+"Suggestion: Enable the CONFIG_NO_HZ kernel configuration option.\n"
+"This option is required to get any kind of longer sleep times in the CPU."
+msgstr ""
+"Совет: включите опцию CONFIG_NO_HZ в конфигурации ядра.\n"
+"Эта опция необходима для достижения более долгого времени \n"
+"бездействия процессора."
+
+#: ../powertop.c:1139
+msgid ""
+"Suggestion: Enable the CONFIG_SND_AC97_POWER_SAVE kernel configuration "
+"option.\n"
+"This option will automatically power down your sound codec when not in use,\n"
+"and can save approximately half a Watt of power."
+msgstr ""
+"Совет: включите опцию CONFIG_SND_AC97_POWER_SAVE в конфигурации ядра.\n"
+"Эта опция автоматически обесточит Ваш звуковой кодек, когда он не "
+"используется, \n"
+"и поможет сохранить приблизительно 1Вт энергии."
+
+#: ../powertop.c:1126
+msgid ""
+"Suggestion: Enable the CONFIG_USB_SUSPEND kernel configuration option.\n"
+"This option will automatically disable UHCI USB when not in use, and may\n"
+"save approximately 1 Watt of power."
+msgstr ""
+"Совет: включите опцию CONFIG_USB_SUSPEND в конфигурации ядра.\n"
+"Эта опция автоматически отключит UHCI USB во время бездействия, и\n"
+"поможет сохранить приблизительно 1Вт энергии."
+
+#: ../cpufreq.c:116
+msgid ""
+"Suggestion: Enable the ondemand cpu speed governor for all processors via: \n"
+" echo ondemand > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor \n"
+msgstr ""
+"Совет: включите ondemand cpufreq governer для всех процессоров командой:\n"
+" echo ondemand > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor \n"
+
+#: ../wireless.c:314
+#, fuzzy, c-format
+msgid ""
+"Suggestion: Enable wireless power saving mode by executing the following "
+"command:\n"
+" echo 5 > %s \n"
+"This will sacrifice network performance slightly to save power."
+msgstr ""
+"Совет: включите режим энергосбережения для Wi-Fi следующей командой:\n"
+" iwpriv %s set_power 5\n"
+"Тем самым Вы пожертвуете производительностью сети для того, чтобы заметно\n"
+"уменьшить расход энергии."
+
+#: ../wifi-new.c:198
+#, fuzzy, c-format
+msgid ""
+"Suggestion: Enable wireless power saving mode by executing the following "
+"command:\n"
+" iwconfig %s power timeout 500ms\n"
+"This will sacrifice network performance slightly to save power."
+msgstr ""
+"Совет: включите режим энергосбережения для Wi-Fi следующей командой:\n"
+" iwpriv %s set_power 5\n"
+"Тем самым Вы пожертвуете производительностью сети для того, чтобы заметно\n"
+"уменьшить расход энергии."
+
+#: ../wireless.c:308
+#, c-format
+msgid ""
+"Suggestion: Enable wireless power saving mode by executing the following "
+"command:\n"
+" iwpriv %s set_power 5 \n"
+"This will sacrifice network performance slightly to save power."
+msgstr ""
+"Совет: включите режим энергосбережения для Wi-Fi следующей командой:\n"
+" iwpriv %s set_power 5\n"
+"Тем самым Вы пожертвуете производительностью сети для того, чтобы заметно\n"
+"уменьшить расход энергии."
+
+#: ../xrandr.c:75
+msgid ""
+"Suggestion: disable TV out via: \n"
+" xrandr --output TV --off \n"
+"or press the V key."
+msgstr ""
+"Совет: отключите TV-out командой: \n"
+" xrandr --output TV --off \n"
+"или нажмите клавишу V."
+
+#: ../misctips.c:59
+msgid ""
+"Suggestion: disable the NMI watchdog by executing the following command:\n"
+" echo 0 > /proc/sys/kernel/nmi_watchdog \n"
+"The NMI watchdog is a kernel debug mechanism to detect deadlocks"
+msgstr ""
+"Совет: отключите NMI watchdog следующей командой:\n"
+" echo 0 > /proc/sys/kernel/nmi_watchdog \n"
+"NMI watchdog это механизм ядра для отслеживания зависаний"
+
+#: ../misctips.c:123
+msgid ""
+"Suggestion: enable AC97 powersave mode by executing the following command:\n"
+" echo 1 > /sys/module/snd_ac97_codec/parameters/power_save \n"
+"or by passing power_save=1 as module parameter."
+msgstr ""
+"Совет: включите режим энергосбережения AC97 при помощи следующей команды:\n"
+" echo 1 > /sys/module/snd_ac97_codec/parameters/power_save \n"
+"или добавьте power_save=1 в качестве параметра модуля."
+
+#: ../misctips.c:163
+#, fuzzy
+msgid ""
+"Suggestion: enable HD audio powersave mode by executing the following "
+"command:\n"
+" echo 1 > /sys/module/snd_hda_intel/parameters/power_save \n"
+"or by passing power_save=1 as module parameter."
+msgstr ""
+"Совет: включите режим энергосбережения AC97 при помощи следующей команды:\n"
+" echo 1 > /sys/module/snd_ac97_codec/parameters/power_save \n"
+"или добавьте power_save=1 в качестве параметра модуля."
+
+#: ../misctips.c:87
+msgid ""
+"Suggestion: enable the HPET (Multimedia Timer) in your BIOS or add \n"
+"the kernel patch to force-enable HPET. HPET support allows Linux to \n"
+"have much longer sleep intervals."
+msgstr ""
+"Совет: включите HPET (Multimedia Timer) в Вашем BIOS или наложите на ядро\n"
+"патч для принудительного включения HPET. Поддержка HPET позволяет Linux\n"
+"значительно увеличить интервалы сна."
+
+#: ../misctips.c:192
+msgid ""
+"Suggestion: enable the noatime filesystem option by executing the following "
+"command:\n"
+" mount -o remount,noatime / or by pressing the T key \n"
+"noatime disables persistent access time of file accesses, which causes lots "
+"of disk IO."
+msgstr ""
+"Совет: включите опцию noatime для файловой системы следующей командой:\n"
+" mount -o remount,noatime / или нажатием клавиши T\n"
+"noatime отключает постоянное обновление атрибута времени последнего доступа\n"
+"к файлу, которое приводит к большому количеству операций ввода-вывода."
+
+#: ../misctips.c:255
+msgid ""
+"Suggestion: enable the power aware CPU scheduler with the following "
+"command:\n"
+" echo 1 > /sys/devices/system/cpu/sched_mc_power_savings\n"
+"or by pressing the C key."
+msgstr ""
+"Совет: включите энергосберегающий планировщик процессора командой:\n"
+" echo 1 > /sys/devices/system/cpu/sched_mc_power_savings\n"
+"или нажатием клавиши C."
+
+#: ../misctips.c:288
+#, c-format
+msgid ""
+"Suggestion: increase the VM dirty writeback time from %1.2f to 15 seconds "
+"with:\n"
+" echo 1500 > /proc/sys/vm/dirty_writeback_centisecs \n"
+"This wakes the disk up less frequently for background VM activity"
+msgstr ""
+
+#: ../display.c:300
+msgid "This option is located in the Kernel Debugging section of menuconfig\n"
+msgstr "Эта опция находится в разделе \"Kernel Debugging\" menuconfig\n"
+
+#: ../display.c:281
+#, fuzzy
+msgid "Top causes for wakeups:\n"
+msgstr "Причины пробуждений:"
+
+#: ../cpufreqstats.c:94
+msgid "Turbo Mode"
+msgstr ""
+
+#: ../urbnum.c:123
+#, c-format
+msgid "USB device %4s : %s (%s)"
+msgstr ""
+
+#: ../powertop.c:820
+#, c-format
+msgid "Usage: powertop [OPTION...]\n"
+msgstr ""
+
+#: ../display.c:270
+#, fuzzy, c-format
+msgid "Wakeups-from-idle per second : %4.1f\tinterval: %0.1fs\n"
+msgstr "Пробуждений из режима бездействия за секунду : %4.1f"
+
+#: ../intelcstates.c:152
+#, c-format
+msgid "Your BIOS reports the following C-states : "
+msgstr ""
+
+#: ../intelcstates.c:143
+#, c-format
+msgid "Your CPU supports the following C-states : "
+msgstr ""
+
+#: ../display.c:196
+#, c-format
+msgid "no ACPI power usage estimate available"
+msgstr "Оценка потребления энергии через ACPI недоступна"
+
+#: ../display.c:244
+#, fuzzy, c-format
+msgid "no power usage estimate available"
+msgstr "Оценка потребления энергии через ACPI недоступна"
+
+#: ../powertop.c:433
+msgid "polling"
+msgstr ""
+
+#: ../powertop.c:831
+#, c-format
+msgid "powertop version %s\n"
+msgstr ""
+
diff --git a/po/zh_CN.po b/po/zh_CN.po
new file mode 100644
index 0000000..e02b13f
--- /dev/null
+++ b/po/zh_CN.po
@@ -0,0 +1,545 @@
+# powertop
+# Copyright Intel (C) 2009
+# This file is distributed under the same license as the PACKAGE package.
+# Zhu Yanhai <yanhai.zhu@linux.intel.com>, 2009.
+#
+
+msgid ""
+msgstr ""
+"Project-Id-Version: powertop\n"
+"Report-Msgid-Bugs-To: bugzilla.moblin.org\n"
+"POT-Creation-Date: 2009-08-12 15:39-0700\n"
+"PO-Revision-Date: 2009-09-22 16:08+0800\n"
+"Last-Translator: Zhu Yanhai <yanhai.zhu@linux.intel.com>\n"
+"Language-Team: zh_CN\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../powertop.c:303 ../powertop.c:306
+#, c-format
+msgid " <interrupt> : %s"
+msgstr " <中断> : %s"
+
+#: ../powertop.c:1072
+msgid " <interrupt> : extra timer interrupt"
+msgstr " <中断> : 额外的定时器中断"
+
+#: ../powertop.c:301
+#, c-format
+msgid " <kernel IPI> : %s"
+msgstr " <内核 处理器间中断(IPI)> : %s"
+
+#: ../powertop.c:821
+#, c-format
+msgid ""
+" -d, --dump read wakeups once and print list of top offenders\n"
+msgstr ""
+" -d, --dump read wakeups once and print list of top offenders\n"
+
+#: ../powertop.c:824
+#, c-format
+msgid " -h, --help Show this help message\n"
+msgstr " -h, --help 打印本帮助信息\n"
+
+#: ../powertop.c:823
+#, c-format
+msgid " -p, --pids show pids in wakeups list\n"
+msgstr " -p, --pids 输出唤醒列表中的进程号\n"
+
+#: ../powertop.c:822
+#, c-format
+msgid " -t, --time=DOUBLE default time to gather data in seconds\n"
+msgstr ""
+
+#: ../powertop.c:825
+#, c-format
+msgid " -v, --version Show version information and exit\n"
+msgstr ""
+
+#: ../misctips.c:125
+msgid " A - Turn AC97 powersave on "
+msgstr ""
+
+#: ../misctips.c:165
+msgid " A - Turn HD audio powersave on "
+msgstr ""
+
+#: ../bluetooth.c:146
+msgid " B - Turn Bluetooth off "
+msgstr ""
+
+#: ../misctips.c:257
+msgid " C - Power aware CPU scheduler "
+msgstr ""
+
+#: ../wifi-new.c:196
+msgid " D - disable wireless "
+msgstr ""
+
+#: ../wireless.c:322
+msgid " I - disable WIFI Radio "
+msgstr ""
+
+#: ../process.c:84
+#, c-format
+msgid " K - kill %s "
+msgstr ""
+
+#: ../misctips.c:61
+msgid " N - Turn NMI watchdog off "
+msgstr ""
+
+#: ../cpufreq.c:118
+msgid " O - enable Ondemand governor "
+msgstr ""
+
+#: ../wifi-new.c:201
+msgid " P - Enable wireless power saving "
+msgstr ""
+
+#: ../display.c:108
+msgid " Q - Quit "
+msgstr ""
+
+#: ../display.c:109
+msgid " R - Refresh "
+msgstr ""
+
+#: ../sata.c:104
+msgid " S - SATA Link Power Management "
+msgstr ""
+
+#: ../misctips.c:194
+msgid " T - enable noatime "
+msgstr ""
+
+#: ../urbnum.c:222 ../usb.c:116
+msgid " U - Enable USB suspend "
+msgstr ""
+
+#: ../xrandr.c:78
+msgid " V - Disable TV out "
+msgstr ""
+
+#: ../wireless.c:311 ../wireless.c:317
+msgid " W - Enable wireless power saving "
+msgstr ""
+
+#: ../misctips.c:292
+msgid " W - Increase Writeback time "
+msgstr ""
+
+#: ../ethernet.c:131
+msgid " W - disable Wake-On-Lan "
+msgstr ""
+
+#: ../cpufreqstats.c:91
+#, c-format
+msgid "%6.2f Ghz"
+msgstr ""
+
+#: ../cpufreqstats.c:88
+#, c-format
+msgid "%6lli Mhz"
+msgstr ""
+
+#: ../cpufreqstats.c:85
+#, c-format
+msgid "%9lli"
+msgstr ""
+
+#: ../powertop.c:983
+#, c-format
+msgid "%s\t%5.1fms (%4.1f%%)\n"
+msgstr ""
+
+#: ../display.c:205
+#, c-format
+msgid "(long term: %3.1fW,/%3.1fh)"
+msgstr ""
+
+#: ../display.c:301
+msgid "(which is CONFIG_DEBUG_KERNEL=y in the config file)\n"
+msgstr ""
+
+#: ../powertop.c:960
+#, c-format
+msgid "< Detailed C-state information is not available.>\n"
+msgstr ""
+
+#: ../powertop.c:1040
+msgid "<kernel core>"
+msgstr ""
+
+#: ../powertop.c:1036 ../powertop.c:1038
+msgid "<kernel module>"
+msgstr ""
+
+#: ../urbnum.c:217
+#, c-format
+msgid ""
+"A USB device is active %4.1f%% of the time:\n"
+"%s"
+msgstr ""
+
+#: ../urbnum.c:186
+msgid "Active Device name"
+msgstr ""
+
+#: ../powertop.c:969
+#, c-format
+msgid "C0 (cpu running) (%4.1f%%)\n"
+msgstr ""
+
+#: ../powertop.c:966
+#, c-format
+msgid "Cn\t Avg residency\n"
+msgstr ""
+
+#: ../powertop.c:903
+#, c-format
+msgid "Collecting data for %i seconds \n"
+msgstr ""
+
+#: ../ethernet.c:128
+msgid ""
+"Disable Ethernet Wake-On-Lan with the following command:\n"
+" ethtool -s eth0 wol d \n"
+"Wake-on-Lan keeps the phy active, this costs power."
+msgstr ""
+
+#: ../powertop.c:1187
+msgid ""
+"Disable the SE-Alert software by removing the 'setroubleshoot-server' rpm\n"
+"SE-Alert alerts you about SELinux policy violations, but also\n"
+"has a bug that wakes it up 10 times per second."
+msgstr ""
+
+#: ../display.c:304
+msgid ""
+"No detailed statistics available; PowerTOP needs root privileges for that\n"
+msgstr ""
+
+#: ../display.c:299
+msgid ""
+"No detailed statistics available; please enable the CONFIG_TIMER_STATS "
+"kernel option\n"
+msgstr ""
+
+#: ../display.c:302
+msgid "Note: this is only available in 2.6.21 and later kernels\n"
+msgstr ""
+
+#: ../cpufreqstats.c:115
+#, c-format
+msgid "P-states (frequencies)\n"
+msgstr ""
+
+#: ../powertop.c:170 ../powertop.c:306
+msgid "PS/2 keyboard/mouse/touchpad"
+msgstr ""
+
+#: ../display.c:208
+#, c-format
+msgid "Power usage (5 minute ACPI estimate) : %5.1f W (%3.1f hours left)"
+msgstr ""
+
+#: ../display.c:201
+#, c-format
+msgid "Power usage (ACPI estimate): %3.1fW (%3.1f hours)"
+msgstr ""
+
+#: ../display.c:238
+#, c-format
+msgid "Power usage: %3.1fW (%3.1f hours)"
+msgstr ""
+
+#: ../powertop.c:902
+#, c-format
+msgid "PowerTOP needs to be run as root to collect enough information\n"
+msgstr ""
+
+#: ../urbnum.c:185
+msgid "Recent USB suspend statistics"
+msgstr ""
+
+#: ../powertop.c:1181
+msgid ""
+"Suggestion: Disable 'hal' from polling your cdrom with: \n"
+"hal-disable-polling --device /dev/cdrom 'hal' is the component that auto-"
+"opens a\n"
+"window if you plug in a CD but disables SATA power saving from kicking in."
+msgstr ""
+
+#: ../powertop.c:1155 ../powertop.c:1159
+msgid ""
+"Suggestion: Disable or remove 'beagle' from your system. \n"
+"Beagle is the program that indexes for easy desktop search, however it's \n"
+"not very efficient and costs a significant amount of battery life."
+msgstr ""
+
+#: ../powertop.c:1168
+msgid ""
+"Suggestion: Disable or remove 'gnome-power-manager' from your system. \n"
+"Older versions of gnome-power-manager wake up far more often than \n"
+"needed costing you some power."
+msgstr ""
+
+#: ../powertop.c:1174
+msgid ""
+"Suggestion: Disable or remove 'pcscd' from your system. \n"
+"pcscd tends to keep the USB subsystem out of power save mode\n"
+"and your processor out of deeper powersave states."
+msgstr ""
+
+#: ../powertop.c:1143
+msgid ""
+"Suggestion: Disable the CONFIG_IRQBALANCE kernel configuration option.\n"
+"The in-kernel irq balancer is obsolete and wakes the CPU up far more than "
+"needed."
+msgstr ""
+
+#: ../wireless.c:320
+#, c-format
+msgid ""
+"Suggestion: Disable the unused WIFI radio by executing the following "
+"command:\n"
+" echo 1 > %s \n"
+msgstr ""
+
+#: ../wifi-new.c:194
+#, c-format
+msgid ""
+"Suggestion: Disable the unused WIFI radio by setting the interface down:\n"
+" ifconfig %s down\n"
+msgstr ""
+
+#: ../bluetooth.c:144
+msgid ""
+"Suggestion: Disable the unused bluetooth interface with the following "
+"command:\n"
+" hciconfig hci0 down ; rmmod hci_usb\n"
+"Bluetooth is a radio and consumes quite some power, and keeps USB busy as "
+"well.\n"
+msgstr ""
+
+#: ../sata.c:101
+msgid ""
+"Suggestion: Enable SATA ALPM link power management via: \n"
+" echo min_power > /sys/class/scsi_host/host0/link_power_management_policy\n"
+"or press the S key."
+msgstr ""
+
+#: ../usb.c:114
+msgid ""
+"Suggestion: Enable USB autosuspend for non-input devices by pressing the U "
+"key\n"
+msgstr ""
+
+#: ../powertop.c:1131
+msgid ""
+"Suggestion: Enable the CONFIG_ACPI_BATTERY kernel configuration option.\n"
+" This option is required to get power estimages from PowerTOP"
+msgstr ""
+
+#: ../powertop.c:1128
+msgid ""
+"Suggestion: Enable the CONFIG_CPU_FREQ_GOV_ONDEMAND kernel configuration "
+"option.\n"
+"The 'ondemand' CPU speed governor will minimize the CPU power usage while\n"
+"giving you performance when it is needed."
+msgstr ""
+
+#: ../powertop.c:1145
+msgid ""
+"Suggestion: Enable the CONFIG_CPU_FREQ_STAT kernel configuration option.\n"
+"This option allows PowerTOP to show P-state percentages \n"
+"P-states correspond to CPU frequencies."
+msgstr ""
+
+#: ../powertop.c:1134
+msgid ""
+"Suggestion: Enable the CONFIG_HPET_TIMER kernel configuration option.\n"
+"Without HPET support the kernel needs to wake up every 20 milliseconds for \n"
+"some housekeeping tasks."
+msgstr ""
+
+#: ../powertop.c:1148
+msgid ""
+"Suggestion: Enable the CONFIG_INOTIFY kernel configuration option.\n"
+"This option allows programs to wait for changes in files and directories\n"
+"instead of having to poll for these changes"
+msgstr ""
+
+#: ../powertop.c:1130
+msgid ""
+"Suggestion: Enable the CONFIG_NO_HZ kernel configuration option.\n"
+"This option is required to get any kind of longer sleep times in the CPU."
+msgstr ""
+
+#: ../powertop.c:1139
+msgid ""
+"Suggestion: Enable the CONFIG_SND_AC97_POWER_SAVE kernel configuration "
+"option.\n"
+"This option will automatically power down your sound codec when not in use,\n"
+"and can save approximately half a Watt of power."
+msgstr ""
+
+#: ../powertop.c:1126
+msgid ""
+"Suggestion: Enable the CONFIG_USB_SUSPEND kernel configuration option.\n"
+"This option will automatically disable UHCI USB when not in use, and may\n"
+"save approximately 1 Watt of power."
+msgstr ""
+
+#: ../cpufreq.c:116
+msgid ""
+"Suggestion: Enable the ondemand cpu speed governor for all processors via: \n"
+" echo ondemand > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor \n"
+msgstr ""
+
+#: ../wireless.c:314
+#, c-format
+msgid ""
+"Suggestion: Enable wireless power saving mode by executing the following "
+"command:\n"
+" echo 5 > %s \n"
+"This will sacrifice network performance slightly to save power."
+msgstr ""
+
+#: ../wifi-new.c:198
+#, c-format
+msgid ""
+"Suggestion: Enable wireless power saving mode by executing the following "
+"command:\n"
+" iwconfig %s power timeout 500ms\n"
+"This will sacrifice network performance slightly to save power."
+msgstr ""
+
+#: ../wireless.c:308
+#, c-format
+msgid ""
+"Suggestion: Enable wireless power saving mode by executing the following "
+"command:\n"
+" iwpriv %s set_power 5 \n"
+"This will sacrifice network performance slightly to save power."
+msgstr ""
+
+#: ../xrandr.c:75
+msgid ""
+"Suggestion: disable TV out via: \n"
+" xrandr --output TV --off \n"
+"or press the V key."
+msgstr ""
+
+#: ../misctips.c:59
+msgid ""
+"Suggestion: disable the NMI watchdog by executing the following command:\n"
+" echo 0 > /proc/sys/kernel/nmi_watchdog \n"
+"The NMI watchdog is a kernel debug mechanism to detect deadlocks"
+msgstr ""
+
+#: ../misctips.c:123
+msgid ""
+"Suggestion: enable AC97 powersave mode by executing the following command:\n"
+" echo 1 > /sys/module/snd_ac97_codec/parameters/power_save \n"
+"or by passing power_save=1 as module parameter."
+msgstr ""
+
+#: ../misctips.c:163
+msgid ""
+"Suggestion: enable HD audio powersave mode by executing the following "
+"command:\n"
+" echo 1 > /sys/module/snd_hda_intel/parameters/power_save \n"
+"or by passing power_save=1 as module parameter."
+msgstr ""
+
+#: ../misctips.c:87
+msgid ""
+"Suggestion: enable the HPET (Multimedia Timer) in your BIOS or add \n"
+"the kernel patch to force-enable HPET. HPET support allows Linux to \n"
+"have much longer sleep intervals."
+msgstr ""
+
+#: ../misctips.c:192
+msgid ""
+"Suggestion: enable the noatime filesystem option by executing the following "
+"command:\n"
+" mount -o remount,noatime / or by pressing the T key \n"
+"noatime disables persistent access time of file accesses, which causes lots "
+"of disk IO."
+msgstr ""
+
+#: ../misctips.c:255
+msgid ""
+"Suggestion: enable the power aware CPU scheduler with the following "
+"command:\n"
+" echo 1 > /sys/devices/system/cpu/sched_mc_power_savings\n"
+"or by pressing the C key."
+msgstr ""
+
+#: ../misctips.c:288
+#, c-format
+msgid ""
+"Suggestion: increase the VM dirty writeback time from %1.2f to 15 seconds "
+"with:\n"
+" echo 1500 > /proc/sys/vm/dirty_writeback_centisecs \n"
+"This wakes the disk up less frequently for background VM activity"
+msgstr ""
+
+#: ../display.c:300
+msgid "This option is located in the Kernel Debugging section of menuconfig\n"
+msgstr ""
+
+#: ../display.c:281
+msgid "Top causes for wakeups:\n"
+msgstr ""
+
+#: ../cpufreqstats.c:94
+msgid "Turbo Mode"
+msgstr ""
+
+#: ../urbnum.c:123
+#, c-format
+msgid "USB device %4s : %s (%s)"
+msgstr ""
+
+#: ../powertop.c:820
+#, c-format
+msgid "Usage: powertop [OPTION...]\n"
+msgstr ""
+
+#: ../display.c:270
+#, c-format
+msgid "Wakeups-from-idle per second : %4.1f\tinterval: %0.1fs\n"
+msgstr ""
+
+#: ../intelcstates.c:152
+#, c-format
+msgid "Your BIOS reports the following C-states : "
+msgstr ""
+
+#: ../intelcstates.c:143
+#, c-format
+msgid "Your CPU supports the following C-states : "
+msgstr ""
+
+#: ../display.c:196
+#, c-format
+msgid "no ACPI power usage estimate available"
+msgstr ""
+
+#: ../display.c:244
+#, c-format
+msgid "no power usage estimate available"
+msgstr ""
+
+#: ../powertop.c:433
+msgid "polling"
+msgstr ""
+
+#: ../powertop.c:831
+#, c-format
+msgid "powertop version %s\n"
+msgstr ""
diff --git a/po/zh_TW.po b/po/zh_TW.po
new file mode 100644
index 0000000..1f59a5b
--- /dev/null
+++ b/po/zh_TW.po
@@ -0,0 +1,753 @@
+# translation of zh.po to Chinese
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# Yuan CHAO <yuanchao@gmail.com>, 2007
+#
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: PowerTOP\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2010-07-15 02:46+0100\n"
+"PO-Revision-Date: 2010-07-15 03:22+0100\n"
+"Last-Translator: Yuan CHAO <yuanchao@gmail.com>\n"
+"Language-Team: Yuan CHAO <yuanchao@gmail.com>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: \n"
+"X-Poedit-Language: Chinese\n"
+"X-Poedit-Basepath: /home/john/packages/powertop\n"
+"X-Poedit-SearchPath-0: /opt/powertop\n"
+
+#: /opt/powertop/wireless.c:303
+#, c-format
+msgid ""
+"Suggestion: Enable wireless power saving mode by executing the following command:\n"
+" iwpriv %s set_power 5 \n"
+"This will sacrifice network performance slightly to save power."
+msgstr ""
+"建議: 使用下列指令啟動無線網路省電功能:\n"
+" iwpriv %s set_power 5 \n"
+"這會犧牲一點網路效能來節省電源的消耗。"
+
+#: /opt/powertop/wireless.c:306
+#: /opt/powertop/wireless.c:312
+msgid " W - Enable wireless power saving "
+msgstr " W - 開啟無線網路省電功能 "
+
+#: /opt/powertop/wireless.c:309
+#, c-format
+msgid ""
+"Suggestion: Enable wireless power saving mode by executing the following command:\n"
+" echo 5 > %s \n"
+"This will sacrifice network performance slightly to save power."
+msgstr ""
+"建議: 使用下列指令啟動無線網路省電功能:\n"
+" echo 5 > %s \n"
+"這會犧牲一點網路效能來節省電源的消耗。"
+
+#: /opt/powertop/wireless.c:315
+#, c-format
+msgid ""
+"Suggestion: Disable the unused WIFI radio by executing the following command:\n"
+" echo 1 > %s \n"
+msgstr ""
+"建議: 當不使用 WIFI 時,以下列指令關閉 WIFI 信號:\n"
+" echo 1 > %s \n"
+
+#: /opt/powertop/wireless.c:317
+msgid " I - disable WIFI Radio "
+msgstr " I - 關閉 WIFI 信號 "
+
+#: /opt/powertop/process.c:86
+#, c-format
+msgid " K - kill %s "
+msgstr " K - 砍掉 %s 程緒"
+
+#: /opt/powertop/cpufreq.c:116
+msgid ""
+"Suggestion: Enable the ondemand cpu speed governor for all processors via: \n"
+" echo ondemand > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor \n"
+msgstr ""
+"建議: 使用下列指令對所有 CPU 啟用 Ondemand 時脈管理模式: \n"
+" echo ondemand > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor \n"
+
+#: /opt/powertop/cpufreq.c:118
+msgid " O - enable Ondemand governor "
+msgstr " O - 啟用 CPU Ondemand 時脈管理 "
+
+#: /opt/powertop/usb.c:117
+msgid "Suggestion: Enable USB autosuspend for non-input devices by pressing the U key\n"
+msgstr "建議: 按下 U 鍵啟用 USB 非輸入設備的自動休眠功能。\n"
+
+#: /opt/powertop/usb.c:119
+#: /opt/powertop/urbnum.c:218
+msgid " U - Enable USB suspend "
+msgstr " U - 啟用 USB 自動休眠"
+
+#: /opt/powertop/sata.c:102
+msgid ""
+"Suggestion: Enable SATA ALPM link power management via: \n"
+" echo min_power > /sys/class/scsi_host/host0/link_power_management_policy\n"
+"or press the S key."
+msgstr ""
+"建議: 使用下列指令啟動 SATA ALPM 電源管理功能: echo min_power > /sys/class/scsi_host/host0/link_power_management_policy\n"
+"或直接按下 S 鍵"
+
+#: /opt/powertop/sata.c:105
+#: /opt/powertop/ahci-alpm.c:259
+msgid " S - SATA Link Power Management "
+msgstr " S - SATA Link 電源管理功能 "
+
+#: /opt/powertop/misctips.c:59
+msgid ""
+"Suggestion: disable the NMI watchdog by executing the following command:\n"
+" echo 0 > /proc/sys/kernel/nmi_watchdog \n"
+"The NMI watchdog is a kernel debug mechanism to detect deadlocks"
+msgstr ""
+"建議: 使用下列指令取消 NMI watchdog 監控:\n"
+" echo 0 > /proc/sys/kernel/nmi_watchdog \n"
+"NMI watchdog 監控是用於替核心除蟲,以及偵測系統死結之用。"
+
+#: /opt/powertop/misctips.c:61
+msgid " N - Turn NMI watchdog off "
+msgstr " N - 關閉 NMI watchdog 監控 "
+
+#: /opt/powertop/misctips.c:87
+msgid ""
+"Suggestion: enable the HPET (Multimedia Timer) in your BIOS or add \n"
+"the kernel patch to force-enable HPET. HPET support allows Linux to \n"
+"have much longer sleep intervals."
+msgstr ""
+"建議: 於 BIOS 中啟用 HPET (多媒體計時器) \n"
+"或是使用核心補綴來強制啟用 HPET。啟用 HPET 可以讓 Linux\n"
+"維持更長的閒置時間。"
+
+#: /opt/powertop/misctips.c:123
+msgid ""
+"Suggestion: enable AC97 powersave mode by executing the following command:\n"
+" echo 1 > /sys/module/snd_ac97_codec/parameters/power_save \n"
+"or by passing power_save=1 as module parameter."
+msgstr ""
+"建議: 使用下列指令啟用 AC97音效設備 省電功能:\n"
+" echo 1 > /sys/module/snd_ac97_codec/parameters/power_save \n"
+"或是設定 power_save=1 模組參數。"
+
+#: /opt/powertop/misctips.c:125
+msgid " A - Turn AC97 powersave on "
+msgstr " A - 開啟 AC97音效設備 省電功能 "
+
+#: /opt/powertop/misctips.c:163
+msgid ""
+"Suggestion: enable HD audio powersave mode by executing the following command:\n"
+" echo 1 > /sys/module/snd_hda_intel/parameters/power_save \n"
+"or by passing power_save=1 as module parameter."
+msgstr ""
+"建議: 使用下列指令啟用高傳真音效設備的省電功能:\n"
+" echo 1 > /sys/module/snd_hda_intel/parameters/power_save \n"
+"或是設定 power_save=1 模組參數。"
+
+#: /opt/powertop/misctips.c:165
+msgid " A - Turn HD audio powersave on "
+msgstr " A - 開啟高傳真音效設備的省電功能 "
+
+#: /opt/powertop/misctips.c:192
+msgid ""
+"Suggestion: enable the noatime filesystem option by executing the following command:\n"
+" mount -o remount,noatime / or by pressing the T key \n"
+"noatime disables persistent access time of file accesses, which causes lots of disk IO."
+msgstr ""
+"建議: 以下列指令啟用 noatime 使檔案系統停止紀錄檔案存取時間 \n"
+" mount -o remount,noatime / 或直接按下 T 鍵\n"
+"noatime 將會關閉檔案系統紀錄存取時間,以減少磁碟 I/O 次數。"
+
+#: /opt/powertop/misctips.c:194
+msgid " T - enable noatime "
+msgstr " T - 啟動 noatime "
+
+#: /opt/powertop/misctips.c:254
+msgid ""
+"Suggestion: enable the power aware CPU scheduler with the following command:\n"
+" echo 1 > /sys/devices/system/cpu/sched_mc_power_savings\n"
+"or by pressing the C key."
+msgstr ""
+"建議: 以下列指令啟用省電型 CPU 排程器:\n"
+" echo 1 > /sys/devices/system/cpu/sched_mc_power_savings\n"
+"或直接按下 C 鍵。"
+
+#: /opt/powertop/misctips.c:256
+msgid " C - Power aware CPU scheduler "
+msgstr " C - 省電型 CPU 排程器 "
+
+#: /opt/powertop/misctips.c:287
+#, c-format
+msgid ""
+"Suggestion: increase the VM dirty writeback time from %1.2f to 15 seconds with:\n"
+" echo 1500 > /proc/sys/vm/dirty_writeback_centisecs \n"
+"This wakes the disk up less frequently for background VM activity"
+msgstr ""
+"建議: 使用下列指令延長 VM dirty writeback 資料回寫時間自 %1.2f 改為 15 秒鐘:\n"
+" echo 1500 > /proc/sys/vm/dirty_writeback_centisecs \n"
+"如此可以減少因為 VM 虛擬記憶體的運作而啟動磁碟的頻率。"
+
+#: /opt/powertop/misctips.c:291
+msgid " W - Increase Writeback time "
+msgstr " W - 延長資料回寫入磁碟間隔 "
+
+#: /opt/powertop/xrandr.c:75
+msgid ""
+"Suggestion: disable TV out via: \n"
+" xrandr --output TV --off \n"
+"or press the V key."
+msgstr ""
+"建議: 使用下列指令關閉 TV 輸出顯示功能:\n"
+" xrandr --output TV --off\n"
+"或直接按下 V 鍵."
+
+#: /opt/powertop/xrandr.c:78
+msgid " V - Disable TV out "
+msgstr " V - 關閉 TV 輸出 "
+
+#: /opt/powertop/perf.c:237
+#, c-format
+msgid ""
+"The program '%s' is writing to file '%s' on /dev/%s.\n"
+"This prevents the disk from going to powersave mode."
+msgstr ""
+"程式 '%s' 正在寫入檔案 '%s' 於 /dev/%s 裝置上\n"
+"這會讓磁碟無法進入省電模式。"
+
+#: /opt/powertop/perf.c:242
+#, c-format
+msgid "The application '%s' is writing to file '%s' on /dev/%s\n"
+msgstr "應用程式 '%s' 正在寫入檔案 '%s' 於 /dev/%s 裝置上\n"
+
+#: /opt/powertop/perf.c:256
+#, c-format
+msgid "Disk accesses:\n"
+msgstr "磁碟存取: \n"
+
+#: /opt/powertop/urbnum.c:123
+#, c-format
+msgid "USB device %4s : %s (%s)"
+msgstr "USB 設備 %4s : %s (%s)"
+
+#: /opt/powertop/urbnum.c:180
+msgid "Recent USB suspend statistics"
+msgstr "近期 USB 進入休眠次數"
+
+#: /opt/powertop/urbnum.c:181
+#: /opt/powertop/devicepm.c:224
+msgid "Active Device name"
+msgstr "運作中的設備名稱"
+
+#: /opt/powertop/urbnum.c:213
+#, c-format
+msgid ""
+"A USB device is active %4.1f%% of the time:\n"
+"%s"
+msgstr ""
+"USB 設備 %4.1f%% 的時間處於運作狀態:\n"
+"%s"
+
+#: /opt/powertop/wifi-new.c:196
+#, c-format
+msgid ""
+"Suggestion: Disable the unused WIFI radio by setting the interface down:\n"
+" ifconfig %s down\n"
+msgstr ""
+"建議: 當不使用 WIFI 時,以下列指令關閉 WIFI 信號:\n"
+" ifconfig %s down\n"
+
+#: /opt/powertop/wifi-new.c:198
+msgid " D - disable wireless "
+msgstr " D - 關閉無線網路"
+
+#: /opt/powertop/wifi-new.c:200
+#, c-format
+msgid ""
+"Suggestion: Enable wireless power saving mode by executing the following command:\n"
+" iwconfig %s power timeout 500ms\n"
+"This will sacrifice network performance slightly to save power."
+msgstr ""
+"建議: 使用下列指令啟動無線網路省電功能:\n"
+" iwconfig %s power timeout 500ms\n"
+"這會犧牲一點網路效能來節省電源的消耗。"
+
+#: /opt/powertop/wifi-new.c:203
+msgid " W - Enable Wireless power saving "
+msgstr " W - 開啟無線網路省電功能 "
+
+#: /opt/powertop/cpufreqstats.c:85
+#, c-format
+msgid "%9lli"
+msgstr "%9lli"
+
+#: /opt/powertop/cpufreqstats.c:88
+#, c-format
+msgid "%6lli Mhz"
+msgstr "%6lli MHz"
+
+#: /opt/powertop/cpufreqstats.c:91
+#, c-format
+msgid "%6.2f Ghz"
+msgstr "%6.2f GHz"
+
+#: /opt/powertop/cpufreqstats.c:94
+msgid "Turbo Mode"
+msgstr "超頻模式"
+
+#: /opt/powertop/cpufreqstats.c:115
+#, c-format
+msgid "P-states (frequencies)\n"
+msgstr "P-states (CPU 時脈)\n"
+
+#: /opt/powertop/devicepm.c:112
+msgid "Suggestion: Enable Device Power Management by pressing the P key\n"
+msgstr "建議: 按下 P 鍵啟用裝置的電源管理功能。\n"
+
+#: /opt/powertop/devicepm.c:114
+msgid " P - Enable Runtime PM"
+msgstr " P - 啟動執行時動態電源管理"
+
+#: /opt/powertop/devicepm.c:223
+msgid "Runtime Device Power Management statistics"
+msgstr "執行時期裝置電源管理數據"
+
+#: /opt/powertop/devicepm.c:235
+msgid "Devices without runtime PM"
+msgstr "裝置沒有執行時電源管理功能"
+
+#: /opt/powertop/devicepm.c:245
+#, c-format
+msgid "%i more devices without runtime PM ommitted\n"
+msgstr "還有 %i 裝置因缺少執行時電源管理功能而略過\n"
+
+#: /opt/powertop/devicepm.c:271
+#, c-format
+msgid ""
+"A device is active %4.1f%% of the time:\n"
+"%s"
+msgstr ""
+"裝置有 %4.1f%% 的時間處於運作狀態:\n"
+"%s"
+
+#: /opt/powertop/devicepm.c:276
+msgid " P - Enable device power management "
+msgstr " P - 啟用裝置電源管理功能功能 "
+
+#: /opt/powertop/powertop.c:312
+#, c-format
+msgid "[%s] <kernel IPI>"
+msgstr "[%s] <核心多處理器間中斷>"
+
+#: /opt/powertop/powertop.c:314
+#, c-format
+msgid "[%s] <interrupt>"
+msgstr "[%s] <中斷服務>"
+
+#: /opt/powertop/powertop.c:317
+#, c-format
+msgid "%s interrupt"
+msgstr "[%s] 中斷服務"
+
+#: /opt/powertop/powertop.c:317
+msgid "PS/2 keyboard/mouse/touchpad"
+msgstr "PS/2 鍵盤/滑鼠/觸控板"
+
+#: /opt/powertop/powertop.c:444
+msgid "polling"
+msgstr "巡察"
+
+#: /opt/powertop/powertop.c:831
+#, c-format
+msgid "Usage: powertop [OPTION...]\n"
+msgstr "用法:powertop [選項...]\n"
+
+#: /opt/powertop/powertop.c:832
+#, c-format
+msgid " -d, --dump read wakeups once and print list of top offenders\n"
+msgstr " -d, --dump 一次列出主要造成CPU脫離閒置的所有程序後退出\n"
+
+#: /opt/powertop/powertop.c:833
+#, c-format
+msgid " -t, --time=DOUBLE default time to gather data in seconds\n"
+msgstr " -t, --time=DOUBLE 預設每次蒐集資料的時間,以秒為單位\n"
+
+#: /opt/powertop/powertop.c:834
+#, c-format
+msgid " -p, --pids show pids in wakeups list\n"
+msgstr " -p, --pids 於脫離閒置的清單中顯示程序編號\n"
+
+#: /opt/powertop/powertop.c:835
+#, c-format
+msgid " -h, --help Show this help message\n"
+msgstr " -h, --help 顯示本輔助說明\n"
+
+#: /opt/powertop/powertop.c:836
+#, c-format
+msgid " -v, --version Show version information and exit\n"
+msgstr "-v, --version 顯示版本資訊後離開\n"
+
+#: /opt/powertop/powertop.c:842
+#, c-format
+msgid "powertop version %s\n"
+msgstr "powertop 版本為 %s\n"
+
+#: /opt/powertop/powertop.c:922
+#, c-format
+msgid "PowerTOP needs to be run as root to collect enough information\n"
+msgstr "PowerTOP 需要以 root 的身份執行,以取得足夠的資訊\n"
+
+#: /opt/powertop/powertop.c:923
+#, c-format
+msgid "Collecting data for %i seconds \n"
+msgstr "正在收集資料中,請稍等 %i 秒 \n"
+
+#: /opt/powertop/powertop.c:980
+#, c-format
+msgid "< Detailed C-state information is not available.>\n"
+msgstr "< 無法取得詳細的 C-state 資訊 >\n"
+
+#: /opt/powertop/powertop.c:986
+#, c-format
+msgid "Cn\t Avg residency\n"
+msgstr "Cn\t 平均停留時間\n"
+
+#: /opt/powertop/powertop.c:989
+#, c-format
+msgid "C0 (cpu running) (%4.1f%%)\n"
+msgstr "C0 (cpu 忙碌中) (%4.1f%%)\n"
+
+#: /opt/powertop/powertop.c:1003
+#, c-format
+msgid "%s\t%5.1fms (%4.1f%%)\n"
+msgstr "%s\t%5.1f毫秒 (%4.1f%%)\n"
+
+#: /opt/powertop/powertop.c:1059
+msgid "[kernel scheduler]"
+msgstr "[ 核心排程 ]"
+
+#: /opt/powertop/powertop.c:1060
+msgid "Load balancing tick"
+msgstr "負載平衡中斷"
+
+#: /opt/powertop/powertop.c:1063
+#: /opt/powertop/powertop.c:1065
+msgid "[kernel module]"
+msgstr "[ 核心模組 ]"
+
+#: /opt/powertop/powertop.c:1067
+msgid "[kernel core]"
+msgstr "[ 系統核心 ]"
+
+#: /opt/powertop/powertop.c:1108
+msgid "[extra timer interrupt]"
+msgstr "[ 額外的計時器中斷 ]"
+
+#: /opt/powertop/powertop.c:1166
+msgid ""
+"Suggestion: Enable the CONFIG_USB_SUSPEND kernel configuration option.\n"
+"This option will automatically disable UHCI USB when not in use, and may\n"
+"save approximately 1 Watt of power."
+msgstr ""
+"建議: 啟用 CONFIG_USB_SUSPEND 核心選項.\n"
+"此選項會在 UHCI USB 不用時自動關閉 UHCI USB 設備,\n"
+"最高約可節省 1 瓦的耗電量。"
+
+#: /opt/powertop/powertop.c:1168
+msgid ""
+"Suggestion: Enable the CONFIG_PM_ADVANCED_DEBUG kernel configuration option.\n"
+"This option will allow PowerTOP to collect runtime power management statistics."
+msgstr ""
+"建議: 啟用 CONFIG_PM_ADVANCED_DEBUG 核心選項\n"
+"該選項讓 PowerTOP 可以取得電源管理的數據。"
+
+#: /opt/powertop/powertop.c:1170
+msgid ""
+"Suggestion: Enable the CONFIG_PM_RUNTIME kernel configuration option.\n"
+"This option enables the kernel to manage power for various devices in your computer."
+msgstr ""
+"建議: 啟用 CONFIG_PM_RUNTIME 核心選項\n"
+"該選項可以讓系統核心管理多種設備的電源使用。"
+
+#: /opt/powertop/powertop.c:1172
+msgid ""
+"Suggestion: Enable the CONFIG_CPU_FREQ_GOV_ONDEMAND kernel configuration option.\n"
+"The 'ondemand' CPU speed governor will minimize the CPU power usage while\n"
+"giving you performance when it is needed."
+msgstr ""
+"建議: 啟用 CONFIG_CPU_FREQ_GOV_ONDEMAND 核心選項\n"
+"'ondemand' CPU 時脈管理模式可減少 CPU 功率的消耗,\n"
+"同時能在必要時提供所需的效能。"
+
+#: /opt/powertop/powertop.c:1174
+msgid ""
+"Suggestion: Enable the CONFIG_NO_HZ kernel configuration option.\n"
+"This option is required to get any kind of longer sleep times in the CPU."
+msgstr ""
+"建議: 啟用 CONFIG_NO_HZ 核心選項\n"
+"需啟用此功能來使用各種維持 CPU 保持在閒置狀態的功能。"
+
+#: /opt/powertop/powertop.c:1175
+msgid ""
+"Suggestion: Enable the CONFIG_ACPI_BATTERY kernel configuration option.\n"
+" This option is required to get power estimages from PowerTOP"
+msgstr ""
+"建議: 啟用 CONFIG_ACPI_BATTERY 核心選項\n"
+"PowerTOP 需要此功能以得知剩餘電池電量。"
+
+#: /opt/powertop/powertop.c:1178
+msgid ""
+"Suggestion: Enable the CONFIG_HPET_TIMER kernel configuration option.\n"
+"Without HPET support the kernel needs to wake up every 20 milliseconds for \n"
+"some housekeeping tasks."
+msgstr ""
+"建議: 啟用 CONFIG_HPET_TIMER 核心選項\n"
+"不使用 HPET 核心支援將造成核心每 20ms\n"
+"需離開閒置狀態來做整理的工作。"
+
+#: /opt/powertop/powertop.c:1181
+msgid ""
+"Suggestion: Enable the CONFIG_PCIEASPM kernel configuration option.\n"
+"PCI Link Powermanagement (ASPM) allows the hardware to go to low power mode\n"
+"automatically when a PCI-E device is idle."
+msgstr ""
+"建議: 啟用 CONFIG_PCIEASPM 核心選項\n"
+"PCI 連線電源管理 (ASPM) 可以讓處於閒置狀態 PCI-E 設備,自動進入低電源模式。"
+
+#: /opt/powertop/powertop.c:1186
+msgid ""
+"Suggestion: Enable the CONFIG_SND_AC97_POWER_SAVE kernel configuration option.\n"
+"This option will automatically power down your sound codec when not in use,\n"
+"and can save approximately half a Watt of power."
+msgstr ""
+"建議: 啟用 CONFIG_SND_AC97_POWER_SAVE 核心選項\n"
+"此選項可以使音效卡於閒置時自動關閉電源,\n"
+"大約可以節省 0.5 瓦的耗電量。"
+
+#: /opt/powertop/powertop.c:1190
+msgid ""
+"Suggestion: Disable the CONFIG_IRQBALANCE kernel configuration option.\n"
+"The in-kernel irq balancer is obsolete and wakes the CPU up far more than needed."
+msgstr ""
+"建議: 取消 CONFIG_IRQBALANCE 核心選項\n"
+"核心中 IRQ 負載平衡是過時的,而且會造成 CPU 過多離開閒置狀態的頻率。"
+
+#: /opt/powertop/powertop.c:1192
+msgid ""
+"Suggestion: Enable the CONFIG_CPU_FREQ_STAT kernel configuration option.\n"
+"This option allows PowerTOP to show P-state percentages \n"
+"P-states correspond to CPU frequencies."
+msgstr ""
+"建議: 啟用 CONFIG_CPU_FREQ_STAT 核心選項\n"
+"PowerTOP 需要此選項來顯示 CPU P-States,\n"
+"P-States 對應到 CPU 頻率狀態。"
+
+#: /opt/powertop/powertop.c:1195
+msgid ""
+"Suggestion: Enable the CONFIG_INOTIFY kernel configuration option.\n"
+"This option allows programs to wait for changes in files and directories\n"
+"instead of having to poll for these changes"
+msgstr ""
+"建議: 啟用 CONFIG_INOTIFY 核心選項.\n"
+"此選項可使程式在以等待核心通知的方式,來獲知檔案或目錄的更動,\n"
+"而無須不斷使用poll指令來探尋變更。"
+
+#: /opt/powertop/powertop.c:1202
+#: /opt/powertop/powertop.c:1206
+msgid ""
+"Suggestion: Disable or remove 'beagle' from your system. \n"
+"Beagle is the program that indexes for easy desktop search, however it's \n"
+"not very efficient and costs a significant amount of battery life."
+msgstr ""
+"建議: 停用或移除 'beagle' 套件\n"
+"Beagle 套件會在系統閒置時製做索引來加速桌面搜尋,\n"
+"但也會因此而縮短電池可用時間。"
+
+#: /opt/powertop/powertop.c:1215
+msgid ""
+"Suggestion: Disable or remove 'gnome-power-manager' from your system. \n"
+"Older versions of gnome-power-manager wake up far more often than \n"
+"needed costing you some power."
+msgstr ""
+"建議: 停用或移除 'gnome 電源管理程式'. \n"
+"雖然該程式用來設定電源管理模式,但某些舊版本存在一個臭蟲使得 \n"
+"電源消耗更加嚴重。"
+
+#: /opt/powertop/powertop.c:1221
+msgid ""
+"Suggestion: Disable or remove 'pcscd' from your system. \n"
+"pcscd tends to keep the USB subsystem out of power save mode\n"
+"and your processor out of deeper powersave states."
+msgstr ""
+"建議: 停用或移除 'pcscd' 套件\n"
+"pcscd 會使得 USB 子系統脫離省電模式,\n"
+"並且使中央處理器離開深度省電模式。"
+
+#: /opt/powertop/powertop.c:1228
+msgid ""
+"Suggestion: Disable 'hal' from polling your cdrom with: \n"
+"hal-disable-polling --device /dev/cdrom 'hal' is the component that auto-opens a\n"
+"window if you plug in a CD but disables SATA power saving from kicking in."
+msgstr ""
+"建議: 使用下列指令取消 'hal' 檢查光碟狀態: \n"
+"hal-disable-polling --device /dev/cdrom 'hal' 會在插入光碟時自動開啟檔案總管 \n"
+"但是會使得 SATA 脫離省電模式"
+
+#: /opt/powertop/powertop.c:1234
+msgid ""
+"Disable the SE-Alert software by removing the 'setroubleshoot-server' rpm\n"
+"SE-Alert alerts you about SELinux policy violations, but also\n"
+"has a bug that wakes it up 10 times per second."
+msgstr ""
+"移除 \"setroubleshoot-server\" 套件並關閉 \"SE-Alert\" 軟體\n"
+"SE-Alert 會提醒您關於 SELinux 策略上的牴觸問題,但也存在一個臭蟲,\n"
+"使得系統每秒被喚醒的次數增加十次。"
+
+#: /opt/powertop/powertop.c:1239
+msgid ""
+"The Intel Integrated Graphics driver failed to enable Memory self refresh.\n"
+"Memory Self Refresh is important for good memory power savings.\n"
+"Please check your OS vendor for a kernel update and/or report a bug."
+msgstr ""
+"英代爾繪圖整合晶片無法啟用記憶體自動更新\n"
+"記憶體自動更新對良好的記憶體省電功能是重要的\n"
+"請檢查作業系統核心升級或回報臭蟲。"
+
+#: /opt/powertop/bluetooth.c:150
+msgid ""
+"Suggestion: Disable the unused bluetooth interface with the following command:\n"
+" hciconfig hci0 down ; rmmod hci_usb\n"
+"Bluetooth is a radio and consumes quite some power, and keeps USB busy as well.\n"
+msgstr ""
+"建議: 不使用藍牙功能時,以下列指令關閉藍牙信號:\n"
+" hciconfig hci0 down ; rmmod hci_usb\n"
+"藍牙是一種無線通訊介面,會造成相當大的耗電量,同時使得 USB 持續忙碌。\n"
+
+#: /opt/powertop/bluetooth.c:152
+msgid " B - Turn Bluetooth off "
+msgstr " B - 關閉藍牙介面通訊 "
+
+#: /opt/powertop/ahci-alpm.c:219
+msgid "Recent SATA AHCI link activity statistics"
+msgstr "近期 SATA AHCI 連線活動次數"
+
+#: /opt/powertop/ahci-alpm.c:220
+msgid "Active\tPartial\tSlumber\tDevice name"
+msgstr "運作中\t局部\t脫離休眠\t設備名稱"
+
+#: /opt/powertop/ahci-alpm.c:255
+#, c-format
+msgid ""
+"A SATA device is active %1.1f%% of the time:\n"
+"%s"
+msgstr ""
+"SATA 設備有 %4.1f%% 的時間處於運作狀態:\n"
+"%s"
+
+#: /opt/powertop/alsa-power.c:157
+msgid "Recent audio activity statistics"
+msgstr "近期音效設備啟用次數"
+
+#: /opt/powertop/alsa-power.c:190
+#, c-format
+msgid ""
+"An audio device is active %4.1f%% of the time:\n"
+"%s"
+msgstr ""
+"音效設備有 %4.1f%% 的時間處於運作狀態:\n"
+"%s"
+
+#: /opt/powertop/ethernet.c:128
+msgid ""
+"Disable Ethernet Wake-On-Lan with the following command:\n"
+" ethtool -s eth0 wol d \n"
+"Wake-on-Lan keeps the phy active, this costs power."
+msgstr ""
+"使用下列指令關閉 \"Wake-On-Lan\" 網路喚醒功能:\n"
+" ethtool -s eth0 wol d\n"
+"\"Wake-On-Lan\" 功能需要維持網卡實體層啟動,會因此耗費電源。"
+
+#: /opt/powertop/ethernet.c:131
+msgid " W - disable Wake-On-Lan "
+msgstr " W - 關閉 \"Wake-On-Lan\" "
+
+#: /opt/powertop/display.c:108
+msgid " Q - Quit "
+msgstr " Q - 離開 "
+
+#: /opt/powertop/display.c:109
+msgid " R - Refresh "
+msgstr " R - 重繪畫面 "
+
+#: /opt/powertop/display.c:196
+#, c-format
+msgid "no ACPI power usage estimate available"
+msgstr "沒有 ACPI 耗電量資訊 (正在使用 AC 電源)"
+
+#: /opt/powertop/display.c:201
+#, c-format
+msgid "Power usage (ACPI estimate): %3.1fW (%3.1f hours)"
+msgstr "系統耗電量 (由 ACPI 估計): %3.1f 瓦 (剩餘 %3.1f 小時)"
+
+#: /opt/powertop/display.c:205
+#, c-format
+msgid "(long term: %3.1fW,/%3.1fh)"
+msgstr "(長期平均: %3.1f瓦,餘%3.1f小時)"
+
+#: /opt/powertop/display.c:208
+#, c-format
+msgid "Power usage (5 minute ACPI estimate) : %5.1f W (%3.1f hours left)"
+msgstr "電源使用量 (5 分鐘 ACPI 估計平均) : %5.1f 瓦 (剩餘 %3.1f 小時)"
+
+#: /opt/powertop/display.c:238
+#, c-format
+msgid "Power usage: %3.1fW (%3.1f hours)"
+msgstr "系統耗電量: %3.1f 瓦 (%3.1f 小時)"
+
+#: /opt/powertop/display.c:244
+#, c-format
+msgid "no power usage estimate available"
+msgstr "沒有系統耗電量資訊"
+
+#: /opt/powertop/display.c:270
+#, c-format
+msgid "Wakeups-from-idle per second : %4.1f\tinterval: %0.1fs\n"
+msgstr "每秒 CPU 脫離閒置狀態的次數 : %4.1f\t時間間隔: %0.1f秒\n"
+
+#: /opt/powertop/display.c:281
+msgid "Top causes for wakeups:\n"
+msgstr "主要造成脫離閒置的程緒:\n"
+
+#: /opt/powertop/display.c:302
+msgid "No detailed statistics available; please enable the CONFIG_TIMER_STATS kernel option\n"
+msgstr "無法取得詳細統計資料; 需開啟 CONFIG_TIMER_STATS 核心選項\n"
+
+#: /opt/powertop/display.c:303
+msgid "This option is located in the Kernel Debugging section of menuconfig\n"
+msgstr "這個選項在核心編譯選項中的 \"Kernel Debugging\" 項目。\n"
+
+#: /opt/powertop/display.c:304
+msgid "(which is CONFIG_DEBUG_KERNEL=y in the config file)\n"
+msgstr "(於 .config 檔案中設定 CONFIG_DEBUG_KERNEL=y)\n"
+
+#: /opt/powertop/display.c:305
+msgid "Note: this is only available in 2.6.21 and later kernels\n"
+msgstr "請注意: 此功能需要 2.6.21 或更新版本的系統核心\n"
+
+#: /opt/powertop/display.c:307
+msgid "No detailed statistics available; PowerTOP needs root privileges for that\n"
+msgstr "無法取得詳細統計資料; PowerTOP 需要 root 權限\n"
+
+#: /opt/powertop/intelcstates.c:143
+#, c-format
+msgid "Your CPU supports the following C-states : "
+msgstr "您的 CPU 支援以下 C-states 省電模式: "
+
+#: /opt/powertop/intelcstates.c:152
+#, c-format
+msgid "Your BIOS reports the following C-states : "
+msgstr "您的 BIOS 回報有以下 C-states 省電模式 : "
+
diff --git a/powertop.8 b/powertop.8
new file mode 100644
index 0000000..7198e70
--- /dev/null
+++ b/powertop.8
@@ -0,0 +1,38 @@
+.TH POWERTOP 8 "Sep 2, 2009" "Linux" "powertop manual"
+.SH NAME
+powertop \- program to analyze power consumption on Intel-based laptops
+.SH SYNOPSIS
+.B powertop
+.RB [ \-d ]
+.RB [ \-t
+.IR DOUBLE
+.RB ]
+.RB [ \-p ]
+.RB [ \-h ]
+.RB [ \-v ]
+.SH DESCRIPTION
+.Pp
+\fBpowertop\fP is a program that shows the power consumption on Intel-based
+laptops and makes suggestions on how to extend battery lifetime.
+.SH OPTIONS
+.TP
+\fB\-d\fR, \fB\-\-dump
+ read wakeups once and print list of top offenders.
+.TP
+\fB\-t\fR, \fB\-\-time\fR=\fIDOUBLE\fR
+ default time to gather data in seconds.
+.TP
+\fB\-p\fR, \fB\-\-pids
+ show pids in wakeups list.
+.TP
+\fB\-h\fR, \fB\-\-help
+ show the help message.
+.TP
+\fB\-v\fR, \fB\-\-version
+ show version information and exit.
+.SH BUGS
+Send bug reports to <power@bughost.org>
+.SH SEE ALSO
+The program is more fully described at http://www.lesswatts.org/projects/powertop/
+.SH AUTHOR
+powertop was written by Arjan van de Ven <arjan@linux.intel.com>, and is maintained by Auke Kok <auke@linux.intel.com>.
diff --git a/powertop.c b/powertop.c
new file mode 100644
index 0000000..74eb328
--- /dev/null
+++ b/powertop.c
@@ -0,0 +1,1300 @@
+/*
+ * Copyright 2007, Intel Corporation
+ *
+ * This file is part of PowerTOP
+ *
+ * This program file 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; version 2 of the License.
+ *
+ * This program 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 program in a file named COPYING; if not, write to the
+ * Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301 USA
+ *
+ * Authors:
+ * Arjan van de Ven <arjan@linux.intel.com>
+ */
+
+#include <getopt.h>
+#include <unistd.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <stdint.h>
+#include <sys/types.h>
+#include <dirent.h>
+#include <libintl.h>
+#include <ctype.h>
+#include <assert.h>
+#include <locale.h>
+#include <time.h>
+#include <limits.h>
+#include <sys/stat.h>
+
+#include "powertop.h"
+
+
+uint64_t start_usage[8], start_duration[8];
+uint64_t last_usage[8], last_duration[8];
+char cnames[8][16];
+
+double ticktime = 15.0;
+
+int interrupt_0, total_interrupt;
+
+int showpids = 0;
+
+static int maxcstate = 0;
+int topcstate = 0;
+
+int dump = 0;
+
+#define IRQCOUNT 150
+
+struct irqdata {
+ int active;
+ int number;
+ uint64_t count;
+};
+
+struct irqdata interrupts[IRQCOUNT];
+
+#define FREQ_ACPI 3579.545
+static unsigned long FREQ;
+
+int nostats;
+
+
+struct line *lines;
+int linehead;
+int linesize;
+int linectotal;
+
+
+double last_bat_cap = 0;
+double prev_bat_cap = 0;
+time_t last_bat_time = 0;
+time_t prev_bat_time = 0;
+
+double displaytime = 0.0;
+
+void push_line(char *string, int count)
+{
+ int i;
+
+ assert(string != NULL);
+ for (i = 0; i < linehead; i++)
+ if (strcmp(string, lines[i].string) == 0) {
+ lines[i].count += count;
+ return;
+ }
+ if (linehead == linesize)
+ lines = realloc (lines, (linesize ? (linesize *= 2) : (linesize = 64)) * sizeof (struct line));
+ memset(&lines[linehead], 0, sizeof(&lines[0]));
+ lines[linehead].string = strdup (string);
+ lines[linehead].count = count;
+ lines[linehead].disk_count = 0;
+ lines[linehead].pid[0] = 0;
+ linehead++;
+}
+
+void push_line_pid(char *string, int cpu_count, int disk_count, char *pid)
+{
+ int i;
+ assert(string != NULL);
+ assert(strlen(string) > 0);
+ for (i = 0; i < linehead; i++)
+ if (strcmp(string, lines[i].string) == 0) {
+ lines[i].count += cpu_count;
+ lines[i].disk_count += disk_count;
+ if (pid && strcmp(lines[i].pid, pid)!=0)
+ lines[i].pid[0] = 0;
+ return;
+ }
+ if (linehead == linesize)
+ lines = realloc (lines, (linesize ? (linesize *= 2) : (linesize = 64)) * sizeof (struct line));
+ memset(&lines[linehead], 0, sizeof(&lines[0]));
+ lines[linehead].string = strdup (string);
+ lines[linehead].count = cpu_count;
+ lines[linehead].disk_count = disk_count;
+ if (pid)
+ strcpy(lines[linehead].pid, pid);
+ linehead++;
+}
+
+void clear_lines(void)
+{
+ int i;
+ for (i = 0; i < linehead; i++)
+ free (lines[i].string);
+ free (lines);
+ linehead = linesize = 0;
+ lines = NULL;
+}
+
+void count_lines(void)
+{
+ uint64_t q = 0;
+ int i;
+ for (i = 0; i < linehead; i++)
+ q += lines[i].count;
+ linectotal = q;
+}
+
+int update_irq(int irq, uint64_t count, char *name)
+{
+ int i;
+ int firstfree = IRQCOUNT;
+
+ if (!name)
+ return 0;
+
+ for (i = 0; i < IRQCOUNT; i++) {
+ if (interrupts[i].active && interrupts[i].number == irq) {
+ uint64_t oldcount;
+ oldcount = interrupts[i].count;
+ interrupts[i].count = count;
+ return count - oldcount;
+ }
+ if (!interrupts[i].active && firstfree > i)
+ firstfree = i;
+ }
+
+ interrupts[firstfree].active = 1;
+ interrupts[firstfree].count = count;
+ interrupts[firstfree].number = irq;
+ return count;
+}
+
+static int percpu_hpet_timer(char *name)
+{
+ static int timer_list_read;
+ static int percpu_hpet_start = INT_MAX, percpu_hpet_end = INT_MIN;
+ char *c;
+ long hpet_chan;
+
+ if (!timer_list_read) {
+ char file_name[20];
+ char ln[80];
+ FILE *fp;
+
+ timer_list_read = 1;
+ snprintf(file_name, sizeof(file_name), "/proc/timer_list");
+ fp = fopen(file_name, "r");
+ if (fp == NULL)
+ return 0;
+
+ while (fgets(ln, sizeof(ln), fp) != NULL)
+ {
+ c = strstr(ln, "Clock Event Device: hpet");
+ if (!c)
+ continue;
+
+ c += 24;
+ if (!isdigit(c[0]))
+ continue;
+
+ hpet_chan = strtol(c, NULL, 10);
+ if (hpet_chan < percpu_hpet_start)
+ percpu_hpet_start = hpet_chan;
+ if (hpet_chan > percpu_hpet_end)
+ percpu_hpet_end = hpet_chan;
+ }
+ fclose(fp);
+ }
+
+ c = strstr(name, "hpet");
+ if (!c)
+ return 0;
+
+ c += 4;
+ if (!isdigit(c[0]))
+ return 0;
+
+ hpet_chan = strtol(c, NULL, 10);
+ if (percpu_hpet_start <= hpet_chan && hpet_chan <= percpu_hpet_end)
+ return 1;
+
+ return 0;
+}
+
+static void do_proc_irq(void)
+{
+ FILE *file;
+ char line[1024];
+ char line2[1024];
+ char *name;
+ uint64_t delta;
+
+ interrupt_0 = 0;
+ total_interrupt = 0;
+
+ file = fopen("/proc/interrupts", "r");
+ if (!file)
+ return;
+ while (!feof(file)) {
+ char *c;
+ int nr = -1;
+ uint64_t count = 0;
+ int special = 0;
+ memset(line, 0, sizeof(line));
+ memset(line2, 0, sizeof(line));
+ if (fgets(line, 1024, file) == NULL)
+ break;
+ c = strchr(line, ':');
+ if (!c)
+ continue;
+ /* deal with NMI and the like.. make up fake nrs */
+ if (line[0] != ' ' && (line[0] < '0' || line[0] > '9')) {
+ if (strncmp(line,"NMI:", 4)==0)
+ nr=20000;
+ if (strncmp(line,"RES:", 4)==0)
+ nr=20001;
+ if (strncmp(line,"CAL:", 4)==0)
+ nr=20002;
+ if (strncmp(line,"TLB:", 4)==0)
+ nr=20003;
+ if (strncmp(line,"TRM:", 4)==0)
+ nr=20004;
+ if (strncmp(line,"THR:", 4)==0)
+ nr=20005;
+ if (strncmp(line,"SPU:", 4)==0)
+ nr=20006;
+ special = 1;
+ } else
+ nr = strtoull(line, NULL, 10);
+
+ if (nr==-1)
+ continue;
+ *c = 0;
+ c++;
+ while (c && strlen(c)) {
+ char *newc;
+ count += strtoull(c, &newc, 10);
+ if (newc == c)
+ break;
+ c = newc;
+ }
+ c = strchr(c, ' ');
+ if (!c)
+ continue;
+ while (c && *c == ' ')
+ c++;
+ if (!special) {
+ c = strchr(c, ' ');
+ if (!c)
+ continue;
+ while (c && *c == ' ')
+ c++;
+ }
+ name = c;
+ delta = update_irq(nr, count, name);
+ c = strchr(name, '\n');
+ if (c)
+ *c = 0;
+
+ /* deal with multi-queue NICs */
+ if (strncmp(name, "eth",3) == 0 && strchr(name,' ') == NULL) {
+ c = strchr(name, '-');
+ if (c)
+ *c = 0;
+ }
+
+ if (strcmp(name, "i8042")) {
+ if (special)
+ sprintf(line2, _("[%s] <kernel IPI>"), name);
+ else
+ sprintf(line2, _("[%s] <interrupt>"), name);
+ }
+ else
+ sprintf(line2, _("%s interrupt"), _("PS/2 keyboard/mouse/touchpad"));
+
+ /* skip per CPU timer interrupts */
+ if (percpu_hpet_timer(name))
+ delta = 0;
+
+ if (nr > 0 && delta > 0)
+ push_line(line2, delta);
+ if (nr==0)
+ interrupt_0 = delta;
+ else
+ total_interrupt += delta;
+ }
+ fclose(file);
+}
+
+static void read_data_acpi(uint64_t * usage, uint64_t * duration)
+{
+ DIR *dir;
+ struct dirent *entry;
+ FILE *file = NULL;
+ char line[4096];
+ char *c;
+ int clevel = 0;
+
+ memset(usage, 0, 64);
+ memset(duration, 0, 64);
+
+ dir = opendir("/proc/acpi/processor");
+ if (!dir)
+ return;
+ while ((entry = readdir(dir))) {
+ if (strlen(entry->d_name) < 3)
+ continue;
+ sprintf(line, "/proc/acpi/processor/%s/power", entry->d_name);
+ file = fopen(line, "r");
+ if (!file)
+ continue;
+
+ clevel = 0;
+
+ while (!feof(file)) {
+ memset(line, 0, 4096);
+ if (fgets(line, 4096, file) == NULL)
+ break;
+ c = strstr(line, "age[");
+ if (!c)
+ continue;
+ c += 4;
+ usage[clevel] += 1+strtoull(c, NULL, 10);
+ c = strstr(line, "ation[");
+ if (!c)
+ continue;
+ c += 6;
+ duration[clevel] += strtoull(c, NULL, 10);
+
+ clevel++;
+ if (clevel > maxcstate)
+ maxcstate = clevel;
+
+ }
+ fclose(file);
+ }
+ closedir(dir);
+}
+
+static void read_data_cpuidle(uint64_t * usage, uint64_t * duration)
+{
+ DIR *cpudir;
+ DIR *dir;
+ struct dirent *entry;
+ FILE *file = NULL;
+ char line[4096];
+ char filename[128], *f;
+ int len, clevel = 0;
+
+ memset(usage, 0, 64);
+ memset(duration, 0, 64);
+
+ cpudir = opendir("/sys/devices/system/cpu");
+ if (!cpudir)
+ return;
+
+ /* Loop over cpuN entries */
+ while ((entry = readdir(cpudir))) {
+ if (strlen(entry->d_name) < 3)
+ continue;
+
+ if (!isdigit(entry->d_name[3]))
+ continue;
+
+ len = sprintf(filename, "/sys/devices/system/cpu/%s/cpuidle",
+ entry->d_name);
+
+ dir = opendir(filename);
+ if (!dir)
+ return;
+
+ clevel = 0;
+
+ /* For each C-state, there is a stateX directory which
+ * contains a 'usage' and a 'time' (duration) file */
+ while ((entry = readdir(dir))) {
+ if (strlen(entry->d_name) < 3)
+ continue;
+ sprintf(filename + len, "/%s/desc", entry->d_name);
+ file = fopen(filename, "r");
+ if (file) {
+
+ memset(line, 0, 4096);
+ f = fgets(line, 4096, file);
+ fclose(file);
+ if (f == NULL)
+ break;
+
+
+ f = strstr(line, "MWAIT ");
+ if (f) {
+ f += 6;
+ clevel = (strtoull(f, NULL, 16)>>4) + 1;
+ sprintf(cnames[clevel], "C%i mwait", clevel);
+ } else
+ sprintf(cnames[clevel], "C%i\t", clevel);
+
+ f = strstr(line, "POLL IDLE");
+ if (f) {
+ clevel = 0;
+ sprintf(cnames[clevel], "%s\t", _("polling"));
+ }
+
+ f = strstr(line, "ACPI HLT");
+ if (f) {
+ clevel = 1;
+ sprintf(cnames[clevel], "%s\t", "C1 halt");
+ }
+ }
+ sprintf(filename + len, "/%s/usage", entry->d_name);
+ file = fopen(filename, "r");
+ if (!file)
+ continue;
+
+ memset(line, 0, 4096);
+ f = fgets(line, 4096, file);
+ fclose(file);
+ if (f == NULL)
+ break;
+
+ usage[clevel] += 1+strtoull(line, NULL, 10);
+
+ sprintf(filename + len, "/%s/time", entry->d_name);
+ file = fopen(filename, "r");
+ if (!file)
+ continue;
+
+ memset(line, 0, 4096);
+ f = fgets(line, 4096, file);
+ fclose(file);
+ if (f == NULL)
+ break;
+
+ duration[clevel] += 1+strtoull(line, NULL, 10);
+
+ clevel++;
+ if (clevel > maxcstate)
+ maxcstate = clevel;
+
+ }
+ closedir(dir);
+
+ }
+ closedir(cpudir);
+}
+
+static void read_data(uint64_t * usage, uint64_t * duration)
+{
+ int r;
+ struct stat s;
+
+ /* Then check for CPUidle */
+ r = stat("/sys/devices/system/cpu/cpu0/cpuidle", &s);
+ if (!r) {
+ read_data_cpuidle(usage, duration);
+
+ /* perform residency calculations based on usecs */
+ FREQ = 1000;
+ return;
+ }
+
+ /* First, check for ACPI */
+ r = stat("/proc/acpi/processor", &s);
+ if (!r) {
+ read_data_acpi(usage, duration);
+
+ /* perform residency calculations based on ACPI timer */
+ FREQ = FREQ_ACPI;
+ return;
+ }
+}
+
+void stop_timerstats(void)
+{
+ FILE *file;
+ file = fopen("/proc/timer_stats", "w");
+ if (!file) {
+ nostats = 1;
+ return;
+ }
+ fprintf(file, "0\n");
+ fclose(file);
+}
+void start_timerstats(void)
+{
+ FILE *file;
+ file = fopen("/proc/timer_stats", "w");
+ if (!file) {
+ nostats = 1;
+ return;
+ }
+ fprintf(file, "1\n");
+ fclose(file);
+}
+
+int line_compare (const void *av, const void *bv)
+{
+ const struct line *a = av, *b = bv;
+ return (b->count + 50 * b->disk_count) - (a->count + 50 * a->disk_count);
+}
+
+void sort_lines(void)
+{
+ qsort (lines, linehead, sizeof (struct line), line_compare);
+}
+
+
+
+int print_battery_proc_acpi(void)
+{
+ DIR *dir;
+ struct dirent *dirent;
+ FILE *file;
+ double rate = 0;
+ double cap = 0;
+
+ char filename[256];
+
+ dir = opendir("/proc/acpi/battery");
+ if (!dir)
+ return 0;
+
+ while ((dirent = readdir(dir))) {
+ int dontcount = 0;
+ double voltage = 0.0;
+ double amperes_drawn = 0.0;
+ double watts_drawn = 0.0;
+ double amperes_left = 0.0;
+ double watts_left = 0.0;
+ char line[1024];
+
+ if (strlen(dirent->d_name) < 3)
+ continue;
+
+ sprintf(filename, "/proc/acpi/battery/%s/state", dirent->d_name);
+ file = fopen(filename, "r");
+ if (!file)
+ continue;
+ memset(line, 0, 1024);
+ while (fgets(line, 1024, file) != NULL) {
+ char *c;
+ if (strstr(line, "present:") && strstr(line, "no"))
+ break;
+
+ if (strstr(line, "charging state:")
+ && !strstr(line, "discharging"))
+ dontcount = 1;
+ c = strchr(line, ':');
+ if (!c)
+ continue;
+ c++;
+
+ if (strstr(line, "present voltage"))
+ voltage = strtoull(c, NULL, 10) / 1000.0;
+
+ if (strstr(line, "remaining capacity") && strstr(c, "mW"))
+ watts_left = strtoull(c, NULL, 10) / 1000.0;
+
+ if (strstr(line, "remaining capacity") && strstr(c, "mAh"))
+ amperes_left = strtoull(c, NULL, 10) / 1000.0;
+
+ if (strstr(line, "present rate") && strstr(c, "mW"))
+ watts_drawn = strtoull(c, NULL, 10) / 1000.0 ;
+
+ if (strstr(line, "present rate") && strstr(c, "mA"))
+ amperes_drawn = strtoull(c, NULL, 10) / 1000.0;
+
+ }
+ fclose(file);
+
+ if (!dontcount) {
+ rate += watts_drawn + voltage * amperes_drawn;
+ }
+ cap += watts_left + voltage * amperes_left;
+
+
+ }
+ closedir(dir);
+ if (prev_bat_cap - cap < 0.001 && rate < 0.001)
+ last_bat_time = 0;
+ if (!last_bat_time) {
+ last_bat_time = prev_bat_time = time(NULL);
+ last_bat_cap = prev_bat_cap = cap;
+ }
+ if (time(NULL) - last_bat_time >= 400) {
+ prev_bat_cap = last_bat_cap;
+ prev_bat_time = last_bat_time;
+ last_bat_time = time(NULL);
+ last_bat_cap = cap;
+ }
+
+ show_acpi_power_line(rate, cap, prev_bat_cap - cap, time(NULL) - prev_bat_time);
+ return 1;
+}
+
+int print_battery_proc_pmu(void)
+{
+ char line[80];
+ int i;
+ int power_present = 0;
+ int num_batteries = 0;
+ /* unsigned rem_time_sec = 0; */
+ unsigned charge_mAh = 0, max_charge_mAh = 0, voltage_mV = 0;
+ int discharge_mA = 0;
+ FILE *fd;
+
+ fd = fopen("/proc/pmu/info", "r");
+ if (fd == NULL)
+ return 0;
+
+ while ( fgets(line, sizeof(line), fd) != NULL )
+ {
+ if (strncmp("AC Power", line, strlen("AC Power")) == 0)
+ sscanf(strchr(line, ':')+2, "%d", &power_present);
+ else if (strncmp("Battery count", line, strlen("Battery count")) == 0)
+ sscanf(strchr(line, ':')+2, "%d", &num_batteries);
+ }
+ fclose(fd);
+
+ for (i = 0; i < num_batteries; ++i)
+ {
+ char file_name[20];
+ int flags = 0;
+ /* int battery_charging, battery_full; */
+ /* unsigned this_rem_time_sec = 0; */
+ unsigned this_charge_mAh = 0, this_max_charge_mAh = 0;
+ unsigned this_voltage_mV = 0, this_discharge_mA = 0;
+
+ snprintf(file_name, sizeof(file_name), "/proc/pmu/battery_%d", i);
+ fd = fopen(file_name, "r");
+ if (fd == NULL)
+ continue;
+
+ while (fgets(line, sizeof(line), fd) != NULL)
+ {
+ if (strncmp("flags", line, strlen("flags")) == 0)
+ sscanf(strchr(line, ':')+2, "%x", &flags);
+ else if (strncmp("charge", line, strlen("charge")) == 0)
+ sscanf(strchr(line, ':')+2, "%d", &this_charge_mAh);
+ else if (strncmp("max_charge", line, strlen("max_charge")) == 0)
+ sscanf(strchr(line, ':')+2, "%d", &this_max_charge_mAh);
+ else if (strncmp("voltage", line, strlen("voltage")) == 0)
+ sscanf(strchr(line, ':')+2, "%d", &this_voltage_mV);
+ else if (strncmp("current", line, strlen("current")) == 0)
+ sscanf(strchr(line, ':')+2, "%d", &this_discharge_mA);
+ /* else if (strncmp("time rem.", line, strlen("time rem.")) == 0) */
+ /* sscanf(strchr(line, ':')+2, "%d", &this_rem_time_sec); */
+ }
+ fclose(fd);
+
+ if ( !(flags & 0x1) )
+ /* battery isn't present */
+ continue;
+
+ /* battery_charging = flags & 0x2; */
+ /* battery_full = !battery_charging && power_present; */
+
+ charge_mAh += this_charge_mAh;
+ max_charge_mAh += this_max_charge_mAh;
+ voltage_mV += this_voltage_mV;
+ discharge_mA += this_discharge_mA;
+ /* rem_time_sec += this_rem_time_sec; */
+ }
+ show_pmu_power_line(voltage_mV, charge_mAh, max_charge_mAh,
+ discharge_mA);
+ return 1;
+}
+
+void print_battery_sysfs(void)
+{
+ DIR *dir;
+ struct dirent *dirent;
+ FILE *file;
+ double rate = 0;
+ double cap = 0;
+
+ char filename[256];
+
+ if (print_battery_proc_acpi())
+ return;
+
+ if (print_battery_proc_pmu())
+ return;
+
+ dir = opendir("/sys/class/power_supply");
+ if (!dir) {
+ return;
+ }
+
+ while ((dirent = readdir(dir))) {
+ int dontcount = 0;
+ double voltage = 0.0;
+ double amperes_drawn = 0.0;
+ double watts_drawn = 0.0;
+ double watts_left = 0.0;
+ char line[1024];
+
+ if (strstr(dirent->d_name, "AC"))
+ continue;
+
+ sprintf(filename, "/sys/class/power_supply/%s/present", dirent->d_name);
+ file = fopen(filename, "r");
+ if (!file)
+ continue;
+ int s;
+ if ((s = getc(file)) != EOF) {
+ if (s == 0)
+ break;
+ }
+ fclose(file);
+
+ sprintf(filename, "/sys/class/power_supply/%s/status", dirent->d_name);
+ file = fopen(filename, "r");
+ if (!file)
+ continue;
+ memset(line, 0, 1024);
+ if (fgets(line, 1024, file) != NULL) {
+ if (!strstr(line, "Discharging"))
+ dontcount = 1;
+ }
+ fclose(file);
+
+ sprintf(filename, "/sys/class/power_supply/%s/voltage_now", dirent->d_name);
+ file = fopen(filename, "r");
+ if (!file)
+ continue;
+ memset(line, 0, 1024);
+ if (fgets(line, 1024, file) != NULL) {
+ voltage = strtoull(line, NULL, 10) / 1000000.0;
+ }
+ fclose(file);
+
+ sprintf(filename, "/sys/class/power_supply/%s/energy_now", dirent->d_name);
+ file = fopen(filename, "r");
+ watts_left = 1;
+ if (!file) {
+ sprintf(filename, "/sys/class/power_supply/%s/charge_now", dirent->d_name);
+ file = fopen(filename, "r");
+ if (!file)
+ continue;
+
+ /* W = A * V */
+ watts_left = voltage;
+ }
+ memset(line, 0, 1024);
+ if (fgets(line, 1024, file) != NULL)
+ watts_left *= strtoull(line, NULL, 10) / 1000000.0;
+ fclose(file);
+
+ sprintf(filename, "/sys/class/power_supply/%s/current_now", dirent->d_name);
+ file = fopen(filename, "r");
+ if (!file)
+ continue;
+ memset(line, 0, 1024);
+ if (fgets(line, 1024, file) != NULL) {
+ watts_drawn = strtoull(line, NULL, 10) / 1000000.0;
+ }
+ fclose(file);
+
+ if (!dontcount) {
+ rate += watts_drawn + voltage * amperes_drawn;
+ }
+ cap += watts_left;
+
+
+ }
+ closedir(dir);
+ if (prev_bat_cap - cap < 0.001 && rate < 0.001)
+ last_bat_time = 0;
+ if (!last_bat_time) {
+ last_bat_time = prev_bat_time = time(NULL);
+ last_bat_cap = prev_bat_cap = cap;
+ }
+ if (time(NULL) - last_bat_time >= 400) {
+ prev_bat_cap = last_bat_cap;
+ prev_bat_time = last_bat_time;
+ last_bat_time = time(NULL);
+ last_bat_cap = cap;
+ }
+
+ show_acpi_power_line(rate, cap, prev_bat_cap - cap, time(NULL) - prev_bat_time);
+}
+
+char cstate_lines[12][200];
+
+void usage()
+{
+ printf(_("Usage: powertop [OPTION...]\n"));
+ printf(_(" -d, --dump read wakeups once and print list of top offenders\n"));
+ printf(_(" -t, --time=DOUBLE default time to gather data in seconds\n"));
+ printf(_(" -p, --pids show pids in wakeups list\n"));
+ printf(_(" -h, --help Show this help message\n"));
+ printf(_(" -v, --version Show version information and exit\n"));
+ exit(0);
+}
+
+void version()
+{
+ printf(_("powertop version %s\n"), VERSION);
+ exit(0);
+}
+
+int main(int argc, char **argv)
+{
+ char line[1024];
+ int ncursesinited=0;
+ FILE *file = NULL;
+ uint64_t cur_usage[8], cur_duration[8];
+ double wakeups_per_second = 0;
+
+ setlocale (LC_ALL, "");
+ bindtextdomain ("powertop", "/usr/share/locale");
+ textdomain ("powertop");
+
+ start_data_dirty_capture();
+
+ while (1) {
+ static struct option opts[] = {
+ { "dump", 0, NULL, 'd' },
+ { "time", 1, NULL, 't' },
+ { "pids", 0, NULL, 'p' },
+ { "help", 0, NULL, 'h' },
+ { "version", 0, NULL, 'v' },
+ { 0, 0, NULL, 0 }
+ };
+ int index2 = 0, c;
+
+ c = getopt_long(argc, argv, "dt:phv", opts, &index2);
+ if (c == -1)
+ break;
+ switch (c) {
+ case 'd':
+ dump = 1;
+ break;
+ case 't':
+ ticktime = strtod(optarg, NULL);
+ break;
+ case 'p':
+ showpids = 1;
+ break;
+ case 'h':
+ usage();
+ break;
+ case 'v':
+ version();
+ break;
+ default:
+ ;
+ }
+ }
+
+ if (!dump)
+ ticktime = 5.0;
+
+ system("/sbin/modprobe cpufreq_stats > /dev/null 2>&1");
+ read_data(&start_usage[0], &start_duration[0]);
+
+
+ memcpy(last_usage, start_usage, sizeof(last_usage));
+ memcpy(last_duration, start_duration, sizeof(last_duration));
+
+ do_proc_irq();
+ do_proc_irq();
+ do_cpufreq_stats();
+ count_usb_urbs();
+ count_usb_urbs();
+ count_device_pm();
+ count_device_pm();
+ do_alsa_stats();
+ do_alsa_stats();
+ do_ahci_stats();
+ do_ahci_stats();
+
+
+ memset(cur_usage, 0, sizeof(cur_usage));
+ memset(cur_duration, 0, sizeof(cur_duration));
+ printf("PowerTOP " VERSION " (C) 2007 - 2010 Intel Corporation \n\n");
+ if (geteuid() != 0)
+ printf(_("PowerTOP needs to be run as root to collect enough information\n"));
+ printf(_("Collecting data for %i seconds \n"), (int)ticktime);
+ printf("\n\n");
+ print_intel_cstates();
+ stop_timerstats();
+
+ while (1) {
+ double maxsleep = 0.0;
+ int64_t totalticks;
+ int64_t totalevents;
+ fd_set rfds;
+ struct timeval tv;
+ int key = 0;
+
+ int i = 0;
+ double c0 = 0;
+ char *c;
+
+
+ FD_ZERO(&rfds);
+ if (!dump)
+ FD_SET(0, &rfds);
+ tv.tv_sec = ticktime;
+ tv.tv_usec = (ticktime - tv.tv_sec) * 1000000;
+ do_proc_irq();
+ start_timerstats();
+
+
+ key = select(1, &rfds, NULL, NULL, &tv);
+
+ if (key && tv.tv_sec) ticktime = ticktime - tv.tv_sec - tv.tv_usec/1000000.0;
+
+
+ stop_timerstats();
+ clear_lines();
+ do_proc_irq();
+ read_data(&cur_usage[0], &cur_duration[0]);
+
+ totalticks = 0;
+ totalevents = 0;
+ for (i = 0; i < 8; i++)
+ if (cur_usage[i]) {
+ totalticks += cur_duration[i] - last_duration[i];
+ totalevents += cur_usage[i] - last_usage[i];
+ }
+
+ if (!dump) {
+ if (!ncursesinited) {
+ initialize_curses();
+ ncursesinited++;
+ }
+ setup_windows();
+ show_title_bar();
+ }
+
+ memset(&cstate_lines, 0, sizeof(cstate_lines));
+ topcstate = -4;
+ if (totalevents == 0 && maxcstate <= 1) {
+ sprintf(cstate_lines[5],_("< Detailed C-state information is not available.>\n"));
+ } else {
+ double sleept, percentage;
+ c0 = sysconf(_SC_NPROCESSORS_ONLN) * ticktime * 1000 * FREQ - totalticks;
+ if (c0 < 0)
+ c0 = 0; /* rounding errors in measurement might make c0 go slightly negative.. this is confusing */
+ sprintf(cstate_lines[0], _("Cn\t Avg residency\n"));
+
+ percentage = c0 * 100.0 / (sysconf(_SC_NPROCESSORS_ONLN) * ticktime * 1000 * FREQ);
+ sprintf(cstate_lines[1], _("C0 (cpu running) (%4.1f%%)\n"), percentage);
+ if (percentage > 50)
+ topcstate = 0;
+ for (i = 0; i < 8; i++)
+ if (cur_usage[i]) {
+ sleept = (cur_duration[i] - last_duration[i]) / (cur_usage[i] - last_usage[i]
+ + 0.1) / FREQ;
+ percentage = (cur_duration[i] -
+ last_duration[i]) * 100 /
+ (sysconf(_SC_NPROCESSORS_ONLN) * ticktime * 1000 * FREQ);
+
+ if (cnames[i][0]==0)
+ sprintf(cnames[i],"C%i",i+1);
+ sprintf
+ (cstate_lines[2+i], _("%s\t%5.1fms (%4.1f%%)\n"),
+ cnames[i], sleept, percentage);
+ if (maxsleep < sleept)
+ maxsleep = sleept;
+ if (percentage > 50)
+ topcstate = i+1;
+
+ }
+ }
+ do_cpufreq_stats();
+ show_cstates();
+ /* now the timer_stats info */
+ memset(line, 0, sizeof(line));
+ totalticks = 0;
+ file = NULL;
+ if (!nostats)
+ file = fopen("/proc/timer_stats", "r");
+ while (file && !feof(file)) {
+ char *count, *pid, *process, *func;
+ char line2[1024];
+ int cnt = 0;
+ int deferrable = 0;
+ memset(line, 0, 1024);
+ memset(line2, 0, 1024);
+ if (fgets(line, 1024, file) == NULL)
+ break;
+ if (strstr(line, "total events"))
+ break;
+ c = count = &line[0];
+ c = strchr(c, ',');
+ if (!c)
+ continue;
+ *c = 0;
+ c++;
+ while (*c != 0 && *c == ' ')
+ c++;
+ pid = c;
+ c = strchr(c, ' ');
+ if (!c)
+ continue;
+ *c = 0;
+ c++;
+ while (*c != 0 && *c == ' ')
+ c++;
+ process = c;
+ c = strchr(c, ' ');
+ if (!c)
+ continue;
+ *c = 0;
+ c++;
+ while (*c != 0 && *c == ' ')
+ c++;
+ func = c;
+
+ if (strcmp(process, "swapper")==0 &&
+ strcmp(func, "hrtimer_start_range_ns (tick_sched_timer)\n")==0) {
+ process = _("[kernel scheduler]");
+ func = _("Load balancing tick");
+ }
+ if (strcmp(process, "insmod") == 0)
+ process = _("[kernel module]");
+ if (strcmp(process, "modprobe") == 0)
+ process = _("[kernel module]");
+ if (strcmp(process, "swapper") == 0)
+ process = _("[kernel core]");
+ c = strchr(c, '\n');
+ if (strncmp(func, "tick_nohz_", 10) == 0)
+ continue;
+ if (strncmp(func, "tick_setup_sched_timer", 20) == 0)
+ continue;
+ if (strcmp(process, "powertop") == 0)
+ continue;
+ if (c)
+ *c = 0;
+ cnt = strtoull(count, &c, 10);
+ while (*c != 0) {
+ if (*c++ == 'D')
+ deferrable = 1;
+ }
+
+ if (deferrable)
+ continue;
+ if (strchr(process, '['))
+ sprintf(line2, "%s %s", process, func);
+ else
+ sprintf(line2, "%s", process);
+ push_line_pid(line2, cnt, 0, pid);
+ }
+
+ if (file)
+ pclose(file);
+
+ reset_suggestions();
+
+ parse_data_dirty_buffer();
+
+ if (strstr(line, "total events")) {
+ int d;
+ d = strtoull(line, NULL, 10) / sysconf(_SC_NPROCESSORS_ONLN);
+ if (totalevents == 0) { /* No c-state info available, use timerstats instead */
+ totalevents = d * sysconf(_SC_NPROCESSORS_ONLN) + total_interrupt;
+ if (d < interrupt_0)
+ totalevents += interrupt_0 - d;
+ }
+ if (d>0 && d < interrupt_0)
+ push_line(_("[extra timer interrupt]"), interrupt_0 - d);
+ }
+
+
+ if (totalevents && ticktime) {
+ wakeups_per_second = totalevents * 1.0 / ticktime / sysconf(_SC_NPROCESSORS_ONLN);
+ show_wakeups(wakeups_per_second, ticktime, c0 * 100.0 / (sysconf(_SC_NPROCESSORS_ONLN) * ticktime * 1000 * FREQ) );
+ }
+ count_usb_urbs();
+ count_device_pm();
+
+ do_alsa_stats();
+ do_ahci_stats();
+ print_battery_sysfs();
+ count_lines();
+ sort_lines();
+
+ displaytime = displaytime - ticktime;
+
+ show_timerstats(nostats, ticktime);
+
+ if (maxsleep < 5.0)
+ ticktime = 10;
+ else if (maxsleep < 30.0)
+ ticktime = 15;
+ else if (maxsleep < 100.0)
+ ticktime = 20;
+ else if (maxsleep < 400.0)
+ ticktime = 30;
+ else
+ ticktime = 45;
+
+ if (key) {
+ char keychar;
+ int keystroke = fgetc(stdin);
+ if (keystroke == EOF)
+ exit(EXIT_SUCCESS);
+
+ keychar = toupper(keystroke);
+ if (keychar == 'Q')
+ exit(EXIT_SUCCESS);
+ if (keychar == 'R')
+ ticktime = 3;
+ if (keychar == suggestion_key && suggestion_activate) {
+ suggestion_activate();
+ ticktime = 2;
+ displaytime = -1.0;
+ } else
+ if (keychar == 'P')
+ showpids = !showpids;
+ }
+
+ if (wakeups_per_second < 0)
+ ticktime = 2;
+
+ reset_suggestions2();
+
+ suggest_kernel_config("CONFIG_USB_SUSPEND", 1,
+ _("Suggestion: Enable the CONFIG_USB_SUSPEND kernel configuration option.\nThis option will automatically disable UHCI USB when not in use, and may\nsave approximately 1 Watt of power."), 20);
+ suggest_kernel_config("CONFIG_PM_ADVANCED_DEBUG", 1,
+ _("Suggestion: Enable the CONFIG_PM_ADVANCED_DEBUG kernel configuration option.\nThis option will allow PowerTOP to collect runtime power management statistics."), 10);
+ suggest_kernel_config("CONFIG_PM_RUNTIME", 1,
+ _("Suggestion: Enable the CONFIG_PM_RUNTIME kernel configuration option.\nThis option enables the kernel to manage power for various devices in your computer."), 40);
+ suggest_kernel_config("CONFIG_CPU_FREQ_GOV_ONDEMAND", 1,
+ _("Suggestion: Enable the CONFIG_CPU_FREQ_GOV_ONDEMAND kernel configuration option.\n"
+ "The 'ondemand' CPU speed governor will minimize the CPU power usage while\n" "giving you performance when it is needed."), 5);
+ suggest_kernel_config("CONFIG_NO_HZ", 1, _("Suggestion: Enable the CONFIG_NO_HZ kernel configuration option.\nThis option is required to get any kind of longer sleep times in the CPU."), 50);
+ suggest_kernel_config("CONFIG_ACPI_BATTERY", 1, _("Suggestion: Enable the CONFIG_ACPI_BATTERY kernel configuration option.\n "
+ "This option is required to get power estimages from PowerTOP"), 5);
+ suggest_kernel_config("CONFIG_HPET_TIMER", 1,
+ _("Suggestion: Enable the CONFIG_HPET_TIMER kernel configuration option.\n"
+ "Without HPET support the kernel needs to wake up every 20 milliseconds for \n" "some housekeeping tasks."), 10);
+ suggest_kernel_config("CONFIG_PCIEASPM", 1,
+ _("Suggestion: Enable the CONFIG_PCIEASPM kernel configuration option.\n"
+ "PCI Link Powermanagement (ASPM) allows the hardware to go to low power mode\n" "automatically when a PCI-E device is idle."), 10);
+ if (!access("/sys/module/snd_ac97_codec", F_OK) &&
+ access("/sys/module/snd_ac97_codec/parameters/power_save", F_OK))
+ suggest_kernel_config("CONFIG_SND_AC97_POWER_SAVE", 1,
+ _("Suggestion: Enable the CONFIG_SND_AC97_POWER_SAVE kernel configuration option.\n"
+ "This option will automatically power down your sound codec when not in use,\n"
+ "and can save approximately half a Watt of power."), 20);
+ suggest_kernel_config("CONFIG_IRQBALANCE", 0,
+ _("Suggestion: Disable the CONFIG_IRQBALANCE kernel configuration option.\n" "The in-kernel irq balancer is obsolete and wakes the CPU up far more than needed."), 3);
+ suggest_kernel_config("CONFIG_CPU_FREQ_STAT", 1,
+ _("Suggestion: Enable the CONFIG_CPU_FREQ_STAT kernel configuration option.\n"
+ "This option allows PowerTOP to show P-state percentages \n" "P-states correspond to CPU frequencies."), 2);
+ suggest_kernel_config("CONFIG_INOTIFY", 1,
+ _("Suggestion: Enable the CONFIG_INOTIFY kernel configuration option.\n"
+ "This option allows programs to wait for changes in files and directories\n"
+ "instead of having to poll for these changes"), 5);
+
+
+ /* suggest to stop beagle if it shows up in the top 20 and wakes up more than 10 times in the measurement */
+ suggest_process_death("beagled : schedule_timeout", "beagled", lines, min(linehead,20), 10.0,
+ _("Suggestion: Disable or remove 'beagle' from your system. \n"
+ "Beagle is the program that indexes for easy desktop search, however it's \n"
+ "not very efficient and costs a significant amount of battery life."), 30);
+ suggest_process_death("beagled : futex_wait (hrtimer_wakeup)", "beagled", lines, min(linehead,20), 10.0,
+ _("Suggestion: Disable or remove 'beagle' from your system. \n"
+ "Beagle is the program that indexes for easy desktop search, however it's \n"
+ "not very efficient and costs a significant amount of battery life."), 30);
+
+ /* suggest to stop gnome-power-manager *only* if it shows up in the top 10 and wakes up more than 10 times in the measurement */
+ /* note to distribution makers: There is no need to patch this out! */
+ /* If you ship a recent enough g-p-m, the warning will not be there, */
+ /* and if you ship a really old one the warning is really justified. */
+ suggest_process_death("gnome-power-man : schedule_timeout (process_timeout)", "gnome-power-manager", lines, min(linehead,10), 10.0,
+ _("Suggestion: Disable or remove 'gnome-power-manager' from your system. \n"
+ "Older versions of gnome-power-manager wake up far more often than \n"
+ "needed costing you some power."), 5);
+
+ /* suggest to stop pcscd if it shows up in the top 50 and wakes up at all*/
+ suggest_process_death("pcscd : ", "pcscd", lines, min(linehead,50), 1.0,
+ _("Suggestion: Disable or remove 'pcscd' from your system. \n"
+ "pcscd tends to keep the USB subsystem out of power save mode\n"
+ "and your processor out of deeper powersave states."), 30);
+
+
+ /* suggest to stop hal polilng if it shows up in the top 50 and wakes up too much*/
+ suggest_process_death("hald-addon-stor : ", "hald-addon-storage", lines, min(linehead,50), 2.0,
+ _( "Suggestion: Disable 'hal' from polling your cdrom with: \n"
+ "hal-disable-polling --device /dev/cdrom 'hal' is the component that auto-opens a\n"
+ "window if you plug in a CD but disables SATA power saving from kicking in."), 30);
+
+ /* suggest to kill sealert; it wakes up 10 times/second on a default F7 install*/
+ suggest_process_death("/usr/bin/sealer : schedule_timeout (process_timeout)", "-/usr/bin/sealert", lines, min(linehead,20), 20.0,
+ _("Disable the SE-Alert software by removing the 'setroubleshoot-server' rpm\n"
+ "SE-Alert alerts you about SELinux policy violations, but also\n"
+ "has a bug that wakes it up 10 times per second."), 20);
+
+ suggest_on_dmesg("failed to find CxSR latency, disabling CxSR",
+ _("The Intel Integrated Graphics driver failed to enable Memory "
+ "self refresh.\nMemory Self Refresh is important for "
+ "good memory power savings.\nPlease check your OS "
+ "vendor for a kernel update and/or report a bug."),
+ 10);
+
+ suggest_bluetooth_off();
+ suggest_nmi_watchdog();
+ if (maxsleep > 15.0)
+ suggest_hpet();
+ suggest_ac97_powersave();
+ suggest_hda_powersave();
+ suggest_wireless_powersave();
+ suggest_wifi_new_powersave();
+ suggest_ondemand_governor();
+ suggest_noatime();
+ suggest_sata_alpm();
+ suggest_powersched();
+ suggest_xrandr_TV_off();
+ suggest_WOL_off();
+ suggest_writeback_time();
+ suggest_usb_autosuspend();
+ suggest_runtime_suspend();
+
+ usb_activity_hint();
+ void devicepm_activity_hint();
+ alsa_activity_hint();
+ ahci_activity_hint();
+
+ if (dump) {
+ print_all_suggestions();
+ display_usb_activity();
+ display_runtime_activity();
+ display_alsa_activity();
+ display_ahci_activity();
+ exit(EXIT_SUCCESS);
+ }
+
+ if (!key)
+ pick_suggestion();
+ show_title_bar();
+
+ fflush(stdout);
+ if (!key && ticktime >= 4.8) { /* quiet down the effects of any IO to xterms */
+ FD_ZERO(&rfds);
+ FD_SET(0, &rfds);
+ tv.tv_sec = 3;
+ tv.tv_usec = 0;
+ key = select(1, &rfds, NULL, NULL, &tv);
+ }
+
+ read_data(&cur_usage[0], &cur_duration[0]);
+ memcpy(last_usage, cur_usage, sizeof(last_usage));
+ memcpy(last_duration, cur_duration, sizeof(last_duration));
+
+
+
+ }
+
+ end_data_dirty_capture();
+ return 0;
+}
diff --git a/powertop.h b/powertop.h
new file mode 100644
index 0000000..d8f8182
--- /dev/null
+++ b/powertop.h
@@ -0,0 +1,160 @@
+/*
+ * Copyright 2007, Intel Corporation
+ *
+ * This file is part of PowerTOP
+ *
+ * This program file 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; version 2 of the License.
+ *
+ * This program 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 program in a file named COPYING; if not, write to the
+ * Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301 USA
+ *
+ * Authors:
+ * Arjan van de Ven <arjan@linux.intel.com>
+ */
+
+
+#ifndef __INCLUDE_GUARD_POWERTOP_H_
+#define __INCLUDE_GUARD_POWERTOP_H_
+
+#include <libintl.h>
+
+struct line {
+ char *string;
+ int count;
+ int disk_count;
+ char pid[12];
+};
+
+typedef void (suggestion_func)(void);
+
+extern struct line *lines;
+extern int linehead;
+extern int linesize;
+extern int linectotal;
+
+extern double displaytime;
+
+void suggest_process_death(char *process_match, char *process_name, struct line *slines, int linecount, double minwakeups, char *comment, int weight);
+void suggest_kernel_config(char *string, int onoff, char *comment, int weight);
+void suggest_bluetooth_off(void);
+void suggest_nmi_watchdog(void);
+void suggest_hpet(void);
+void suggest_ac97_powersave(void);
+void suggest_hda_powersave(void);
+void suggest_wireless_powersave(void);
+void suggest_wifi_new_powersave(void);
+void suggest_ondemand_governor(void);
+void suggest_noatime(void);
+void suggest_sata_alpm(void);
+void suggest_powersched(void);
+void suggest_xrandr_TV_off(void);
+void suggest_WOL_off(void);
+void suggest_writeback_time(void);
+void suggest_usb_autosuspend(void);
+void suggest_runtime_suspend(void);
+
+void usb_activity_hint(void);
+void devicepm_activity_hint(void);
+
+
+
+
+
+extern char cstate_lines[12][200];
+extern char cpufreqstrings[6][80];
+
+extern int topcstate;
+extern int topfreq;
+extern int dump;
+
+extern int showpids;
+
+extern char status_bar_slots[10][40];
+extern char suggestion_key;
+extern suggestion_func *suggestion_activate;
+
+
+/* min definition borrowed from the Linux kernel */
+#define min(x,y) ({ \
+ typeof(x) _x = (x); \
+ typeof(y) _y = (y); \
+ (void) (&_x == &_y); \
+ _x < _y ? _x : _y; })
+
+
+#define _(STRING) gettext(STRING)
+
+
+#define PT_COLOR_DEFAULT 1
+#define PT_COLOR_HEADER_BAR 2
+#define PT_COLOR_ERROR 3
+#define PT_COLOR_RED 4
+#define PT_COLOR_YELLOW 5
+#define PT_COLOR_GREEN 6
+#define PT_COLOR_BRIGHT 7
+#define PT_COLOR_BLUE 8
+extern int maxwidth;
+
+void show_title_bar(void);
+void setup_windows(void);
+void initialize_curses(void);
+void show_acpi_power_line(double rate, double cap, double capdelta, time_t time);
+void show_pmu_power_line(unsigned sum_voltage_mV,
+ unsigned sum_charge_mAh, unsigned sum_max_charge_mAh,
+ int sum_discharge_mA);
+void show_cstates(void);
+void show_wakeups(double d, double interval, double c0time);
+void show_timerstats(int nostats, int ticktime);
+void show_suggestion(char *sug);
+
+void pick_suggestion(void);
+void add_suggestion(char *text, int weight, char key, char *keystring, suggestion_func *func);
+void reset_suggestions(void);
+void reset_suggestions2(void);
+void print_all_suggestions(void);
+void push_line(char *string, int count);
+void push_line_pid(char *string, int cpu_count, int disk_count, char *pid);
+
+
+void do_cpufreq_stats(void);
+void count_usb_urbs(void);
+void count_device_pm(void);
+
+void alsa_activity_hint(void);
+void display_alsa_activity(void);
+void do_alsa_stats(void);
+
+void ahci_activity_hint(void);
+void display_ahci_activity(void);
+void do_ahci_stats(void);
+
+
+
+void display_usb_activity(void);
+void display_runtime_activity(void);
+
+void activate_usb_autosuspend(void);
+void print_intel_cstates(void);
+
+void start_data_dirty_capture(void);
+void end_data_dirty_capture(void);
+void parse_data_dirty_buffer(void);
+
+
+void hda_power_on(void);
+void activate_alpm(void);
+
+void suggest_on_dmesg(char *string, char *comment, int weight);
+
+
+#endif
diff --git a/process.c b/process.c
new file mode 100644
index 0000000..53fd78f
--- /dev/null
+++ b/process.c
@@ -0,0 +1,94 @@
+/*
+ * Copyright 2007, Intel Corporation
+ *
+ * This file is part of PowerTOP
+ *
+ * This program file 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; version 2 of the License.
+ *
+ * This program 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 program in a file named COPYING; if not, write to the
+ * Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301 USA
+ *
+ * Authors:
+ * Arjan van de Ven <arjan@linux.intel.com>
+ */
+
+#include <unistd.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <stdint.h>
+#include <sys/types.h>
+#include <dirent.h>
+#include <sys/types.h>
+#include <signal.h>
+
+#include "powertop.h"
+
+char process_to_kill[1024];
+
+static void fancy_kill(void)
+{
+ FILE *file;
+ char line[2048];
+ char *tokill;
+ int pid = 0;
+ tokill = &process_to_kill[1];
+
+ file = popen(" ps -A -o pid,command", "r");
+ if (!file)
+ return;
+ while (!feof(file)) {
+ memset(line, 0, 2048);
+ if (fgets(line, 2047, file)==NULL)
+ break;
+ if (!strstr(line, tokill))
+ continue;
+ pid = strtoul(line, NULL, 10);
+
+ }
+ pclose(file);
+ if (pid<2)
+ return;
+ kill(pid, SIGTERM);
+}
+
+void do_kill(void)
+{
+ char line[2048];
+
+ if (process_to_kill[0] == '-') {
+ fancy_kill();
+ } else {
+ sprintf(line, "killall %s &> /dev/null", process_to_kill);
+ system(line);
+ }
+}
+
+void suggest_process_death(char *process_match, char *tokill, struct line *slines, int linecount, double minwakeups, char *comment, int weight)
+{
+ int i;
+
+ for (i = 0; i < linecount; i++) {
+ if (!slines[i].string)
+ continue;
+ if (strstr(slines[i].string, process_match)) {
+ char hotkey_string[300];
+ sprintf(hotkey_string, _(" K - kill %s "), tokill);
+ strcpy(process_to_kill, tokill);
+ if (minwakeups < slines[i].count)
+ add_suggestion(comment, weight, 'K' , hotkey_string, do_kill);
+ break;
+ }
+ }
+ fflush(stdout);
+}
diff --git a/sata.c b/sata.c
new file mode 100644
index 0000000..2fff4ea
--- /dev/null
+++ b/sata.c
@@ -0,0 +1,107 @@
+/*
+ * Copyright 2007, Intel Corporation
+ *
+ * This file is part of PowerTOP
+ *
+ * This program file 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; version 2 of the License.
+ *
+ * This program 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 program in a file named COPYING; if not, write to the
+ * Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301 USA
+ *
+ * Authors:
+ * Arjan van de Ven <arjan@linux.intel.com>
+ */
+
+#include <unistd.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <stdint.h>
+#include <sys/types.h>
+#include <dirent.h>
+
+#include "powertop.h"
+
+int alpm_activated;
+
+void activate_alpm(void)
+{
+ DIR *dir;
+ struct dirent *dirent;
+ FILE *file;
+ char filename[PATH_MAX];
+
+ alpm_activated = 1;
+
+ dir = opendir("/sys/class/scsi_host");
+ if (!dir)
+ return;
+
+ while ((dirent = readdir(dir))) {
+ if (dirent->d_name[0]=='.')
+ continue;
+ sprintf(filename, "/sys/class/scsi_host/%s/link_power_management_policy", dirent->d_name);
+ file = fopen(filename, "w");
+ if (!file)
+ continue;
+ fprintf(file, "min_power\n");
+ fclose(file);
+ }
+
+ closedir(dir);
+}
+
+void suggest_sata_alpm(void)
+{
+ DIR *dir;
+ struct dirent *dirent;
+ FILE *file;
+ char filename[PATH_MAX];
+ char line[1024];
+ int need_hint = 0;
+
+ if (alpm_activated)
+ return;
+
+
+ dir = opendir("/sys/class/scsi_host/");
+ if (!dir)
+ return;
+
+ while ((dirent = readdir(dir))) {
+ if (dirent->d_name[0]=='.')
+ continue;
+ sprintf(filename, "/sys/class/scsi_host/%s/link_power_management_policy", dirent->d_name);
+ file = fopen(filename, "r");
+ if (!file)
+ continue;
+ memset(line, 0, 1024);
+ if (fgets(line, 1023,file)==NULL) {
+ fclose(file);
+ continue;
+ }
+ if (!strstr(line, "min_power\n"))
+ need_hint = 1;
+
+ fclose(file);
+ }
+
+ closedir(dir);
+
+ if (need_hint) {
+ add_suggestion(_("Suggestion: Enable SATA ALPM link power management via: \n"
+ " echo min_power > /sys/class/scsi_host/host0/link_power_management_policy\n"
+ "or press the S key."),
+ 15, 'S', _(" S - SATA Link Power Management "), activate_alpm);
+ }
+}
diff --git a/suggestions.c b/suggestions.c
new file mode 100644
index 0000000..d3261a9
--- /dev/null
+++ b/suggestions.c
@@ -0,0 +1,156 @@
+/*
+ * Copyright 2007, Intel Corporation
+ *
+ * This file is part of PowerTOP
+ *
+ * This program file 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; version 2 of the License.
+ *
+ * This program 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 program in a file named COPYING; if not, write to the
+ * Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301 USA
+ *
+ * Authors:
+ * Arjan van de Ven <arjan@linux.intel.com>
+ */
+
+#include <unistd.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <stdint.h>
+#include <sys/types.h>
+#include <dirent.h>
+
+#include "powertop.h"
+
+
+
+char suggestion_key;
+suggestion_func *suggestion_activate;
+
+struct suggestion;
+
+struct suggestion {
+ struct suggestion *next;
+
+ char *string;
+ int weight;
+
+ char key;
+ char *keystring;
+
+ suggestion_func *func;
+};
+
+
+static struct suggestion *suggestions;
+static int total_weight;
+
+static char previous[1024];
+
+
+void reset_suggestions(void)
+{
+ struct suggestion *ptr;
+ ptr = suggestions;
+ while (ptr) {
+ struct suggestion *next;
+ next = ptr->next;
+ free(ptr->string);
+ free(ptr->keystring);
+ free(ptr);
+ ptr = next;
+ }
+ suggestions = NULL;
+ strcpy(status_bar_slots[8],"");
+ total_weight = 0;
+}
+
+void reset_suggestions2(void)
+{
+ suggestion_key = 255;
+ suggestion_activate = NULL;
+}
+
+void add_suggestion(char *text, int weight, char key, char *keystring, suggestion_func *func)
+{
+ struct suggestion *new;
+
+ if (!text)
+ return;
+
+ new = malloc(sizeof(struct suggestion));
+ if (!new)
+ return;
+ memset(new, 0, sizeof(struct suggestion));
+ new->string = strdup(text);
+ new->weight = weight;
+ new->key = key;
+ if (keystring)
+ new->keystring = strdup(keystring);
+ new->next = suggestions;
+ new->func = func;
+ suggestions = new;
+ total_weight += weight;
+}
+
+void pick_suggestion(void)
+{
+ int value, running = 0;
+ struct suggestion *ptr;
+ int weight;
+
+ strcpy(status_bar_slots[8],"");
+ suggestion_key = 255;
+ suggestion_activate = NULL;
+
+ if (total_weight==0 || suggestions==NULL) {
+ /* zero suggestions */
+ show_suggestion("");
+ return;
+ }
+
+ weight = total_weight;
+ if (strlen(previous) && displaytime > 0.0)
+ weight+=50;
+ value = rand() % weight;
+ ptr = suggestions;
+ while (ptr) {
+ running += ptr->weight;
+ if (strcmp(ptr->string, previous)==0 && displaytime > 0.0)
+ running += 50;
+ if (running > value) {
+ if (ptr->keystring)
+ strncpy(status_bar_slots[8],ptr->keystring, 40);
+ suggestion_key = ptr->key;
+ suggestion_activate = ptr->func;
+ show_suggestion(ptr->string);
+ if (strcmp(ptr->string, previous)) {
+ displaytime = 30.0;
+ strcpy(previous, ptr->string);
+ }
+ return;
+ }
+ ptr = ptr->next;
+ }
+ show_suggestion("");
+ memset(previous, 0, sizeof(previous));
+ displaytime = -1.0;
+}
+
+void print_all_suggestions(void)
+{
+ struct suggestion *ptr;
+
+ for (ptr = suggestions; ptr; ptr = ptr->next)
+ printf("\n%s\n", ptr->string);
+}
diff --git a/urbnum.c b/urbnum.c
new file mode 100644
index 0000000..b413b91
--- /dev/null
+++ b/urbnum.c
@@ -0,0 +1,225 @@
+/*
+ * Copyright 2007, Intel Corporation
+ *
+ * This file is part of PowerTOP
+ *
+ * This program file 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; version 2 of the License.
+ *
+ * This program 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 program in a file named COPYING; if not, write to the
+ * Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301 USA
+ *
+ * Authors:
+ * Arjan van de Ven <arjan@linux.intel.com>
+ */
+
+#include <unistd.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <stdint.h>
+#include <sys/types.h>
+#include <dirent.h>
+#include <assert.h>
+
+#include "powertop.h"
+
+struct device_data;
+
+struct device_data {
+ struct device_data *next;
+ char pathname[4096];
+ char human_name[4096];
+ uint64_t urbs, active, connected;
+ uint64_t previous_urbs, previous_active, previous_connected;
+ int controller;
+};
+
+
+static struct device_data *devices;
+
+static void cachunk_urbs(void)
+{
+ struct device_data *ptr;
+ ptr = devices;
+ while (ptr) {
+ ptr->previous_urbs = ptr->urbs;
+ ptr->previous_active = ptr->active;
+ ptr->previous_connected = ptr->connected;
+ ptr = ptr->next;
+ }
+}
+
+static void update_urbnum(char *path, uint64_t count, char *shortname)
+{
+ struct device_data *ptr;
+ FILE *file;
+ char fullpath[4096];
+ char name[4096], vendor[4096];
+ ptr = devices;
+
+ while (ptr) {
+ if (strcmp(ptr->pathname, path)==0) {
+ ptr->urbs = count;
+ sprintf(fullpath, "%s/power/active_duration", path);
+ file = fopen(fullpath, "r");
+ if (!file)
+ return;
+ fgets(name, 4096, file);
+ ptr->active = strtoull(name, NULL, 10);
+ fclose(file);
+ sprintf(fullpath, "%s/power/connected_duration", path);
+ file = fopen(fullpath, "r");
+ if (!file)
+ return;
+ fgets(name, 4096, file);
+ ptr->connected = strtoull(name, NULL, 10);
+ fclose(file);
+
+ return;
+ }
+ ptr = ptr->next;
+ }
+ /* no luck, new one */
+ ptr = malloc(sizeof(struct device_data));
+ assert(ptr!=0);
+ memset(ptr, 0, sizeof(struct device_data));
+ ptr->next = devices;
+ devices = ptr;
+ strcpy(ptr->pathname, path);
+ ptr->urbs = ptr->previous_urbs = count;
+ sprintf(fullpath, "%s/product", path);
+ file = fopen(fullpath, "r");
+ memset(name, 0, 4096);
+ if (file) {
+ fgets(name, 4096, file);
+ fclose(file);
+ }
+ sprintf(fullpath, "%s/manufacturer", path);
+ file = fopen(fullpath, "r");
+ memset(vendor, 0, 4096);
+ if (file) {
+ fgets(vendor, 4096, file);
+ fclose(file);
+ }
+
+ if (strlen(name)>0 && name[strlen(name)-1]=='\n')
+ name[strlen(name)-1]=0;
+ if (strlen(vendor)>0 && vendor[strlen(vendor)-1]=='\n')
+ vendor[strlen(vendor)-1]=0;
+ /* some devices have bogus names */
+ if (strlen(name)<4)
+ strcpy(ptr->human_name, path);
+ else
+ sprintf(ptr->human_name, _("USB device %4s : %s (%s)"), shortname, name, vendor);
+
+ if (strstr(ptr->human_name, "Host Controller"))
+ ptr->controller = 1;
+
+}
+
+void count_usb_urbs(void)
+{
+ DIR *dir;
+ struct dirent *dirent;
+ FILE *file;
+ char filename[PATH_MAX];
+ char pathname[PATH_MAX];
+ char buffer[4096];
+ struct device_data *dev;
+ char linkto[PATH_MAX];
+
+ memset(linkto, 0, sizeof(linkto));
+
+ dir = opendir("/sys/bus/usb/devices");
+ if (!dir)
+ return;
+
+ cachunk_urbs();
+ while ((dirent = readdir(dir))) {
+ if (dirent->d_name[0]=='.')
+ continue;
+
+ sprintf(pathname, "/sys/bus/usb/devices/%s", dirent->d_name);
+ sprintf(filename, "%s/urbnum", pathname);
+ file = fopen(filename, "r");
+ if (!file)
+ continue;
+
+ memset(buffer, 0, 4096);
+ fgets(buffer, 4095, file);
+ update_urbnum(pathname, strtoull(buffer, NULL, 10), dirent->d_name);
+ fclose(file);
+ }
+
+ closedir(dir);
+
+ dev = devices;
+ while (dev) {
+ if (dev->urbs != dev->previous_urbs) {
+ push_line(dev->human_name, dev->urbs - dev->previous_urbs);
+ }
+ dev = dev->next;
+ }
+}
+
+
+void display_usb_activity(void)
+{
+ struct device_data *dev;
+ printf("\n");
+ printf("%s\n", _("Recent USB suspend statistics"));
+ printf("%s\n", _("Active Device name"));
+ dev = devices;
+ while (dev) {
+ printf("%5.1f%%\t%s\n", 100.0*(dev->active - dev->previous_active) /
+ (0.00001 + dev->connected - dev->previous_connected), dev->human_name);
+ dev = dev->next;
+ }
+
+}
+
+void usb_activity_hint(void)
+{
+ int total_active = 0;
+ int pick;
+ struct device_data *dev;
+ dev = devices;
+ while (dev) {
+ if (dev->active-1 > dev->previous_active && !dev->controller)
+ total_active++;
+ dev = dev->next;
+ }
+ if (!total_active)
+ return;
+
+ pick = rand() % total_active;
+ total_active = 0;
+ dev = devices;
+ while (dev) {
+ if (dev->active-1 > dev->previous_active && !dev->controller) {
+ if (total_active == pick) {
+ char usb_hint[8000];
+ memset(usb_hint, 0, sizeof(usb_hint));
+ sprintf(usb_hint, _("A USB device is active %4.1f%% of the time:\n%s"),
+ 100.0*(dev->active - dev->previous_active) /
+ (0.00001 + dev->connected - dev->previous_connected),
+ dev->human_name);
+ add_suggestion(usb_hint,
+ 1, 'U', _(" U - Enable USB suspend "), activate_usb_autosuspend);
+ }
+ total_active++;
+ }
+ dev = dev->next;
+ }
+
+}
diff --git a/usb.c b/usb.c
new file mode 100644
index 0000000..f3a1bef
--- /dev/null
+++ b/usb.c
@@ -0,0 +1,121 @@
+/*
+ * Copyright 2007, Intel Corporation
+ *
+ * This file is part of PowerTOP
+ *
+ * This program file 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; version 2 of the License.
+ *
+ * This program 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 program in a file named COPYING; if not, write to the
+ * Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301 USA
+ *
+ * Authors:
+ * Arjan van de Ven <arjan@linux.intel.com>
+ */
+
+#include <unistd.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <stdint.h>
+#include <sys/types.h>
+#include <dirent.h>
+
+#include "powertop.h"
+
+void activate_usb_autosuspend(void)
+{
+ DIR *dir;
+ struct dirent *dirent;
+ FILE *file;
+ char filename[PATH_MAX];
+ int len;
+ char linkto[PATH_MAX];
+
+ dir = opendir("/sys/bus/usb/devices");
+ if (!dir)
+ return;
+
+ while ((dirent = readdir(dir))) {
+ if (dirent->d_name[0]=='.')
+ continue;
+
+ /* skip usb input devices */
+ sprintf(filename, "/sys/bus/usb/devices/%s/driver", dirent->d_name);
+ memset(linkto, 0, sizeof(linkto));
+ len = readlink(filename, linkto, sizeof(link) - 1);
+ if (strstr(linkto, "usbhid"))
+ continue;
+
+ sprintf(filename, "/sys/bus/usb/devices/%s/power/control", dirent->d_name);
+ file = fopen(filename, "w");
+ if (!file)
+ continue;
+ fprintf(file, "auto\n");
+ fclose(file);
+ }
+
+ closedir(dir);
+}
+
+void suggest_usb_autosuspend(void)
+{
+ DIR *dir;
+ struct dirent *dirent;
+ FILE *file;
+ char filename[PATH_MAX];
+ char line[1024];
+ int len;
+ char linkto[PATH_MAX];
+ int need_hint = 0;
+
+ memset(linkto, 0, sizeof(linkto));
+
+ dir = opendir("/sys/bus/usb/devices");
+ if (!dir)
+ return;
+
+ while ((dirent = readdir(dir))) {
+ if (dirent->d_name[0]=='.')
+ continue;
+
+ /* skip usb input devices */
+ sprintf(filename, "/sys/bus/usb/devices/%s/driver", dirent->d_name);
+ len = readlink(filename, linkto, sizeof(link) - 1);
+ if (strstr(linkto, "usbhid"))
+ continue;
+
+ sprintf(filename, "/sys/bus/usb/devices/%s/power/control", dirent->d_name);
+ file = fopen(filename, "r");
+ if (!file)
+ continue;
+ memset(line, 0, 1024);
+ if (fgets(line, 1023,file)==NULL) {
+ fclose(file);
+ continue;
+ }
+ if (strstr(line, "on"))
+ need_hint = 1;
+
+ fclose(file);
+
+
+ }
+
+ closedir(dir);
+
+ if (need_hint) {
+ add_suggestion(_("Suggestion: Enable USB autosuspend for non-input devices by pressing the U key\n"
+ ),
+ 45, 'U', _(" U - Enable USB suspend "), activate_usb_autosuspend);
+ }
+}
diff --git a/wifi-new.c b/wifi-new.c
new file mode 100644
index 0000000..cf311b9
--- /dev/null
+++ b/wifi-new.c
@@ -0,0 +1,205 @@
+/*
+ * Copyright 2007, Intel Corporation
+ * Copyright 2009 Johannes Berg <johannes@sipsolutions.net>
+ *
+ * This file is part of PowerTOP
+ *
+ * This program file 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; version 2 of the License.
+ *
+ * This program 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 program in a file named COPYING; if not, write to the
+ * Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301 USA
+ *
+ * Authors:
+ * Arjan van de Ven <arjan@linux.intel.com>
+ * Johannes Berg <johannes@sipsolutions.net>
+ */
+
+#include <unistd.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <stdbool.h>
+#include <string.h>
+#include <stdint.h>
+#include <sys/types.h>
+#include <dirent.h>
+#include <linux/types.h>
+#include <linux/sockios.h>
+#include <sys/ioctl.h>
+/* satisfy weird wireless.h include dependencies */
+#include <sys/socket.h>
+#include <linux/if.h>
+#include <linux/wireless.h>
+
+#include "powertop.h"
+
+static int wext_sock = -1;
+static char wireless_nic[IFNAMSIZ + 1] = {0};
+static bool ps_not_working = false;
+
+static bool check_wireless_unused(void)
+{
+ struct iwreq wrq;
+ char ssid[34] = {0}; /* wext sometimes NUL-terminates */
+
+ memset(&wrq, 0, sizeof(wrq));
+ strncpy(wrq.ifr_name, wireless_nic, sizeof(wrq.ifr_name));
+
+ /* get mode -- PS only available in STA mode */
+ if (ioctl(wext_sock, SIOCGIWMODE, &wrq) < 0)
+ return false;
+ if (wrq.u.mode != IW_MODE_INFRA)
+ return false;
+
+ wrq.u.essid.pointer = ssid;
+ wrq.u.essid.length = sizeof(ssid);
+ if (ioctl(wext_sock, SIOCGIWESSID, &wrq) < 0)
+ return false;
+
+ /* no SSID, so can't be connected */
+ if (!wrq.u.essid.flags)
+ return true;
+
+ if (ioctl(wext_sock, SIOCGIWAP, &wrq) < 0)
+ return false;
+
+ /* no AP -- not connected */
+ if (memcmp(wrq.u.ap_addr.sa_data, "\0\0\0\0\0\0", 6) == 0)
+ return true;
+
+ return false;
+}
+
+static void activate_down_suggestion(void)
+{
+ struct ifreq ifr;
+ int ret;
+
+ strncpy(ifr.ifr_name, wireless_nic, sizeof(ifr.ifr_name));
+
+ /* get flags */
+ ret = ioctl(wext_sock, SIOCGIFFLAGS, &ifr);
+ if (ret < 0)
+ return;
+ ifr.ifr_flags &= ~IFF_UP;
+
+ ioctl(wext_sock, SIOCSIFFLAGS, &ifr);
+}
+
+static int check_wireless_powersave(void)
+{
+ struct iwreq wrq;
+
+ if (ps_not_working)
+ return false;
+
+ memset(&wrq, 0, sizeof(wrq));
+ strncpy(wrq.ifr_name, wireless_nic, sizeof(wrq.ifr_name));
+
+ /* get powersave -- if supported */
+ if (ioctl(wext_sock, SIOCGIWPOWER, &wrq) < 0) {
+ ps_not_working = 1;
+ return false;
+ }
+
+ return wrq.u.param.disabled;
+}
+
+static void activate_wireless_suggestion(void)
+{
+ struct iwreq wrq;
+
+ memset(&wrq, 0, sizeof(wrq));
+ strncpy(wrq.ifr_name, wireless_nic, sizeof(wrq.ifr_name));
+
+ wrq.u.param.disabled = false;
+ wrq.u.param.flags = IW_POWER_ON | IW_POWER_TIMEOUT;
+ wrq.u.param.value = 500*1000; /* 500 ms */
+ again:
+ /* set powersave -- if supported */
+ if (ioctl(wext_sock, SIOCSIWPOWER, &wrq) == 0)
+ return;
+
+ /* maybe timeout is not supported? */
+ if (wrq.u.param.flags & IW_POWER_TIMEOUT) {
+ wrq.u.param.flags = IW_POWER_ON;
+ goto again;
+ }
+
+ ps_not_working = true;
+}
+
+static void find_wireless_nic(void)
+{
+ DIR *net;
+ struct dirent *ent;
+ struct ifreq ifr;
+ struct iwreq wrq;
+ int ret;
+
+ memset(&ifr, 0, sizeof(struct ifreq));
+ memset(&wrq, 0, sizeof(wrq));
+
+ net = opendir("/sys/class/net/");
+ if (!net)
+ return;
+
+ while ((ent = readdir(net))) {
+ strncpy(ifr.ifr_name, ent->d_name, sizeof(ifr.ifr_name));
+ strncpy(wrq.ifr_name, ent->d_name, sizeof(wrq.ifr_name));
+
+ /* Check if the interface is up */
+ ret = ioctl(wext_sock, SIOCGIFFLAGS, &ifr);
+ if (ret < 0)
+ continue;
+ if (!(ifr.ifr_flags & (IFF_UP | IFF_RUNNING)))
+ continue;
+
+ /* and a wireless interface (that we handle) */
+ ret = ioctl(wext_sock, SIOCGIWNAME, &wrq);
+ if (ret < 0)
+ continue;
+
+ strcpy(wireless_nic, "wlan0");
+ break;
+ }
+
+ closedir(net);
+}
+
+void suggest_wifi_new_powersave(void)
+{
+ char sug[1024];
+
+ if (wext_sock == -1) {
+ wext_sock = socket(AF_INET, SOCK_DGRAM, 0);
+ if (wext_sock < 0)
+ return;
+ }
+
+ if (strlen(wireless_nic) == 0)
+ find_wireless_nic();
+
+ if (strlen(wireless_nic) == 0)
+ return;
+
+ if (check_wireless_unused()) {
+ sprintf(sug, _("Suggestion: Disable the unused WIFI radio by setting the interface down:\n "
+ "ifconfig %s down\n"), wireless_nic);
+ add_suggestion(sug, 60, 'D', _(" D - disable wireless "), activate_down_suggestion);
+ } else if (check_wireless_powersave()) {
+ sprintf(sug, _("Suggestion: Enable wireless power saving mode by executing the following command:\n "
+ " iwconfig %s power timeout 500ms\n"
+ "This will sacrifice network performance slightly to save power."), wireless_nic);
+ add_suggestion(sug, 20, 'W', _(" W - Enable Wireless power saving "), activate_wireless_suggestion);
+ }
+}
diff --git a/wireless.c b/wireless.c
new file mode 100644
index 0000000..ae6be96
--- /dev/null
+++ b/wireless.c
@@ -0,0 +1,320 @@
+/*
+ * Copyright 2007, Intel Corporation
+ *
+ * This file is part of PowerTOP
+ *
+ * This program file 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; version 2 of the License.
+ *
+ * This program 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 program in a file named COPYING; if not, write to the
+ * Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301 USA
+ *
+ * Authors:
+ * Arjan van de Ven <arjan@linux.intel.com>
+ */
+
+#include <unistd.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <stdint.h>
+#include <sys/types.h>
+#include <dirent.h>
+#include <linux/types.h>
+#include <net/if.h>
+#include <linux/sockios.h>
+#include <sys/ioctl.h>
+
+/* work around a bug in debian -- it exposes kernel internal types to userspace */
+#define u64 __u64
+#define u32 __u32
+#define u16 __u16
+#define u8 __u8
+#include <linux/ethtool.h>
+#undef u64
+#undef u32
+#undef u16
+#undef u8
+
+
+
+#include "powertop.h"
+
+
+static char wireless_nic[32];
+static char rfkill_path[PATH_MAX];
+static char powersave_path[PATH_MAX];
+
+static int rfkill_enabled(void)
+{
+ FILE *file;
+ char val;
+ if (strlen(rfkill_path)<2)
+ return 0;
+ if (access(rfkill_path, W_OK))
+ return 0;
+
+ file = fopen(rfkill_path, "r");
+ if (!file)
+ return 0;
+ val = fgetc(file);
+ fclose(file);
+ if (val != '0') /* already rfkill'd */
+ return 1;
+ return 0;
+}
+
+int check_unused_wiresless_up(void)
+{
+ FILE *file;
+ char val;
+ char line[1024];
+ if (strlen(rfkill_path)<2)
+ return 0;
+ if (access(rfkill_path, W_OK))
+ return 0;
+
+ file = fopen(rfkill_path, "r");
+ if (!file)
+ return 0;
+ val = fgetc(file);
+ fclose(file);
+ if (val != '0') /* already rfkill'd */
+ return -1;
+
+ sprintf(line,"iwconfig %s 2> /dev/null", wireless_nic);
+ file = popen(line, "r");
+ if (!file)
+ return 0;
+ while (!feof(file)) {
+ memset(line, 0, 1024);
+ if (fgets(line, 1023, file) == 0)
+ break;
+ if (strstr(line, "Mode:Managed") && strstr(line,"Access Point: Not-Associated")) {
+ pclose(file);
+ return 1;
+ }
+ }
+ pclose(file);
+ return 0;
+}
+
+
+static int need_wireless_suggest(char *iface)
+{
+ FILE *file;
+ char line[1024];
+ int ret = 0;
+
+ if (rfkill_enabled())
+ return 0;
+
+ sprintf(line, "/sbin/iwpriv %s get_power 2> /dev/null", iface);
+ file = popen(line, "r");
+ if (!file)
+ return 0;
+ while (!feof(file)) {
+ memset(line, 0, 1024);
+ if (fgets(line, 1023, file)==NULL)
+ break;
+ if (strstr(line, "Power save level: 6 (AC)")) {
+ ret = 1;
+ break;
+ }
+ }
+ pclose(file);
+ return ret;
+}
+
+
+static int need_wireless_suggest_new(void)
+{
+ FILE *file;
+ char val;
+ if (strlen(powersave_path)<2)
+ return 0;
+ if (access(powersave_path, W_OK))
+ return 0;
+
+ if (rfkill_enabled())
+ return 0;
+
+ file = fopen(powersave_path, "r");
+ if (!file)
+ return 0;
+ val = fgetc(file);
+ fclose(file);
+ if (val <= '5' && val >= '0') /* already in powersave */
+ return 0;
+
+ return 1;
+}
+
+void find_4965(void)
+{
+ static int tried_4965 = 0;
+ DIR *dir;
+ struct dirent *dirent;
+ char pathname[PATH_MAX];
+
+ if (tried_4965++)
+ return;
+
+ dir = opendir("/sys/bus/pci/drivers/iwl4965");
+ while (dir && (dirent = readdir(dir))) {
+ if (dirent->d_name[0]=='.')
+ continue;
+ sprintf(pathname, "/sys/bus/pci/drivers/iwl4965/%s/power_level", dirent->d_name);
+ if (!access(pathname, W_OK))
+ strcpy(powersave_path, pathname);
+ }
+ if (dir)
+ closedir(dir);
+ dir = opendir("/sys/bus/pci/drivers/iwl3945");
+ if (!dir)
+ return;
+ while ((dirent = readdir(dir))) {
+ if (dirent->d_name[0]=='.')
+ continue;
+ sprintf(pathname, "/sys/bus/pci/drivers/iwl3945/%s/power_level", dirent->d_name);
+ if (!access(pathname, W_OK))
+ strcpy(powersave_path, pathname);
+ }
+
+ closedir(dir);
+
+}
+
+
+void find_wireless_nic(void)
+{
+ static int found = 0;
+ FILE *file;
+ int sock;
+ struct ifreq ifr;
+ struct ethtool_value ethtool;
+ struct ethtool_drvinfo driver;
+ int ret;
+
+ if (found++)
+ return;
+
+ wireless_nic[0] = 0;
+ rfkill_path[0] = 0;
+ powersave_path[0] = 0;
+
+ strcpy(wireless_nic, "wlan0");
+
+ file = popen("/sbin/iwpriv -a 2> /dev/null", "r");
+ if (!file)
+ return;
+ while (!feof(file)) {
+ char line[1024];
+ memset(line, 0, 1024);
+ if (fgets(line, 1023, file)==NULL)
+ break;
+ if (strstr(line, "get_power:Power save level")) {
+ char *c;
+ c = strchr(line, ' ');
+ if (c) *c = 0;
+ strcpy(wireless_nic, line);
+ }
+ if (strstr(line, "wlan0:"))
+ strcpy(wireless_nic, "wlan0");
+ }
+ pclose(file);
+
+
+ if (strlen(wireless_nic)==0)
+ return;
+
+
+ memset(&ifr, 0, sizeof(struct ifreq));
+ memset(&ethtool, 0, sizeof(struct ethtool_value));
+
+ sock = socket(AF_INET, SOCK_DGRAM, 0);
+ if (sock<0)
+ return;
+
+ strcpy(ifr.ifr_name, wireless_nic);
+
+ /* Check if the interface is up */
+ ret = ioctl(sock, SIOCGIFFLAGS, &ifr);
+ if (ret<0) {
+ close(sock);
+ return;
+ }
+
+ memset(&driver, 0, sizeof(driver));
+ driver.cmd = ETHTOOL_GDRVINFO;
+ ifr.ifr_data = (void*) &driver;
+ ret = ioctl(sock, SIOCETHTOOL, &ifr);
+
+ sprintf(rfkill_path,"/sys/bus/pci/devices/%s/rfkill/rfkill0/state", driver.bus_info);
+ sprintf(powersave_path,"/sys/bus/pci/devices/%s/power_level", driver.bus_info);
+ close(sock);
+}
+
+void activate_wireless_suggestion(void)
+{
+ char line[1024];
+ sprintf(line, "/sbin/iwpriv %s set_power 5 2> /dev/null", wireless_nic);
+ system(line);
+}
+void activate_wireless_suggestion_new(void)
+{
+ FILE *file;
+ file = fopen(powersave_path, "w");
+ if (!file)
+ return;
+ fprintf(file,"1\n");
+ fclose(file);
+}
+
+void activate_rfkill_suggestion(void)
+{
+ FILE *file;
+ file = fopen(rfkill_path, "w");
+ if (!file)
+ return;
+ fprintf(file,"1\n");
+ fclose(file);
+}
+void suggest_wireless_powersave(void)
+{
+ char sug[1024];
+ int ret;
+
+ if (strlen(wireless_nic)==0)
+ find_wireless_nic();
+ find_4965();
+ ret = check_unused_wiresless_up();
+
+ if (ret >= 0 && need_wireless_suggest(wireless_nic)) {
+ sprintf(sug, _("Suggestion: Enable wireless power saving mode by executing the following command:\n "
+ " iwpriv %s set_power 5 \n"
+ "This will sacrifice network performance slightly to save power."), wireless_nic);
+ add_suggestion(sug, 20, 'W', _(" W - Enable wireless power saving "), activate_wireless_suggestion);
+ }
+ if (ret >= 0 && need_wireless_suggest_new()) {
+ sprintf(sug, _("Suggestion: Enable wireless power saving mode by executing the following command:\n "
+ " echo 5 > %s \n"
+ "This will sacrifice network performance slightly to save power."), powersave_path);
+ add_suggestion(sug, 20, 'W', _(" W - Enable wireless power saving "), activate_wireless_suggestion_new);
+ }
+ if (ret>0) {
+ sprintf(sug, _("Suggestion: Disable the unused WIFI radio by executing the following command:\n "
+ " echo 1 > %s \n"), rfkill_path);
+ add_suggestion(sug, 60, 'I', _(" I - disable WIFI Radio "), activate_rfkill_suggestion);
+
+ }
+}
diff --git a/xrandr.c b/xrandr.c
new file mode 100644
index 0000000..3191c22
--- /dev/null
+++ b/xrandr.c
@@ -0,0 +1,82 @@
+/*
+ * Copyright 2007, Intel Corporation
+ *
+ * This file is part of PowerTOP
+ *
+ * This program file 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; version 2 of the License.
+ *
+ * This program 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 program in a file named COPYING; if not, write to the
+ * Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301 USA
+ *
+ * Authors:
+ * Arjan van de Ven <arjan@linux.intel.com>
+ */
+
+#include <unistd.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <stdint.h>
+#include <sys/types.h>
+#include <dirent.h>
+
+#include "powertop.h"
+
+int has_no_xrandr;
+
+static void activate_noTV(void)
+{
+ system("xrandr --auto &> /dev/null");
+ system("xrandr --output TV --off &> /dev/null");
+}
+
+void suggest_xrandr_TV_off(void)
+{
+ FILE *file;
+ int has_tv = 0;
+ int has_tv_active = 0;
+ char line[1024];
+
+ if (has_no_xrandr)
+ return;
+
+ memset(line, 0, 1024);
+ file = popen("xrandr 2> /dev/null", "r");
+ if (!file || feof(file)) {
+ has_no_xrandr = 1;
+ return;
+ }
+ while (!feof(file)) {
+ if (fgets(line, 1024, file)==NULL)
+ break;
+ if (line[0]!=' ') {
+ if (line[0]=='T' && line[1]=='V' && line[2]==' ')
+ has_tv = 1;
+ else
+ has_tv = 0;
+ } else {
+ if (strchr(line,'*') && has_tv)
+ has_tv_active = 1;
+ }
+
+ }
+ pclose(file);
+ if (has_tv_active)
+ add_suggestion(_("Suggestion: disable TV out via: \n"
+ " xrandr --output TV --off \n"
+ "or press the V key."),
+ 35, 'V', _(" V - Disable TV out "), activate_noTV);
+ /* check this only once if no suggestion needed */
+ else
+ has_no_xrandr = 1;
+}