Imported Upstream version 2.5 upstream upstream/2.5
authorPatrick McCarty <patrick.mccarty@linux.intel.com>
Wed, 4 Dec 2013 05:26:33 +0000 (21:26 -0800)
committerPatrick McCarty <patrick.mccarty@linux.intel.com>
Wed, 4 Dec 2013 05:26:33 +0000 (21:26 -0800)
81 files changed:
Android.mk
Makefile.in
README
aclocal.m4
configure
configure.ac
doc/Makefile.in
doc/powertop.8
po/ca.gmo
po/ca.po
po/cs_CZ.gmo
po/cs_CZ.po
po/de_DE.gmo
po/de_DE.po
po/en_GB.gmo
po/en_GB.po
po/en_US.gmo
po/en_US.po
po/es_ES.gmo
po/es_ES.po
po/hu_HU.gmo
po/hu_HU.po
po/id_ID.gmo
po/id_ID.po
po/nl_NL.gmo
po/nl_NL.po
po/powertop.pot
po/zh_TW.gmo
po/zh_TW.po
src/Makefile.am
src/Makefile.in
src/calibrate/calibrate.cpp
src/cpu/cpu.cpp
src/cpu/cpu.h
src/cpu/cpu_rapl_device.cpp [new file with mode: 0644]
src/cpu/cpu_rapl_device.h [new file with mode: 0644]
src/cpu/cpudevice.cpp
src/cpu/cpudevice.h
src/cpu/dram_rapl_device.cpp [new file with mode: 0644]
src/cpu/dram_rapl_device.h [new file with mode: 0644]
src/cpu/intel_cpus.cpp
src/cpu/intel_cpus.h
src/cpu/rapl/rapl_interface.cpp [new file with mode: 0644]
src/cpu/rapl/rapl_interface.h [new file with mode: 0644]
src/css.h
src/devices/ahci.cpp
src/devices/ahci.h
src/devices/alsa.cpp
src/devices/alsa.h
src/devices/backlight.cpp
src/devices/backlight.h
src/devices/gpu_rapl_device.cpp [new file with mode: 0644]
src/devices/gpu_rapl_device.h [moved from src/measurement/power_supply.h with 53% similarity]
src/devices/i915-gpu.cpp
src/devices/i915-gpu.h
src/devices/network.cpp
src/devices/rfkill.cpp
src/devices/usb.cpp
src/lib.cpp
src/lib.h
src/main.cpp
src/measurement/measurement.cpp
src/measurement/measurement.h
src/measurement/power_supply.cpp [deleted file]
src/measurement/sysfs.cpp
src/parameters/parameters.cpp
src/perf/perf.cpp
src/perf/perf_bundle.cpp
src/powertop.css
src/process/do_process.cpp
src/tuning/ethernet.cpp
src/tuning/tuning.cpp
src/tuning/tuning.h
src/tuning/tuningusb.cpp
traceevent/Makefile.in
traceevent/event-parse.c
traceevent/event-parse.h
traceevent/event-utils.h
traceevent/parse-filter.c
traceevent/parse-utils.c
traceevent/trace-seq.c

index a52ecfd..cf13fe8 100644 (file)
@@ -31,10 +31,13 @@ LOCAL_SRC_FILES += \
        src/cpu/cpu_core.cpp \
        src/cpu/cpu_package.cpp \
        src/cpu/abstract_cpu.cpp \
+       src/cpu/cpu_rapl_device.cpp \
+       src/cpu/dram_rapl_device.cpp \
+       src/cpu/rapl/rapl_interface.cpp \
        src/measurement/measurement.cpp \
        src/measurement/acpi.cpp \
        src/measurement/extech.cpp \
-       src/measurement/power_supply.cpp \
+       src/measurement/sysfs.cpp \
        src/display.cpp \
        src/report.cpp \
        src/main.cpp \
@@ -62,6 +65,7 @@ LOCAL_SRC_FILES += \
        src/devices/backlight.cpp \
        src/devices/network.cpp \
        src/devices/device.cpp \
+       src/devices/gpu_rapl_device.cpp \
        src/devlist.cpp \
        src/calibrate/calibrate.cpp \
        src/lib.cpp \
index 3919626..e0b8c8c 100644 (file)
@@ -1,9 +1,8 @@
-# Makefile.in generated by automake 1.11.6 from Makefile.am.
+# Makefile.in generated by automake 1.13.4 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software
-# Foundation, Inc.
+# Copyright (C) 1994-2013 Free Software Foundation, Inc.
+
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
 
 @SET_MAKE@
 VPATH = @srcdir@
-am__make_dryrun = \
-  { \
-    am__dry=no; \
+am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__make_running_with_option = \
+  case $${target_option-} in \
+      ?) ;; \
+      *) echo "am__make_running_with_option: internal error: invalid" \
+              "target option '$${target_option-}' specified" >&2; \
+         exit 1;; \
+  esac; \
+  has_opt=no; \
+  sane_makeflags=$$MAKEFLAGS; \
+  if $(am__is_gnu_make); then \
+    sane_makeflags=$$MFLAGS; \
+  else \
     case $$MAKEFLAGS in \
       *\\[\ \  ]*) \
-        echo 'am--echo: ; @echo "AM"  OK' | $(MAKE) -f - 2>/dev/null \
-          | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
-      *) \
-        for am__flg in $$MAKEFLAGS; do \
-          case $$am__flg in \
-            *=*|--*) ;; \
-            *n*) am__dry=yes; break;; \
-          esac; \
-        done;; \
+        bs=\\; \
+        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+          | sed "s/$$bs$$bs[$$bs $$bs  ]*//g"`;; \
+    esac; \
+  fi; \
+  skip_next=no; \
+  strip_trailopt () \
+  { \
+    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+  }; \
+  for flg in $$sane_makeflags; do \
+    test $$skip_next = yes && { skip_next=no; continue; }; \
+    case $$flg in \
+      *=*|--*) continue;; \
+        -*I) strip_trailopt 'I'; skip_next=yes;; \
+      -*I?*) strip_trailopt 'I';; \
+        -*O) strip_trailopt 'O'; skip_next=yes;; \
+      -*O?*) strip_trailopt 'O';; \
+        -*l) strip_trailopt 'l'; skip_next=yes;; \
+      -*l?*) strip_trailopt 'l';; \
+      -[dEDm]) skip_next=yes;; \
+      -[JT]) skip_next=yes;; \
     esac; \
-    test $$am__dry = yes; \
-  }
+    case $$flg in \
+      *$$target_option*) has_opt=yes; break;; \
+    esac; \
+  done; \
+  test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
 pkgdatadir = $(datadir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
 pkglibdir = $(libdir)/@PACKAGE@
@@ -51,11 +78,11 @@ POST_UNINSTALL = :
 build_triplet = @build@
 host_triplet = @host@
 subdir = .
-DIST_COMMON = README $(am__configure_deps) $(srcdir)/Makefile.am \
-       $(srcdir)/Makefile.in $(srcdir)/config.h.in \
-       $(top_srcdir)/configure ABOUT-NLS COPYING INSTALL TODO ar-lib \
-       compile config.guess config.rpath config.sub depcomp \
-       install-sh ltmain.sh missing
+DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
+       $(top_srcdir)/configure $(am__configure_deps) \
+       $(srcdir)/config.h.in ABOUT-NLS COPYING INSTALL README TODO \
+       ar-lib compile config.guess config.rpath config.sub depcomp \
+       install-sh missing ltmain.sh
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/m4/gettext.m4 \
        $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
@@ -73,21 +100,28 @@ mkinstalldirs = $(install_sh) -d
 CONFIG_HEADER = config.h
 CONFIG_CLEAN_FILES =
 CONFIG_CLEAN_VPATH_FILES =
+AM_V_P = $(am__v_P_@AM_V@)
+am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
 AM_V_GEN = $(am__v_GEN_@AM_V@)
 am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
-am__v_GEN_0 = @echo "  GEN   " $@;
+am__v_GEN_0 = @echo "  GEN     " $@;
+am__v_GEN_1 = 
 AM_V_at = $(am__v_at_@AM_V@)
 am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
 am__v_at_0 = @
+am__v_at_1 = 
 SOURCES =
 DIST_SOURCES =
-RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
-       html-recursive info-recursive install-data-recursive \
-       install-dvi-recursive install-exec-recursive \
-       install-html-recursive install-info-recursive \
-       install-pdf-recursive install-ps-recursive install-recursive \
-       installcheck-recursive installdirs-recursive pdf-recursive \
-       ps-recursive uninstall-recursive
+RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \
+       ctags-recursive dvi-recursive html-recursive info-recursive \
+       install-data-recursive install-dvi-recursive \
+       install-exec-recursive install-html-recursive \
+       install-info-recursive install-pdf-recursive \
+       install-ps-recursive install-recursive installcheck-recursive \
+       installdirs-recursive pdf-recursive ps-recursive \
+       tags-recursive uninstall-recursive
 am__can_run_installinfo = \
   case $$AM_UPDATE_INFO_DIR in \
     n|no|NO) false;; \
@@ -95,11 +129,33 @@ am__can_run_installinfo = \
   esac
 RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive        \
   distclean-recursive maintainer-clean-recursive
-AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \
-       $(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \
-       distdir dist dist-all distcheck
+am__recursive_targets = \
+  $(RECURSIVE_TARGETS) \
+  $(RECURSIVE_CLEAN_TARGETS) \
+  $(am__extra_recursive_targets)
+AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \
+       cscope distdir dist dist-all distcheck
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) \
+       $(LISP)config.h.in
+# Read a list of newline-separated strings from the standard input,
+# and print each of them once, without duplicates.  Input order is
+# *not* preserved.
+am__uniquify_input = $(AWK) '\
+  BEGIN { nonempty = 0; } \
+  { items[$$0] = 1; nonempty = 1; } \
+  END { if (nonempty) { for (i in items) print i; }; } \
+'
+# Make sure the list of sources is unique.  This is necessary because,
+# e.g., the same source file might be shared among _SOURCES variables
+# for different programs/libraries.
+am__define_uniq_tagged_files = \
+  list='$(am__tagged_files)'; \
+  unique=`for i in $$list; do \
+    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+  done | $(am__uniquify_input)`
 ETAGS = etags
 CTAGS = ctags
+CSCOPE = cscope
 DIST_SUBDIRS = $(SUBDIRS)
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 distdir = $(PACKAGE)-$(VERSION)
@@ -110,6 +166,7 @@ am__remove_distdir = \
       && rm -rf "$(distdir)" \
       || { sleep 5 && rm -rf "$(distdir)"; }; \
   else :; fi
+am__post_remove_distdir = $(am__remove_distdir)
 am__relativize = \
   dir0=`pwd`; \
   sed_first='s,^\([^/]*\)/.*$$,\1,'; \
@@ -137,6 +194,7 @@ am__relativize = \
   reldir="$$dir2"
 DIST_ARCHIVES = $(distdir).tar.gz
 GZIP_ENV = --best
+DIST_TARGETS = dist-gzip
 distuninstallcheck_listfiles = find . -type f -print
 am__distuninstallcheck_listfiles = $(distuninstallcheck_listfiles) \
   | sed 's|^\./|$(prefix)/|' | grep -v '$(infodir)/dir$$'
@@ -354,22 +412,25 @@ distclean-libtool:
        -rm -f libtool config.lt
 
 # This directory's subdirectories are mostly independent; you can cd
-# into them and run `make' without going through this Makefile.
-# To change the values of `make' variables: instead of editing Makefiles,
-# (1) if the variable is set in `config.status', edit `config.status'
-#     (which will cause the Makefiles to be regenerated when you run `make');
-# (2) otherwise, pass the desired values on the `make' command line.
-$(RECURSIVE_TARGETS):
-       @fail= failcom='exit 1'; \
-       for f in x $$MAKEFLAGS; do \
-         case $$f in \
-           *=* | --[!k]*);; \
-           *k*) failcom='fail=yes';; \
-         esac; \
-       done; \
+# into them and run 'make' without going through this Makefile.
+# To change the values of 'make' variables: instead of editing Makefiles,
+# (1) if the variable is set in 'config.status', edit 'config.status'
+#     (which will cause the Makefiles to be regenerated when you run 'make');
+# (2) otherwise, pass the desired values on the 'make' command line.
+$(am__recursive_targets):
+       @fail=; \
+       if $(am__make_keepgoing); then \
+         failcom='fail=yes'; \
+       else \
+         failcom='exit 1'; \
+       fi; \
        dot_seen=no; \
        target=`echo $@ | sed s/-recursive//`; \
-       list='$(SUBDIRS)'; for subdir in $$list; do \
+       case "$@" in \
+         distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
+         *) list='$(SUBDIRS)' ;; \
+       esac; \
+       for subdir in $$list; do \
          echo "Making $$target in $$subdir"; \
          if test "$$subdir" = "."; then \
            dot_seen=yes; \
@@ -384,57 +445,12 @@ $(RECURSIVE_TARGETS):
          $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
        fi; test -z "$$fail"
 
-$(RECURSIVE_CLEAN_TARGETS):
-       @fail= failcom='exit 1'; \
-       for f in x $$MAKEFLAGS; do \
-         case $$f in \
-           *=* | --[!k]*);; \
-           *k*) failcom='fail=yes';; \
-         esac; \
-       done; \
-       dot_seen=no; \
-       case "$@" in \
-         distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
-         *) list='$(SUBDIRS)' ;; \
-       esac; \
-       rev=''; for subdir in $$list; do \
-         if test "$$subdir" = "."; then :; else \
-           rev="$$subdir $$rev"; \
-         fi; \
-       done; \
-       rev="$$rev ."; \
-       target=`echo $@ | sed s/-recursive//`; \
-       for subdir in $$rev; do \
-         echo "Making $$target in $$subdir"; \
-         if test "$$subdir" = "."; then \
-           local_target="$$target-am"; \
-         else \
-           local_target="$$target"; \
-         fi; \
-         ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
-         || eval $$failcom; \
-       done && test -z "$$fail"
-tags-recursive:
-       list='$(SUBDIRS)'; for subdir in $$list; do \
-         test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
-       done
-ctags-recursive:
-       list='$(SUBDIRS)'; for subdir in $$list; do \
-         test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
-       done
+ID: $(am__tagged_files)
+       $(am__define_uniq_tagged_files); mkid -fID $$unique
+tags: tags-recursive
+TAGS: tags
 
-ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
-       list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
-       unique=`for i in $$list; do \
-           if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-         done | \
-         $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-             END { if (nonempty) { for (i in files) print i; }; }'`; \
-       mkid -fID $$unique
-tags: TAGS
-
-TAGS: tags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \
-               $(TAGS_FILES) $(LISP)
+tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
        set x; \
        here=`pwd`; \
        if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
@@ -450,12 +466,7 @@ TAGS: tags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \
              set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \
          fi; \
        done; \
-       list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \
-       unique=`for i in $$list; do \
-           if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-         done | \
-         $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-             END { if (nonempty) { for (i in files) print i; }; }'`; \
+       $(am__define_uniq_tagged_files); \
        shift; \
        if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
          test -n "$$unique" || unique=$$empty_fix; \
@@ -467,15 +478,11 @@ TAGS: tags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \
              $$unique; \
          fi; \
        fi
-ctags: CTAGS
-CTAGS: ctags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \
-               $(TAGS_FILES) $(LISP)
-       list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \
-       unique=`for i in $$list; do \
-           if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-         done | \
-         $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-             END { if (nonempty) { for (i in files) print i; }; }'`; \
+ctags: ctags-recursive
+
+CTAGS: ctags
+ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+       $(am__define_uniq_tagged_files); \
        test -z "$(CTAGS_ARGS)$$unique" \
          || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
             $$unique
@@ -484,9 +491,31 @@ GTAGS:
        here=`$(am__cd) $(top_builddir) && pwd` \
          && $(am__cd) $(top_srcdir) \
          && gtags -i $(GTAGS_ARGS) "$$here"
+cscope: cscope.files
+       test ! -s cscope.files \
+         || $(CSCOPE) -b -q $(AM_CSCOPEFLAGS) $(CSCOPEFLAGS) -i cscope.files $(CSCOPE_ARGS)
+clean-cscope:
+       -rm -f cscope.files
+cscope.files: clean-cscope cscopelist
+cscopelist: cscopelist-recursive
+
+cscopelist-am: $(am__tagged_files)
+       list='$(am__tagged_files)'; \
+       case "$(srcdir)" in \
+         [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+         *) sdir=$(subdir)/$(srcdir) ;; \
+       esac; \
+       for i in $$list; do \
+         if test -f "$$i"; then \
+           echo "$(subdir)/$$i"; \
+         else \
+           echo "$$sdir/$$i"; \
+         fi; \
+       done >> $(top_builddir)/cscope.files
 
 distclean-tags:
        -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+       -rm -f cscope.out cscope.in.out cscope.po.out cscope.files
 
 distdir: $(DISTFILES)
        $(am__remove_distdir)
@@ -554,40 +583,36 @@ distdir: $(DISTFILES)
        || chmod -R a+r "$(distdir)"
 dist-gzip: distdir
        tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
-       $(am__remove_distdir)
+       $(am__post_remove_distdir)
 
 dist-bzip2: distdir
        tardir=$(distdir) && $(am__tar) | BZIP2=$${BZIP2--9} bzip2 -c >$(distdir).tar.bz2
-       $(am__remove_distdir)
+       $(am__post_remove_distdir)
 
 dist-lzip: distdir
        tardir=$(distdir) && $(am__tar) | lzip -c $${LZIP_OPT--9} >$(distdir).tar.lz
-       $(am__remove_distdir)
-
-dist-lzma: distdir
-       tardir=$(distdir) && $(am__tar) | lzma -9 -c >$(distdir).tar.lzma
-       $(am__remove_distdir)
+       $(am__post_remove_distdir)
 
 dist-xz: distdir
        tardir=$(distdir) && $(am__tar) | XZ_OPT=$${XZ_OPT--e} xz -c >$(distdir).tar.xz
-       $(am__remove_distdir)
+       $(am__post_remove_distdir)
 
 dist-tarZ: distdir
        tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z
-       $(am__remove_distdir)
+       $(am__post_remove_distdir)
 
 dist-shar: distdir
        shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz
-       $(am__remove_distdir)
+       $(am__post_remove_distdir)
 
 dist-zip: distdir
        -rm -f $(distdir).zip
        zip -rq $(distdir).zip $(distdir)
-       $(am__remove_distdir)
+       $(am__post_remove_distdir)
 
-dist dist-all: distdir
-       tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
-       $(am__remove_distdir)
+dist dist-all:
+       $(MAKE) $(AM_MAKEFLAGS) $(DIST_TARGETS) am__post_remove_distdir='@:'
+       $(am__post_remove_distdir)
 
 # This target untars the dist file and tries a VPATH configuration.  Then
 # it guarantees that the distribution is self-contained by making another
@@ -598,8 +623,6 @@ distcheck: dist
          GZIP=$(GZIP_ENV) gzip -dc $(distdir).tar.gz | $(am__untar) ;;\
        *.tar.bz2*) \
          bzip2 -dc $(distdir).tar.bz2 | $(am__untar) ;;\
-       *.tar.lzma*) \
-         lzma -dc $(distdir).tar.lzma | $(am__untar) ;;\
        *.tar.lz*) \
          lzip -dc $(distdir).tar.lz | $(am__untar) ;;\
        *.tar.xz*) \
@@ -611,9 +634,9 @@ distcheck: dist
        *.zip*) \
          unzip $(distdir).zip ;;\
        esac
-       chmod -R a-w $(distdir); chmod u+w $(distdir)
-       mkdir $(distdir)/_build
-       mkdir $(distdir)/_inst
+       chmod -R a-w $(distdir)
+       chmod u+w $(distdir)
+       mkdir $(distdir)/_build $(distdir)/_inst
        chmod a-w $(distdir)
        test -d $(distdir)/_build || exit 0; \
        dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \
@@ -645,7 +668,7 @@ distcheck: dist
          && $(MAKE) $(AM_MAKEFLAGS) distcleancheck \
          && cd "$$am__cwd" \
          || exit 1
-       $(am__remove_distdir)
+       $(am__post_remove_distdir)
        @(echo "$(distdir) archives ready for distribution: "; \
          list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \
          sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x'
@@ -780,24 +803,24 @@ ps-am:
 
 uninstall-am:
 
-.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) all \
-       ctags-recursive install-am install-strip tags-recursive
-
-.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \
-       all all-am am--refresh check check-am clean clean-generic \
-       clean-libtool ctags ctags-recursive dist dist-all dist-bzip2 \
-       dist-gzip dist-lzip dist-lzma dist-shar dist-tarZ dist-xz \
-       dist-zip distcheck distclean distclean-generic distclean-hdr \
-       distclean-libtool distclean-tags distcleancheck distdir \
-       distuninstallcheck dvi dvi-am html html-am info info-am \
-       install install-am install-data install-data-am install-dvi \
-       install-dvi-am install-exec install-exec-am install-html \
-       install-html-am install-info install-info-am install-man \
-       install-pdf install-pdf-am install-ps install-ps-am \
-       install-strip installcheck installcheck-am installdirs \
-       installdirs-am maintainer-clean maintainer-clean-generic \
-       mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \
-       ps ps-am tags tags-recursive uninstall uninstall-am
+.MAKE: $(am__recursive_targets) all install-am install-strip
+
+.PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am \
+       am--refresh check check-am clean clean-cscope clean-generic \
+       clean-libtool cscope cscopelist-am ctags ctags-am dist \
+       dist-all dist-bzip2 dist-gzip dist-lzip dist-shar dist-tarZ \
+       dist-xz dist-zip distcheck distclean distclean-generic \
+       distclean-hdr distclean-libtool distclean-tags distcleancheck \
+       distdir distuninstallcheck dvi dvi-am html html-am info \
+       info-am install install-am install-data install-data-am \
+       install-dvi install-dvi-am install-exec install-exec-am \
+       install-html install-html-am install-info install-info-am \
+       install-man install-pdf install-pdf-am install-ps \
+       install-ps-am install-strip installcheck installcheck-am \
+       installdirs installdirs-am maintainer-clean \
+       maintainer-clean-generic mostlyclean mostlyclean-generic \
+       mostlyclean-libtool pdf pdf-am ps ps-am tags tags-am uninstall \
+       uninstall-am
 
 
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
diff --git a/README b/README
index 7e789e0..2961eba 100644 (file)
--- a/README
+++ b/README
@@ -43,7 +43,9 @@ CONFIG_PERF_COUNTERS
 CONFIG_TRACEPOINTS
 CONFIG_TRACING
 CONFIG_EVENT_POWER_TRACING_DEPRECATED
+CONFIG_X86_MSR
 ACPI_PROCFS_POWER
+CONFIG_DEBUG_FS
 
 The patches in the patches/ sub-directory are required for PowerTOP to function
 fully.
index e54e8f4..7045997 100644 (file)
@@ -1,8 +1,7 @@
-# generated automatically by aclocal 1.11.6 -*- Autoconf -*-
+# generated automatically by aclocal 1.13.4 -*- Autoconf -*-
+
+# Copyright (C) 1996-2013 Free Software Foundation, Inc.
 
-# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
-# 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation,
-# Inc.
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
 # even the implied warranty of MERCHANTABILITY or FITNESS FOR A
 # PARTICULAR PURPOSE.
 
+m4_ifndef([AC_CONFIG_MACRO_DIRS], [m4_defun([_AM_CONFIG_MACRO_DIRS], [])m4_defun([AC_CONFIG_MACRO_DIRS], [_AM_CONFIG_MACRO_DIRS($@)])])
 m4_ifndef([AC_AUTOCONF_VERSION],
   [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
-m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.68],,
-[m4_warning([this file was generated for autoconf 2.68.
+m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.69],,
+[m4_warning([this file was generated for autoconf 2.69.
 You have another version of autoconf.  It may work, but is not guaranteed to.
 If you have problems, you may need to regenerate the build system entirely.
-To do so, use the procedure documented by the package, typically `autoreconf'.])])
+To do so, use the procedure documented by the package, typically 'autoreconf'.])])
 
 # pkg.m4 - Macros to locate and utilise pkg-config.            -*- Autoconf -*-
 # serial 1 (pkg-config-0.24)
@@ -48,7 +48,8 @@ To do so, use the procedure documented by the package, typically `autoreconf'.])
 # ----------------------------------
 AC_DEFUN([PKG_PROG_PKG_CONFIG],
 [m4_pattern_forbid([^_?PKG_[A-Z_]+$])
-m4_pattern_allow([^PKG_CONFIG(_PATH)?$])
+m4_pattern_allow([^PKG_CONFIG(_(PATH|LIBDIR|SYSROOT_DIR|ALLOW_SYSTEM_(CFLAGS|LIBS)))?$])
+m4_pattern_allow([^PKG_CONFIG_(DISABLE_UNINSTALLED|TOP_BUILD_DIR|DEBUG_SPEW)$])
 AC_ARG_VAR([PKG_CONFIG], [path to pkg-config utility])
 AC_ARG_VAR([PKG_CONFIG_PATH], [directories to add to pkg-config's search path])
 AC_ARG_VAR([PKG_CONFIG_LIBDIR], [path overriding pkg-config's built-in search path])
@@ -94,7 +95,8 @@ m4_define([_PKG_CONFIG],
     pkg_cv_[]$1="$$1"
  elif test -n "$PKG_CONFIG"; then
     PKG_CHECK_EXISTS([$3],
-                     [pkg_cv_[]$1=`$PKG_CONFIG --[]$2 "$3" 2>/dev/null`],
+                     [pkg_cv_[]$1=`$PKG_CONFIG --[]$2 "$3" 2>/dev/null`
+                     test "x$?" != "x0" && pkg_failed=yes ],
                     [pkg_failed=yes])
  else
     pkg_failed=untried
@@ -142,9 +144,9 @@ if test $pkg_failed = yes; then
        AC_MSG_RESULT([no])
         _PKG_SHORT_ERRORS_SUPPORTED
         if test $_pkg_short_errors_supported = yes; then
-               $1[]_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors "$2" 2>&1`
+               $1[]_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "$2" 2>&1`
         else 
-               $1[]_PKG_ERRORS=`$PKG_CONFIG --print-errors "$2" 2>&1`
+               $1[]_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "$2" 2>&1`
         fi
        # Put the nasty error message in config.log where it belongs
        echo "$$1[]_PKG_ERRORS" >&AS_MESSAGE_LOG_FD
@@ -157,7 +159,7 @@ $$1_PKG_ERRORS
 Consider adjusting the PKG_CONFIG_PATH environment variable if you
 installed software in a non-standard prefix.
 
-_PKG_TEXT])
+_PKG_TEXT])[]dnl
         ])
 elif test $pkg_failed = untried; then
        AC_MSG_RESULT([no])
@@ -168,7 +170,7 @@ path to pkg-config.
 
 _PKG_TEXT
 
-To get pkg-config, see <http://pkg-config.freedesktop.org/>.])
+To get pkg-config, see <http://pkg-config.freedesktop.org/>.])[]dnl
         ])
 else
        $1[]_CFLAGS=$pkg_cv_[]$1[]_CFLAGS
@@ -178,25 +180,62 @@ else
 fi[]dnl
 ])# PKG_CHECK_MODULES
 
-# Copyright (C) 2002, 2003, 2005, 2006, 2007, 2008, 2011 Free Software
-# Foundation, Inc.
+
+# PKG_INSTALLDIR(DIRECTORY)
+# -------------------------
+# Substitutes the variable pkgconfigdir as the location where a module
+# should install pkg-config .pc files. By default the directory is
+# $libdir/pkgconfig, but the default can be changed by passing
+# DIRECTORY. The user can override through the --with-pkgconfigdir
+# parameter.
+AC_DEFUN([PKG_INSTALLDIR],
+[m4_pushdef([pkg_default], [m4_default([$1], ['${libdir}/pkgconfig'])])
+m4_pushdef([pkg_description],
+    [pkg-config installation directory @<:@]pkg_default[@:>@])
+AC_ARG_WITH([pkgconfigdir],
+    [AS_HELP_STRING([--with-pkgconfigdir], pkg_description)],,
+    [with_pkgconfigdir=]pkg_default)
+AC_SUBST([pkgconfigdir], [$with_pkgconfigdir])
+m4_popdef([pkg_default])
+m4_popdef([pkg_description])
+]) dnl PKG_INSTALLDIR
+
+
+# PKG_NOARCH_INSTALLDIR(DIRECTORY)
+# -------------------------
+# Substitutes the variable noarch_pkgconfigdir as the location where a
+# module should install arch-independent pkg-config .pc files. By
+# default the directory is $datadir/pkgconfig, but the default can be
+# changed by passing DIRECTORY. The user can override through the
+# --with-noarch-pkgconfigdir parameter.
+AC_DEFUN([PKG_NOARCH_INSTALLDIR],
+[m4_pushdef([pkg_default], [m4_default([$1], ['${datadir}/pkgconfig'])])
+m4_pushdef([pkg_description],
+    [pkg-config arch-independent installation directory @<:@]pkg_default[@:>@])
+AC_ARG_WITH([noarch-pkgconfigdir],
+    [AS_HELP_STRING([--with-noarch-pkgconfigdir], pkg_description)],,
+    [with_noarch_pkgconfigdir=]pkg_default)
+AC_SUBST([noarch_pkgconfigdir], [$with_noarch_pkgconfigdir])
+m4_popdef([pkg_default])
+m4_popdef([pkg_description])
+]) dnl PKG_NOARCH_INSTALLDIR
+
+# Copyright (C) 2002-2013 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
 
-# serial 1
-
 # AM_AUTOMAKE_VERSION(VERSION)
 # ----------------------------
 # Automake X.Y traces this macro to ensure aclocal.m4 has been
 # generated from the m4 files accompanying Automake X.Y.
 # (This private macro should not be called outside this file.)
 AC_DEFUN([AM_AUTOMAKE_VERSION],
-[am__api_version='1.11'
+[am__api_version='1.13'
 dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to
 dnl require some minimum version.  Point them to the right macro.
-m4_if([$1], [1.11.6], [],
+m4_if([$1], [1.13.4], [],
       [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl
 ])
 
@@ -212,19 +251,17 @@ m4_define([_AM_AUTOCONF_VERSION], [])
 # Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced.
 # This function is AC_REQUIREd by AM_INIT_AUTOMAKE.
 AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION],
-[AM_AUTOMAKE_VERSION([1.11.6])dnl
+[AM_AUTOMAKE_VERSION([1.13.4])dnl
 m4_ifndef([AC_AUTOCONF_VERSION],
   [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
 _AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))])
 
-# Copyright (C) 2011 Free Software Foundation, Inc.
+# Copyright (C) 2011-2013 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
 
-# serial 1
-
 # AM_PROG_AR([ACT-IF-FAIL])
 # -------------------------
 # Try to determine the archiver interface, and trigger the ar-lib wrapper
@@ -280,17 +317,15 @@ AC_SUBST([AR])dnl
 
 # AM_AUX_DIR_EXPAND                                         -*- Autoconf -*-
 
-# Copyright (C) 2001, 2003, 2005, 2011 Free Software Foundation, Inc.
+# Copyright (C) 2001-2013 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
 
-# serial 1
-
 # For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets
-# $ac_aux_dir to `$srcdir/foo'.  In other projects, it is set to
-# `$srcdir', `$srcdir/..', or `$srcdir/../..'.
+# $ac_aux_dir to '$srcdir/foo'.  In other projects, it is set to
+# '$srcdir', '$srcdir/..', or '$srcdir/../..'.
 #
 # Of course, Automake must honor this variable whenever it calls a
 # tool from the auxiliary directory.  The problem is that $srcdir (and
@@ -309,7 +344,7 @@ AC_SUBST([AR])dnl
 #
 # The reason of the latter failure is that $top_srcdir and $ac_aux_dir
 # are both prefixed by $srcdir.  In an in-source build this is usually
-# harmless because $srcdir is `.', but things will broke when you
+# harmless because $srcdir is '.', but things will broke when you
 # start a VPATH build or use an absolute $srcdir.
 #
 # So we could use something similar to $top_srcdir/$ac_aux_dir/missing,
@@ -335,22 +370,19 @@ am_aux_dir=`cd $ac_aux_dir && pwd`
 
 # AM_CONDITIONAL                                            -*- Autoconf -*-
 
-# Copyright (C) 1997, 2000, 2001, 2003, 2004, 2005, 2006, 2008
-# Free Software Foundation, Inc.
+# Copyright (C) 1997-2013 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
 
-# serial 9
-
 # AM_CONDITIONAL(NAME, SHELL-CONDITION)
 # -------------------------------------
 # Define a conditional.
 AC_DEFUN([AM_CONDITIONAL],
-[AC_PREREQ(2.52)dnl
ifelse([$1], [TRUE],  [AC_FATAL([$0: invalid condition: $1])],
-       [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl
+[AC_PREREQ([2.52])dnl
m4_if([$1], [TRUE],  [AC_FATAL([$0: invalid condition: $1])],
+       [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl
 AC_SUBST([$1_TRUE])dnl
 AC_SUBST([$1_FALSE])dnl
 _AM_SUBST_NOTMAKE([$1_TRUE])dnl
@@ -369,16 +401,14 @@ AC_CONFIG_COMMANDS_PRE(
 Usually this means the macro was only invoked conditionally.]])
 fi])])
 
-# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2009,
-# 2010, 2011 Free Software Foundation, Inc.
+# Copyright (C) 1999-2013 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
 
-# serial 12
 
-# There are a few dirty hacks below to avoid letting `AC_PROG_CC' be
+# There are a few dirty hacks below to avoid letting 'AC_PROG_CC' be
 # written in clear, in which case automake, when reading aclocal.m4,
 # will think it sees a *use*, and therefore will trigger all it's
 # C support machinery.  Also note that it means that autoscan, seeing
@@ -388,7 +418,7 @@ fi])])
 # _AM_DEPENDENCIES(NAME)
 # ----------------------
 # See how the compiler implements dependency checking.
-# NAME is "CC", "CXX", "GCJ", or "OBJC".
+# NAME is "CC", "CXX", "OBJC", "OBJCXX", "UPC", or "GJC".
 # We try a few techniques and use that to set a single cache variable.
 #
 # We don't AC_REQUIRE the corresponding AC_PROG_CC since the latter was
@@ -401,12 +431,13 @@ AC_REQUIRE([AM_OUTPUT_DEPENDENCY_COMMANDS])dnl
 AC_REQUIRE([AM_MAKE_INCLUDE])dnl
 AC_REQUIRE([AM_DEP_TRACK])dnl
 
-ifelse([$1], CC,   [depcc="$CC"   am_compiler_list=],
-       [$1], CXX,  [depcc="$CXX"  am_compiler_list=],
-       [$1], OBJC, [depcc="$OBJC" am_compiler_list='gcc3 gcc'],
-       [$1], UPC,  [depcc="$UPC"  am_compiler_list=],
-       [$1], GCJ,  [depcc="$GCJ"  am_compiler_list='gcc3 gcc'],
-                   [depcc="$$1"   am_compiler_list=])
+m4_if([$1], [CC],   [depcc="$CC"   am_compiler_list=],
+      [$1], [CXX],  [depcc="$CXX"  am_compiler_list=],
+      [$1], [OBJC], [depcc="$OBJC" am_compiler_list='gcc3 gcc'],
+      [$1], [OBJCXX], [depcc="$OBJCXX" am_compiler_list='gcc3 gcc'],
+      [$1], [UPC],  [depcc="$UPC"  am_compiler_list=],
+      [$1], [GCJ],  [depcc="$GCJ"  am_compiler_list='gcc3 gcc'],
+                    [depcc="$$1"   am_compiler_list=])
 
 AC_CACHE_CHECK([dependency style of $depcc],
                [am_cv_$1_dependencies_compiler_type],
@@ -414,8 +445,8 @@ AC_CACHE_CHECK([dependency style of $depcc],
   # We make a subdir and do the tests there.  Otherwise we can end up
   # making bogus files that we don't know about and never remove.  For
   # instance it was reported that on HP-UX the gcc test will end up
-  # making a dummy file named `D' -- because `-MD' means `put the output
-  # in D'.
+  # making a dummy file named 'D' -- because '-MD' means "put the output
+  # in D".
   rm -rf conftest.dir
   mkdir conftest.dir
   # Copy depcomp to subdir because otherwise we won't find it if we're
@@ -455,16 +486,16 @@ AC_CACHE_CHECK([dependency style of $depcc],
     : > sub/conftest.c
     for i in 1 2 3 4 5 6; do
       echo '#include "conftst'$i'.h"' >> sub/conftest.c
-      # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with
-      # Solaris 8's {/usr,}/bin/sh.
-      touch sub/conftst$i.h
+      # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with
+      # Solaris 10 /bin/sh.
+      echo '/* dummy */' > sub/conftst$i.h
     done
     echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
 
-    # We check with `-c' and `-o' for the sake of the "dashmstdout"
+    # We check with '-c' and '-o' for the sake of the "dashmstdout"
     # mode.  It turns out that the SunPro C++ compiler does not properly
-    # handle `-M -o', and we need to detect this.  Also, some Intel
-    # versions had trouble with output in subdirs
+    # handle '-M -o', and we need to detect this.  Also, some Intel
+    # versions had trouble with output in subdirs.
     am__obj=sub/conftest.${OBJEXT-o}
     am__minus_obj="-o $am__obj"
     case $depmode in
@@ -473,8 +504,8 @@ AC_CACHE_CHECK([dependency style of $depcc],
       test "$am__universal" = false || continue
       ;;
     nosideeffect)
-      # after this tag, mechanisms are not by side-effect, so they'll
-      # only be used when explicitly requested
+      # After this tag, mechanisms are not by side-effect, so they'll
+      # only be used when explicitly requested.
       if test "x$enable_dependency_tracking" = xyes; then
        continue
       else
@@ -482,7 +513,7 @@ AC_CACHE_CHECK([dependency style of $depcc],
       fi
       ;;
     msvc7 | msvc7msys | msvisualcpp | msvcmsys)
-      # This compiler won't grok `-c -o', but also, the minuso test has
+      # This compiler won't grok '-c -o', but also, the minuso test has
       # not run yet.  These depmodes are late enough in the game, and
       # so weak that their functioning should not be impacted.
       am__obj=conftest.${OBJEXT-o}
@@ -530,7 +561,7 @@ AM_CONDITIONAL([am__fastdep$1], [
 # AM_SET_DEPDIR
 # -------------
 # Choose a directory name for dependency files.
-# This macro is AC_REQUIREd in _AM_DEPENDENCIES
+# This macro is AC_REQUIREd in _AM_DEPENDENCIES.
 AC_DEFUN([AM_SET_DEPDIR],
 [AC_REQUIRE([AM_SET_LEADING_DOT])dnl
 AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl
@@ -540,9 +571,13 @@ AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl
 # AM_DEP_TRACK
 # ------------
 AC_DEFUN([AM_DEP_TRACK],
-[AC_ARG_ENABLE(dependency-tracking,
-[  --disable-dependency-tracking  speeds up one-time build
-  --enable-dependency-tracking   do not reject slow dependency extractors])
+[AC_ARG_ENABLE([dependency-tracking], [dnl
+AS_HELP_STRING(
+  [--enable-dependency-tracking],
+  [do not reject slow dependency extractors])
+AS_HELP_STRING(
+  [--disable-dependency-tracking],
+  [speeds up one-time build])])
 if test "x$enable_dependency_tracking" != xno; then
   am_depcomp="$ac_aux_dir/depcomp"
   AMDEPBACKSLASH='\'
@@ -557,20 +592,18 @@ _AM_SUBST_NOTMAKE([am__nodep])dnl
 
 # Generate code to set up dependency tracking.              -*- Autoconf -*-
 
-# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2008
-# Free Software Foundation, Inc.
+# Copyright (C) 1999-2013 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
 
-#serial 5
 
 # _AM_OUTPUT_DEPENDENCY_COMMANDS
 # ------------------------------
 AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS],
 [{
-  # Autoconf 2.62 quotes --file arguments for eval, but not when files
+  # Older Autoconf quotes --file arguments for eval, but not when files
   # are listed without --file.  Let's play safe and only enable the eval
   # if we detect the quoting.
   case $CONFIG_FILES in
@@ -583,7 +616,7 @@ AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS],
     # Strip MF so we end up with the name of the file.
     mf=`echo "$mf" | sed -e 's/:.*$//'`
     # Check whether this is an Automake generated Makefile or not.
-    # We used to match only the files named `Makefile.in', but
+    # We used to match only the files named 'Makefile.in', but
     # some people rename them; so instead we look at the file content.
     # Grep'ing the first line is not enough: some people post-process
     # each Makefile.in and add a new line on top of each file to say so.
@@ -595,21 +628,19 @@ AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS],
       continue
     fi
     # Extract the definition of DEPDIR, am__include, and am__quote
-    # from the Makefile without running `make'.
+    # from the Makefile without running 'make'.
     DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"`
     test -z "$DEPDIR" && continue
     am__include=`sed -n 's/^am__include = //p' < "$mf"`
-    test -z "am__include" && continue
+    test -z "$am__include" && continue
     am__quote=`sed -n 's/^am__quote = //p' < "$mf"`
-    # When using ansi2knr, U may be empty or an underscore; expand it
-    U=`sed -n 's/^U = //p' < "$mf"`
     # Find all dependency output files, they are included files with
     # $(DEPDIR) in their names.  We invoke sed twice because it is the
     # simplest approach to changing $(DEPDIR) to its actual value in the
     # expansion.
     for file in `sed -n "
       s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \
-        sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do
+        sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g'`; do
       # Make sure the directory exists.
       test -f "$dirpart/$file" && continue
       fdir=`AS_DIRNAME(["$file"])`
@@ -627,7 +658,7 @@ AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS],
 # This macro should only be invoked once -- use via AC_REQUIRE.
 #
 # This code is only required when automatic dependency tracking
-# is enabled.  FIXME.  This creates each `.P' file that we will
+# is enabled.  FIXME.  This creates each '.P' file that we will
 # need in order to bootstrap the dependency handling code.
 AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS],
 [AC_CONFIG_COMMANDS([depfiles],
@@ -637,15 +668,12 @@ AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS],
 
 # Do all the work for Automake.                             -*- Autoconf -*-
 
-# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
-# 2005, 2006, 2008, 2009 Free Software Foundation, Inc.
+# Copyright (C) 1996-2013 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
 
-# serial 16
-
 # This macro actually does too much.  Some checks are only needed if
 # your package does certain things.  But this isn't really a big deal.
 
@@ -661,7 +689,7 @@ AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS],
 # arguments mandatory, and then we can depend on a new Autoconf
 # release and drop the old call support.
 AC_DEFUN([AM_INIT_AUTOMAKE],
-[AC_PREREQ([2.62])dnl
+[AC_PREREQ([2.65])dnl
 dnl Autoconf wants to disallow AM_ names.  We explicitly allow
 dnl the ones we care about.
 m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl
@@ -690,31 +718,40 @@ AC_SUBST([CYGPATH_W])
 # Define the identity of the package.
 dnl Distinguish between old-style and new-style calls.
 m4_ifval([$2],
-[m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl
+[AC_DIAGNOSE([obsolete],
+             [$0: two- and three-arguments forms are deprecated.])
+m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl
  AC_SUBST([PACKAGE], [$1])dnl
  AC_SUBST([VERSION], [$2])],
 [_AM_SET_OPTIONS([$1])dnl
 dnl Diagnose old-style AC_INIT with new-style AM_AUTOMAKE_INIT.
-m4_if(m4_ifdef([AC_PACKAGE_NAME], 1)m4_ifdef([AC_PACKAGE_VERSION], 1), 11,,
+m4_if(
+  m4_ifdef([AC_PACKAGE_NAME], [ok]):m4_ifdef([AC_PACKAGE_VERSION], [ok]),
+  [ok:ok],,
   [m4_fatal([AC_INIT should be called with package and version arguments])])dnl
  AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl
  AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl
 
 _AM_IF_OPTION([no-define],,
-[AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of package])
- AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [Version number of package])])dnl
+[AC_DEFINE_UNQUOTED([PACKAGE], ["$PACKAGE"], [Name of package])
+ AC_DEFINE_UNQUOTED([VERSION], ["$VERSION"], [Version number of package])])dnl
 
 # Some tools Automake needs.
 AC_REQUIRE([AM_SANITY_CHECK])dnl
 AC_REQUIRE([AC_ARG_PROGRAM])dnl
-AM_MISSING_PROG(ACLOCAL, aclocal-${am__api_version})
-AM_MISSING_PROG(AUTOCONF, autoconf)
-AM_MISSING_PROG(AUTOMAKE, automake-${am__api_version})
-AM_MISSING_PROG(AUTOHEADER, autoheader)
-AM_MISSING_PROG(MAKEINFO, makeinfo)
+AM_MISSING_PROG([ACLOCAL], [aclocal-${am__api_version}])
+AM_MISSING_PROG([AUTOCONF], [autoconf])
+AM_MISSING_PROG([AUTOMAKE], [automake-${am__api_version}])
+AM_MISSING_PROG([AUTOHEADER], [autoheader])
+AM_MISSING_PROG([MAKEINFO], [makeinfo])
 AC_REQUIRE([AM_PROG_INSTALL_SH])dnl
 AC_REQUIRE([AM_PROG_INSTALL_STRIP])dnl
-AC_REQUIRE([AM_PROG_MKDIR_P])dnl
+AC_REQUIRE([AC_PROG_MKDIR_P])dnl
+# For better backward compatibility.  To be removed once Automake 1.9.x
+# dies out for good.  For more background, see:
+# <http://lists.gnu.org/archive/html/automake/2012-07/msg00001.html>
+# <http://lists.gnu.org/archive/html/automake/2012-07/msg00014.html>
+AC_SUBST([mkdir_p], ['$(MKDIR_P)'])
 # We need awk for the "check" target.  The system "awk" is bad on
 # some platforms.
 AC_REQUIRE([AC_PROG_AWK])dnl
@@ -725,28 +762,32 @@ _AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])],
                             [_AM_PROG_TAR([v7])])])
 _AM_IF_OPTION([no-dependencies],,
 [AC_PROVIDE_IFELSE([AC_PROG_CC],
-                 [_AM_DEPENDENCIES(CC)],
-                 [define([AC_PROG_CC],
-                         defn([AC_PROG_CC])[_AM_DEPENDENCIES(CC)])])dnl
+                 [_AM_DEPENDENCIES([CC])],
+                 [m4_define([AC_PROG_CC],
+                            m4_defn([AC_PROG_CC])[_AM_DEPENDENCIES([CC])])])dnl
 AC_PROVIDE_IFELSE([AC_PROG_CXX],
-                 [_AM_DEPENDENCIES(CXX)],
-                 [define([AC_PROG_CXX],
-                         defn([AC_PROG_CXX])[_AM_DEPENDENCIES(CXX)])])dnl
+                 [_AM_DEPENDENCIES([CXX])],
+                 [m4_define([AC_PROG_CXX],
+                            m4_defn([AC_PROG_CXX])[_AM_DEPENDENCIES([CXX])])])dnl
 AC_PROVIDE_IFELSE([AC_PROG_OBJC],
-                 [_AM_DEPENDENCIES(OBJC)],
-                 [define([AC_PROG_OBJC],
-                         defn([AC_PROG_OBJC])[_AM_DEPENDENCIES(OBJC)])])dnl
+                 [_AM_DEPENDENCIES([OBJC])],
+                 [m4_define([AC_PROG_OBJC],
+                            m4_defn([AC_PROG_OBJC])[_AM_DEPENDENCIES([OBJC])])])dnl
+AC_PROVIDE_IFELSE([AC_PROG_OBJCXX],
+                 [_AM_DEPENDENCIES([OBJCXX])],
+                 [m4_define([AC_PROG_OBJCXX],
+                            m4_defn([AC_PROG_OBJCXX])[_AM_DEPENDENCIES([OBJCXX])])])dnl
 ])
-_AM_IF_OPTION([silent-rules], [AC_REQUIRE([AM_SILENT_RULES])])dnl
-dnl The `parallel-tests' driver may need to know about EXEEXT, so add the
-dnl `am__EXEEXT' conditional if _AM_COMPILER_EXEEXT was seen.  This macro
-dnl is hooked onto _AC_COMPILER_EXEEXT early, see below.
+AC_REQUIRE([AM_SILENT_RULES])dnl
+dnl The testsuite driver may need to know about EXEEXT, so add the
+dnl 'am__EXEEXT' conditional if _AM_COMPILER_EXEEXT was seen.  This
+dnl macro is hooked onto _AC_COMPILER_EXEEXT early, see below.
 AC_CONFIG_COMMANDS_PRE(dnl
 [m4_provide_if([_AM_COMPILER_EXEEXT],
   [AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"])])])dnl
 ])
 
-dnl Hook into `_AC_COMPILER_EXEEXT' early to learn its expansion.  Do not
+dnl Hook into '_AC_COMPILER_EXEEXT' early to learn its expansion.  Do not
 dnl add the conditional right here, as _AC_COMPILER_EXEEXT may be further
 dnl mangled by Autoconf and run in a shell conditional statement.
 m4_define([_AC_COMPILER_EXEEXT],
@@ -774,15 +815,12 @@ for _am_header in $config_headers :; do
 done
 echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count])
 
-# Copyright (C) 2001, 2003, 2005, 2008, 2011 Free Software Foundation,
-# Inc.
+# Copyright (C) 2001-2013 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
 
-# serial 1
-
 # AM_PROG_INSTALL_SH
 # ------------------
 # Define $install_sh.
@@ -796,16 +834,14 @@ if test x"${install_sh}" != xset; then
     install_sh="\${SHELL} $am_aux_dir/install-sh"
   esac
 fi
-AC_SUBST(install_sh)])
+AC_SUBST([install_sh])])
 
-# Copyright (C) 2003, 2005  Free Software Foundation, Inc.
+# Copyright (C) 2003-2013 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
 
-# serial 2
-
 # Check whether the underlying file-system supports filenames
 # with a leading dot.  For instance MS-DOS doesn't.
 AC_DEFUN([AM_SET_LEADING_DOT],
@@ -821,14 +857,12 @@ AC_SUBST([am__leading_dot])])
 
 # Check to see how 'make' treats includes.                 -*- Autoconf -*-
 
-# Copyright (C) 2001, 2002, 2003, 2005, 2009  Free Software Foundation, Inc.
+# Copyright (C) 2001-2013 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
 
-# serial 4
-
 # AM_MAKE_INCLUDE()
 # -----------------
 # Check to see how make treats includes.
@@ -846,7 +880,7 @@ am__quote=
 _am_result=none
 # First try GNU make style include.
 echo "include confinc" > confmf
-# Ignore all kinds of additional output from `make'.
+# Ignore all kinds of additional output from 'make'.
 case `$am_make -s -f confmf 2> /dev/null` in #(
 *the\ am__doit\ target*)
   am__include=include
@@ -871,15 +905,12 @@ AC_MSG_RESULT([$_am_result])
 rm -f confinc confmf
 ])
 
-# Copyright (C) 1999, 2000, 2001, 2003, 2004, 2005, 2008
-# Free Software Foundation, Inc.
+# Copyright (C) 1999-2013 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
 
-# serial 6
-
 # AM_PROG_CC_C_O
 # --------------
 # Like AC_PROG_CC_C_O, but changed for automake.
@@ -908,15 +939,12 @@ m4_define([AC_PROG_CC],
 
 # Fake the existence of programs that GNU maintainers use.  -*- Autoconf -*-
 
-# Copyright (C) 1997, 1999, 2000, 2001, 2003, 2004, 2005, 2008
-# Free Software Foundation, Inc.
+# Copyright (C) 1997-2013 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
 
-# serial 6
-
 # AM_MISSING_PROG(NAME, PROGRAM)
 # ------------------------------
 AC_DEFUN([AM_MISSING_PROG],
@@ -924,11 +952,10 @@ AC_DEFUN([AM_MISSING_PROG],
 $1=${$1-"${am_missing_run}$2"}
 AC_SUBST($1)])
 
-
 # AM_MISSING_HAS_RUN
 # ------------------
-# Define MISSING if not defined so far and test if it supports --run.
-# If it does, set am_missing_run to use it, otherwise, to nothing.
+# Define MISSING if not defined so far and test if it is modern enough.
+# If it is, set am_missing_run to use it, otherwise, to nothing.
 AC_DEFUN([AM_MISSING_HAS_RUN],
 [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
 AC_REQUIRE_AUX_FILE([missing])dnl
@@ -941,29 +968,32 @@ if test x"${MISSING+set}" != xset; then
   esac
 fi
 # Use eval to expand $SHELL
-if eval "$MISSING --run true"; then
-  am_missing_run="$MISSING --run "
+if eval "$MISSING --is-lightweight"; then
+  am_missing_run="$MISSING "
 else
   am_missing_run=
-  AC_MSG_WARN([`missing' script is too old or missing])
+  AC_MSG_WARN(['missing' script is too old or missing])
 fi
 ])
 
-# Copyright (C) 2003, 2004, 2005, 2006, 2011 Free Software Foundation,
-# Inc.
+# Copyright (C) 2003-2013 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
 
-# serial 1
-
 # AM_PROG_MKDIR_P
 # ---------------
-# Check for `mkdir -p'.
+# Check for 'mkdir -p'.
 AC_DEFUN([AM_PROG_MKDIR_P],
 [AC_PREREQ([2.60])dnl
 AC_REQUIRE([AC_PROG_MKDIR_P])dnl
+dnl FIXME we are no longer going to remove this! adjust warning
+dnl FIXME message accordingly.
+AC_DIAGNOSE([obsolete],
+[$0: this macro is deprecated, and will soon be removed.
+You should use the Autoconf-provided 'AC][_PROG_MKDIR_P' macro instead,
+and use '$(MKDIR_P)' instead of '$(mkdir_p)'in your Makefile.am files.])
 dnl Automake 1.8 to 1.9.6 used to define mkdir_p.  We now use MKDIR_P,
 dnl while keeping a definition of mkdir_p for backward compatibility.
 dnl @MKDIR_P@ is magic: AC_OUTPUT adjusts its value for each Makefile.
@@ -980,15 +1010,12 @@ esac
 
 # Helper functions for option handling.                     -*- Autoconf -*-
 
-# Copyright (C) 2001, 2002, 2003, 2005, 2008, 2010 Free Software
-# Foundation, Inc.
+# Copyright (C) 2001-2013 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
 
-# serial 5
-
 # _AM_MANGLE_OPTION(NAME)
 # -----------------------
 AC_DEFUN([_AM_MANGLE_OPTION],
@@ -998,7 +1025,7 @@ AC_DEFUN([_AM_MANGLE_OPTION],
 # --------------------
 # Set option NAME.  Presently that only means defining a flag for this option.
 AC_DEFUN([_AM_SET_OPTION],
-[m4_define(_AM_MANGLE_OPTION([$1]), 1)])
+[m4_define(_AM_MANGLE_OPTION([$1]), [1])])
 
 # _AM_SET_OPTIONS(OPTIONS)
 # ------------------------
@@ -1014,22 +1041,16 @@ AC_DEFUN([_AM_IF_OPTION],
 
 # Check to make sure that the build environment is sane.    -*- Autoconf -*-
 
-# Copyright (C) 1996, 1997, 2000, 2001, 2003, 2005, 2008
-# Free Software Foundation, Inc.
+# Copyright (C) 1996-2013 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
 
-# serial 5
-
 # AM_SANITY_CHECK
 # ---------------
 AC_DEFUN([AM_SANITY_CHECK],
 [AC_MSG_CHECKING([whether build environment is sane])
-# Just in case
-sleep 1
-echo timestamp > conftest.file
 # Reject unsafe characters in $srcdir or the absolute working directory
 # name.  Accept space and tab only in the latter.
 am_lf='
@@ -1040,32 +1061,40 @@ case `pwd` in
 esac
 case $srcdir in
   *[[\\\"\#\$\&\'\`$am_lf\ \   ]]*)
-    AC_MSG_ERROR([unsafe srcdir value: `$srcdir']);;
+    AC_MSG_ERROR([unsafe srcdir value: '$srcdir']);;
 esac
 
-# Do `set' in a subshell so we don't clobber the current shell's
+# Do 'set' in a subshell so we don't clobber the current shell's
 # arguments.  Must try -L first in case configure is actually a
 # symlink; some systems play weird games with the mod time of symlinks
 # (eg FreeBSD returns the mod time of the symlink's containing
 # directory).
 if (
-   set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null`
-   if test "$[*]" = "X"; then
-      # -L didn't work.
-      set X `ls -t "$srcdir/configure" conftest.file`
-   fi
-   rm -f conftest.file
-   if test "$[*]" != "X $srcdir/configure conftest.file" \
-      && test "$[*]" != "X conftest.file $srcdir/configure"; then
-
-      # If neither matched, then we have a broken ls.  This can happen
-      # if, for instance, CONFIG_SHELL is bash and it inherits a
-      # broken ls alias from the environment.  This has actually
-      # happened.  Such a system could not be considered "sane".
-      AC_MSG_ERROR([ls -t appears to fail.  Make sure there is not a broken
-alias in your environment])
-   fi
-
+   am_has_slept=no
+   for am_try in 1 2; do
+     echo "timestamp, slept: $am_has_slept" > conftest.file
+     set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null`
+     if test "$[*]" = "X"; then
+       # -L didn't work.
+       set X `ls -t "$srcdir/configure" conftest.file`
+     fi
+     if test "$[*]" != "X $srcdir/configure conftest.file" \
+       && test "$[*]" != "X conftest.file $srcdir/configure"; then
+
+       # If neither matched, then we have a broken ls.  This can happen
+       # if, for instance, CONFIG_SHELL is bash and it inherits a
+       # broken ls alias from the environment.  This has actually
+       # happened.  Such a system could not be considered "sane".
+       AC_MSG_ERROR([ls -t appears to fail.  Make sure there is not a broken
+  alias in your environment])
+     fi
+     if test "$[2]" = conftest.file || test $am_try -eq 2; then
+       break
+     fi
+     # Just in case.
+     sleep 1
+     am_has_slept=yes
+   done
    test "$[2]" = conftest.file
    )
 then
@@ -1075,31 +1104,50 @@ else
    AC_MSG_ERROR([newly created file is older than distributed files!
 Check your system clock])
 fi
-AC_MSG_RESULT(yes)])
+AC_MSG_RESULT([yes])
+# If we didn't sleep, we still need to ensure time stamps of config.status and
+# generated files are strictly newer.
+am_sleep_pid=
+if grep 'slept: no' conftest.file >/dev/null 2>&1; then
+  ( sleep 1 ) &
+  am_sleep_pid=$!
+fi
+AC_CONFIG_COMMANDS_PRE(
+  [AC_MSG_CHECKING([that generated files are newer than configure])
+   if test -n "$am_sleep_pid"; then
+     # Hide warnings about reused PIDs.
+     wait $am_sleep_pid 2>/dev/null
+   fi
+   AC_MSG_RESULT([done])])
+rm -f conftest.file
+])
 
-# Copyright (C) 2009, 2011  Free Software Foundation, Inc.
+# Copyright (C) 2009-2013 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
 
-# serial 2
-
 # AM_SILENT_RULES([DEFAULT])
 # --------------------------
 # Enable less verbose build rules; with the default set to DEFAULT
-# (`yes' being less verbose, `no' or empty being verbose).
+# ("yes" being less verbose, "no" or empty being verbose).
 AC_DEFUN([AM_SILENT_RULES],
-[AC_ARG_ENABLE([silent-rules],
-[  --enable-silent-rules          less verbose build output (undo: `make V=1')
-  --disable-silent-rules         verbose build output (undo: `make V=0')])
-case $enable_silent_rules in
-yes) AM_DEFAULT_VERBOSITY=0;;
-no)  AM_DEFAULT_VERBOSITY=1;;
-*)   AM_DEFAULT_VERBOSITY=m4_if([$1], [yes], [0], [1]);;
+[AC_ARG_ENABLE([silent-rules], [dnl
+AS_HELP_STRING(
+  [--enable-silent-rules],
+  [less verbose build output (undo: "make V=1")])
+AS_HELP_STRING(
+  [--disable-silent-rules],
+  [verbose build output (undo: "make V=0")])dnl
+])
+case $enable_silent_rules in @%:@ (((
+  yes) AM_DEFAULT_VERBOSITY=0;;
+   no) AM_DEFAULT_VERBOSITY=1;;
+    *) AM_DEFAULT_VERBOSITY=m4_if([$1], [yes], [0], [1]);;
 esac
 dnl
-dnl A few `make' implementations (e.g., NonStop OS and NextStep)
+dnl A few 'make' implementations (e.g., NonStop OS and NextStep)
 dnl do not support nested variable expansions.
 dnl See automake bug#9928 and bug#10237.
 am_make=${MAKE-make}
@@ -1117,7 +1165,7 @@ else
   am_cv_make_support_nested_variables=no
 fi])
 if test $am_cv_make_support_nested_variables = yes; then
-  dnl Using `$V' instead of `$(V)' breaks IRIX make.
+  dnl Using '$V' instead of '$(V)' breaks IRIX make.
   AM_V='$(V)'
   AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)'
 else
@@ -1134,44 +1182,40 @@ AC_SUBST([AM_BACKSLASH])dnl
 _AM_SUBST_NOTMAKE([AM_BACKSLASH])dnl
 ])
 
-# Copyright (C) 2001, 2003, 2005, 2011 Free Software Foundation, Inc.
+# Copyright (C) 2001-2013 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
 
-# serial 1
-
 # AM_PROG_INSTALL_STRIP
 # ---------------------
-# One issue with vendor `install' (even GNU) is that you can't
+# One issue with vendor 'install' (even GNU) is that you can't
 # specify the program used to strip binaries.  This is especially
 # annoying in cross-compiling environments, where the build's strip
 # is unlikely to handle the host's binaries.
 # Fortunately install-sh will honor a STRIPPROG variable, so we
-# always use install-sh in `make install-strip', and initialize
+# always use install-sh in "make install-strip", and initialize
 # STRIPPROG with the value of the STRIP variable (set by the user).
 AC_DEFUN([AM_PROG_INSTALL_STRIP],
 [AC_REQUIRE([AM_PROG_INSTALL_SH])dnl
-# Installed binaries are usually stripped using `strip' when the user
-# run `make install-strip'.  However `strip' might not be the right
+# Installed binaries are usually stripped using 'strip' when the user
+# run "make install-strip".  However 'strip' might not be the right
 # tool to use in cross-compilation environments, therefore Automake
-# will honor the `STRIP' environment variable to overrule this program.
-dnl Don't test for $cross_compiling = yes, because it might be `maybe'.
+# will honor the 'STRIP' environment variable to overrule this program.
+dnl Don't test for $cross_compiling = yes, because it might be 'maybe'.
 if test "$cross_compiling" != no; then
   AC_CHECK_TOOL([STRIP], [strip], :)
 fi
 INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s"
 AC_SUBST([INSTALL_STRIP_PROGRAM])])
 
-# Copyright (C) 2006, 2008, 2010 Free Software Foundation, Inc.
+# Copyright (C) 2006-2013 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
 
-# serial 3
-
 # _AM_SUBST_NOTMAKE(VARIABLE)
 # ---------------------------
 # Prevent Automake from outputting VARIABLE = @VARIABLE@ in Makefile.in.
@@ -1185,18 +1229,16 @@ AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)])
 
 # Check how to create a tarball.                            -*- Autoconf -*-
 
-# Copyright (C) 2004, 2005, 2012 Free Software Foundation, Inc.
+# Copyright (C) 2004-2013 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
 
-# serial 2
-
 # _AM_PROG_TAR(FORMAT)
 # --------------------
 # Check how to create a tarball in format FORMAT.
-# FORMAT should be one of `v7', `ustar', or `pax'.
+# FORMAT should be one of 'v7', 'ustar', or 'pax'.
 #
 # Substitute a variable $(am__tar) that is a command
 # writing to stdout a FORMAT-tarball containing the directory
@@ -1206,76 +1248,114 @@ AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)])
 # Substitute a variable $(am__untar) that extract such
 # a tarball read from stdin.
 #     $(am__untar) < result.tar
+#
 AC_DEFUN([_AM_PROG_TAR],
 [# Always define AMTAR for backward compatibility.  Yes, it's still used
 # in the wild :-(  We should find a proper way to deprecate it ...
 AC_SUBST([AMTAR], ['$${TAR-tar}'])
-m4_if([$1], [v7],
-     [am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'],
-     [m4_case([$1], [ustar],, [pax],,
-              [m4_fatal([Unknown tar format])])
-AC_MSG_CHECKING([how to create a $1 tar archive])
-# Loop over all known methods to create a tar archive until one works.
+
+# We'll loop over all known methods to create a tar archive until one works.
 _am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none'
-_am_tools=${am_cv_prog_tar_$1-$_am_tools}
-# Do not fold the above two line into one, because Tru64 sh and
-# Solaris sh will not grok spaces in the rhs of `-'.
-for _am_tool in $_am_tools
-do
-  case $_am_tool in
-  gnutar)
-    for _am_tar in tar gnutar gtar;
-    do
-      AM_RUN_LOG([$_am_tar --version]) && break
-    done
-    am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"'
-    am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"'
-    am__untar="$_am_tar -xf -"
-    ;;
-  plaintar)
-    # Must skip GNU tar: if it does not support --format= it doesn't create
-    # ustar tarball either.
-    (tar --version) >/dev/null 2>&1 && continue
-    am__tar='tar chf - "$$tardir"'
-    am__tar_='tar chf - "$tardir"'
-    am__untar='tar xf -'
-    ;;
-  pax)
-    am__tar='pax -L -x $1 -w "$$tardir"'
-    am__tar_='pax -L -x $1 -w "$tardir"'
-    am__untar='pax -r'
-    ;;
-  cpio)
-    am__tar='find "$$tardir" -print | cpio -o -H $1 -L'
-    am__tar_='find "$tardir" -print | cpio -o -H $1 -L'
-    am__untar='cpio -i -H $1 -d'
-    ;;
-  none)
-    am__tar=false
-    am__tar_=false
-    am__untar=false
-    ;;
-  esac
 
-  # If the value was cached, stop now.  We just wanted to have am__tar
-  # and am__untar set.
-  test -n "${am_cv_prog_tar_$1}" && break
+m4_if([$1], [v7],
+  [am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'],
+
+  [m4_case([$1],
+    [ustar],
+     [# The POSIX 1988 'ustar' format is defined with fixed-size fields.
+      # There is notably a 21 bits limit for the UID and the GID.  In fact,
+      # the 'pax' utility can hang on bigger UID/GID (see automake bug#8343
+      # and bug#13588).
+      am_max_uid=2097151 # 2^21 - 1
+      am_max_gid=$am_max_uid
+      # The $UID and $GID variables are not portable, so we need to resort
+      # to the POSIX-mandated id(1) utility.  Errors in the 'id' calls
+      # below are definitely unexpected, so allow the users to see them
+      # (that is, avoid stderr redirection).
+      am_uid=`id -u || echo unknown`
+      am_gid=`id -g || echo unknown`
+      AC_MSG_CHECKING([whether UID '$am_uid' is supported by ustar format])
+      if test $am_uid -le $am_max_uid; then
+         AC_MSG_RESULT([yes])
+      else
+         AC_MSG_RESULT([no])
+         _am_tools=none
+      fi
+      AC_MSG_CHECKING([whether GID '$am_gid' is supported by ustar format])
+      if test $am_gid -le $am_max_gid; then
+         AC_MSG_RESULT([yes])
+      else
+        AC_MSG_RESULT([no])
+        _am_tools=none
+      fi],
+
+  [pax],
+    [],
+
+  [m4_fatal([Unknown tar format])])
+
+  AC_MSG_CHECKING([how to create a $1 tar archive])
+
+  # Go ahead even if we have the value already cached.  We do so because we
+  # need to set the values for the 'am__tar' and 'am__untar' variables.
+  _am_tools=${am_cv_prog_tar_$1-$_am_tools}
+
+  for _am_tool in $_am_tools; do
+    case $_am_tool in
+    gnutar)
+      for _am_tar in tar gnutar gtar; do
+        AM_RUN_LOG([$_am_tar --version]) && break
+      done
+      am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"'
+      am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"'
+      am__untar="$_am_tar -xf -"
+      ;;
+    plaintar)
+      # Must skip GNU tar: if it does not support --format= it doesn't create
+      # ustar tarball either.
+      (tar --version) >/dev/null 2>&1 && continue
+      am__tar='tar chf - "$$tardir"'
+      am__tar_='tar chf - "$tardir"'
+      am__untar='tar xf -'
+      ;;
+    pax)
+      am__tar='pax -L -x $1 -w "$$tardir"'
+      am__tar_='pax -L -x $1 -w "$tardir"'
+      am__untar='pax -r'
+      ;;
+    cpio)
+      am__tar='find "$$tardir" -print | cpio -o -H $1 -L'
+      am__tar_='find "$tardir" -print | cpio -o -H $1 -L'
+      am__untar='cpio -i -H $1 -d'
+      ;;
+    none)
+      am__tar=false
+      am__tar_=false
+      am__untar=false
+      ;;
+    esac
 
-  # tar/untar a dummy directory, and stop if the command works
-  rm -rf conftest.dir
-  mkdir conftest.dir
-  echo GrepMe > conftest.dir/file
-  AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar])
+    # If the value was cached, stop now.  We just wanted to have am__tar
+    # and am__untar set.
+    test -n "${am_cv_prog_tar_$1}" && break
+
+    # tar/untar a dummy directory, and stop if the command works.
+    rm -rf conftest.dir
+    mkdir conftest.dir
+    echo GrepMe > conftest.dir/file
+    AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar])
+    rm -rf conftest.dir
+    if test -s conftest.tar; then
+      AM_RUN_LOG([$am__untar <conftest.tar])
+      AM_RUN_LOG([cat conftest.dir/file])
+      grep GrepMe conftest.dir/file >/dev/null 2>&1 && break
+    fi
+  done
   rm -rf conftest.dir
-  if test -s conftest.tar; then
-    AM_RUN_LOG([$am__untar <conftest.tar])
-    grep GrepMe conftest.dir/file >/dev/null 2>&1 && break
-  fi
-done
-rm -rf conftest.dir
 
-AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool])
-AC_MSG_RESULT([$am_cv_prog_tar_$1])])
+  AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool])
+  AC_MSG_RESULT([$am_cv_prog_tar_$1])])
+
 AC_SUBST([am__tar])
 AC_SUBST([am__untar])
 ]) # _AM_PROG_TAR
index 2a81bc3..c05c845 100755 (executable)
--- a/configure
+++ b/configure
@@ -1,13 +1,11 @@
 #! /bin/sh
 # Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.68 for powertop 2.3.
+# Generated by GNU Autoconf 2.69 for powertop 2.5.
 #
 # Report bugs to <powertop@lists.01.org>.
 #
 #
-# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
-# 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software
-# Foundation, Inc.
+# Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc.
 #
 #
 # This configure script is free software; the Free Software Foundation
@@ -136,6 +134,31 @@ export LANGUAGE
 # CDPATH.
 (unset CDPATH) >/dev/null 2>&1 && unset CDPATH
 
+# Use a proper internal environment variable to ensure we don't fall
+  # into an infinite loop, continuously re-executing ourselves.
+  if test x"${_as_can_reexec}" != xno && test "x$CONFIG_SHELL" != x; then
+    _as_can_reexec=no; export _as_can_reexec;
+    # We cannot yet assume a decent shell, so we have to provide a
+# neutralization value for shells without unset; and this also
+# works around shells that cannot unset nonexistent variables.
+# Preserve -v and -x to the replacement shell.
+BASH_ENV=/dev/null
+ENV=/dev/null
+(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV
+case $- in # ((((
+  *v*x* | *x*v* ) as_opts=-vx ;;
+  *v* ) as_opts=-v ;;
+  *x* ) as_opts=-x ;;
+  * ) as_opts= ;;
+esac
+exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"}
+# Admittedly, this is quite paranoid, since all the known shells bail
+# out after a failed `exec'.
+$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2
+as_fn_exit 255
+  fi
+  # We don't want this to propagate to other subprocesses.
+          { _as_can_reexec=; unset _as_can_reexec;}
 if test "x$CONFIG_SHELL" = x; then
   as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then :
   emulate sh
@@ -169,7 +192,8 @@ if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then :
 else
   exitcode=1; echo positional parameters were not saved.
 fi
-test x\$exitcode = x0 || exit 1"
+test x\$exitcode = x0 || exit 1
+test -x / || exit 1"
   as_suggested="  as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO
   as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO
   eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" &&
@@ -222,21 +246,25 @@ IFS=$as_save_IFS
 
 
       if test "x$CONFIG_SHELL" != x; then :
-  # We cannot yet assume a decent shell, so we have to provide a
-       # neutralization value for shells without unset; and this also
-       # works around shells that cannot unset nonexistent variables.
-       # Preserve -v and -x to the replacement shell.
-       BASH_ENV=/dev/null
-       ENV=/dev/null
-       (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV
-       export CONFIG_SHELL
-       case $- in # ((((
-         *v*x* | *x*v* ) as_opts=-vx ;;
-         *v* ) as_opts=-v ;;
-         *x* ) as_opts=-x ;;
-         * ) as_opts= ;;
-       esac
-       exec "$CONFIG_SHELL" $as_opts "$as_myself" ${1+"$@"}
+  export CONFIG_SHELL
+             # We cannot yet assume a decent shell, so we have to provide a
+# neutralization value for shells without unset; and this also
+# works around shells that cannot unset nonexistent variables.
+# Preserve -v and -x to the replacement shell.
+BASH_ENV=/dev/null
+ENV=/dev/null
+(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV
+case $- in # ((((
+  *v*x* | *x*v* ) as_opts=-vx ;;
+  *v* ) as_opts=-v ;;
+  *x* ) as_opts=-x ;;
+  * ) as_opts= ;;
+esac
+exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"}
+# Admittedly, this is quite paranoid, since all the known shells bail
+# out after a failed `exec'.
+$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2
+exit 255
 fi
 
     if test x$as_have_required = xno; then :
@@ -339,6 +367,14 @@ $as_echo X"$as_dir" |
 
 
 } # as_fn_mkdir_p
+
+# as_fn_executable_p FILE
+# -----------------------
+# Test if FILE is an executable regular file.
+as_fn_executable_p ()
+{
+  test -f "$1" && test -x "$1"
+} # as_fn_executable_p
 # as_fn_append VAR VALUE
 # ----------------------
 # Append the text in VALUE to the end of the definition contained in VAR. Take
@@ -460,6 +496,10 @@ as_cr_alnum=$as_cr_Letters$as_cr_digits
   chmod +x "$as_me.lineno" ||
     { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; }
 
+  # If we had to re-execute with $CONFIG_SHELL, we're ensured to have
+  # already done that, so ensure we don't try to do so again and fall
+  # in an infinite loop.  This has already happened in practice.
+  _as_can_reexec=no; export _as_can_reexec
   # Don't try to exec as it changes $[0], causing all sort of problems
   # (the dirname of $[0] is not the place where we might find the
   # original and so on.  Autoconf is especially sensitive to this).
@@ -494,16 +534,16 @@ if (echo >conf$$.file) 2>/dev/null; then
     # ... but there are two gotchas:
     # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
     # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
-    # In both cases, we have to default to `cp -p'.
+    # In both cases, we have to default to `cp -pR'.
     ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
-      as_ln_s='cp -p'
+      as_ln_s='cp -pR'
   elif ln conf$$.file conf$$ 2>/dev/null; then
     as_ln_s=ln
   else
-    as_ln_s='cp -p'
+    as_ln_s='cp -pR'
   fi
 else
-  as_ln_s='cp -p'
+  as_ln_s='cp -pR'
 fi
 rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
 rmdir conf$$.dir 2>/dev/null
@@ -515,28 +555,8 @@ else
   as_mkdir_p=false
 fi
 
-if test -x / >/dev/null 2>&1; then
-  as_test_x='test -x'
-else
-  if ls -dL / >/dev/null 2>&1; then
-    as_ls_L_option=L
-  else
-    as_ls_L_option=
-  fi
-  as_test_x='
-    eval sh -c '\''
-      if test -d "$1"; then
-       test -d "$1/.";
-      else
-       case $1 in #(
-       -*)set "./$1";;
-       esac;
-       case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in #((
-       ???[sx]*):;;*)false;;esac;fi
-    '\'' sh
-  '
-fi
-as_executable_p=$as_test_x
+as_test_x='test -x'
+as_executable_p=as_fn_executable_p
 
 # Sed expression to map a string onto a valid CPP name.
 as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
@@ -570,8 +590,8 @@ MAKEFLAGS=
 # Identity of this package.
 PACKAGE_NAME='powertop'
 PACKAGE_TARNAME='powertop'
-PACKAGE_VERSION='2.3'
-PACKAGE_STRING='powertop 2.3'
+PACKAGE_VERSION='2.5'
+PACKAGE_STRING='powertop 2.5'
 PACKAGE_BUGREPORT='powertop@lists.01.org'
 PACKAGE_URL=''
 
@@ -697,11 +717,11 @@ GMSGFMT
 MSGFMT
 GETTEXT_MACRO_VERSION
 USE_NLS
+GETTEXT_PACKAGE
 AM_BACKSLASH
 AM_DEFAULT_VERBOSITY
 AM_DEFAULT_V
 AM_V
-GETTEXT_PACKAGE
 am__untar
 am__tar
 AMTAR
@@ -1255,8 +1275,6 @@ target=$target_alias
 if test "x$host_alias" != x; then
   if test "x$build_alias" = x; then
     cross_compiling=maybe
-    $as_echo "$as_me: WARNING: if you wanted to set the --build type, don't use --host.
-    If a cross compiler is detected then cross compile mode will be used" >&2
   elif test "x$build_alias" != "x$host_alias"; then
     cross_compiling=yes
   fi
@@ -1342,7 +1360,7 @@ if test "$ac_init_help" = "long"; then
   # Omit some internal or obsolete options to make the list less imposing.
   # This message is too long to be a string in the A/UX 3.1 sh.
   cat <<_ACEOF
-\`configure' configures powertop 2.3 to adapt to many kinds of systems.
+\`configure' configures powertop 2.5 to adapt to many kinds of systems.
 
 Usage: $0 [OPTION]... [VAR=VALUE]...
 
@@ -1412,7 +1430,7 @@ fi
 
 if test -n "$ac_init_help"; then
   case $ac_init_help in
-     short | recursive ) echo "Configuration of powertop 2.3:";;
+     short | recursive ) echo "Configuration of powertop 2.5:";;
    esac
   cat <<\_ACEOF
 
@@ -1420,11 +1438,13 @@ Optional Features:
   --disable-option-checking  ignore unrecognized --enable/--with options
   --disable-FEATURE       do not include FEATURE (same as --enable-FEATURE=no)
   --enable-FEATURE[=ARG]  include FEATURE [ARG=yes]
-  --enable-silent-rules          less verbose build output (undo: `make V=1')
-  --disable-silent-rules         verbose build output (undo: `make V=0')
+  --enable-silent-rules   less verbose build output (undo: "make V=1")
+  --disable-silent-rules  verbose build output (undo: "make V=0")
   --disable-nls           do not use Native Language Support
-  --disable-dependency-tracking  speeds up one-time build
-  --enable-dependency-tracking   do not reject slow dependency extractors
+  --enable-dependency-tracking
+                          do not reject slow dependency extractors
+  --disable-dependency-tracking
+                          speeds up one-time build
   --disable-rpath         do not hardcode runtime library paths
   --enable-shared[=PKGS]  build shared libraries [default=yes]
   --enable-static[=PKGS]  build static libraries [default=yes]
@@ -1537,10 +1557,10 @@ fi
 test -n "$ac_init_help" && exit $ac_status
 if $ac_init_version; then
   cat <<\_ACEOF
-powertop configure 2.3
-generated by GNU Autoconf 2.68
+powertop configure 2.5
+generated by GNU Autoconf 2.69
 
-Copyright (C) 2010 Free Software Foundation, Inc.
+Copyright (C) 2012 Free Software Foundation, Inc.
 This configure script is free software; the Free Software Foundation
 gives unlimited permission to copy, distribute and modify it.
 _ACEOF
@@ -1691,7 +1711,7 @@ $as_echo "$ac_try_echo"; } >&5
         test ! -s conftest.err
        } && test -s conftest$ac_exeext && {
         test "$cross_compiling" = yes ||
-        $as_test_x conftest$ac_exeext
+        test -x conftest$ac_exeext
        }; then :
   ac_retval=0
 else
@@ -1816,7 +1836,7 @@ $as_echo "$ac_try_echo"; } >&5
         test ! -s conftest.err
        } && test -s conftest$ac_exeext && {
         test "$cross_compiling" = yes ||
-        $as_test_x conftest$ac_exeext
+        test -x conftest$ac_exeext
        }; then :
   ac_retval=0
 else
@@ -2145,7 +2165,8 @@ int
 main ()
 {
 static int test_array [1 - 2 * !(0 < ($ac_type) ((((($ac_type) 1 << N) << N) - 1) * 2 + 1))];
-test_array [0] = 0
+test_array [0] = 0;
+return test_array [0];
 
   ;
   return 0;
@@ -2161,7 +2182,8 @@ main ()
 {
 static int test_array [1 - 2 * !(($ac_type) ((((($ac_type) 1 << N) << N) - 1) * 2 + 1)
                 < ($ac_type) ((((($ac_type) 1 << N) << N) - 1) * 2 + 2))];
-test_array [0] = 0
+test_array [0] = 0;
+return test_array [0];
 
   ;
   return 0;
@@ -2218,7 +2240,8 @@ int
 main ()
 {
 static int test_array [1 - 2 * !((($ac_type) -1 >> ($2 / 2 - 1)) >> ($2 / 2 - 1) == 3)];
-test_array [0] = 0
+test_array [0] = 0;
+return test_array [0];
 
   ;
   return 0;
@@ -2348,8 +2371,8 @@ cat >config.log <<_ACEOF
 This file contains any messages produced by compilers while
 running configure, to aid debugging if configure makes a mistake.
 
-It was created by powertop $as_me 2.3, which was
-generated by GNU Autoconf 2.68.  Invocation command line was
+It was created by powertop $as_me 2.5, which was
+generated by GNU Autoconf 2.69.  Invocation command line was
 
   $ $0 $@
 
@@ -2700,7 +2723,7 @@ ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $
 ac_compiler_gnu=$ac_cv_c_compiler_gnu
 
 
-am__api_version='1.11'
+am__api_version='1.13'
 
 ac_aux_dir=
 for ac_dir in "$srcdir" "$srcdir/.." "$srcdir/../.."; do
@@ -2768,7 +2791,7 @@ case $as_dir/ in #((
     # by default.
     for ac_prog in ginstall scoinst install; do
       for ac_exec_ext in '' $ac_executable_extensions; do
-       if { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; }; then
+       if as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then
          if test $ac_prog = install &&
            grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
            # AIX install.  It has an incompatible calling convention.
@@ -2826,9 +2849,6 @@ test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644'
 
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether build environment is sane" >&5
 $as_echo_n "checking whether build environment is sane... " >&6; }
-# Just in case
-sleep 1
-echo timestamp > conftest.file
 # Reject unsafe characters in $srcdir or the absolute working directory
 # name.  Accept space and tab only in the latter.
 am_lf='
@@ -2839,32 +2859,40 @@ case `pwd` in
 esac
 case $srcdir in
   *[\\\"\#\$\&\'\`$am_lf\ \    ]*)
-    as_fn_error $? "unsafe srcdir value: \`$srcdir'" "$LINENO" 5;;
+    as_fn_error $? "unsafe srcdir value: '$srcdir'" "$LINENO" 5;;
 esac
 
-# Do `set' in a subshell so we don't clobber the current shell's
+# Do 'set' in a subshell so we don't clobber the current shell's
 # arguments.  Must try -L first in case configure is actually a
 # symlink; some systems play weird games with the mod time of symlinks
 # (eg FreeBSD returns the mod time of the symlink's containing
 # directory).
 if (
-   set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null`
-   if test "$*" = "X"; then
-      # -L didn't work.
-      set X `ls -t "$srcdir/configure" conftest.file`
-   fi
-   rm -f conftest.file
-   if test "$*" != "X $srcdir/configure conftest.file" \
-      && test "$*" != "X conftest.file $srcdir/configure"; then
-
-      # If neither matched, then we have a broken ls.  This can happen
-      # if, for instance, CONFIG_SHELL is bash and it inherits a
-      # broken ls alias from the environment.  This has actually
-      # happened.  Such a system could not be considered "sane".
-      as_fn_error $? "ls -t appears to fail.  Make sure there is not a broken
-alias in your environment" "$LINENO" 5
-   fi
-
+   am_has_slept=no
+   for am_try in 1 2; do
+     echo "timestamp, slept: $am_has_slept" > conftest.file
+     set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null`
+     if test "$*" = "X"; then
+       # -L didn't work.
+       set X `ls -t "$srcdir/configure" conftest.file`
+     fi
+     if test "$*" != "X $srcdir/configure conftest.file" \
+       && test "$*" != "X conftest.file $srcdir/configure"; then
+
+       # If neither matched, then we have a broken ls.  This can happen
+       # if, for instance, CONFIG_SHELL is bash and it inherits a
+       # broken ls alias from the environment.  This has actually
+       # happened.  Such a system could not be considered "sane".
+       as_fn_error $? "ls -t appears to fail.  Make sure there is not a broken
+  alias in your environment" "$LINENO" 5
+     fi
+     if test "$2" = conftest.file || test $am_try -eq 2; then
+       break
+     fi
+     # Just in case.
+     sleep 1
+     am_has_slept=yes
+   done
    test "$2" = conftest.file
    )
 then
@@ -2876,6 +2904,16 @@ Check your system clock" "$LINENO" 5
 fi
 { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
 $as_echo "yes" >&6; }
+# If we didn't sleep, we still need to ensure time stamps of config.status and
+# generated files are strictly newer.
+am_sleep_pid=
+if grep 'slept: no' conftest.file >/dev/null 2>&1; then
+  ( sleep 1 ) &
+  am_sleep_pid=$!
+fi
+
+rm -f conftest.file
+
 test "$program_prefix" != NONE &&
   program_transform_name="s&^&$program_prefix&;$program_transform_name"
 # Use a double $ so make ignores it.
@@ -2898,12 +2936,12 @@ if test x"${MISSING+set}" != xset; then
   esac
 fi
 # Use eval to expand $SHELL
-if eval "$MISSING --run true"; then
-  am_missing_run="$MISSING --run "
+if eval "$MISSING --is-lightweight"; then
+  am_missing_run="$MISSING "
 else
   am_missing_run=
-  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \`missing' script is too old or missing" >&5
-$as_echo "$as_me: WARNING: \`missing' script is too old or missing" >&2;}
+  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: 'missing' script is too old or missing" >&5
+$as_echo "$as_me: WARNING: 'missing' script is too old or missing" >&2;}
 fi
 
 if test x"${install_sh}" != xset; then
@@ -2915,10 +2953,10 @@ if test x"${install_sh}" != xset; then
   esac
 fi
 
-# Installed binaries are usually stripped using `strip' when the user
-# run `make install-strip'.  However `strip' might not be the right
+# Installed binaries are usually stripped using 'strip' when the user
+# run "make install-strip".  However 'strip' might not be the right
 # tool to use in cross-compilation environments, therefore Automake
-# will honor the `STRIP' environment variable to overrule this program.
+# will honor the 'STRIP' environment variable to overrule this program.
 if test "$cross_compiling" != no; then
   if test -n "$ac_tool_prefix"; then
   # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args.
@@ -2937,7 +2975,7 @@ do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     ac_cv_prog_STRIP="${ac_tool_prefix}strip"
     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
@@ -2977,7 +3015,7 @@ do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     ac_cv_prog_ac_ct_STRIP="strip"
     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
@@ -3028,7 +3066,7 @@ do
   test -z "$as_dir" && as_dir=.
     for ac_prog in mkdir gmkdir; do
         for ac_exec_ext in '' $ac_executable_extensions; do
-          { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; } || continue
+          as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext" || continue
           case `"$as_dir/$ac_prog$ac_exec_ext" --version 2>&1` in #(
             'mkdir (GNU coreutils) '* | \
             'mkdir (coreutils) '* | \
@@ -3057,12 +3095,6 @@ fi
 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MKDIR_P" >&5
 $as_echo "$MKDIR_P" >&6; }
 
-mkdir_p="$MKDIR_P"
-case $mkdir_p in
-  [\\/$]* | ?:[\\/]*) ;;
-  */*) mkdir_p="\$(top_builddir)/$mkdir_p" ;;
-esac
-
 for ac_prog in gawk mawk nawk awk
 do
   # Extract the first word of "$ac_prog", so it can be a program name with args.
@@ -3081,7 +3113,7 @@ do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     ac_cv_prog_AWK="$ac_prog"
     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
@@ -3145,6 +3177,45 @@ else
 fi
 rmdir .tst 2>/dev/null
 
+# Check whether --enable-silent-rules was given.
+if test "${enable_silent_rules+set}" = set; then :
+  enableval=$enable_silent_rules;
+fi
+
+case $enable_silent_rules in # (((
+  yes) AM_DEFAULT_VERBOSITY=0;;
+   no) AM_DEFAULT_VERBOSITY=1;;
+    *) AM_DEFAULT_VERBOSITY=1;;
+esac
+am_make=${MAKE-make}
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $am_make supports nested variables" >&5
+$as_echo_n "checking whether $am_make supports nested variables... " >&6; }
+if ${am_cv_make_support_nested_variables+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if $as_echo 'TRUE=$(BAR$(V))
+BAR0=false
+BAR1=true
+V=1
+am__doit:
+       @$(TRUE)
+.PHONY: am__doit' | $am_make -f - >/dev/null 2>&1; then
+  am_cv_make_support_nested_variables=yes
+else
+  am_cv_make_support_nested_variables=no
+fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_make_support_nested_variables" >&5
+$as_echo "$am_cv_make_support_nested_variables" >&6; }
+if test $am_cv_make_support_nested_variables = yes; then
+    AM_V='$(V)'
+  AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)'
+else
+  AM_V=$AM_DEFAULT_VERBOSITY
+  AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY
+fi
+AM_BACKSLASH='\'
+
 if test "`cd $srcdir && pwd`" != "`pwd`"; then
   # Use -I$(srcdir) only when $(srcdir) != ., so that make's output
   # is not polluted with repeated "-I."
@@ -3167,7 +3238,7 @@ fi
 
 # Define the identity of the package.
  PACKAGE='powertop'
- VERSION='2.3'
+ VERSION='2.5'
 
 
 cat >>confdefs.h <<_ACEOF
@@ -3195,18 +3266,29 @@ AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"}
 
 MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"}
 
+# For better backward compatibility.  To be removed once Automake 1.9.x
+# dies out for good.  For more background, see:
+# <http://lists.gnu.org/archive/html/automake/2012-07/msg00001.html>
+# <http://lists.gnu.org/archive/html/automake/2012-07/msg00014.html>
+mkdir_p='$(MKDIR_P)'
+
 # We need awk for the "check" target.  The system "awk" is bad on
 # some platforms.
 # Always define AMTAR for backward compatibility.  Yes, it's still used
 # in the wild :-(  We should find a proper way to deprecate it ...
 AMTAR='$${TAR-tar}'
 
+
+# We'll loop over all known methods to create a tar archive until one works.
+_am_tools='gnutar  pax cpio none'
+
 am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'
 
 
 
 
 
+
 ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -3226,10 +3308,10 @@ if test "${enable_silent_rules+set}" = set; then :
   enableval=$enable_silent_rules;
 fi
 
-case $enable_silent_rules in
-yes) AM_DEFAULT_VERBOSITY=0;;
-no)  AM_DEFAULT_VERBOSITY=1;;
-*)   AM_DEFAULT_VERBOSITY=0;;
+case $enable_silent_rules in # (((
+  yes) AM_DEFAULT_VERBOSITY=0;;
+   no) AM_DEFAULT_VERBOSITY=1;;
+    *) AM_DEFAULT_VERBOSITY=0;;
 esac
 am_make=${MAKE-make}
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $am_make supports nested variables" >&5
@@ -3261,6 +3343,13 @@ fi
 AM_BACKSLASH='\'
 
 
+mkdir_p="$MKDIR_P"
+case $mkdir_p in
+  [\\/$]* | ?:[\\/]*) ;;
+  */*) mkdir_p="\$(top_builddir)/$mkdir_p" ;;
+esac
+
+
   { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether NLS is requested" >&5
 $as_echo_n "checking whether NLS is requested... " >&6; }
     # Check whether --enable-nls was given.
@@ -3368,7 +3457,7 @@ do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     ac_cv_path_GMSGFMT="$as_dir/$ac_word$ac_exec_ext"
     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
@@ -3595,7 +3684,7 @@ am__quote=
 _am_result=none
 # First try GNU make style include.
 echo "include confinc" > confmf
-# Ignore all kinds of additional output from `make'.
+# Ignore all kinds of additional output from 'make'.
 case `$am_make -s -f confmf 2> /dev/null` in #(
 *the\ am__doit\ target*)
   am__include=include
@@ -3661,7 +3750,7 @@ do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     ac_cv_prog_CC="${ac_tool_prefix}gcc"
     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
@@ -3701,7 +3790,7 @@ do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     ac_cv_prog_ac_ct_CC="gcc"
     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
@@ -3754,7 +3843,7 @@ do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     ac_cv_prog_CC="${ac_tool_prefix}cc"
     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
@@ -3795,7 +3884,7 @@ do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then
        ac_prog_rejected=yes
        continue
@@ -3853,7 +3942,7 @@ do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     ac_cv_prog_CC="$ac_tool_prefix$ac_prog"
     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
@@ -3897,7 +3986,7 @@ do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     ac_cv_prog_ac_ct_CC="$ac_prog"
     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
@@ -4343,8 +4432,7 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 #include <stdarg.h>
 #include <stdio.h>
-#include <sys/types.h>
-#include <sys/stat.h>
+struct stat;
 /* Most of the following tests are stolen from RCS 5.7's src/conf.sh.  */
 struct buf { int x; };
 FILE * (*rcsopen) (struct buf *, struct stat *, int);
@@ -4440,8 +4528,8 @@ else
   # We make a subdir and do the tests there.  Otherwise we can end up
   # making bogus files that we don't know about and never remove.  For
   # instance it was reported that on HP-UX the gcc test will end up
-  # making a dummy file named `D' -- because `-MD' means `put the output
-  # in D'.
+  # making a dummy file named 'D' -- because '-MD' means "put the output
+  # in D".
   rm -rf conftest.dir
   mkdir conftest.dir
   # Copy depcomp to subdir because otherwise we won't find it if we're
@@ -4476,16 +4564,16 @@ else
     : > sub/conftest.c
     for i in 1 2 3 4 5 6; do
       echo '#include "conftst'$i'.h"' >> sub/conftest.c
-      # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with
-      # Solaris 8's {/usr,}/bin/sh.
-      touch sub/conftst$i.h
+      # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with
+      # Solaris 10 /bin/sh.
+      echo '/* dummy */' > sub/conftst$i.h
     done
     echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
 
-    # We check with `-c' and `-o' for the sake of the "dashmstdout"
+    # We check with '-c' and '-o' for the sake of the "dashmstdout"
     # mode.  It turns out that the SunPro C++ compiler does not properly
-    # handle `-M -o', and we need to detect this.  Also, some Intel
-    # versions had trouble with output in subdirs
+    # handle '-M -o', and we need to detect this.  Also, some Intel
+    # versions had trouble with output in subdirs.
     am__obj=sub/conftest.${OBJEXT-o}
     am__minus_obj="-o $am__obj"
     case $depmode in
@@ -4494,8 +4582,8 @@ else
       test "$am__universal" = false || continue
       ;;
     nosideeffect)
-      # after this tag, mechanisms are not by side-effect, so they'll
-      # only be used when explicitly requested
+      # After this tag, mechanisms are not by side-effect, so they'll
+      # only be used when explicitly requested.
       if test "x$enable_dependency_tracking" = xyes; then
        continue
       else
@@ -4503,7 +4591,7 @@ else
       fi
       ;;
     msvc7 | msvc7msys | msvisualcpp | msvcmsys)
-      # This compiler won't grok `-c -o', but also, the minuso test has
+      # This compiler won't grok '-c -o', but also, the minuso test has
       # not run yet.  These depmodes are late enough in the game, and
       # so weak that their functioning should not be impacted.
       am__obj=conftest.${OBJEXT-o}
@@ -4803,7 +4891,7 @@ do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     ac_cv_prog_CXX="$ac_tool_prefix$ac_prog"
     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
@@ -4847,7 +4935,7 @@ do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     ac_cv_prog_ac_ct_CXX="$ac_prog"
     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
@@ -5043,8 +5131,8 @@ else
   # We make a subdir and do the tests there.  Otherwise we can end up
   # making bogus files that we don't know about and never remove.  For
   # instance it was reported that on HP-UX the gcc test will end up
-  # making a dummy file named `D' -- because `-MD' means `put the output
-  # in D'.
+  # making a dummy file named 'D' -- because '-MD' means "put the output
+  # in D".
   rm -rf conftest.dir
   mkdir conftest.dir
   # Copy depcomp to subdir because otherwise we won't find it if we're
@@ -5079,16 +5167,16 @@ else
     : > sub/conftest.c
     for i in 1 2 3 4 5 6; do
       echo '#include "conftst'$i'.h"' >> sub/conftest.c
-      # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with
-      # Solaris 8's {/usr,}/bin/sh.
-      touch sub/conftst$i.h
+      # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with
+      # Solaris 10 /bin/sh.
+      echo '/* dummy */' > sub/conftst$i.h
     done
     echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
 
-    # We check with `-c' and `-o' for the sake of the "dashmstdout"
+    # We check with '-c' and '-o' for the sake of the "dashmstdout"
     # mode.  It turns out that the SunPro C++ compiler does not properly
-    # handle `-M -o', and we need to detect this.  Also, some Intel
-    # versions had trouble with output in subdirs
+    # handle '-M -o', and we need to detect this.  Also, some Intel
+    # versions had trouble with output in subdirs.
     am__obj=sub/conftest.${OBJEXT-o}
     am__minus_obj="-o $am__obj"
     case $depmode in
@@ -5097,8 +5185,8 @@ else
       test "$am__universal" = false || continue
       ;;
     nosideeffect)
-      # after this tag, mechanisms are not by side-effect, so they'll
-      # only be used when explicitly requested
+      # After this tag, mechanisms are not by side-effect, so they'll
+      # only be used when explicitly requested.
       if test "x$enable_dependency_tracking" = xyes; then
        continue
       else
@@ -5106,7 +5194,7 @@ else
       fi
       ;;
     msvc7 | msvc7msys | msvisualcpp | msvcmsys)
-      # This compiler won't grok `-c -o', but also, the minuso test has
+      # This compiler won't grok '-c -o', but also, the minuso test has
       # not run yet.  These depmodes are late enough in the game, and
       # so weak that their functioning should not be impacted.
       am__obj=conftest.${OBJEXT-o}
@@ -5311,7 +5399,7 @@ do
     for ac_prog in grep ggrep; do
     for ac_exec_ext in '' $ac_executable_extensions; do
       ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext"
-      { test -f "$ac_path_GREP" && $as_test_x "$ac_path_GREP"; } || continue
+      as_fn_executable_p "$ac_path_GREP" || continue
 # Check for GNU ac_path_GREP and select it if it is found.
   # Check for GNU $ac_path_GREP
 case `"$ac_path_GREP" --version 2>&1` in
@@ -5377,7 +5465,7 @@ do
     for ac_prog in egrep; do
     for ac_exec_ext in '' $ac_executable_extensions; do
       ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext"
-      { test -f "$ac_path_EGREP" && $as_test_x "$ac_path_EGREP"; } || continue
+      as_fn_executable_p "$ac_path_EGREP" || continue
 # Check for GNU ac_path_EGREP and select it if it is found.
   # Check for GNU $ac_path_EGREP
 case `"$ac_path_EGREP" --version 2>&1` in
@@ -7002,7 +7090,7 @@ do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     ac_cv_prog_AR="$ac_tool_prefix$ac_prog"
     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
@@ -7046,7 +7134,7 @@ do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     ac_cv_prog_ac_ct_AR="$ac_prog"
     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
@@ -7309,7 +7397,7 @@ do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     ac_cv_prog_CXX="$ac_tool_prefix$ac_prog"
     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
@@ -7353,7 +7441,7 @@ do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     ac_cv_prog_ac_ct_CXX="$ac_prog"
     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
@@ -7549,8 +7637,8 @@ else
   # We make a subdir and do the tests there.  Otherwise we can end up
   # making bogus files that we don't know about and never remove.  For
   # instance it was reported that on HP-UX the gcc test will end up
-  # making a dummy file named `D' -- because `-MD' means `put the output
-  # in D'.
+  # making a dummy file named 'D' -- because '-MD' means "put the output
+  # in D".
   rm -rf conftest.dir
   mkdir conftest.dir
   # Copy depcomp to subdir because otherwise we won't find it if we're
@@ -7585,16 +7673,16 @@ else
     : > sub/conftest.c
     for i in 1 2 3 4 5 6; do
       echo '#include "conftst'$i'.h"' >> sub/conftest.c
-      # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with
-      # Solaris 8's {/usr,}/bin/sh.
-      touch sub/conftst$i.h
+      # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with
+      # Solaris 10 /bin/sh.
+      echo '/* dummy */' > sub/conftst$i.h
     done
     echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
 
-    # We check with `-c' and `-o' for the sake of the "dashmstdout"
+    # We check with '-c' and '-o' for the sake of the "dashmstdout"
     # mode.  It turns out that the SunPro C++ compiler does not properly
-    # handle `-M -o', and we need to detect this.  Also, some Intel
-    # versions had trouble with output in subdirs
+    # handle '-M -o', and we need to detect this.  Also, some Intel
+    # versions had trouble with output in subdirs.
     am__obj=sub/conftest.${OBJEXT-o}
     am__minus_obj="-o $am__obj"
     case $depmode in
@@ -7603,8 +7691,8 @@ else
       test "$am__universal" = false || continue
       ;;
     nosideeffect)
-      # after this tag, mechanisms are not by side-effect, so they'll
-      # only be used when explicitly requested
+      # After this tag, mechanisms are not by side-effect, so they'll
+      # only be used when explicitly requested.
       if test "x$enable_dependency_tracking" = xyes; then
        continue
       else
@@ -7612,7 +7700,7 @@ else
       fi
       ;;
     msvc7 | msvc7msys | msvisualcpp | msvcmsys)
-      # This compiler won't grok `-c -o', but also, the minuso test has
+      # This compiler won't grok '-c -o', but also, the minuso test has
       # not run yet.  These depmodes are late enough in the game, and
       # so weak that their functioning should not be impacted.
       am__obj=conftest.${OBJEXT-o}
@@ -7782,7 +7870,7 @@ do
     for ac_prog in sed gsed; do
     for ac_exec_ext in '' $ac_executable_extensions; do
       ac_path_SED="$as_dir/$ac_prog$ac_exec_ext"
-      { test -f "$ac_path_SED" && $as_test_x "$ac_path_SED"; } || continue
+      as_fn_executable_p "$ac_path_SED" || continue
 # Check for GNU ac_path_SED and select it if it is found.
   # Check for GNU $ac_path_SED
 case `"$ac_path_SED" --version 2>&1` in
@@ -7861,7 +7949,7 @@ do
     for ac_prog in fgrep; do
     for ac_exec_ext in '' $ac_executable_extensions; do
       ac_path_FGREP="$as_dir/$ac_prog$ac_exec_ext"
-      { test -f "$ac_path_FGREP" && $as_test_x "$ac_path_FGREP"; } || continue
+      as_fn_executable_p "$ac_path_FGREP" || continue
 # Check for GNU ac_path_FGREP and select it if it is found.
   # Check for GNU $ac_path_FGREP
 case `"$ac_path_FGREP" --version 2>&1` in
@@ -8117,7 +8205,7 @@ do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     ac_cv_prog_DUMPBIN="$ac_tool_prefix$ac_prog"
     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
@@ -8161,7 +8249,7 @@ do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     ac_cv_prog_ac_ct_DUMPBIN="$ac_prog"
     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
@@ -8585,7 +8673,7 @@ do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     ac_cv_prog_OBJDUMP="${ac_tool_prefix}objdump"
     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
@@ -8625,7 +8713,7 @@ do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     ac_cv_prog_ac_ct_OBJDUMP="objdump"
     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
@@ -8931,7 +9019,7 @@ do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     ac_cv_prog_DLLTOOL="${ac_tool_prefix}dlltool"
     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
@@ -8971,7 +9059,7 @@ do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     ac_cv_prog_ac_ct_DLLTOOL="dlltool"
     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
@@ -9074,7 +9162,7 @@ do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     ac_cv_prog_AR="$ac_tool_prefix$ac_prog"
     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
@@ -9118,7 +9206,7 @@ do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     ac_cv_prog_ac_ct_AR="$ac_prog"
     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
@@ -9243,7 +9331,7 @@ do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     ac_cv_prog_STRIP="${ac_tool_prefix}strip"
     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
@@ -9283,7 +9371,7 @@ do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     ac_cv_prog_ac_ct_STRIP="strip"
     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
@@ -9342,7 +9430,7 @@ do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib"
     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
@@ -9382,7 +9470,7 @@ do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     ac_cv_prog_ac_ct_RANLIB="ranlib"
     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
@@ -10032,7 +10120,7 @@ do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     ac_cv_prog_MANIFEST_TOOL="${ac_tool_prefix}mt"
     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
@@ -10072,7 +10160,7 @@ do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     ac_cv_prog_ac_ct_MANIFEST_TOOL="mt"
     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
@@ -10152,7 +10240,7 @@ do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     ac_cv_prog_DSYMUTIL="${ac_tool_prefix}dsymutil"
     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
@@ -10192,7 +10280,7 @@ do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     ac_cv_prog_ac_ct_DSYMUTIL="dsymutil"
     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
@@ -10244,7 +10332,7 @@ do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     ac_cv_prog_NMEDIT="${ac_tool_prefix}nmedit"
     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
@@ -10284,7 +10372,7 @@ do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     ac_cv_prog_ac_ct_NMEDIT="nmedit"
     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
@@ -10336,7 +10424,7 @@ do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     ac_cv_prog_LIPO="${ac_tool_prefix}lipo"
     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
@@ -10376,7 +10464,7 @@ do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     ac_cv_prog_ac_ct_LIPO="lipo"
     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
@@ -10428,7 +10516,7 @@ do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     ac_cv_prog_OTOOL="${ac_tool_prefix}otool"
     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
@@ -10468,7 +10556,7 @@ do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     ac_cv_prog_ac_ct_OTOOL="otool"
     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
@@ -10520,7 +10608,7 @@ do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     ac_cv_prog_OTOOL64="${ac_tool_prefix}otool64"
     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
@@ -10560,7 +10648,7 @@ do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     ac_cv_prog_ac_ct_OTOOL64="otool64"
     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
@@ -18138,7 +18226,7 @@ do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     ac_cv_prog_CC="${ac_tool_prefix}gcc"
     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
@@ -18178,7 +18266,7 @@ do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     ac_cv_prog_ac_ct_CC="gcc"
     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
@@ -18231,7 +18319,7 @@ do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     ac_cv_prog_CC="${ac_tool_prefix}cc"
     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
@@ -18272,7 +18360,7 @@ do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then
        ac_prog_rejected=yes
        continue
@@ -18330,7 +18418,7 @@ do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     ac_cv_prog_CC="$ac_tool_prefix$ac_prog"
     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
@@ -18374,7 +18462,7 @@ do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     ac_cv_prog_ac_ct_CC="$ac_prog"
     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
@@ -18570,8 +18658,7 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 #include <stdarg.h>
 #include <stdio.h>
-#include <sys/types.h>
-#include <sys/stat.h>
+struct stat;
 /* Most of the following tests are stolen from RCS 5.7's src/conf.sh.  */
 struct buf { int x; };
 FILE * (*rcsopen) (struct buf *, struct stat *, int);
@@ -18667,8 +18754,8 @@ else
   # We make a subdir and do the tests there.  Otherwise we can end up
   # making bogus files that we don't know about and never remove.  For
   # instance it was reported that on HP-UX the gcc test will end up
-  # making a dummy file named `D' -- because `-MD' means `put the output
-  # in D'.
+  # making a dummy file named 'D' -- because '-MD' means "put the output
+  # in D".
   rm -rf conftest.dir
   mkdir conftest.dir
   # Copy depcomp to subdir because otherwise we won't find it if we're
@@ -18703,16 +18790,16 @@ else
     : > sub/conftest.c
     for i in 1 2 3 4 5 6; do
       echo '#include "conftst'$i'.h"' >> sub/conftest.c
-      # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with
-      # Solaris 8's {/usr,}/bin/sh.
-      touch sub/conftst$i.h
+      # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with
+      # Solaris 10 /bin/sh.
+      echo '/* dummy */' > sub/conftst$i.h
     done
     echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
 
-    # We check with `-c' and `-o' for the sake of the "dashmstdout"
+    # We check with '-c' and '-o' for the sake of the "dashmstdout"
     # mode.  It turns out that the SunPro C++ compiler does not properly
-    # handle `-M -o', and we need to detect this.  Also, some Intel
-    # versions had trouble with output in subdirs
+    # handle '-M -o', and we need to detect this.  Also, some Intel
+    # versions had trouble with output in subdirs.
     am__obj=sub/conftest.${OBJEXT-o}
     am__minus_obj="-o $am__obj"
     case $depmode in
@@ -18721,8 +18808,8 @@ else
       test "$am__universal" = false || continue
       ;;
     nosideeffect)
-      # after this tag, mechanisms are not by side-effect, so they'll
-      # only be used when explicitly requested
+      # After this tag, mechanisms are not by side-effect, so they'll
+      # only be used when explicitly requested.
       if test "x$enable_dependency_tracking" = xyes; then
        continue
       else
@@ -18730,7 +18817,7 @@ else
       fi
       ;;
     msvc7 | msvc7msys | msvisualcpp | msvcmsys)
-      # This compiler won't grok `-c -o', but also, the minuso test has
+      # This compiler won't grok '-c -o', but also, the minuso test has
       # not run yet.  These depmodes are late enough in the game, and
       # so weak that their functioning should not be impacted.
       am__obj=conftest.${OBJEXT-o}
@@ -18937,60 +19024,60 @@ else
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
-#include <stdbool.h>
-#ifndef bool
- "error: bool is not defined"
-#endif
-#ifndef false
- "error: false is not defined"
-#endif
-#if false
- "error: false is not 0"
-#endif
-#ifndef true
- "error: true is not defined"
-#endif
-#if true != 1
- "error: true is not 1"
-#endif
-#ifndef __bool_true_false_are_defined
- "error: __bool_true_false_are_defined is not defined"
-#endif
-
-       struct s { _Bool s: 1; _Bool t; } s;
-
-       char a[true == 1 ? 1 : -1];
-       char b[false == 0 ? 1 : -1];
-       char c[__bool_true_false_are_defined == 1 ? 1 : -1];
-       char d[(bool) 0.5 == true ? 1 : -1];
-       /* See body of main program for 'e'.  */
-       char f[(_Bool) 0.0 == false ? 1 : -1];
-       char g[true];
-       char h[sizeof (_Bool)];
-       char i[sizeof s.t];
-       enum { j = false, k = true, l = false * true, m = true * 256 };
-       /* The following fails for
-          HP aC++/ANSI C B3910B A.05.55 [Dec 04 2003]. */
-       _Bool n[m];
-       char o[sizeof n == m * sizeof n[0] ? 1 : -1];
-       char p[-1 - (_Bool) 0 < 0 && -1 - (bool) 0 < 0 ? 1 : -1];
-       /* Catch a bug in an HP-UX C compiler.  See
-          http://gcc.gnu.org/ml/gcc-patches/2003-12/msg02303.html
-          http://lists.gnu.org/archive/html/bug-coreutils/2005-11/msg00161.html
-        */
-       _Bool q = true;
-       _Bool *pq = &q;
+             #include <stdbool.h>
+             #ifndef bool
             "error: bool is not defined"
+             #endif
+             #ifndef false
             "error: false is not defined"
+             #endif
+             #if false
             "error: false is not 0"
+             #endif
+             #ifndef true
             "error: true is not defined"
+             #endif
+             #if true != 1
             "error: true is not 1"
+             #endif
+             #ifndef __bool_true_false_are_defined
             "error: __bool_true_false_are_defined is not defined"
+             #endif
+
+             struct s { _Bool s: 1; _Bool t; } s;
+
+             char a[true == 1 ? 1 : -1];
+             char b[false == 0 ? 1 : -1];
+             char c[__bool_true_false_are_defined == 1 ? 1 : -1];
+             char d[(bool) 0.5 == true ? 1 : -1];
+             /* See body of main program for 'e'.  */
+             char f[(_Bool) 0.0 == false ? 1 : -1];
+             char g[true];
+             char h[sizeof (_Bool)];
+             char i[sizeof s.t];
+             enum { j = false, k = true, l = false * true, m = true * 256 };
+             /* The following fails for
+                HP aC++/ANSI C B3910B A.05.55 [Dec 04 2003]. */
+             _Bool n[m];
+             char o[sizeof n == m * sizeof n[0] ? 1 : -1];
+             char p[-1 - (_Bool) 0 < 0 && -1 - (bool) 0 < 0 ? 1 : -1];
+             /* Catch a bug in an HP-UX C compiler.  See
+                http://gcc.gnu.org/ml/gcc-patches/2003-12/msg02303.html
+                http://lists.gnu.org/archive/html/bug-coreutils/2005-11/msg00161.html
+              */
+             _Bool q = true;
+             _Bool *pq = &q;
 
 int
 main ()
 {
 
-       bool e = &s;
-       *pq |= q;
-       *pq |= ! q;
-       /* Refer to every declared value, to avoid compiler optimizations.  */
-       return (!a + !b + !c + !d + !e + !f + !g + !h + !i + !!j + !k + !!l
-               + !m + !n + !o + !p + !q + !pq);
+             bool e = &s;
+             *pq |= q;
+             *pq |= ! q;
+             /* Refer to every declared value, to avoid compiler optimizations.  */
+             return (!a + !b + !c + !d + !e + !f + !g + !h + !i + !!j + !k + !!l
+                     + !m + !n + !o + !p + !q + !pq);
 
   ;
   return 0;
@@ -19005,7 +19092,7 @@ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
 fi
 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdbool_h" >&5
 $as_echo "$ac_cv_header_stdbool_h" >&6; }
-ac_fn_cxx_check_type "$LINENO" "_Bool" "ac_cv_type__Bool" "$ac_includes_default"
+   ac_fn_cxx_check_type "$LINENO" "_Bool" "ac_cv_type__Bool" "$ac_includes_default"
 if test "x$ac_cv_type__Bool" = xyes; then :
 
 cat >>confdefs.h <<_ACEOF
@@ -19015,6 +19102,7 @@ _ACEOF
 
 fi
 
+
 if test $ac_cv_header_stdbool_h = yes; then
 
 $as_echo "#define HAVE_STDBOOL_H 1" >>confdefs.h
@@ -19676,6 +19764,7 @@ has_libpci=0
 
 
 
+
 if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then
        if test -n "$ac_tool_prefix"; then
   # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args.
@@ -19696,7 +19785,7 @@ do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     ac_cv_path_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext"
     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
@@ -19739,7 +19828,7 @@ do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     ac_cv_path_ac_pt_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext"
     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
@@ -19804,6 +19893,7 @@ if test -n "$PCIUTILS_CFLAGS"; then
   $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
   test $ac_status = 0; }; then
   pkg_cv_PCIUTILS_CFLAGS=`$PKG_CONFIG --cflags "libpci" 2>/dev/null`
+                     test "x$?" != "x0" && pkg_failed=yes
 else
   pkg_failed=yes
 fi
@@ -19820,6 +19910,7 @@ if test -n "$PCIUTILS_LIBS"; then
   $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
   test $ac_status = 0; }; then
   pkg_cv_PCIUTILS_LIBS=`$PKG_CONFIG --libs "libpci" 2>/dev/null`
+                     test "x$?" != "x0" && pkg_failed=yes
 else
   pkg_failed=yes
 fi
@@ -19839,9 +19930,9 @@ else
         _pkg_short_errors_supported=no
 fi
         if test $_pkg_short_errors_supported = yes; then
-               PCIUTILS_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors "libpci" 2>&1`
+               PCIUTILS_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "libpci" 2>&1`
         else
-               PCIUTILS_PKG_ERRORS=`$PKG_CONFIG --print-errors "libpci" 2>&1`
+               PCIUTILS_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "libpci" 2>&1`
         fi
        # Put the nasty error message in config.log where it belongs
        echo "$PCIUTILS_PKG_ERRORS" >&5
@@ -19995,6 +20086,7 @@ if test -n "$LIBNL_CFLAGS"; then
   $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
   test $ac_status = 0; }; then
   pkg_cv_LIBNL_CFLAGS=`$PKG_CONFIG --cflags "libnl-3.0 >= 3.0 libnl-genl-3.0 >= 3.0" 2>/dev/null`
+                     test "x$?" != "x0" && pkg_failed=yes
 else
   pkg_failed=yes
 fi
@@ -20011,6 +20103,7 @@ if test -n "$LIBNL_LIBS"; then
   $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
   test $ac_status = 0; }; then
   pkg_cv_LIBNL_LIBS=`$PKG_CONFIG --libs "libnl-3.0 >= 3.0 libnl-genl-3.0 >= 3.0" 2>/dev/null`
+                     test "x$?" != "x0" && pkg_failed=yes
 else
   pkg_failed=yes
 fi
@@ -20030,9 +20123,9 @@ else
         _pkg_short_errors_supported=no
 fi
         if test $_pkg_short_errors_supported = yes; then
-               LIBNL_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors "libnl-3.0 >= 3.0 libnl-genl-3.0 >= 3.0" 2>&1`
+               LIBNL_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "libnl-3.0 >= 3.0 libnl-genl-3.0 >= 3.0" 2>&1`
         else
-               LIBNL_PKG_ERRORS=`$PKG_CONFIG --print-errors "libnl-3.0 >= 3.0 libnl-genl-3.0 >= 3.0" 2>&1`
+               LIBNL_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "libnl-3.0 >= 3.0 libnl-genl-3.0 >= 3.0" 2>&1`
         fi
        # Put the nasty error message in config.log where it belongs
        echo "$LIBNL_PKG_ERRORS" >&5
@@ -20053,6 +20146,7 @@ if test -n "$LIBNL_CFLAGS"; then
   $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
   test $ac_status = 0; }; then
   pkg_cv_LIBNL_CFLAGS=`$PKG_CONFIG --cflags "libnl-2.0 >= 2.0" 2>/dev/null`
+                     test "x$?" != "x0" && pkg_failed=yes
 else
   pkg_failed=yes
 fi
@@ -20069,6 +20163,7 @@ if test -n "$LIBNL_LIBS"; then
   $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
   test $ac_status = 0; }; then
   pkg_cv_LIBNL_LIBS=`$PKG_CONFIG --libs "libnl-2.0 >= 2.0" 2>/dev/null`
+                     test "x$?" != "x0" && pkg_failed=yes
 else
   pkg_failed=yes
 fi
@@ -20088,9 +20183,9 @@ else
         _pkg_short_errors_supported=no
 fi
         if test $_pkg_short_errors_supported = yes; then
-               LIBNL_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors "libnl-2.0 >= 2.0" 2>&1`
+               LIBNL_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "libnl-2.0 >= 2.0" 2>&1`
         else
-               LIBNL_PKG_ERRORS=`$PKG_CONFIG --print-errors "libnl-2.0 >= 2.0" 2>&1`
+               LIBNL_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "libnl-2.0 >= 2.0" 2>&1`
         fi
        # Put the nasty error message in config.log where it belongs
        echo "$LIBNL_PKG_ERRORS" >&5
@@ -20111,6 +20206,7 @@ if test -n "$LIBNL_CFLAGS"; then
   $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
   test $ac_status = 0; }; then
   pkg_cv_LIBNL_CFLAGS=`$PKG_CONFIG --cflags "libnl-1" 2>/dev/null`
+                     test "x$?" != "x0" && pkg_failed=yes
 else
   pkg_failed=yes
 fi
@@ -20127,6 +20223,7 @@ if test -n "$LIBNL_LIBS"; then
   $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
   test $ac_status = 0; }; then
   pkg_cv_LIBNL_LIBS=`$PKG_CONFIG --libs "libnl-1" 2>/dev/null`
+                     test "x$?" != "x0" && pkg_failed=yes
 else
   pkg_failed=yes
 fi
@@ -20146,9 +20243,9 @@ else
         _pkg_short_errors_supported=no
 fi
         if test $_pkg_short_errors_supported = yes; then
-               LIBNL_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors "libnl-1" 2>&1`
+               LIBNL_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "libnl-1" 2>&1`
         else
-               LIBNL_PKG_ERRORS=`$PKG_CONFIG --print-errors "libnl-1" 2>&1`
+               LIBNL_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "libnl-1" 2>&1`
         fi
        # Put the nasty error message in config.log where it belongs
        echo "$LIBNL_PKG_ERRORS" >&5
@@ -20184,6 +20281,7 @@ if test -n "$LIBNL_CFLAGS"; then
   $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
   test $ac_status = 0; }; then
   pkg_cv_LIBNL_CFLAGS=`$PKG_CONFIG --cflags "libnl-1" 2>/dev/null`
+                     test "x$?" != "x0" && pkg_failed=yes
 else
   pkg_failed=yes
 fi
@@ -20200,6 +20298,7 @@ if test -n "$LIBNL_LIBS"; then
   $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
   test $ac_status = 0; }; then
   pkg_cv_LIBNL_LIBS=`$PKG_CONFIG --libs "libnl-1" 2>/dev/null`
+                     test "x$?" != "x0" && pkg_failed=yes
 else
   pkg_failed=yes
 fi
@@ -20219,9 +20318,9 @@ else
         _pkg_short_errors_supported=no
 fi
         if test $_pkg_short_errors_supported = yes; then
-               LIBNL_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors "libnl-1" 2>&1`
+               LIBNL_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "libnl-1" 2>&1`
         else
-               LIBNL_PKG_ERRORS=`$PKG_CONFIG --print-errors "libnl-1" 2>&1`
+               LIBNL_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "libnl-1" 2>&1`
         fi
        # Put the nasty error message in config.log where it belongs
        echo "$LIBNL_PKG_ERRORS" >&5
@@ -20264,6 +20363,7 @@ if test -n "$LIBNL_CFLAGS"; then
   $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
   test $ac_status = 0; }; then
   pkg_cv_LIBNL_CFLAGS=`$PKG_CONFIG --cflags "libnl-2.0 >= 2.0" 2>/dev/null`
+                     test "x$?" != "x0" && pkg_failed=yes
 else
   pkg_failed=yes
 fi
@@ -20280,6 +20380,7 @@ if test -n "$LIBNL_LIBS"; then
   $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
   test $ac_status = 0; }; then
   pkg_cv_LIBNL_LIBS=`$PKG_CONFIG --libs "libnl-2.0 >= 2.0" 2>/dev/null`
+                     test "x$?" != "x0" && pkg_failed=yes
 else
   pkg_failed=yes
 fi
@@ -20299,9 +20400,9 @@ else
         _pkg_short_errors_supported=no
 fi
         if test $_pkg_short_errors_supported = yes; then
-               LIBNL_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors "libnl-2.0 >= 2.0" 2>&1`
+               LIBNL_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "libnl-2.0 >= 2.0" 2>&1`
         else
-               LIBNL_PKG_ERRORS=`$PKG_CONFIG --print-errors "libnl-2.0 >= 2.0" 2>&1`
+               LIBNL_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "libnl-2.0 >= 2.0" 2>&1`
         fi
        # Put the nasty error message in config.log where it belongs
        echo "$LIBNL_PKG_ERRORS" >&5
@@ -20322,6 +20423,7 @@ if test -n "$LIBNL_CFLAGS"; then
   $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
   test $ac_status = 0; }; then
   pkg_cv_LIBNL_CFLAGS=`$PKG_CONFIG --cflags "libnl-1" 2>/dev/null`
+                     test "x$?" != "x0" && pkg_failed=yes
 else
   pkg_failed=yes
 fi
@@ -20338,6 +20440,7 @@ if test -n "$LIBNL_LIBS"; then
   $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
   test $ac_status = 0; }; then
   pkg_cv_LIBNL_LIBS=`$PKG_CONFIG --libs "libnl-1" 2>/dev/null`
+                     test "x$?" != "x0" && pkg_failed=yes
 else
   pkg_failed=yes
 fi
@@ -20357,9 +20460,9 @@ else
         _pkg_short_errors_supported=no
 fi
         if test $_pkg_short_errors_supported = yes; then
-               LIBNL_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors "libnl-1" 2>&1`
+               LIBNL_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "libnl-1" 2>&1`
         else
-               LIBNL_PKG_ERRORS=`$PKG_CONFIG --print-errors "libnl-1" 2>&1`
+               LIBNL_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "libnl-1" 2>&1`
         fi
        # Put the nasty error message in config.log where it belongs
        echo "$LIBNL_PKG_ERRORS" >&5
@@ -20395,6 +20498,7 @@ if test -n "$LIBNL_CFLAGS"; then
   $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
   test $ac_status = 0; }; then
   pkg_cv_LIBNL_CFLAGS=`$PKG_CONFIG --cflags "libnl-1" 2>/dev/null`
+                     test "x$?" != "x0" && pkg_failed=yes
 else
   pkg_failed=yes
 fi
@@ -20411,6 +20515,7 @@ if test -n "$LIBNL_LIBS"; then
   $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
   test $ac_status = 0; }; then
   pkg_cv_LIBNL_LIBS=`$PKG_CONFIG --libs "libnl-1" 2>/dev/null`
+                     test "x$?" != "x0" && pkg_failed=yes
 else
   pkg_failed=yes
 fi
@@ -20430,9 +20535,9 @@ else
         _pkg_short_errors_supported=no
 fi
         if test $_pkg_short_errors_supported = yes; then
-               LIBNL_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors "libnl-1" 2>&1`
+               LIBNL_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "libnl-1" 2>&1`
         else
-               LIBNL_PKG_ERRORS=`$PKG_CONFIG --print-errors "libnl-1" 2>&1`
+               LIBNL_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "libnl-1" 2>&1`
         fi
        # Put the nasty error message in config.log where it belongs
        echo "$LIBNL_PKG_ERRORS" >&5
@@ -20716,6 +20821,14 @@ LIBOBJS=$ac_libobjs
 LTLIBOBJS=$ac_ltlibobjs
 
 
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking that generated files are newer than configure" >&5
+$as_echo_n "checking that generated files are newer than configure... " >&6; }
+   if test -n "$am_sleep_pid"; then
+     # Hide warnings about reused PIDs.
+     wait $am_sleep_pid 2>/dev/null
+   fi
+   { $as_echo "$as_me:${as_lineno-$LINENO}: result: done" >&5
+$as_echo "done" >&6; }
  if test -n "$EXEEXT"; then
   am__EXEEXT_TRUE=
   am__EXEEXT_FALSE='#'
@@ -21042,16 +21155,16 @@ if (echo >conf$$.file) 2>/dev/null; then
     # ... but there are two gotchas:
     # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
     # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
-    # In both cases, we have to default to `cp -p'.
+    # In both cases, we have to default to `cp -pR'.
     ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
-      as_ln_s='cp -p'
+      as_ln_s='cp -pR'
   elif ln conf$$.file conf$$ 2>/dev/null; then
     as_ln_s=ln
   else
-    as_ln_s='cp -p'
+    as_ln_s='cp -pR'
   fi
 else
-  as_ln_s='cp -p'
+  as_ln_s='cp -pR'
 fi
 rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
 rmdir conf$$.dir 2>/dev/null
@@ -21111,28 +21224,16 @@ else
   as_mkdir_p=false
 fi
 
-if test -x / >/dev/null 2>&1; then
-  as_test_x='test -x'
-else
-  if ls -dL / >/dev/null 2>&1; then
-    as_ls_L_option=L
-  else
-    as_ls_L_option=
-  fi
-  as_test_x='
-    eval sh -c '\''
-      if test -d "$1"; then
-       test -d "$1/.";
-      else
-       case $1 in #(
-       -*)set "./$1";;
-       esac;
-       case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in #((
-       ???[sx]*):;;*)false;;esac;fi
-    '\'' sh
-  '
-fi
-as_executable_p=$as_test_x
+
+# as_fn_executable_p FILE
+# -----------------------
+# Test if FILE is an executable regular file.
+as_fn_executable_p ()
+{
+  test -f "$1" && test -x "$1"
+} # as_fn_executable_p
+as_test_x='test -x'
+as_executable_p=as_fn_executable_p
 
 # Sed expression to map a string onto a valid CPP name.
 as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
@@ -21153,8 +21254,8 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
 # report actual input values of CONFIG_FILES etc. instead of their
 # values after options handling.
 ac_log="
-This file was extended by powertop $as_me 2.3, which was
-generated by GNU Autoconf 2.68.  Invocation command line was
+This file was extended by powertop $as_me 2.5, which was
+generated by GNU Autoconf 2.69.  Invocation command line was
 
   CONFIG_FILES    = $CONFIG_FILES
   CONFIG_HEADERS  = $CONFIG_HEADERS
@@ -21219,11 +21320,11 @@ _ACEOF
 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
 ac_cs_version="\\
-powertop config.status 2.3
-configured by $0, generated by GNU Autoconf 2.68,
+powertop config.status 2.5
+configured by $0, generated by GNU Autoconf 2.69,
   with options \\"\$ac_cs_config\\"
 
-Copyright (C) 2010 Free Software Foundation, Inc.
+Copyright (C) 2012 Free Software Foundation, Inc.
 This config.status script is free software; the Free Software Foundation
 gives unlimited permission to copy, distribute and modify it."
 
@@ -21314,7 +21415,7 @@ fi
 _ACEOF
 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
 if \$ac_cs_recheck; then
-  set X '$SHELL' '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion
+  set X $SHELL '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion
   shift
   \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6
   CONFIG_SHELL='$SHELL'
@@ -22448,7 +22549,7 @@ $as_echo "$as_me: executing $ac_file commands" >&6;}
       esac
     done ;;
     "depfiles":C) test x"$AMDEP_TRUE" != x"" || {
-  # Autoconf 2.62 quotes --file arguments for eval, but not when files
+  # Older Autoconf quotes --file arguments for eval, but not when files
   # are listed without --file.  Let's play safe and only enable the eval
   # if we detect the quoting.
   case $CONFIG_FILES in
@@ -22461,7 +22562,7 @@ $as_echo "$as_me: executing $ac_file commands" >&6;}
     # Strip MF so we end up with the name of the file.
     mf=`echo "$mf" | sed -e 's/:.*$//'`
     # Check whether this is an Automake generated Makefile or not.
-    # We used to match only the files named `Makefile.in', but
+    # We used to match only the files named 'Makefile.in', but
     # some people rename them; so instead we look at the file content.
     # Grep'ing the first line is not enough: some people post-process
     # each Makefile.in and add a new line on top of each file to say so.
@@ -22495,21 +22596,19 @@ $as_echo X"$mf" |
       continue
     fi
     # Extract the definition of DEPDIR, am__include, and am__quote
-    # from the Makefile without running `make'.
+    # from the Makefile without running 'make'.
     DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"`
     test -z "$DEPDIR" && continue
     am__include=`sed -n 's/^am__include = //p' < "$mf"`
-    test -z "am__include" && continue
+    test -z "$am__include" && continue
     am__quote=`sed -n 's/^am__quote = //p' < "$mf"`
-    # When using ansi2knr, U may be empty or an underscore; expand it
-    U=`sed -n 's/^U = //p' < "$mf"`
     # Find all dependency output files, they are included files with
     # $(DEPDIR) in their names.  We invoke sed twice because it is the
     # simplest approach to changing $(DEPDIR) to its actual value in the
     # expansion.
     for file in `sed -n "
       s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \
-        sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do
+        sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g'`; do
       # Make sure the directory exists.
       test -f "$dirpart/$file" && continue
       fdir=`$as_dirname -- "$file" ||
index 32116ce..b69d608 100644 (file)
@@ -2,7 +2,7 @@
 # Process this file with autoconf to produce a configure script.
 
 AC_PREREQ([2.68])
-AC_INIT([powertop], [2.3], [powertop@lists.01.org])
+AC_INIT([powertop], [2.5], [powertop@lists.01.org])
 AM_INIT_AUTOMAKE([-Wall foreign ])
 AC_LANG([C++])
 AC_CONFIG_FILES([Makefile src/Makefile traceevent/Makefile po/Makefile.in doc/Makefile])
index cfb8078..dcd54f5 100644 (file)
@@ -1,9 +1,8 @@
-# Makefile.in generated by automake 1.11.6 from Makefile.am.
+# Makefile.in generated by automake 1.13.4 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software
-# Foundation, Inc.
+# Copyright (C) 1994-2013 Free Software Foundation, Inc.
+
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
 
 @SET_MAKE@
 VPATH = @srcdir@
-am__make_dryrun = \
-  { \
-    am__dry=no; \
+am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__make_running_with_option = \
+  case $${target_option-} in \
+      ?) ;; \
+      *) echo "am__make_running_with_option: internal error: invalid" \
+              "target option '$${target_option-}' specified" >&2; \
+         exit 1;; \
+  esac; \
+  has_opt=no; \
+  sane_makeflags=$$MAKEFLAGS; \
+  if $(am__is_gnu_make); then \
+    sane_makeflags=$$MFLAGS; \
+  else \
     case $$MAKEFLAGS in \
       *\\[\ \  ]*) \
-        echo 'am--echo: ; @echo "AM"  OK' | $(MAKE) -f - 2>/dev/null \
-          | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
-      *) \
-        for am__flg in $$MAKEFLAGS; do \
-          case $$am__flg in \
-            *=*|--*) ;; \
-            *n*) am__dry=yes; break;; \
-          esac; \
-        done;; \
+        bs=\\; \
+        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+          | sed "s/$$bs$$bs[$$bs $$bs  ]*//g"`;; \
     esac; \
-    test $$am__dry = yes; \
-  }
+  fi; \
+  skip_next=no; \
+  strip_trailopt () \
+  { \
+    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+  }; \
+  for flg in $$sane_makeflags; do \
+    test $$skip_next = yes && { skip_next=no; continue; }; \
+    case $$flg in \
+      *=*|--*) continue;; \
+        -*I) strip_trailopt 'I'; skip_next=yes;; \
+      -*I?*) strip_trailopt 'I';; \
+        -*O) strip_trailopt 'O'; skip_next=yes;; \
+      -*O?*) strip_trailopt 'O';; \
+        -*l) strip_trailopt 'l'; skip_next=yes;; \
+      -*l?*) strip_trailopt 'l';; \
+      -[dEDm]) skip_next=yes;; \
+      -[JT]) skip_next=yes;; \
+    esac; \
+    case $$flg in \
+      *$$target_option*) has_opt=yes; break;; \
+    esac; \
+  done; \
+  test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
 pkgdatadir = $(datadir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
 pkglibdir = $(libdir)/@PACKAGE@
@@ -51,7 +78,7 @@ POST_UNINSTALL = :
 build_triplet = @build@
 host_triplet = @host@
 subdir = doc
-DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/m4/gettext.m4 \
        $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
@@ -67,12 +94,18 @@ mkinstalldirs = $(install_sh) -d
 CONFIG_HEADER = $(top_builddir)/config.h
 CONFIG_CLEAN_FILES =
 CONFIG_CLEAN_VPATH_FILES =
+AM_V_P = $(am__v_P_@AM_V@)
+am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
 AM_V_GEN = $(am__v_GEN_@AM_V@)
 am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
-am__v_GEN_0 = @echo "  GEN   " $@;
+am__v_GEN_0 = @echo "  GEN     " $@;
+am__v_GEN_1 = 
 AM_V_at = $(am__v_at_@AM_V@)
 am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
 am__v_at_0 = @
+am__v_at_1 = 
 SOURCES =
 DIST_SOURCES =
 am__can_run_installinfo = \
@@ -111,6 +144,7 @@ man8dir = $(mandir)/man8
 am__installdirs = "$(DESTDIR)$(man8dir)"
 NROFF = nroff
 MANS = $(man_MANS)
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 ACLOCAL = @ACLOCAL@
 AMTAR = @AMTAR@
@@ -341,27 +375,14 @@ uninstall-man8:
        } | sed -e 's,.*/,,;h;s,.*\.,,;s,^[^8][0-9a-z]*$$,8,;x' \
              -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,'`; \
        dir='$(DESTDIR)$(man8dir)'; $(am__uninstall_files_from_dir)
-tags: TAGS
-TAGS:
+tags TAGS:
+
+ctags CTAGS:
 
-ctags: CTAGS
-CTAGS:
+cscope cscopelist:
 
 
 distdir: $(DISTFILES)
-       @list='$(MANS)'; if test -n "$$list"; then \
-         list=`for p in $$list; do \
-           if test -f $$p; then d=; else d="$(srcdir)/"; fi; \
-           if test -f "$$d$$p"; then echo "$$d$$p"; else :; fi; done`; \
-         if test -n "$$list" && \
-           grep 'ab help2man is required to generate this page' $$list >/dev/null; then \
-           echo "error: found man pages containing the \`missing help2man' replacement text:" >&2; \
-           grep -l 'ab help2man is required to generate this page' $$list | sed 's/^/         /' >&2; \
-           echo "       to fix them, install help2man, remove and regenerate the man pages;" >&2; \
-           echo "       typically \`make maintainer-clean' will remove them" >&2; \
-           exit 1; \
-         else :; fi; \
-       else :; fi
        @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
        topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
        list='$(DISTFILES)'; \
@@ -499,16 +520,17 @@ uninstall-man: uninstall-man8
 .MAKE: install-am install-strip
 
 .PHONY: all all-am check check-am clean clean-generic clean-libtool \
-       distclean distclean-generic distclean-libtool distdir dvi \
-       dvi-am html html-am info info-am install install-am \
-       install-data install-data-am install-dvi install-dvi-am \
-       install-exec install-exec-am install-html install-html-am \
-       install-info install-info-am install-man install-man8 \
-       install-pdf install-pdf-am install-ps install-ps-am \
-       install-strip installcheck installcheck-am installdirs \
-       maintainer-clean maintainer-clean-generic mostlyclean \
-       mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
-       uninstall uninstall-am uninstall-man uninstall-man8
+       cscopelist-am ctags-am distclean distclean-generic \
+       distclean-libtool distdir dvi dvi-am html html-am info info-am \
+       install install-am install-data install-data-am install-dvi \
+       install-dvi-am install-exec install-exec-am install-html \
+       install-html-am install-info install-info-am install-man \
+       install-man8 install-pdf install-pdf-am install-ps \
+       install-ps-am install-strip installcheck installcheck-am \
+       installdirs maintainer-clean maintainer-clean-generic \
+       mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \
+       ps ps-am tags-am uninstall uninstall-am uninstall-man \
+       uninstall-man8
 
 
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
index 8a70076..e6ec199 100644 (file)
@@ -54,6 +54,38 @@ generate a report for a specified number of seconds.
 .TP
 \fB\-\-version
 print version information and exit.
+.SH COMMANDS
+In interactive mode, the following key bindings are available:
+.TP
+\fBTab
+Show next tab
+.TP
+\fBBackTab
+Show previous tab
+.TP
+\fBRight Arrow
+Scroll to the right
+.TP
+\fBLeft Arrow
+Scroll to the left
+.TP
+\fBUp Arrow, PageUp
+Scroll up or select previous item
+.TP
+\fBDown Arrow, PageDown
+Scroll down or select next item
+.TP
+\fBSpace, Return
+Activate current item
+.TP
+\fBs
+Set refresh timeout
+.TP
+\fBr
+Refresh window
+.TP
+\fBq, Ctrl-C, Escape
+Exit powertop
 .SH BUGS
 Send bug reports to <powertop@lists.01.org>
 .SH SEE ALSO
index 7703901..af77b7a 100644 (file)
Binary files a/po/ca.gmo and b/po/ca.gmo differ
index 0ff8281..f03a90f 100644 (file)
--- a/po/ca.po
+++ b/po/ca.po
@@ -3,16 +3,16 @@
 # This file is distributed under the same license as the PACKAGE package.
 #
 # Translators:
-# capimans, 2012.
-# Il_Tifossi <lluita_i_no_dorm@hotmail.com>, 2011.
-# Juanma Hernández <juanmah@gmail.com>, 2012.
+# capimans, 2012
+# Il_Tifossi <lluita_i_no_dorm@hotmail.com>, 2011
+# Juanma Hernández <juanmah@gmail.com>, 2012
 msgid ""
 msgstr ""
 "Project-Id-Version: PowerTOP\n"
 "Report-Msgid-Bugs-To: \"powertop@lists.01.org\"\n"
-"POT-Creation-Date: 2013-03-18 11:06-0700\n"
-"PO-Revision-Date: 2013-02-26 19:08+0000\n"
-"Last-Translator: ceferron <chris.e.ferron@linux.intel.com>\n"
+"POT-Creation-Date: 2013-11-04 10:45-0800\n"
+"PO-Revision-Date: 2013-11-05 08:40+0000\n"
+"Last-Translator: Margie Foster <margie@linux.intel.com>\n"
 "Language-Team: Catalan (http://www.transifex.com/projects/p/PowerTOP/"
 "language/ca/)\n"
 "Language: ca\n"
@@ -54,46 +54,64 @@ msgstr "Estadístiques del dispositiu"
 msgid "Exit"
 msgstr "Surt"
 
-#: src/cpu/cpu_core.cpp:37 src/cpu/cpu_core.cpp:93 src/cpu/intel_cpus.cpp:201
+#: src/cpu/cpu_core.cpp:37 src/cpu/cpu_core.cpp:93 src/cpu/intel_cpus.cpp:245
 #, c-format
 msgid "  Core"
 msgstr ""
 
-#: src/cpu/cpu.cpp:94
+#: src/cpu/cpu.cpp:80
 #, c-format
 msgid "cpu package %i"
 msgstr "Paquet CPU %i"
 
-#: src/cpu/cpu.cpp:95
+#: src/cpu/cpu.cpp:81
 msgid "cpu package"
 msgstr "paquet cpu"
 
-#: src/cpu/cpu.cpp:446 src/cpu/cpu.cpp:573
+#: src/cpu/cpu.cpp:84
+#, c-format
+msgid "cpu rapl package %i"
+msgstr ""
+
+#: src/cpu/cpu.cpp:85
+msgid "cpu rapl package"
+msgstr ""
+
+#: src/cpu/cpu.cpp:89
+#, c-format
+msgid "dram rapl package %i"
+msgstr ""
+
+#: src/cpu/cpu.cpp:90
+msgid "dram rapl package"
+msgstr ""
+
+#: src/cpu/cpu.cpp:459 src/cpu/cpu.cpp:586
 #, c-format
 msgid "Package %i"
 msgstr ""
 
-#: src/cpu/cpu.cpp:478 src/cpu/cpu.cpp:593
+#: src/cpu/cpu.cpp:491 src/cpu/cpu.cpp:606
 #, c-format
 msgid "Core %i"
 msgstr ""
 
-#: src/cpu/cpu.cpp:480
+#: src/cpu/cpu.cpp:493
 #, c-format
 msgid "GPU %i"
 msgstr ""
 
-#: src/cpu/cpu.cpp:502 src/cpu/cpu.cpp:614
+#: src/cpu/cpu.cpp:515 src/cpu/cpu.cpp:627
 #, c-format
 msgid "CPU %i"
 msgstr ""
 
-#: src/cpu/cpu.cpp:796
+#: src/cpu/cpu.cpp:807
 #, c-format
 msgid "cpu_idle event returned no state?\n"
 msgstr "l'event cpu_idle no ha retornat cap estat?\n"
 
-#: src/cpu/cpu.cpp:811
+#: src/cpu/cpu.cpp:822
 #, c-format
 msgid "power or cpu_frequency event returned no state?\n"
 msgstr ""
@@ -103,7 +121,7 @@ msgid "C0 polling"
 msgstr "C0 sondejant"
 
 #: src/cpu/cpu_linux.cpp:240 src/cpu/cpu_linux.cpp:339
-#: src/cpu/intel_cpus.cpp:423
+#: src/cpu/intel_cpus.cpp:521
 #, c-format
 msgid " CPU %i"
 msgstr ""
@@ -113,52 +131,54 @@ msgstr ""
 msgid "Package"
 msgstr ""
 
-#: src/cpu/cpu_package.cpp:105 src/cpu/intel_cpus.cpp:226
+#: src/cpu/cpu_package.cpp:105 src/cpu/intel_cpus.cpp:297
 #, c-format
 msgid "  Package"
 msgstr ""
 
-#: src/cpu/intel_cpus.cpp:61
+#: src/cpu/intel_cpus.cpp:81
 #, c-format
-msgid "msr reg not found"
-msgstr "No s'ha trobat msr reg"
-
-#: src/cpu/intel_cpus.cpp:71
-#, c-format
-msgid "pread cpu%d 0x%llx : "
+msgid "read_msr cpu%d 0x%llx : "
 msgstr ""
 
-#: src/cpu/intel_cpus.cpp:347
+#: src/cpu/intel_cpus.cpp:445
 msgid "C0 active"
 msgstr "C0 actiu"
 
-#: src/cpu/intel_cpus.cpp:406
+#: src/cpu/intel_cpus.cpp:504
 #, c-format
 msgid "Actual"
 msgstr "Autèntic"
 
-#: src/lib.cpp:266
+#: src/lib.cpp:286
 #, c-format
 msgid "%7sW"
 msgstr "%7sW"
 
-#: src/lib.cpp:269
+#: src/lib.cpp:289
 #, c-format
 msgid "    0 mW"
 msgstr "    0 mW"
 
-#: src/lib.cpp:390
+#: src/lib.cpp:408
 msgid "PS/2 Touchpad / Keyboard / Mouse"
 msgstr "PS/2 Touchpad / Teclat / Ratolí"
 
-#: src/lib.cpp:391
+#: src/lib.cpp:409
 msgid "SATA controller"
 msgstr "Controlador SATA"
 
-#: src/lib.cpp:392
+#: src/lib.cpp:410
 msgid "Intel built in USB hub"
 msgstr "Intel connectat a port USB"
 
+#: src/lib.cpp:482 src/lib.cpp:514
+#, c-format
+msgid ""
+"Model-specific registers (MSR)\t\t\t not found (try enabling "
+"CONFIG_X86_MSR).\n"
+msgstr ""
+
 #: src/process/do_process.cpp:817
 #, c-format
 msgid ""
@@ -182,7 +202,7 @@ msgstr ""
 msgid "Summary"
 msgstr ""
 
-#: src/process/do_process.cpp:841 src/process/do_process.cpp:1011
+#: src/process/do_process.cpp:841 src/process/do_process.cpp:1013
 msgid "wakeups/second"
 msgstr ""
 
@@ -194,77 +214,83 @@ msgstr ""
 msgid "VFS ops/sec and"
 msgstr ""
 
-#: src/process/do_process.cpp:841 src/process/do_process.cpp:1015
+#: src/process/do_process.cpp:841 src/process/do_process.cpp:1017
 msgid "CPU use"
 msgstr ""
 
-#: src/process/do_process.cpp:845 src/process/do_process.cpp:902
-#: src/process/do_process.cpp:1021
+#: src/process/do_process.cpp:845 src/process/do_process.cpp:904
+#: src/process/do_process.cpp:1023
 msgid "Power est."
 msgstr ""
 
 #: src/process/do_process.cpp:845 src/process/do_process.cpp:847
-#: src/process/do_process.cpp:906 src/process/do_process.cpp:1025
+#: src/process/do_process.cpp:908 src/process/do_process.cpp:1027
 msgid "Usage"
 msgstr ""
 
 #: src/process/do_process.cpp:845 src/process/do_process.cpp:847
-#: src/process/do_process.cpp:1027
+#: src/process/do_process.cpp:1029
 msgid "Events/s"
 msgstr ""
 
 #: src/process/do_process.cpp:845 src/process/do_process.cpp:847
-#: src/process/do_process.cpp:916 src/process/do_process.cpp:1029
+#: src/process/do_process.cpp:918 src/process/do_process.cpp:1031
 msgid "Category"
 msgstr ""
 
 #: src/process/do_process.cpp:845 src/process/do_process.cpp:847
-#: src/process/do_process.cpp:918 src/process/do_process.cpp:1031
+#: src/process/do_process.cpp:920 src/process/do_process.cpp:1033
 msgid "Description"
 msgstr ""
 
-#: src/process/do_process.cpp:897
+#: src/process/do_process.cpp:899
 msgid "Overview of Software Power Consumers"
 msgstr ""
 
-#: src/process/do_process.cpp:908
+#: src/process/do_process.cpp:910
 msgid "Wakeups/s"
 msgstr ""
 
-#: src/process/do_process.cpp:910
+#: src/process/do_process.cpp:912
 msgid "GPU ops/s"
 msgstr ""
 
-#: src/process/do_process.cpp:912
+#: src/process/do_process.cpp:914
 msgid "Disk IO/s"
 msgstr ""
 
-#: src/process/do_process.cpp:914
+#: src/process/do_process.cpp:916
 msgid "GFX Wakeups/s"
 msgstr ""
 
-#: src/process/do_process.cpp:1008
+#: src/process/do_process.cpp:1010
 msgid "Power Consumption Summary"
 msgstr ""
 
-#: src/process/do_process.cpp:1012
+#: src/process/do_process.cpp:1014
 msgid "GPU ops/second"
 msgstr ""
 
-#: src/process/do_process.cpp:1013
+#: src/process/do_process.cpp:1015
 msgid "VFS ops/sec"
 msgstr ""
 
-#: src/process/do_process.cpp:1014
+#: src/process/do_process.cpp:1016
 msgid "GFX wakes/sec and"
 msgstr ""
 
-#: src/perf/perf.cpp:111
+#: src/perf/perf.cpp:115
+#, c-format
+msgid ""
+"Too many open files, please increase the limit of open file descriptors.\n"
+msgstr ""
+
+#: src/perf/perf.cpp:117
 #, c-format
 msgid "PowerTOP %s needs the kernel to support the 'perf' subsystem\n"
 msgstr "PowerTOP %s necessita que el kernel suporti el subsistema 'perf'\n"
 
-#: src/perf/perf.cpp:112
+#: src/perf/perf.cpp:118
 #, c-format
 msgid "as well as support for trace points in the kernel:\n"
 msgstr "així com suport per a punts de seguiment en el kernel:\n"
@@ -282,12 +308,12 @@ msgstr "Energia est.    Ús     Nom del dispositiu\n"
 msgid "              Usage     Device name\n"
 msgstr "              Ús     Nom del dispositiu\n"
 
-#: src/devices/alsa.cpp:79
+#: src/devices/alsa.cpp:77
 #, c-format
 msgid "Audio codec %s: %s (%s)"
 msgstr "Còdec d'àudio %s: %s (%s)"
 
-#: src/devices/alsa.cpp:81 src/devices/alsa.cpp:83
+#: src/devices/alsa.cpp:79 src/devices/alsa.cpp:81
 #, c-format
 msgid "Audio codec %s: %s"
 msgstr "Còdec d'àudio %s: %s"
@@ -297,32 +323,32 @@ msgstr "Còdec d'àudio %s: %s"
 msgid "PCI Device: %s"
 msgstr "Dispositiu PCI: %s"
 
-#: src/devices/usb.cpp:51 src/devices/usb.cpp:94 src/devices/usb.cpp:96
+#: src/devices/usb.cpp:49 src/devices/usb.cpp:92 src/devices/usb.cpp:94
 #, c-format
 msgid "USB device: %s"
 msgstr "Dispositiu USB: %s"
 
-#: src/devices/usb.cpp:92
+#: src/devices/usb.cpp:90
 #, c-format
 msgid "USB device: %s (%s)"
 msgstr "Dispositiu USB: %s (%s)"
 
-#: src/devices/ahci.cpp:140
+#: src/devices/ahci.cpp:142
 #, c-format
 msgid "SATA link: %s"
 msgstr "Connexió SATA: %s"
 
-#: src/devices/ahci.cpp:142
+#: src/devices/ahci.cpp:144
 #, c-format
 msgid "SATA disk: %s"
 msgstr "Disc SATA: %s"
 
-#: src/devices/rfkill.cpp:65 src/devices/rfkill.cpp:69
+#: src/devices/rfkill.cpp:64 src/devices/rfkill.cpp:68
 #, c-format
 msgid "Radio device: %s"
 msgstr "Dispositiu de ràdio: %s"
 
-#: src/devices/network.cpp:177
+#: src/devices/network.cpp:176
 #, c-format
 msgid "Network interface: %s (%s)"
 msgstr "Interfície de xarxa: %s(%s)"
@@ -332,21 +358,21 @@ msgstr "Interfície de xarxa: %s(%s)"
 msgid "Bluetooth device interface status"
 msgstr "Estat de la interfície del dispositiu Bluetooth"
 
-#: src/tuning/cpufreq.cpp:44 src/tuning/ethernet.cpp:53
+#: src/tuning/cpufreq.cpp:44 src/tuning/ethernet.cpp:50
 #: src/tuning/tunable.cpp:48 src/tuning/wifi.cpp:45 src/tuning/runtime.cpp:41
-#: src/tuning/tuningusb.cpp:40 src/tuning/tuningsysfs.cpp:44
+#: src/tuning/tuningusb.cpp:37 src/tuning/tuningsysfs.cpp:44
 msgid "Good"
 msgstr "Bo"
 
-#: src/tuning/cpufreq.cpp:44 src/tuning/ethernet.cpp:53
+#: src/tuning/cpufreq.cpp:44 src/tuning/ethernet.cpp:50
 #: src/tuning/tunable.cpp:49 src/tuning/wifi.cpp:45 src/tuning/runtime.cpp:41
-#: src/tuning/tuningusb.cpp:40 src/tuning/tuningsysfs.cpp:44
+#: src/tuning/tuningusb.cpp:37 src/tuning/tuningsysfs.cpp:44
 msgid "Bad"
 msgstr "Malament"
 
-#: src/tuning/cpufreq.cpp:44 src/tuning/ethernet.cpp:53
+#: src/tuning/cpufreq.cpp:44 src/tuning/ethernet.cpp:50
 #: src/tuning/tunable.cpp:50 src/tuning/wifi.cpp:45 src/tuning/runtime.cpp:41
-#: src/tuning/tuningusb.cpp:40 src/tuning/tuningsysfs.cpp:44
+#: src/tuning/tuningusb.cpp:37 src/tuning/tuningsysfs.cpp:44
 msgid "Unknown"
 msgstr "Desconegut"
 
@@ -379,7 +405,7 @@ msgstr "Optimitzables"
 msgid " <ESC> Exit | <Enter> Toggle tunable | <r> Window refresh"
 msgstr "<ESC> Sortir | <ENTRAR> canvia optimitzable | <r> Actualitza finestra"
 
-#: src/tuning/ethernet.cpp:57
+#: src/tuning/ethernet.cpp:54
 #, c-format
 msgid "Wake-on-lan status for device %s"
 msgstr "Estat Wake-on-lan per a dispositiu %s"
@@ -409,13 +435,13 @@ msgstr "El dispositiu PCI %s no té administració d'energia en temps d'execuci
 msgid "Runtime PM for PCI Device %s"
 msgstr "Temps d'execució PM per dispositiu PCI %s"
 
-#: src/tuning/tuningusb.cpp:55
+#: src/tuning/tuningusb.cpp:52
 #, c-format
 msgid "Autosuspend for unknown USB device %s (%s:%s)"
 msgstr "Autosuspès per a dispositiu USB desconegut %s (%s:%s)"
 
-#: src/tuning/tuningusb.cpp:72 src/tuning/tuningusb.cpp:74
-#: src/tuning/tuningusb.cpp:76
+#: src/tuning/tuningusb.cpp:69 src/tuning/tuningusb.cpp:71
+#: src/tuning/tuningusb.cpp:73
 #, c-format
 msgid "Autosuspend for USB device %s [%s]"
 msgstr "Autosuspès per a dipositiu USB %s [%s]"
@@ -425,186 +451,190 @@ msgstr "Autosuspès per a dipositiu USB %s [%s]"
 msgid "Enable SATA link power Managmenet for %s"
 msgstr ""
 
-#: src/calibrate/calibrate.cpp:291
+#: src/calibrate/calibrate.cpp:236
 #, c-format
 msgid "Cannot create temp file\n"
 msgstr "No es pot crear el fitxer temporal\n"
 
-#: src/calibrate/calibrate.cpp:310
+#: src/calibrate/calibrate.cpp:255
 #, c-format
 msgid "Calibrating: CPU usage on %i threads\n"
 msgstr "Calibrant: ús de CPU en %i discussions\n"
 
-#: src/calibrate/calibrate.cpp:325
+#: src/calibrate/calibrate.cpp:270
 #, c-format
 msgid "Calibrating: CPU wakeup power consumption\n"
 msgstr "Calibrant: consum d'energia de l'encesa de CPU\n"
 
-#: src/calibrate/calibrate.cpp:342
+#: src/calibrate/calibrate.cpp:287
 #, c-format
 msgid "Calibrating USB devices\n"
 msgstr "Calibrant dispositius USB\n"
 
-#: src/calibrate/calibrate.cpp:344 src/calibrate/calibrate.cpp:361
-#: src/calibrate/calibrate.cpp:369 src/calibrate/calibrate.cpp:386
+#: src/calibrate/calibrate.cpp:289 src/calibrate/calibrate.cpp:306
+#: src/calibrate/calibrate.cpp:314 src/calibrate/calibrate.cpp:331
 #, c-format
 msgid ".... device %s \n"
 msgstr ".... dispositiu %s\n"
 
-#: src/calibrate/calibrate.cpp:359
+#: src/calibrate/calibrate.cpp:304
 #, c-format
 msgid "Calibrating radio devices\n"
 msgstr "Calibrant dispositius de ràdio\n"
 
-#: src/calibrate/calibrate.cpp:383
+#: src/calibrate/calibrate.cpp:328
 #, c-format
 msgid "Calibrating backlight\n"
 msgstr "Calibrant llum de fons\n"
 
-#: src/calibrate/calibrate.cpp:407 src/calibrate/calibrate.cpp:415
+#: src/calibrate/calibrate.cpp:352 src/calibrate/calibrate.cpp:360
 #, c-format
 msgid "Calibrating idle\n"
 msgstr "Calibrant repòs\n"
 
-#: src/calibrate/calibrate.cpp:426
+#: src/calibrate/calibrate.cpp:371
 #, c-format
 msgid "Calibrating: disk usage \n"
 msgstr "Calibrant: ús de disc\n"
 
-#: src/calibrate/calibrate.cpp:451
+#: src/calibrate/calibrate.cpp:396
 msgid "Starting PowerTOP power estimate calibration \n"
 msgstr "Iniciant calibrat d'estimació d'energia PowerTOP\n"
 
-#: src/calibrate/calibrate.cpp:474
+#: src/calibrate/calibrate.cpp:419
 msgid "Finishing PowerTOP power estimate calibration \n"
 msgstr "Finalitzant calibració d'estimació d'energia de PowerTOP\n"
 
-#: src/calibrate/calibrate.cpp:478
+#: src/calibrate/calibrate.cpp:423
 #, c-format
 msgid "Parameters after calibration:\n"
 msgstr "Paràmetres després del calibrat:\n"
 
-#: src/main.cpp:86
+#: src/main.cpp:91
 #, c-format
 msgid "PowerTOP version"
 msgstr ""
 
-#: src/main.cpp:92
+#: src/main.cpp:97
 msgid "Set refresh time out"
 msgstr ""
 
-#: src/main.cpp:105
+#: src/main.cpp:110
 msgid "Usage: powertop [OPTIONS]"
 msgstr ""
 
-#: src/main.cpp:106
+#: src/main.cpp:111
 msgid "run in \"debug\" mode"
 msgstr ""
 
-#: src/main.cpp:107
+#: src/main.cpp:112
 msgid "print version information"
 msgstr ""
 
-#: src/main.cpp:108
+#: src/main.cpp:113
 msgid "runs powertop in calibration mode"
 msgstr ""
 
-#: src/main.cpp:109
+#: src/main.cpp:114
+msgid "Sets all tunable options to their GOOD setting"
+msgstr ""
+
+#: src/main.cpp:115
 msgid "[=devnode]"
 msgstr ""
 
-#: src/main.cpp:109
+#: src/main.cpp:115
 msgid "uses an Extech Power Analyzer for measurements"
 msgstr ""
 
-#: src/main.cpp:110 src/main.cpp:111
+#: src/main.cpp:116 src/main.cpp:117
 msgid "[=FILENAME]"
 msgstr ""
 
-#: src/main.cpp:110
+#: src/main.cpp:116
 msgid "generate a html report"
 msgstr ""
 
-#: src/main.cpp:111
+#: src/main.cpp:117
 msgid "generate a csv report"
 msgstr ""
 
-#: src/main.cpp:112
+#: src/main.cpp:118
 msgid "[=seconds]"
 msgstr ""
 
-#: src/main.cpp:112
+#: src/main.cpp:118
 msgid "generate a report for 'x' seconds"
 msgstr ""
 
-#: src/main.cpp:113
+#: src/main.cpp:119
 msgid "[=iterations] number of times to run each test"
 msgstr ""
 
-#: src/main.cpp:114
+#: src/main.cpp:120
 msgid "[=workload]"
 msgstr ""
 
-#: src/main.cpp:114
+#: src/main.cpp:120
 msgid "file to execute for workload"
 msgstr ""
 
-#: src/main.cpp:115
+#: src/main.cpp:121
 msgid "suppress stderr output"
 msgstr ""
 
-#: src/main.cpp:116
+#: src/main.cpp:122
 msgid "print this help menu"
 msgstr ""
 
-#: src/main.cpp:118
+#: src/main.cpp:124
 msgid "For more help please refer to the README"
 msgstr ""
 
-#: src/main.cpp:195
+#: src/main.cpp:201
 #, c-format
 msgid "Unknown issue running workload!\n"
 msgstr ""
 
-#: src/main.cpp:236
+#: src/main.cpp:242
 msgid "PowerTOP is out of memory. PowerTOP is Aborting"
 msgstr ""
 
-#: src/main.cpp:244
+#: src/main.cpp:250
 #, c-format
 msgid "Preparing to take measurements\n"
 msgstr ""
 
-#: src/main.cpp:249
+#: src/main.cpp:255
 #, c-format
 msgid "Taking %d measurement(s) for a duration of %d second(s) each.\n"
 msgstr ""
 
-#: src/main.cpp:251
+#: src/main.cpp:257
 #, c-format
 msgid "Measuring workload %s.\n"
 msgstr ""
 
-#: src/main.cpp:274
+#: src/main.cpp:280
 #, c-format
 msgid "PowerTOP "
 msgstr "PowerTOP "
 
-#: src/main.cpp:275 src/main.cpp:303
+#: src/main.cpp:281 src/main.cpp:328
 #, c-format
 msgid "exiting...\n"
 msgstr "sortint...\n"
 
-#: src/main.cpp:302
+#: src/main.cpp:327
 #, c-format
 msgid "Failed to mount debugfs!\n"
 msgstr ""
 
-#: src/main.cpp:394
+#: src/main.cpp:422
 #, c-format
 msgid "Quite mode failed!\n"
 msgstr ""
 
-#: src/main.cpp:440
+#: src/main.cpp:472
 msgid "Leaving PowerTOP"
 msgstr ""
index 652d33b..75ec9b1 100644 (file)
Binary files a/po/cs_CZ.gmo and b/po/cs_CZ.gmo differ
index 7651e1f..be84d35 100644 (file)
@@ -3,14 +3,15 @@
 # This file is distributed under the same license as the PACKAGE package.
 #
 # Translators:
-# Otto Bříza <otto.briza@gmail.com>, 2012.
+# Alois Nešpor <info@aloisnespor.info>, 2013
+# Otto Bříza <otto.briza@gmail.com>, 2012
 msgid ""
 msgstr ""
 "Project-Id-Version: PowerTOP\n"
 "Report-Msgid-Bugs-To: \"powertop@lists.01.org\"\n"
-"POT-Creation-Date: 2013-03-18 11:06-0700\n"
-"PO-Revision-Date: 2013-02-26 19:08+0000\n"
-"Last-Translator: Alois Nešpor <info@aloisnespor.info>\n"
+"POT-Creation-Date: 2013-11-04 10:45-0800\n"
+"PO-Revision-Date: 2013-11-05 08:40+0000\n"
+"Last-Translator: Margie Foster <margie@linux.intel.com>\n"
 "Language-Team: Czech (Czech Republic) (http://www.transifex.com/projects/p/"
 "PowerTOP/language/cs_CZ/)\n"
 "Language: cs_CZ\n"
@@ -30,7 +31,9 @@ msgstr "Nelze načíst ze souboru"
 #: src/parameters/persistent.cpp:123
 #, c-format
 msgid "Loaded %i prior measurements\n"
-msgstr "Nahráno %i měření\n"
+msgstr ""
+"Nahráno %i měření\n"
+"\n"
 
 #: src/display.cpp:70
 msgid "Overview"
@@ -52,111 +55,133 @@ msgstr "Zařízení"
 msgid "Exit"
 msgstr "Konec"
 
-#: src/cpu/cpu_core.cpp:37 src/cpu/cpu_core.cpp:93 src/cpu/intel_cpus.cpp:201
+#: src/cpu/cpu_core.cpp:37 src/cpu/cpu_core.cpp:93 src/cpu/intel_cpus.cpp:245
 #, c-format
 msgid "  Core"
-msgstr ""
+msgstr "  Jádro"
 
-#: src/cpu/cpu.cpp:94
+#: src/cpu/cpu.cpp:80
 #, c-format
 msgid "cpu package %i"
 msgstr "cpu svazek %i"
 
-#: src/cpu/cpu.cpp:95
+#: src/cpu/cpu.cpp:81
 msgid "cpu package"
 msgstr "cpu svazek"
 
-#: src/cpu/cpu.cpp:446 src/cpu/cpu.cpp:573
+#: src/cpu/cpu.cpp:84
+#, c-format
+msgid "cpu rapl package %i"
+msgstr ""
+
+#: src/cpu/cpu.cpp:85
+msgid "cpu rapl package"
+msgstr ""
+
+#: src/cpu/cpu.cpp:89
+#, c-format
+msgid "dram rapl package %i"
+msgstr ""
+
+#: src/cpu/cpu.cpp:90
+msgid "dram rapl package"
+msgstr ""
+
+#: src/cpu/cpu.cpp:459 src/cpu/cpu.cpp:586
 #, c-format
 msgid "Package %i"
 msgstr "Balíček %i"
 
-#: src/cpu/cpu.cpp:478 src/cpu/cpu.cpp:593
+#: src/cpu/cpu.cpp:491 src/cpu/cpu.cpp:606
 #, c-format
 msgid "Core %i"
 msgstr "Jádro %i"
 
-#: src/cpu/cpu.cpp:480
+#: src/cpu/cpu.cpp:493
 #, c-format
 msgid "GPU %i"
 msgstr "GPU %i"
 
-#: src/cpu/cpu.cpp:502 src/cpu/cpu.cpp:614
+#: src/cpu/cpu.cpp:515 src/cpu/cpu.cpp:627
 #, c-format
 msgid "CPU %i"
 msgstr "GPU %i"
 
-#: src/cpu/cpu.cpp:796
+#: src/cpu/cpu.cpp:807
 #, c-format
 msgid "cpu_idle event returned no state?\n"
 msgstr "cpu_idle událost nevrátila stav?\n"
 
-#: src/cpu/cpu.cpp:811
+#: src/cpu/cpu.cpp:822
 #, c-format
 msgid "power or cpu_frequency event returned no state?\n"
 msgstr ""
+"power nebo cpu_frequecny událost nevrátila žádný stav?\n"
+"\n"
 
 #: src/cpu/cpu_linux.cpp:79
 msgid "C0 polling"
 msgstr "C0 sdílení"
 
 #: src/cpu/cpu_linux.cpp:240 src/cpu/cpu_linux.cpp:339
-#: src/cpu/intel_cpus.cpp:423
+#: src/cpu/intel_cpus.cpp:521
 #, c-format
 msgid " CPU %i"
-msgstr ""
+msgstr " CPU %i"
 
 #: src/cpu/cpu_package.cpp:47
 #, c-format
 msgid "Package"
-msgstr ""
+msgstr "Balíček"
 
-#: src/cpu/cpu_package.cpp:105 src/cpu/intel_cpus.cpp:226
+#: src/cpu/cpu_package.cpp:105 src/cpu/intel_cpus.cpp:297
 #, c-format
 msgid "  Package"
-msgstr ""
+msgstr "  Balíček"
 
-#: src/cpu/intel_cpus.cpp:61
+#: src/cpu/intel_cpus.cpp:81
 #, c-format
-msgid "msr reg not found"
-msgstr "msr reg nenalezen"
-
-#: src/cpu/intel_cpus.cpp:71
-#, c-format
-msgid "pread cpu%d 0x%llx : "
-msgstr "pread cpu%d 0x%llx : "
+msgid "read_msr cpu%d 0x%llx : "
+msgstr ""
 
-#: src/cpu/intel_cpus.cpp:347
+#: src/cpu/intel_cpus.cpp:445
 msgid "C0 active"
 msgstr "C0 aktivní"
 
-#: src/cpu/intel_cpus.cpp:406
+#: src/cpu/intel_cpus.cpp:504
 #, c-format
 msgid "Actual"
 msgstr "Aktuální"
 
-#: src/lib.cpp:266
+#: src/lib.cpp:286
 #, c-format
 msgid "%7sW"
 msgstr "%7sW"
 
-#: src/lib.cpp:269
+#: src/lib.cpp:289
 #, c-format
 msgid "    0 mW"
 msgstr "    0 mW"
 
-#: src/lib.cpp:390
+#: src/lib.cpp:408
 msgid "PS/2 Touchpad / Keyboard / Mouse"
 msgstr "PS/2 Touchpad / Klávesnice / Myš"
 
-#: src/lib.cpp:391
+#: src/lib.cpp:409
 msgid "SATA controller"
 msgstr "SATA ovladač"
 
-#: src/lib.cpp:392
+#: src/lib.cpp:410
 msgid "Intel built in USB hub"
 msgstr "Intel vestavěný v USB hubu"
 
+#: src/lib.cpp:482 src/lib.cpp:514
+#, c-format
+msgid ""
+"Model-specific registers (MSR)\t\t\t not found (try enabling "
+"CONFIG_X86_MSR).\n"
+msgstr ""
+
 #: src/process/do_process.cpp:817
 #, c-format
 msgid ""
@@ -180,7 +205,7 @@ msgstr "Odhadovaný zbývající čas do vybití baterie je %i hodin, %i minut\n
 msgid "Summary"
 msgstr "Souhrn"
 
-#: src/process/do_process.cpp:841 src/process/do_process.cpp:1011
+#: src/process/do_process.cpp:841 src/process/do_process.cpp:1013
 msgid "wakeups/second"
 msgstr "probuzení/sekund"
 
@@ -192,77 +217,83 @@ msgstr "GPU ops/sekund"
 msgid "VFS ops/sec and"
 msgstr "VFS ops/sec a"
 
-#: src/process/do_process.cpp:841 src/process/do_process.cpp:1015
+#: src/process/do_process.cpp:841 src/process/do_process.cpp:1017
 msgid "CPU use"
 msgstr "využití CPU"
 
-#: src/process/do_process.cpp:845 src/process/do_process.cpp:902
-#: src/process/do_process.cpp:1021
+#: src/process/do_process.cpp:845 src/process/do_process.cpp:904
+#: src/process/do_process.cpp:1023
 msgid "Power est."
 msgstr "Energie zbývá"
 
 #: src/process/do_process.cpp:845 src/process/do_process.cpp:847
-#: src/process/do_process.cpp:906 src/process/do_process.cpp:1025
+#: src/process/do_process.cpp:908 src/process/do_process.cpp:1027
 msgid "Usage"
 msgstr "Využití"
 
 #: src/process/do_process.cpp:845 src/process/do_process.cpp:847
-#: src/process/do_process.cpp:1027
+#: src/process/do_process.cpp:1029
 msgid "Events/s"
 msgstr "Událost/i"
 
 #: src/process/do_process.cpp:845 src/process/do_process.cpp:847
-#: src/process/do_process.cpp:916 src/process/do_process.cpp:1029
+#: src/process/do_process.cpp:918 src/process/do_process.cpp:1031
 msgid "Category"
 msgstr "Kategorie"
 
 #: src/process/do_process.cpp:845 src/process/do_process.cpp:847
-#: src/process/do_process.cpp:918 src/process/do_process.cpp:1031
+#: src/process/do_process.cpp:920 src/process/do_process.cpp:1033
 msgid "Description"
 msgstr "Popis"
 
-#: src/process/do_process.cpp:897
+#: src/process/do_process.cpp:899
 msgid "Overview of Software Power Consumers"
 msgstr "Přehled Software Power uživatelů"
 
-#: src/process/do_process.cpp:908
+#: src/process/do_process.cpp:910
 msgid "Wakeups/s"
 msgstr "Probuzení/s"
 
-#: src/process/do_process.cpp:910
+#: src/process/do_process.cpp:912
 msgid "GPU ops/s"
 msgstr "GPU ops/s"
 
-#: src/process/do_process.cpp:912
+#: src/process/do_process.cpp:914
 msgid "Disk IO/s"
 msgstr "Disk IO/s"
 
-#: src/process/do_process.cpp:914
+#: src/process/do_process.cpp:916
 msgid "GFX Wakeups/s"
 msgstr "GFX Probuzení/s"
 
-#: src/process/do_process.cpp:1008
+#: src/process/do_process.cpp:1010
 msgid "Power Consumption Summary"
 msgstr "Souhrn spotřeby energie"
 
-#: src/process/do_process.cpp:1012
+#: src/process/do_process.cpp:1014
 msgid "GPU ops/second"
 msgstr "GPU ops/sekund"
 
-#: src/process/do_process.cpp:1013
+#: src/process/do_process.cpp:1015
 msgid "VFS ops/sec"
 msgstr "VFS ops/sekund"
 
-#: src/process/do_process.cpp:1014
+#: src/process/do_process.cpp:1016
 msgid "GFX wakes/sec and"
 msgstr "GFX probuzení/sek a"
 
-#: src/perf/perf.cpp:111
+#: src/perf/perf.cpp:115
+#, c-format
+msgid ""
+"Too many open files, please increase the limit of open file descriptors.\n"
+msgstr ""
+
+#: src/perf/perf.cpp:117
 #, c-format
 msgid "PowerTOP %s needs the kernel to support the 'perf' subsystem\n"
 msgstr "PowerTOP %s potřebuje jádro k podpoře 'perf' subsystému\n"
 
-#: src/perf/perf.cpp:112
+#: src/perf/perf.cpp:118
 #, c-format
 msgid "as well as support for trace points in the kernel:\n"
 msgstr "stejně jako podpora pro sledované body v jádru:\n"
@@ -280,12 +311,12 @@ msgstr "Energie zbývá   Použití     Jméno zařízení\n"
 msgid "              Usage     Device name\n"
 msgstr "              Použití     Jméno zařízení\n"
 
-#: src/devices/alsa.cpp:79
+#: src/devices/alsa.cpp:77
 #, c-format
 msgid "Audio codec %s: %s (%s)"
 msgstr "Audio kodek %s: %s (%s)"
 
-#: src/devices/alsa.cpp:81 src/devices/alsa.cpp:83
+#: src/devices/alsa.cpp:79 src/devices/alsa.cpp:81
 #, c-format
 msgid "Audio codec %s: %s"
 msgstr "Audio kodek %s: %s"
@@ -295,32 +326,32 @@ msgstr "Audio kodek %s: %s"
 msgid "PCI Device: %s"
 msgstr "PCI Zařízení: %s"
 
-#: src/devices/usb.cpp:51 src/devices/usb.cpp:94 src/devices/usb.cpp:96
+#: src/devices/usb.cpp:49 src/devices/usb.cpp:92 src/devices/usb.cpp:94
 #, c-format
 msgid "USB device: %s"
 msgstr "USB zařízení: %s"
 
-#: src/devices/usb.cpp:92
+#: src/devices/usb.cpp:90
 #, c-format
 msgid "USB device: %s (%s)"
 msgstr "USB zařízení: %s (%s)"
 
-#: src/devices/ahci.cpp:140
+#: src/devices/ahci.cpp:142
 #, c-format
 msgid "SATA link: %s"
 msgstr "SATA link: %s"
 
-#: src/devices/ahci.cpp:142
+#: src/devices/ahci.cpp:144
 #, c-format
 msgid "SATA disk: %s"
 msgstr "SATA disk: %s"
 
-#: src/devices/rfkill.cpp:65 src/devices/rfkill.cpp:69
+#: src/devices/rfkill.cpp:64 src/devices/rfkill.cpp:68
 #, c-format
 msgid "Radio device: %s"
 msgstr "Radio zařízení: %s"
 
-#: src/devices/network.cpp:177
+#: src/devices/network.cpp:176
 #, c-format
 msgid "Network interface: %s (%s)"
 msgstr "Síťové rozhraní: %s (%s)"
@@ -330,21 +361,21 @@ msgstr "Síťové rozhraní: %s (%s)"
 msgid "Bluetooth device interface status"
 msgstr "Status rozhraní zařízení Bluetooth"
 
-#: src/tuning/cpufreq.cpp:44 src/tuning/ethernet.cpp:53
+#: src/tuning/cpufreq.cpp:44 src/tuning/ethernet.cpp:50
 #: src/tuning/tunable.cpp:48 src/tuning/wifi.cpp:45 src/tuning/runtime.cpp:41
-#: src/tuning/tuningusb.cpp:40 src/tuning/tuningsysfs.cpp:44
+#: src/tuning/tuningusb.cpp:37 src/tuning/tuningsysfs.cpp:44
 msgid "Good"
 msgstr "Dobré"
 
-#: src/tuning/cpufreq.cpp:44 src/tuning/ethernet.cpp:53
+#: src/tuning/cpufreq.cpp:44 src/tuning/ethernet.cpp:50
 #: src/tuning/tunable.cpp:49 src/tuning/wifi.cpp:45 src/tuning/runtime.cpp:41
-#: src/tuning/tuningusb.cpp:40 src/tuning/tuningsysfs.cpp:44
+#: src/tuning/tuningusb.cpp:37 src/tuning/tuningsysfs.cpp:44
 msgid "Bad"
 msgstr "Špatné"
 
-#: src/tuning/cpufreq.cpp:44 src/tuning/ethernet.cpp:53
+#: src/tuning/cpufreq.cpp:44 src/tuning/ethernet.cpp:50
 #: src/tuning/tunable.cpp:50 src/tuning/wifi.cpp:45 src/tuning/runtime.cpp:41
-#: src/tuning/tuningusb.cpp:40 src/tuning/tuningsysfs.cpp:44
+#: src/tuning/tuningusb.cpp:37 src/tuning/tuningsysfs.cpp:44
 msgid "Unknown"
 msgstr "Neznámé"
 
@@ -377,7 +408,7 @@ msgstr "Možnosti vyladění"
 msgid " <ESC> Exit | <Enter> Toggle tunable | <r> Window refresh"
 msgstr " <ESC> Konec | <Enter> Přepnout změnitelné | <r> Obnovit okno"
 
-#: src/tuning/ethernet.cpp:57
+#: src/tuning/ethernet.cpp:54
 #, c-format
 msgid "Wake-on-lan status for device %s"
 msgstr "Wake-on-lan status zařízení %s"
@@ -407,13 +438,13 @@ msgstr "PCI Zařízení %s nemá spustitelnou správu napájení"
 msgid "Runtime PM for PCI Device %s"
 msgstr "Trvání PM pro PCI zařízení %s"
 
-#: src/tuning/tuningusb.cpp:55
+#: src/tuning/tuningusb.cpp:52
 #, c-format
 msgid "Autosuspend for unknown USB device %s (%s:%s)"
 msgstr "Automatické uspání pro neznámé USB zařízení %s (%s:%s)"
 
-#: src/tuning/tuningusb.cpp:72 src/tuning/tuningusb.cpp:74
-#: src/tuning/tuningusb.cpp:76
+#: src/tuning/tuningusb.cpp:69 src/tuning/tuningusb.cpp:71
+#: src/tuning/tuningusb.cpp:73
 #, c-format
 msgid "Autosuspend for USB device %s [%s]"
 msgstr "Automatické uspání pro USB zařízení %s [%s]"
@@ -423,186 +454,190 @@ msgstr "Automatické uspání pro USB zařízení %s [%s]"
 msgid "Enable SATA link power Managmenet for %s"
 msgstr "Zapnout správu napájení SATA linku pro %s"
 
-#: src/calibrate/calibrate.cpp:291
+#: src/calibrate/calibrate.cpp:236
 #, c-format
 msgid "Cannot create temp file\n"
 msgstr "Nelze vytvořit dočasný soubor\n"
 
-#: src/calibrate/calibrate.cpp:310
+#: src/calibrate/calibrate.cpp:255
 #, c-format
 msgid "Calibrating: CPU usage on %i threads\n"
 msgstr "Kalibrace: CPU použito na %i vláken\n"
 
-#: src/calibrate/calibrate.cpp:325
+#: src/calibrate/calibrate.cpp:270
 #, c-format
 msgid "Calibrating: CPU wakeup power consumption\n"
 msgstr "Kalibrace: spotřeba energie na probuzení CPU\n"
 
-#: src/calibrate/calibrate.cpp:342
+#: src/calibrate/calibrate.cpp:287
 #, c-format
 msgid "Calibrating USB devices\n"
 msgstr "Kalibrace USB zařízení\n"
 
-#: src/calibrate/calibrate.cpp:344 src/calibrate/calibrate.cpp:361
-#: src/calibrate/calibrate.cpp:369 src/calibrate/calibrate.cpp:386
+#: src/calibrate/calibrate.cpp:289 src/calibrate/calibrate.cpp:306
+#: src/calibrate/calibrate.cpp:314 src/calibrate/calibrate.cpp:331
 #, c-format
 msgid ".... device %s \n"
 msgstr ".... zařízení %s \n"
 
-#: src/calibrate/calibrate.cpp:359
+#: src/calibrate/calibrate.cpp:304
 #, c-format
 msgid "Calibrating radio devices\n"
 msgstr "Kalibrace radio zařízení\n"
 
-#: src/calibrate/calibrate.cpp:383
+#: src/calibrate/calibrate.cpp:328
 #, c-format
 msgid "Calibrating backlight\n"
 msgstr "Kalibrace podsvícení\n"
 
-#: src/calibrate/calibrate.cpp:407 src/calibrate/calibrate.cpp:415
+#: src/calibrate/calibrate.cpp:352 src/calibrate/calibrate.cpp:360
 #, c-format
 msgid "Calibrating idle\n"
 msgstr "Kalibrace nečinnosti\n"
 
-#: src/calibrate/calibrate.cpp:426
+#: src/calibrate/calibrate.cpp:371
 #, c-format
 msgid "Calibrating: disk usage \n"
 msgstr "Kalibrace: užití disku \n"
 
-#: src/calibrate/calibrate.cpp:451
+#: src/calibrate/calibrate.cpp:396
 msgid "Starting PowerTOP power estimate calibration \n"
 msgstr "Začínání kalibrace odhadování energie PowerTOP\n"
 
-#: src/calibrate/calibrate.cpp:474
+#: src/calibrate/calibrate.cpp:419
 msgid "Finishing PowerTOP power estimate calibration \n"
 msgstr "Ukončování kalibrace odhadování energie PowerTOP\n"
 
-#: src/calibrate/calibrate.cpp:478
+#: src/calibrate/calibrate.cpp:423
 #, c-format
 msgid "Parameters after calibration:\n"
 msgstr "Parametry po kalibraci:\n"
 
-#: src/main.cpp:86
+#: src/main.cpp:91
 #, c-format
 msgid "PowerTOP version"
 msgstr "PowerTOP verze"
 
-#: src/main.cpp:92
+#: src/main.cpp:97
 msgid "Set refresh time out"
 msgstr "Nastavit čas obnovení"
 
-#: src/main.cpp:105
+#: src/main.cpp:110
 msgid "Usage: powertop [OPTIONS]"
 msgstr "Použití: powertop [VOLBY]"
 
-#: src/main.cpp:106
+#: src/main.cpp:111
 msgid "run in \"debug\" mode"
 msgstr "spustit v \"debug\" módu"
 
-#: src/main.cpp:107
+#: src/main.cpp:112
 msgid "print version information"
 msgstr "vypíše informace o verzi"
 
-#: src/main.cpp:108
+#: src/main.cpp:113
 msgid "runs powertop in calibration mode"
 msgstr "spustit powertop v kalibračním režimu"
 
-#: src/main.cpp:109
+#: src/main.cpp:114
+msgid "Sets all tunable options to their GOOD setting"
+msgstr ""
+
+#: src/main.cpp:115
 msgid "[=devnode]"
 msgstr "[=devnode]"
 
-#: src/main.cpp:109
+#: src/main.cpp:115
 msgid "uses an Extech Power Analyzer for measurements"
 msgstr "využití Extech Power Analyzéru pro měření"
 
-#: src/main.cpp:110 src/main.cpp:111
+#: src/main.cpp:116 src/main.cpp:117
 msgid "[=FILENAME]"
 msgstr "[=JMENOSOUBORU]"
 
-#: src/main.cpp:110
+#: src/main.cpp:116
 msgid "generate a html report"
 msgstr "vytvoření html hlášení"
 
-#: src/main.cpp:111
+#: src/main.cpp:117
 msgid "generate a csv report"
 msgstr "vytvoření csv hlášení"
 
-#: src/main.cpp:112
+#: src/main.cpp:118
 msgid "[=seconds]"
 msgstr "[=sekundy]"
 
-#: src/main.cpp:112
+#: src/main.cpp:118
 msgid "generate a report for 'x' seconds"
 msgstr "vytvoření hlášení pro \"x\" sekund"
 
-#: src/main.cpp:113
+#: src/main.cpp:119
 msgid "[=iterations] number of times to run each test"
 msgstr "[=iterace] počet spuštění každého testu"
 
-#: src/main.cpp:114
+#: src/main.cpp:120
 msgid "[=workload]"
-msgstr ""
+msgstr "[=zatížení]"
 
-#: src/main.cpp:114
+#: src/main.cpp:120
 msgid "file to execute for workload"
-msgstr ""
+msgstr "soubor ke spuštění pro zatížení"
 
-#: src/main.cpp:115
+#: src/main.cpp:121
 msgid "suppress stderr output"
 msgstr ""
 
-#: src/main.cpp:116
+#: src/main.cpp:122
 msgid "print this help menu"
 msgstr "vypíše tuto nápovědu"
 
-#: src/main.cpp:118
+#: src/main.cpp:124
 msgid "For more help please refer to the README"
 msgstr "Pro více nápovědy přejděte prosím do README"
 
-#: src/main.cpp:195
+#: src/main.cpp:201
 #, c-format
 msgid "Unknown issue running workload!\n"
-msgstr ""
+msgstr "Neznámý problém při spuštění zatížení!\n"
 
-#: src/main.cpp:236
+#: src/main.cpp:242
 msgid "PowerTOP is out of memory. PowerTOP is Aborting"
 msgstr "PowerTOPu došla paměť. Power TOP je přerušen."
 
-#: src/main.cpp:244
+#: src/main.cpp:250
 #, c-format
 msgid "Preparing to take measurements\n"
 msgstr "Příprava k měření\n"
 
-#: src/main.cpp:249
+#: src/main.cpp:255
 #, c-format
 msgid "Taking %d measurement(s) for a duration of %d second(s) each.\n"
 msgstr "Změřeno %d výsledků za dobu trvání %d vteřin každý.\n"
 
-#: src/main.cpp:251
+#: src/main.cpp:257
 #, c-format
 msgid "Measuring workload %s.\n"
-msgstr ""
+msgstr "Měření zatížení %s.\n"
 
-#: src/main.cpp:274
+#: src/main.cpp:280
 #, c-format
 msgid "PowerTOP "
 msgstr "PowerTOP "
 
-#: src/main.cpp:275 src/main.cpp:303
+#: src/main.cpp:281 src/main.cpp:328
 #, c-format
 msgid "exiting...\n"
 msgstr "ukončuji...\n"
 
-#: src/main.cpp:302
+#: src/main.cpp:327
 #, c-format
 msgid "Failed to mount debugfs!\n"
 msgstr "Selhalo připojení debugfs!\n"
 
-#: src/main.cpp:394
+#: src/main.cpp:422
 #, c-format
 msgid "Quite mode failed!\n"
-msgstr ""
+msgstr "Selhal tichý mód!\n"
 
-#: src/main.cpp:440
+#: src/main.cpp:472
 msgid "Leaving PowerTOP"
 msgstr "Ukončuji PowerTOP"
index 3182a66..8809397 100644 (file)
Binary files a/po/de_DE.gmo and b/po/de_DE.gmo differ
index f1e883e..b9f96b3 100644 (file)
@@ -3,15 +3,15 @@
 # This file is distributed under the same license as the PACKAGE package.
 #
 # Translators:
-# Ettore Atalan <atalanttore@googlemail.com>, 2012.
-# Fabian Affolter <fab@fedoraproject.org>, 2011.
-#   <ulf.hofemeier@intel.com>, 2012.
+# Ettore Atalan <atalanttore@googlemail.com>, 2012-2013
+# Fabian Affolter <fab@fedoraproject.org>, 2011
+# uhofemei <ulf.hofemeier@intel.com>, 2012
 msgid ""
 msgstr ""
 "Project-Id-Version: PowerTOP\n"
 "Report-Msgid-Bugs-To: \"powertop@lists.01.org\"\n"
-"POT-Creation-Date: 2013-03-18 11:06-0700\n"
-"PO-Revision-Date: 2013-02-26 19:08+0000\n"
+"POT-Creation-Date: 2013-11-04 10:45-0800\n"
+"PO-Revision-Date: 2013-11-05 19:48+0000\n"
 "Last-Translator: Ettore Atalan <atalanttore@googlemail.com>\n"
 "Language-Team: German (Germany) (http://www.transifex.com/projects/p/"
 "PowerTOP/language/de_DE/)\n"
@@ -54,111 +54,131 @@ msgstr "Gerät-Statistiken"
 msgid "Exit"
 msgstr "Beenden"
 
-#: src/cpu/cpu_core.cpp:37 src/cpu/cpu_core.cpp:93 src/cpu/intel_cpus.cpp:201
+#: src/cpu/cpu_core.cpp:37 src/cpu/cpu_core.cpp:93 src/cpu/intel_cpus.cpp:245
 #, c-format
 msgid "  Core"
-msgstr ""
+msgstr "Kern"
 
-#: src/cpu/cpu.cpp:94
+#: src/cpu/cpu.cpp:80
 #, c-format
 msgid "cpu package %i"
 msgstr "CPU-Paket %i"
 
-#: src/cpu/cpu.cpp:95
+#: src/cpu/cpu.cpp:81
 msgid "cpu package"
 msgstr "CPU-Paket"
 
-#: src/cpu/cpu.cpp:446 src/cpu/cpu.cpp:573
+#: src/cpu/cpu.cpp:84
+#, c-format
+msgid "cpu rapl package %i"
+msgstr ""
+
+#: src/cpu/cpu.cpp:85
+msgid "cpu rapl package"
+msgstr ""
+
+#: src/cpu/cpu.cpp:89
+#, c-format
+msgid "dram rapl package %i"
+msgstr ""
+
+#: src/cpu/cpu.cpp:90
+msgid "dram rapl package"
+msgstr ""
+
+#: src/cpu/cpu.cpp:459 src/cpu/cpu.cpp:586
 #, c-format
 msgid "Package %i"
 msgstr "Paket %i"
 
-#: src/cpu/cpu.cpp:478 src/cpu/cpu.cpp:593
+#: src/cpu/cpu.cpp:491 src/cpu/cpu.cpp:606
 #, c-format
 msgid "Core %i"
 msgstr "Kern %i"
 
-#: src/cpu/cpu.cpp:480
+#: src/cpu/cpu.cpp:493
 #, c-format
 msgid "GPU %i"
 msgstr "GPU %i"
 
-#: src/cpu/cpu.cpp:502 src/cpu/cpu.cpp:614
+#: src/cpu/cpu.cpp:515 src/cpu/cpu.cpp:627
 #, c-format
 msgid "CPU %i"
 msgstr "GPU %i"
 
-#: src/cpu/cpu.cpp:796
+#: src/cpu/cpu.cpp:807
 #, c-format
 msgid "cpu_idle event returned no state?\n"
 msgstr "cpu_idle-Ereignis gab keinen Status zurück?\n"
 
-#: src/cpu/cpu.cpp:811
+#: src/cpu/cpu.cpp:822
 #, c-format
 msgid "power or cpu_frequency event returned no state?\n"
-msgstr ""
+msgstr "power- oder cpu_frequency-Ereignis gab kein Status zurück?\n"
 
 #: src/cpu/cpu_linux.cpp:79
 msgid "C0 polling"
 msgstr "C0 sammeln"
 
 #: src/cpu/cpu_linux.cpp:240 src/cpu/cpu_linux.cpp:339
-#: src/cpu/intel_cpus.cpp:423
+#: src/cpu/intel_cpus.cpp:521
 #, c-format
 msgid " CPU %i"
-msgstr ""
+msgstr "CPU %i"
 
 #: src/cpu/cpu_package.cpp:47
 #, c-format
 msgid "Package"
-msgstr ""
+msgstr "Paket"
 
-#: src/cpu/cpu_package.cpp:105 src/cpu/intel_cpus.cpp:226
+#: src/cpu/cpu_package.cpp:105 src/cpu/intel_cpus.cpp:297
 #, c-format
 msgid "  Package"
-msgstr ""
+msgstr "Paket"
 
-#: src/cpu/intel_cpus.cpp:61
+#: src/cpu/intel_cpus.cpp:81
 #, c-format
-msgid "msr reg not found"
-msgstr "msr reg nicht gefunden"
-
-#: src/cpu/intel_cpus.cpp:71
-#, c-format
-msgid "pread cpu%d 0x%llx : "
-msgstr "pread CPU%d 0x%llx :"
+msgid "read_msr cpu%d 0x%llx : "
+msgstr ""
 
-#: src/cpu/intel_cpus.cpp:347
+#: src/cpu/intel_cpus.cpp:445
 msgid "C0 active"
 msgstr "C0 aktiv"
 
-#: src/cpu/intel_cpus.cpp:406
+#: src/cpu/intel_cpus.cpp:504
 #, c-format
 msgid "Actual"
 msgstr "Aktuell"
 
-#: src/lib.cpp:266
+#: src/lib.cpp:286
 #, c-format
 msgid "%7sW"
 msgstr "%7sW"
 
-#: src/lib.cpp:269
+#: src/lib.cpp:289
 #, c-format
 msgid "    0 mW"
 msgstr "    0 mW"
 
-#: src/lib.cpp:390
+#: src/lib.cpp:408
 msgid "PS/2 Touchpad / Keyboard / Mouse"
 msgstr "PS/2-Tastfeld / Tastatur / Maus"
 
-#: src/lib.cpp:391
+#: src/lib.cpp:409
 msgid "SATA controller"
 msgstr "SATA-Controller"
 
-#: src/lib.cpp:392
+#: src/lib.cpp:410
 msgid "Intel built in USB hub"
 msgstr "Intel integrierter USB Hub"
 
+#: src/lib.cpp:482 src/lib.cpp:514
+#, c-format
+msgid ""
+"Model-specific registers (MSR)\t\t\t not found (try enabling "
+"CONFIG_X86_MSR).\n"
+msgstr ""
+
 #: src/process/do_process.cpp:817
 #, c-format
 msgid ""
@@ -182,7 +202,7 @@ msgstr "Die geschätzte Restzeit beträgt %i Stunden, %i Minuten\n"
 msgid "Summary"
 msgstr "Zusammenfassung"
 
-#: src/process/do_process.cpp:841 src/process/do_process.cpp:1011
+#: src/process/do_process.cpp:841 src/process/do_process.cpp:1013
 msgid "wakeups/second"
 msgstr "Aufwachvorgänge/Sekunde"
 
@@ -194,78 +214,86 @@ msgstr "GPU-Operationen/Sekunde"
 msgid "VFS ops/sec and"
 msgstr "VFS-Operationen/Sekunde und"
 
-#: src/process/do_process.cpp:841 src/process/do_process.cpp:1015
+#: src/process/do_process.cpp:841 src/process/do_process.cpp:1017
 msgid "CPU use"
 msgstr "CPU-Nutzung"
 
-#: src/process/do_process.cpp:845 src/process/do_process.cpp:902
-#: src/process/do_process.cpp:1021
+#: src/process/do_process.cpp:845 src/process/do_process.cpp:904
+#: src/process/do_process.cpp:1023
 msgid "Power est."
 msgstr "Gesch. Leistung"
 
 #: src/process/do_process.cpp:845 src/process/do_process.cpp:847
-#: src/process/do_process.cpp:906 src/process/do_process.cpp:1025
+#: src/process/do_process.cpp:908 src/process/do_process.cpp:1027
 msgid "Usage"
 msgstr "Auslastung"
 
 #: src/process/do_process.cpp:845 src/process/do_process.cpp:847
-#: src/process/do_process.cpp:1027
+#: src/process/do_process.cpp:1029
 msgid "Events/s"
 msgstr "Ereignisse/s"
 
 #: src/process/do_process.cpp:845 src/process/do_process.cpp:847
-#: src/process/do_process.cpp:916 src/process/do_process.cpp:1029
+#: src/process/do_process.cpp:918 src/process/do_process.cpp:1031
 msgid "Category"
 msgstr "Kategorie"
 
 #: src/process/do_process.cpp:845 src/process/do_process.cpp:847
-#: src/process/do_process.cpp:918 src/process/do_process.cpp:1031
+#: src/process/do_process.cpp:920 src/process/do_process.cpp:1033
 msgid "Description"
 msgstr "Beschreibung"
 
-#: src/process/do_process.cpp:897
+#: src/process/do_process.cpp:899
 msgid "Overview of Software Power Consumers"
 msgstr "Übersicht der Software-Leistungsverbraucher"
 
-#: src/process/do_process.cpp:908
+#: src/process/do_process.cpp:910
 msgid "Wakeups/s"
 msgstr "Aufwachvorgänge/s"
 
-#: src/process/do_process.cpp:910
+#: src/process/do_process.cpp:912
 msgid "GPU ops/s"
 msgstr "GPU-Operationen/s"
 
-#: src/process/do_process.cpp:912
+#: src/process/do_process.cpp:914
 msgid "Disk IO/s"
 msgstr "Platten-Ein-/Ausgabe/s"
 
-#: src/process/do_process.cpp:914
+#: src/process/do_process.cpp:916
 msgid "GFX Wakeups/s"
 msgstr "GFX-Aufwachvorgänge/s"
 
-#: src/process/do_process.cpp:1008
+#: src/process/do_process.cpp:1010
 msgid "Power Consumption Summary"
 msgstr "Zusammenfassung der Leistungsaufnahme"
 
-#: src/process/do_process.cpp:1012
+#: src/process/do_process.cpp:1014
 msgid "GPU ops/second"
 msgstr "GPU-Operationen/Sekunde"
 
-#: src/process/do_process.cpp:1013
+#: src/process/do_process.cpp:1015
 msgid "VFS ops/sec"
 msgstr "VFS-Operationen/Sek"
 
-#: src/process/do_process.cpp:1014
+#: src/process/do_process.cpp:1016
 msgid "GFX wakes/sec and"
 msgstr "GFX-Aufwachen/Sek und"
 
-#: src/perf/perf.cpp:111
+#: src/perf/perf.cpp:115
+#, c-format
+msgid ""
+"Too many open files, please increase the limit of open file descriptors.\n"
+msgstr ""
+"Zu viele offene Dateien. Bitte erhöhen Sie die Begrenzung von offenen "
+"Dateideskriptoren.\n"
+
+#: src/perf/perf.cpp:117
 #, c-format
 msgid "PowerTOP %s needs the kernel to support the 'perf' subsystem\n"
 msgstr ""
 "PowerTOP %s benötigt einen Kernel der das 'perf'-Subsystem unterstützt\n"
 
-#: src/perf/perf.cpp:112
+#: src/perf/perf.cpp:118
 #, c-format
 msgid "as well as support for trace points in the kernel:\n"
 msgstr "sowie Unterstützung für Ablaufverfolgungspunkte im Kernel:\n"
@@ -283,12 +311,12 @@ msgstr "Gesch. Leistung    Auslastung     Gerätename\n"
 msgid "              Usage     Device name\n"
 msgstr "              Auslastung     Gerätename\n"
 
-#: src/devices/alsa.cpp:79
+#: src/devices/alsa.cpp:77
 #, c-format
 msgid "Audio codec %s: %s (%s)"
 msgstr "Audiocodec %s: %s (%s)"
 
-#: src/devices/alsa.cpp:81 src/devices/alsa.cpp:83
+#: src/devices/alsa.cpp:79 src/devices/alsa.cpp:81
 #, c-format
 msgid "Audio codec %s: %s"
 msgstr "Audiocodec %s: %s"
@@ -298,32 +326,32 @@ msgstr "Audiocodec %s: %s"
 msgid "PCI Device: %s"
 msgstr "PCI-Gerät: %s"
 
-#: src/devices/usb.cpp:51 src/devices/usb.cpp:94 src/devices/usb.cpp:96
+#: src/devices/usb.cpp:49 src/devices/usb.cpp:92 src/devices/usb.cpp:94
 #, c-format
 msgid "USB device: %s"
 msgstr "USB-Gerät: %s"
 
-#: src/devices/usb.cpp:92
+#: src/devices/usb.cpp:90
 #, c-format
 msgid "USB device: %s (%s)"
 msgstr "USB-Gerät: %s (%s)"
 
-#: src/devices/ahci.cpp:140
+#: src/devices/ahci.cpp:142
 #, c-format
 msgid "SATA link: %s"
 msgstr "SATA-Verbindung: %s"
 
-#: src/devices/ahci.cpp:142
+#: src/devices/ahci.cpp:144
 #, c-format
 msgid "SATA disk: %s"
 msgstr "SATA-Festplatte: %s"
 
-#: src/devices/rfkill.cpp:65 src/devices/rfkill.cpp:69
+#: src/devices/rfkill.cpp:64 src/devices/rfkill.cpp:68
 #, c-format
 msgid "Radio device: %s"
 msgstr "Funk-Gerät:%s"
 
-#: src/devices/network.cpp:177
+#: src/devices/network.cpp:176
 #, c-format
 msgid "Network interface: %s (%s)"
 msgstr "Netzwerkschnittstelle: %s (%s)"
@@ -333,21 +361,21 @@ msgstr "Netzwerkschnittstelle: %s (%s)"
 msgid "Bluetooth device interface status"
 msgstr "Bluetooth-Gerät Schnittstellenstatus"
 
-#: src/tuning/cpufreq.cpp:44 src/tuning/ethernet.cpp:53
+#: src/tuning/cpufreq.cpp:44 src/tuning/ethernet.cpp:50
 #: src/tuning/tunable.cpp:48 src/tuning/wifi.cpp:45 src/tuning/runtime.cpp:41
-#: src/tuning/tuningusb.cpp:40 src/tuning/tuningsysfs.cpp:44
+#: src/tuning/tuningusb.cpp:37 src/tuning/tuningsysfs.cpp:44
 msgid "Good"
 msgstr "Gut"
 
-#: src/tuning/cpufreq.cpp:44 src/tuning/ethernet.cpp:53
+#: src/tuning/cpufreq.cpp:44 src/tuning/ethernet.cpp:50
 #: src/tuning/tunable.cpp:49 src/tuning/wifi.cpp:45 src/tuning/runtime.cpp:41
-#: src/tuning/tuningusb.cpp:40 src/tuning/tuningsysfs.cpp:44
+#: src/tuning/tuningusb.cpp:37 src/tuning/tuningsysfs.cpp:44
 msgid "Bad"
 msgstr "Schlecht"
 
-#: src/tuning/cpufreq.cpp:44 src/tuning/ethernet.cpp:53
+#: src/tuning/cpufreq.cpp:44 src/tuning/ethernet.cpp:50
 #: src/tuning/tunable.cpp:50 src/tuning/wifi.cpp:45 src/tuning/runtime.cpp:41
-#: src/tuning/tuningusb.cpp:40 src/tuning/tuningsysfs.cpp:44
+#: src/tuning/tuningusb.cpp:37 src/tuning/tuningsysfs.cpp:44
 msgid "Unknown"
 msgstr "Unbekannt"
 
@@ -382,7 +410,7 @@ msgstr ""
 " <ESC> Beenden | <Enter> Abstimmbare Option umschalten | <r> Fenster "
 "aktualisieren"
 
-#: src/tuning/ethernet.cpp:57
+#: src/tuning/ethernet.cpp:54
 #, c-format
 msgid "Wake-on-lan status for device %s"
 msgstr "Wake-On-LAN-Status für Gerät %s"
@@ -412,13 +440,13 @@ msgstr "PCI-Gerät %s hat keine Energieverwaltung zur Laufzeit"
 msgid "Runtime PM for PCI Device %s"
 msgstr "Laufzeit-Energieverwaltung für PCI-Gerät %s"
 
-#: src/tuning/tuningusb.cpp:55
+#: src/tuning/tuningusb.cpp:52
 #, c-format
 msgid "Autosuspend for unknown USB device %s (%s:%s)"
 msgstr "AutoSuspend für unbekanntes USB-Gerät %s (%s:%s)"
 
-#: src/tuning/tuningusb.cpp:72 src/tuning/tuningusb.cpp:74
-#: src/tuning/tuningusb.cpp:76
+#: src/tuning/tuningusb.cpp:69 src/tuning/tuningusb.cpp:71
+#: src/tuning/tuningusb.cpp:73
 #, c-format
 msgid "Autosuspend for USB device %s [%s]"
 msgstr "AutoSuspend für USB-Gerät %s [%s]"
@@ -428,190 +456,194 @@ msgstr "AutoSuspend für USB-Gerät %s [%s]"
 msgid "Enable SATA link power Managmenet for %s"
 msgstr "Energieverwaltung für SATA-Verbindung %s aktivieren"
 
-#: src/calibrate/calibrate.cpp:291
+#: src/calibrate/calibrate.cpp:236
 #, c-format
 msgid "Cannot create temp file\n"
 msgstr "Temporäre Datei konnte nicht erzeugt werden\n"
 
-#: src/calibrate/calibrate.cpp:310
+#: src/calibrate/calibrate.cpp:255
 #, c-format
 msgid "Calibrating: CPU usage on %i threads\n"
 msgstr "Kalibriere CPU-Auslastung bei %i Thread\n"
 
-#: src/calibrate/calibrate.cpp:325
+#: src/calibrate/calibrate.cpp:270
 #, c-format
 msgid "Calibrating: CPU wakeup power consumption\n"
 msgstr "Kalibriere CPU-Aufwach-Leistungsaufnahme\n"
 
-#: src/calibrate/calibrate.cpp:342
+#: src/calibrate/calibrate.cpp:287
 #, c-format
 msgid "Calibrating USB devices\n"
 msgstr "Kalibriere USB-Geräte\n"
 
-#: src/calibrate/calibrate.cpp:344 src/calibrate/calibrate.cpp:361
-#: src/calibrate/calibrate.cpp:369 src/calibrate/calibrate.cpp:386
+#: src/calibrate/calibrate.cpp:289 src/calibrate/calibrate.cpp:306
+#: src/calibrate/calibrate.cpp:314 src/calibrate/calibrate.cpp:331
 #, c-format
 msgid ".... device %s \n"
 msgstr ".... Gerät %s\n"
 
-#: src/calibrate/calibrate.cpp:359
+#: src/calibrate/calibrate.cpp:304
 #, c-format
 msgid "Calibrating radio devices\n"
 msgstr "Kalibriere Funkvorrichtungen\n"
 
-#: src/calibrate/calibrate.cpp:383
+#: src/calibrate/calibrate.cpp:328
 #, c-format
 msgid "Calibrating backlight\n"
 msgstr "Kalibriere Hintergrundbeleuchtung\n"
 
-#: src/calibrate/calibrate.cpp:407 src/calibrate/calibrate.cpp:415
+#: src/calibrate/calibrate.cpp:352 src/calibrate/calibrate.cpp:360
 #, c-format
 msgid "Calibrating idle\n"
 msgstr "Kalibriere Leerlauf\n"
 
-#: src/calibrate/calibrate.cpp:426
+#: src/calibrate/calibrate.cpp:371
 #, c-format
 msgid "Calibrating: disk usage \n"
 msgstr "Kalibriere Festplattennutzung\n"
 
-#: src/calibrate/calibrate.cpp:451
+#: src/calibrate/calibrate.cpp:396
 msgid "Starting PowerTOP power estimate calibration \n"
 msgstr "Starte Kalibrierung der PowerTOP-Leistungsschätzung\n"
 
-#: src/calibrate/calibrate.cpp:474
+#: src/calibrate/calibrate.cpp:419
 msgid "Finishing PowerTOP power estimate calibration \n"
 msgstr "Schließe Kalibrierung der PowerTOP-Leistungsschätzung ab\n"
 
-#: src/calibrate/calibrate.cpp:478
+#: src/calibrate/calibrate.cpp:423
 #, c-format
 msgid "Parameters after calibration:\n"
 msgstr "Parameter nach der Kalibrierung:\n"
 
-#: src/main.cpp:86
+#: src/main.cpp:91
 #, c-format
 msgid "PowerTOP version"
 msgstr "PowerTOP-Version"
 
-#: src/main.cpp:92
+#: src/main.cpp:97
 msgid "Set refresh time out"
 msgstr "Aktualisierungs-Zeitüberschreitung festlegen"
 
-#: src/main.cpp:105
+#: src/main.cpp:110
 msgid "Usage: powertop [OPTIONS]"
 msgstr "Verwendung: powertop [OPTIONEN]"
 
-#: src/main.cpp:106
+#: src/main.cpp:111
 msgid "run in \"debug\" mode"
 msgstr "in \"Debug\"-Modus ausführen"
 
-#: src/main.cpp:107
+#: src/main.cpp:112
 msgid "print version information"
 msgstr "Versionsinformation ausgeben"
 
-#: src/main.cpp:108
+#: src/main.cpp:113
 msgid "runs powertop in calibration mode"
 msgstr "führt Powertop im Kalibrierungsmodus aus"
 
-#: src/main.cpp:109
+#: src/main.cpp:114
+msgid "Sets all tunable options to their GOOD setting"
+msgstr "Legt für alle einstellbaren Optionen die jeweils GUTE Einstellung fest"
+
+#: src/main.cpp:115
 msgid "[=devnode]"
 msgstr "[=Entwicklungsmodus]"
 
-#: src/main.cpp:109
+#: src/main.cpp:115
 msgid "uses an Extech Power Analyzer for measurements"
 msgstr "verwendet einen Extech Leistungsanalysator für Messungen"
 
-#: src/main.cpp:110 src/main.cpp:111
+#: src/main.cpp:116 src/main.cpp:117
 msgid "[=FILENAME]"
 msgstr "[=DATEINAME]"
 
-#: src/main.cpp:110
+#: src/main.cpp:116
 msgid "generate a html report"
 msgstr "Einen HTML-Bericht generieren"
 
-#: src/main.cpp:111
+#: src/main.cpp:117
 msgid "generate a csv report"
 msgstr "Einen CSV-Bericht generieren"
 
-#: src/main.cpp:112
+#: src/main.cpp:118
 msgid "[=seconds]"
 msgstr "[=Sekunden]"
 
-#: src/main.cpp:112
+#: src/main.cpp:118
 msgid "generate a report for 'x' seconds"
 msgstr "Einen Bericht für 'x'-Sekunden generieren"
 
-#: src/main.cpp:113
+#: src/main.cpp:119
 msgid "[=iterations] number of times to run each test"
 msgstr "[=Wiederholungen] Anzahl der Wiederholungen für jeden Testlauf"
 
-#: src/main.cpp:114
+#: src/main.cpp:120
 msgid "[=workload]"
 msgstr "[=Auslastung]"
 
-#: src/main.cpp:114
+#: src/main.cpp:120
 msgid "file to execute for workload"
 msgstr "Für Auslastung auszuführende Datei"
 
-#: src/main.cpp:115
+#: src/main.cpp:121
 msgid "suppress stderr output"
 msgstr "stderr-Ausgabe unterdrücken"
 
-#: src/main.cpp:116
+#: src/main.cpp:122
 msgid "print this help menu"
 msgstr "Dieses Hilfemenü ausgeben"
 
-#: src/main.cpp:118
+#: src/main.cpp:124
 msgid "For more help please refer to the README"
 msgstr "Für weitere Hilfe ziehen Sie bitte die README zu Rate"
 
-#: src/main.cpp:195
+#: src/main.cpp:201
 #, c-format
 msgid "Unknown issue running workload!\n"
-msgstr ""
+msgstr "Unbekanntes Ergebnis beim Ausführen der Arbeitsbelastung\n"
 
-#: src/main.cpp:236
+#: src/main.cpp:242
 msgid "PowerTOP is out of memory. PowerTOP is Aborting"
 msgstr ""
 "PowerTOP hat keinen Speicherplatz mehr im Hauptspeicher. PowerTOP wird "
 "abgebrochen"
 
-#: src/main.cpp:244
+#: src/main.cpp:250
 #, c-format
 msgid "Preparing to take measurements\n"
 msgstr "Das Vornehmen von Messungen wird vorbereitet\n"
 
-#: src/main.cpp:249
+#: src/main.cpp:255
 #, c-format
 msgid "Taking %d measurement(s) for a duration of %d second(s) each.\n"
 msgstr ""
 "%d Messung(en) mit einer Dauer von je %d Sekunde(n) wird/werden "
 "vorgenommen.\n"
 
-#: src/main.cpp:251
+#: src/main.cpp:257
 #, c-format
 msgid "Measuring workload %s.\n"
 msgstr "Auslastung %s wird gemessen.\n"
 
-#: src/main.cpp:274
+#: src/main.cpp:280
 #, c-format
 msgid "PowerTOP "
 msgstr "PowerTOP "
 
-#: src/main.cpp:275 src/main.cpp:303
+#: src/main.cpp:281 src/main.cpp:328
 #, c-format
 msgid "exiting...\n"
 msgstr "Verlassen ...\n"
 
-#: src/main.cpp:302
+#: src/main.cpp:327
 #, c-format
 msgid "Failed to mount debugfs!\n"
 msgstr "Das Einhängen von debugfs ist gescheitert!\n"
 
-#: src/main.cpp:394
+#: src/main.cpp:422
 #, c-format
 msgid "Quite mode failed!\n"
 msgstr ""
 
-#: src/main.cpp:440
+#: src/main.cpp:472
 msgid "Leaving PowerTOP"
 msgstr "PowerTOP wird verlassen"
index 3dbe4e0..0eb6716 100644 (file)
Binary files a/po/en_GB.gmo and b/po/en_GB.gmo differ
index ebca810..208a1af 100644 (file)
@@ -3,15 +3,15 @@
 # This file is distributed under the same license as the PACKAGE package.
 #
 # Translators:
-# Margie Foster <margie@linux.intel.com>, 2012.
-# Patrick McCarty <patrick.mccarty@linux.intel.com>, 2013.
+# Margie Foster <margie@linux.intel.com>, 2012
+# Patrick McCarty <patrick.mccarty@linux.intel.com>, 2013
 msgid ""
 msgstr ""
 "Project-Id-Version: PowerTOP\n"
 "Report-Msgid-Bugs-To: \"powertop@lists.01.org\"\n"
-"POT-Creation-Date: 2013-03-18 11:06-0700\n"
-"PO-Revision-Date: 2013-02-26 19:08+0000\n"
-"Last-Translator: Patrick McCarty <patrick.mccarty@linux.intel.com>\n"
+"POT-Creation-Date: 2013-11-04 10:45-0800\n"
+"PO-Revision-Date: 2013-11-05 08:40+0000\n"
+"Last-Translator: Margie Foster <margie@linux.intel.com>\n"
 "Language-Team: English (United Kingdom) (http://www.transifex.com/projects/p/"
 "PowerTOP/language/en_GB/)\n"
 "Language: en_GB\n"
@@ -53,46 +53,64 @@ msgstr "Device stats"
 msgid "Exit"
 msgstr ""
 
-#: src/cpu/cpu_core.cpp:37 src/cpu/cpu_core.cpp:93 src/cpu/intel_cpus.cpp:201
+#: src/cpu/cpu_core.cpp:37 src/cpu/cpu_core.cpp:93 src/cpu/intel_cpus.cpp:245
 #, c-format
 msgid "  Core"
 msgstr ""
 
-#: src/cpu/cpu.cpp:94
+#: src/cpu/cpu.cpp:80
 #, c-format
 msgid "cpu package %i"
 msgstr "CPU package %i"
 
-#: src/cpu/cpu.cpp:95
+#: src/cpu/cpu.cpp:81
 msgid "cpu package"
 msgstr "CPU package"
 
-#: src/cpu/cpu.cpp:446 src/cpu/cpu.cpp:573
+#: src/cpu/cpu.cpp:84
+#, c-format
+msgid "cpu rapl package %i"
+msgstr ""
+
+#: src/cpu/cpu.cpp:85
+msgid "cpu rapl package"
+msgstr ""
+
+#: src/cpu/cpu.cpp:89
+#, c-format
+msgid "dram rapl package %i"
+msgstr ""
+
+#: src/cpu/cpu.cpp:90
+msgid "dram rapl package"
+msgstr ""
+
+#: src/cpu/cpu.cpp:459 src/cpu/cpu.cpp:586
 #, c-format
 msgid "Package %i"
 msgstr ""
 
-#: src/cpu/cpu.cpp:478 src/cpu/cpu.cpp:593
+#: src/cpu/cpu.cpp:491 src/cpu/cpu.cpp:606
 #, c-format
 msgid "Core %i"
 msgstr ""
 
-#: src/cpu/cpu.cpp:480
+#: src/cpu/cpu.cpp:493
 #, c-format
 msgid "GPU %i"
 msgstr ""
 
-#: src/cpu/cpu.cpp:502 src/cpu/cpu.cpp:614
+#: src/cpu/cpu.cpp:515 src/cpu/cpu.cpp:627
 #, c-format
 msgid "CPU %i"
 msgstr ""
 
-#: src/cpu/cpu.cpp:796
+#: src/cpu/cpu.cpp:807
 #, c-format
 msgid "cpu_idle event returned no state?\n"
 msgstr ""
 
-#: src/cpu/cpu.cpp:811
+#: src/cpu/cpu.cpp:822
 #, c-format
 msgid "power or cpu_frequency event returned no state?\n"
 msgstr ""
@@ -102,7 +120,7 @@ msgid "C0 polling"
 msgstr "C0 polling"
 
 #: src/cpu/cpu_linux.cpp:240 src/cpu/cpu_linux.cpp:339
-#: src/cpu/intel_cpus.cpp:423
+#: src/cpu/intel_cpus.cpp:521
 #, c-format
 msgid " CPU %i"
 msgstr ""
@@ -112,52 +130,54 @@ msgstr ""
 msgid "Package"
 msgstr ""
 
-#: src/cpu/cpu_package.cpp:105 src/cpu/intel_cpus.cpp:226
+#: src/cpu/cpu_package.cpp:105 src/cpu/intel_cpus.cpp:297
 #, c-format
 msgid "  Package"
 msgstr ""
 
-#: src/cpu/intel_cpus.cpp:61
+#: src/cpu/intel_cpus.cpp:81
 #, c-format
-msgid "msr reg not found"
+msgid "read_msr cpu%d 0x%llx : "
 msgstr ""
 
-#: src/cpu/intel_cpus.cpp:71
-#, c-format
-msgid "pread cpu%d 0x%llx : "
-msgstr ""
-
-#: src/cpu/intel_cpus.cpp:347
+#: src/cpu/intel_cpus.cpp:445
 msgid "C0 active"
 msgstr "C0 active"
 
-#: src/cpu/intel_cpus.cpp:406
+#: src/cpu/intel_cpus.cpp:504
 #, c-format
 msgid "Actual"
 msgstr "Actual"
 
-#: src/lib.cpp:266
+#: src/lib.cpp:286
 #, c-format
 msgid "%7sW"
 msgstr "%7sW"
 
-#: src/lib.cpp:269
+#: src/lib.cpp:289
 #, c-format
 msgid "    0 mW"
 msgstr "    0 mW"
 
-#: src/lib.cpp:390
+#: src/lib.cpp:408
 msgid "PS/2 Touchpad / Keyboard / Mouse"
 msgstr "PS/2 Touchpad / Keyboard / Mouse"
 
-#: src/lib.cpp:391
+#: src/lib.cpp:409
 msgid "SATA controller"
 msgstr "SATA controller"
 
-#: src/lib.cpp:392
+#: src/lib.cpp:410
 msgid "Intel built in USB hub"
 msgstr "Intel built in USB hub"
 
+#: src/lib.cpp:482 src/lib.cpp:514
+#, c-format
+msgid ""
+"Model-specific registers (MSR)\t\t\t not found (try enabling "
+"CONFIG_X86_MSR).\n"
+msgstr ""
+
 #: src/process/do_process.cpp:817
 #, c-format
 msgid ""
@@ -181,7 +201,7 @@ msgstr ""
 msgid "Summary"
 msgstr ""
 
-#: src/process/do_process.cpp:841 src/process/do_process.cpp:1011
+#: src/process/do_process.cpp:841 src/process/do_process.cpp:1013
 msgid "wakeups/second"
 msgstr ""
 
@@ -193,77 +213,83 @@ msgstr ""
 msgid "VFS ops/sec and"
 msgstr ""
 
-#: src/process/do_process.cpp:841 src/process/do_process.cpp:1015
+#: src/process/do_process.cpp:841 src/process/do_process.cpp:1017
 msgid "CPU use"
 msgstr ""
 
-#: src/process/do_process.cpp:845 src/process/do_process.cpp:902
-#: src/process/do_process.cpp:1021
+#: src/process/do_process.cpp:845 src/process/do_process.cpp:904
+#: src/process/do_process.cpp:1023
 msgid "Power est."
 msgstr ""
 
 #: src/process/do_process.cpp:845 src/process/do_process.cpp:847
-#: src/process/do_process.cpp:906 src/process/do_process.cpp:1025
+#: src/process/do_process.cpp:908 src/process/do_process.cpp:1027
 msgid "Usage"
 msgstr "Usage"
 
 #: src/process/do_process.cpp:845 src/process/do_process.cpp:847
-#: src/process/do_process.cpp:1027
+#: src/process/do_process.cpp:1029
 msgid "Events/s"
 msgstr ""
 
 #: src/process/do_process.cpp:845 src/process/do_process.cpp:847
-#: src/process/do_process.cpp:916 src/process/do_process.cpp:1029
+#: src/process/do_process.cpp:918 src/process/do_process.cpp:1031
 msgid "Category"
 msgstr ""
 
 #: src/process/do_process.cpp:845 src/process/do_process.cpp:847
-#: src/process/do_process.cpp:918 src/process/do_process.cpp:1031
+#: src/process/do_process.cpp:920 src/process/do_process.cpp:1033
 msgid "Description"
 msgstr ""
 
-#: src/process/do_process.cpp:897
+#: src/process/do_process.cpp:899
 msgid "Overview of Software Power Consumers"
 msgstr ""
 
-#: src/process/do_process.cpp:908
+#: src/process/do_process.cpp:910
 msgid "Wakeups/s"
 msgstr ""
 
-#: src/process/do_process.cpp:910
+#: src/process/do_process.cpp:912
 msgid "GPU ops/s"
 msgstr ""
 
-#: src/process/do_process.cpp:912
+#: src/process/do_process.cpp:914
 msgid "Disk IO/s"
 msgstr ""
 
-#: src/process/do_process.cpp:914
+#: src/process/do_process.cpp:916
 msgid "GFX Wakeups/s"
 msgstr ""
 
-#: src/process/do_process.cpp:1008
+#: src/process/do_process.cpp:1010
 msgid "Power Consumption Summary"
 msgstr ""
 
-#: src/process/do_process.cpp:1012
+#: src/process/do_process.cpp:1014
 msgid "GPU ops/second"
 msgstr ""
 
-#: src/process/do_process.cpp:1013
+#: src/process/do_process.cpp:1015
 msgid "VFS ops/sec"
 msgstr ""
 
-#: src/process/do_process.cpp:1014
+#: src/process/do_process.cpp:1016
 msgid "GFX wakes/sec and"
 msgstr ""
 
-#: src/perf/perf.cpp:111
+#: src/perf/perf.cpp:115
+#, c-format
+msgid ""
+"Too many open files, please increase the limit of open file descriptors.\n"
+msgstr ""
+
+#: src/perf/perf.cpp:117
 #, c-format
 msgid "PowerTOP %s needs the kernel to support the 'perf' subsystem\n"
 msgstr "PowerTOP %s needs the kernel to support the 'perf' subsystem\n"
 
-#: src/perf/perf.cpp:112
+#: src/perf/perf.cpp:118
 #, c-format
 msgid "as well as support for trace points in the kernel:\n"
 msgstr "as well as support for trace points in the kernel:\n"
@@ -281,12 +307,12 @@ msgstr "Power est.    Usage     Device name\n"
 msgid "              Usage     Device name\n"
 msgstr ""
 
-#: src/devices/alsa.cpp:79
+#: src/devices/alsa.cpp:77
 #, c-format
 msgid "Audio codec %s: %s (%s)"
 msgstr ""
 
-#: src/devices/alsa.cpp:81 src/devices/alsa.cpp:83
+#: src/devices/alsa.cpp:79 src/devices/alsa.cpp:81
 #, c-format
 msgid "Audio codec %s: %s"
 msgstr ""
@@ -296,32 +322,32 @@ msgstr ""
 msgid "PCI Device: %s"
 msgstr ""
 
-#: src/devices/usb.cpp:51 src/devices/usb.cpp:94 src/devices/usb.cpp:96
+#: src/devices/usb.cpp:49 src/devices/usb.cpp:92 src/devices/usb.cpp:94
 #, c-format
 msgid "USB device: %s"
 msgstr ""
 
-#: src/devices/usb.cpp:92
+#: src/devices/usb.cpp:90
 #, c-format
 msgid "USB device: %s (%s)"
 msgstr ""
 
-#: src/devices/ahci.cpp:140
+#: src/devices/ahci.cpp:142
 #, c-format
 msgid "SATA link: %s"
 msgstr ""
 
-#: src/devices/ahci.cpp:142
+#: src/devices/ahci.cpp:144
 #, c-format
 msgid "SATA disk: %s"
 msgstr ""
 
-#: src/devices/rfkill.cpp:65 src/devices/rfkill.cpp:69
+#: src/devices/rfkill.cpp:64 src/devices/rfkill.cpp:68
 #, c-format
 msgid "Radio device: %s"
 msgstr ""
 
-#: src/devices/network.cpp:177
+#: src/devices/network.cpp:176
 #, c-format
 msgid "Network interface: %s (%s)"
 msgstr ""
@@ -331,21 +357,21 @@ msgstr ""
 msgid "Bluetooth device interface status"
 msgstr ""
 
-#: src/tuning/cpufreq.cpp:44 src/tuning/ethernet.cpp:53
+#: src/tuning/cpufreq.cpp:44 src/tuning/ethernet.cpp:50
 #: src/tuning/tunable.cpp:48 src/tuning/wifi.cpp:45 src/tuning/runtime.cpp:41
-#: src/tuning/tuningusb.cpp:40 src/tuning/tuningsysfs.cpp:44
+#: src/tuning/tuningusb.cpp:37 src/tuning/tuningsysfs.cpp:44
 msgid "Good"
 msgstr ""
 
-#: src/tuning/cpufreq.cpp:44 src/tuning/ethernet.cpp:53
+#: src/tuning/cpufreq.cpp:44 src/tuning/ethernet.cpp:50
 #: src/tuning/tunable.cpp:49 src/tuning/wifi.cpp:45 src/tuning/runtime.cpp:41
-#: src/tuning/tuningusb.cpp:40 src/tuning/tuningsysfs.cpp:44
+#: src/tuning/tuningusb.cpp:37 src/tuning/tuningsysfs.cpp:44
 msgid "Bad"
 msgstr ""
 
-#: src/tuning/cpufreq.cpp:44 src/tuning/ethernet.cpp:53
+#: src/tuning/cpufreq.cpp:44 src/tuning/ethernet.cpp:50
 #: src/tuning/tunable.cpp:50 src/tuning/wifi.cpp:45 src/tuning/runtime.cpp:41
-#: src/tuning/tuningusb.cpp:40 src/tuning/tuningsysfs.cpp:44
+#: src/tuning/tuningusb.cpp:37 src/tuning/tuningsysfs.cpp:44
 msgid "Unknown"
 msgstr ""
 
@@ -378,7 +404,7 @@ msgstr ""
 msgid " <ESC> Exit | <Enter> Toggle tunable | <r> Window refresh"
 msgstr ""
 
-#: src/tuning/ethernet.cpp:57
+#: src/tuning/ethernet.cpp:54
 #, c-format
 msgid "Wake-on-lan status for device %s"
 msgstr ""
@@ -408,13 +434,13 @@ msgstr ""
 msgid "Runtime PM for PCI Device %s"
 msgstr ""
 
-#: src/tuning/tuningusb.cpp:55
+#: src/tuning/tuningusb.cpp:52
 #, c-format
 msgid "Autosuspend for unknown USB device %s (%s:%s)"
 msgstr ""
 
-#: src/tuning/tuningusb.cpp:72 src/tuning/tuningusb.cpp:74
-#: src/tuning/tuningusb.cpp:76
+#: src/tuning/tuningusb.cpp:69 src/tuning/tuningusb.cpp:71
+#: src/tuning/tuningusb.cpp:73
 #, c-format
 msgid "Autosuspend for USB device %s [%s]"
 msgstr ""
@@ -424,186 +450,190 @@ msgstr ""
 msgid "Enable SATA link power Managmenet for %s"
 msgstr ""
 
-#: src/calibrate/calibrate.cpp:291
+#: src/calibrate/calibrate.cpp:236
 #, c-format
 msgid "Cannot create temp file\n"
 msgstr ""
 
-#: src/calibrate/calibrate.cpp:310
+#: src/calibrate/calibrate.cpp:255
 #, c-format
 msgid "Calibrating: CPU usage on %i threads\n"
 msgstr ""
 
-#: src/calibrate/calibrate.cpp:325
+#: src/calibrate/calibrate.cpp:270
 #, c-format
 msgid "Calibrating: CPU wakeup power consumption\n"
 msgstr ""
 
-#: src/calibrate/calibrate.cpp:342
+#: src/calibrate/calibrate.cpp:287
 #, c-format
 msgid "Calibrating USB devices\n"
 msgstr ""
 
-#: src/calibrate/calibrate.cpp:344 src/calibrate/calibrate.cpp:361
-#: src/calibrate/calibrate.cpp:369 src/calibrate/calibrate.cpp:386
+#: src/calibrate/calibrate.cpp:289 src/calibrate/calibrate.cpp:306
+#: src/calibrate/calibrate.cpp:314 src/calibrate/calibrate.cpp:331
 #, c-format
 msgid ".... device %s \n"
 msgstr ""
 
-#: src/calibrate/calibrate.cpp:359
+#: src/calibrate/calibrate.cpp:304
 #, c-format
 msgid "Calibrating radio devices\n"
 msgstr ""
 
-#: src/calibrate/calibrate.cpp:383
+#: src/calibrate/calibrate.cpp:328
 #, c-format
 msgid "Calibrating backlight\n"
 msgstr ""
 
-#: src/calibrate/calibrate.cpp:407 src/calibrate/calibrate.cpp:415
+#: src/calibrate/calibrate.cpp:352 src/calibrate/calibrate.cpp:360
 #, c-format
 msgid "Calibrating idle\n"
 msgstr ""
 
-#: src/calibrate/calibrate.cpp:426
+#: src/calibrate/calibrate.cpp:371
 #, c-format
 msgid "Calibrating: disk usage \n"
 msgstr ""
 
-#: src/calibrate/calibrate.cpp:451
+#: src/calibrate/calibrate.cpp:396
 msgid "Starting PowerTOP power estimate calibration \n"
 msgstr ""
 
-#: src/calibrate/calibrate.cpp:474
+#: src/calibrate/calibrate.cpp:419
 msgid "Finishing PowerTOP power estimate calibration \n"
 msgstr ""
 
-#: src/calibrate/calibrate.cpp:478
+#: src/calibrate/calibrate.cpp:423
 #, c-format
 msgid "Parameters after calibration:\n"
 msgstr ""
 
-#: src/main.cpp:86
+#: src/main.cpp:91
 #, c-format
 msgid "PowerTOP version"
 msgstr ""
 
-#: src/main.cpp:92
+#: src/main.cpp:97
 msgid "Set refresh time out"
 msgstr ""
 
-#: src/main.cpp:105
+#: src/main.cpp:110
 msgid "Usage: powertop [OPTIONS]"
 msgstr ""
 
-#: src/main.cpp:106
+#: src/main.cpp:111
 msgid "run in \"debug\" mode"
 msgstr ""
 
-#: src/main.cpp:107
+#: src/main.cpp:112
 msgid "print version information"
 msgstr ""
 
-#: src/main.cpp:108
+#: src/main.cpp:113
 msgid "runs powertop in calibration mode"
 msgstr ""
 
-#: src/main.cpp:109
+#: src/main.cpp:114
+msgid "Sets all tunable options to their GOOD setting"
+msgstr ""
+
+#: src/main.cpp:115
 msgid "[=devnode]"
 msgstr ""
 
-#: src/main.cpp:109
+#: src/main.cpp:115
 msgid "uses an Extech Power Analyzer for measurements"
 msgstr ""
 
-#: src/main.cpp:110 src/main.cpp:111
+#: src/main.cpp:116 src/main.cpp:117
 msgid "[=FILENAME]"
 msgstr ""
 
-#: src/main.cpp:110
+#: src/main.cpp:116
 msgid "generate a html report"
 msgstr ""
 
-#: src/main.cpp:111
+#: src/main.cpp:117
 msgid "generate a csv report"
 msgstr ""
 
-#: src/main.cpp:112
+#: src/main.cpp:118
 msgid "[=seconds]"
 msgstr ""
 
-#: src/main.cpp:112
+#: src/main.cpp:118
 msgid "generate a report for 'x' seconds"
 msgstr ""
 
-#: src/main.cpp:113
+#: src/main.cpp:119
 msgid "[=iterations] number of times to run each test"
 msgstr ""
 
-#: src/main.cpp:114
+#: src/main.cpp:120
 msgid "[=workload]"
 msgstr ""
 
-#: src/main.cpp:114
+#: src/main.cpp:120
 msgid "file to execute for workload"
 msgstr ""
 
-#: src/main.cpp:115
+#: src/main.cpp:121
 msgid "suppress stderr output"
 msgstr ""
 
-#: src/main.cpp:116
+#: src/main.cpp:122
 msgid "print this help menu"
 msgstr ""
 
-#: src/main.cpp:118
+#: src/main.cpp:124
 msgid "For more help please refer to the README"
 msgstr ""
 
-#: src/main.cpp:195
+#: src/main.cpp:201
 #, c-format
 msgid "Unknown issue running workload!\n"
 msgstr ""
 
-#: src/main.cpp:236
+#: src/main.cpp:242
 msgid "PowerTOP is out of memory. PowerTOP is Aborting"
 msgstr ""
 
-#: src/main.cpp:244
+#: src/main.cpp:250
 #, c-format
 msgid "Preparing to take measurements\n"
 msgstr ""
 
-#: src/main.cpp:249
+#: src/main.cpp:255
 #, c-format
 msgid "Taking %d measurement(s) for a duration of %d second(s) each.\n"
 msgstr ""
 
-#: src/main.cpp:251
+#: src/main.cpp:257
 #, c-format
 msgid "Measuring workload %s.\n"
 msgstr ""
 
-#: src/main.cpp:274
+#: src/main.cpp:280
 #, c-format
 msgid "PowerTOP "
 msgstr ""
 
-#: src/main.cpp:275 src/main.cpp:303
+#: src/main.cpp:281 src/main.cpp:328
 #, c-format
 msgid "exiting...\n"
 msgstr ""
 
-#: src/main.cpp:302
+#: src/main.cpp:327
 #, c-format
 msgid "Failed to mount debugfs!\n"
 msgstr ""
 
-#: src/main.cpp:394
+#: src/main.cpp:422
 #, c-format
 msgid "Quite mode failed!\n"
 msgstr ""
 
-#: src/main.cpp:440
+#: src/main.cpp:472
 msgid "Leaving PowerTOP"
 msgstr ""
index 6a027c9..65dbbb6 100644 (file)
Binary files a/po/en_US.gmo and b/po/en_US.gmo differ
index b52a938..c6c785f 100644 (file)
@@ -3,14 +3,14 @@
 # This file is distributed under the same license as the PACKAGE package.
 #
 # Translators:
-# Dimitris Glezos <glezos@indifex.com>, 2011.
+# Dimitris Glezos <glezos@indifex.com>, 2011
 msgid ""
 msgstr ""
 "Project-Id-Version: PowerTOP\n"
 "Report-Msgid-Bugs-To: \"powertop@lists.01.org\"\n"
-"POT-Creation-Date: 2013-03-18 11:06-0700\n"
-"PO-Revision-Date: 2013-02-26 19:08+0000\n"
-"Last-Translator: Patrick McCarty <patrick.mccarty@linux.intel.com>\n"
+"POT-Creation-Date: 2013-11-04 10:45-0800\n"
+"PO-Revision-Date: 2013-11-05 08:40+0000\n"
+"Last-Translator: Margie Foster <margie@linux.intel.com>\n"
 "Language-Team: English (United States) (http://www.transifex.com/projects/p/"
 "PowerTOP/language/en_US/)\n"
 "Language: en_US\n"
@@ -52,46 +52,64 @@ msgstr "Device stats"
 msgid "Exit"
 msgstr ""
 
-#: src/cpu/cpu_core.cpp:37 src/cpu/cpu_core.cpp:93 src/cpu/intel_cpus.cpp:201
+#: src/cpu/cpu_core.cpp:37 src/cpu/cpu_core.cpp:93 src/cpu/intel_cpus.cpp:245
 #, c-format
 msgid "  Core"
 msgstr ""
 
-#: src/cpu/cpu.cpp:94
+#: src/cpu/cpu.cpp:80
 #, c-format
 msgid "cpu package %i"
 msgstr "cpu package %i"
 
-#: src/cpu/cpu.cpp:95
+#: src/cpu/cpu.cpp:81
 msgid "cpu package"
 msgstr "cpu package"
 
-#: src/cpu/cpu.cpp:446 src/cpu/cpu.cpp:573
+#: src/cpu/cpu.cpp:84
+#, c-format
+msgid "cpu rapl package %i"
+msgstr ""
+
+#: src/cpu/cpu.cpp:85
+msgid "cpu rapl package"
+msgstr ""
+
+#: src/cpu/cpu.cpp:89
+#, c-format
+msgid "dram rapl package %i"
+msgstr ""
+
+#: src/cpu/cpu.cpp:90
+msgid "dram rapl package"
+msgstr ""
+
+#: src/cpu/cpu.cpp:459 src/cpu/cpu.cpp:586
 #, c-format
 msgid "Package %i"
 msgstr ""
 
-#: src/cpu/cpu.cpp:478 src/cpu/cpu.cpp:593
+#: src/cpu/cpu.cpp:491 src/cpu/cpu.cpp:606
 #, c-format
 msgid "Core %i"
 msgstr ""
 
-#: src/cpu/cpu.cpp:480
+#: src/cpu/cpu.cpp:493
 #, c-format
 msgid "GPU %i"
 msgstr ""
 
-#: src/cpu/cpu.cpp:502 src/cpu/cpu.cpp:614
+#: src/cpu/cpu.cpp:515 src/cpu/cpu.cpp:627
 #, c-format
 msgid "CPU %i"
 msgstr ""
 
-#: src/cpu/cpu.cpp:796
+#: src/cpu/cpu.cpp:807
 #, c-format
 msgid "cpu_idle event returned no state?\n"
 msgstr ""
 
-#: src/cpu/cpu.cpp:811
+#: src/cpu/cpu.cpp:822
 #, c-format
 msgid "power or cpu_frequency event returned no state?\n"
 msgstr ""
@@ -101,7 +119,7 @@ msgid "C0 polling"
 msgstr "C0 polling"
 
 #: src/cpu/cpu_linux.cpp:240 src/cpu/cpu_linux.cpp:339
-#: src/cpu/intel_cpus.cpp:423
+#: src/cpu/intel_cpus.cpp:521
 #, c-format
 msgid " CPU %i"
 msgstr ""
@@ -111,52 +129,54 @@ msgstr ""
 msgid "Package"
 msgstr ""
 
-#: src/cpu/cpu_package.cpp:105 src/cpu/intel_cpus.cpp:226
+#: src/cpu/cpu_package.cpp:105 src/cpu/intel_cpus.cpp:297
 #, c-format
 msgid "  Package"
 msgstr ""
 
-#: src/cpu/intel_cpus.cpp:61
+#: src/cpu/intel_cpus.cpp:81
 #, c-format
-msgid "msr reg not found"
+msgid "read_msr cpu%d 0x%llx : "
 msgstr ""
 
-#: src/cpu/intel_cpus.cpp:71
-#, c-format
-msgid "pread cpu%d 0x%llx : "
-msgstr ""
-
-#: src/cpu/intel_cpus.cpp:347
+#: src/cpu/intel_cpus.cpp:445
 msgid "C0 active"
 msgstr "C0 active"
 
-#: src/cpu/intel_cpus.cpp:406
+#: src/cpu/intel_cpus.cpp:504
 #, c-format
 msgid "Actual"
 msgstr "Actual"
 
-#: src/lib.cpp:266
+#: src/lib.cpp:286
 #, c-format
 msgid "%7sW"
 msgstr "%7sW"
 
-#: src/lib.cpp:269
+#: src/lib.cpp:289
 #, c-format
 msgid "    0 mW"
 msgstr "    0 mW"
 
-#: src/lib.cpp:390
+#: src/lib.cpp:408
 msgid "PS/2 Touchpad / Keyboard / Mouse"
 msgstr "PS/2 Touchpad / Keyboard / Mouse"
 
-#: src/lib.cpp:391
+#: src/lib.cpp:409
 msgid "SATA controller"
 msgstr "SATA controller"
 
-#: src/lib.cpp:392
+#: src/lib.cpp:410
 msgid "Intel built in USB hub"
 msgstr "Intel built in USB hub"
 
+#: src/lib.cpp:482 src/lib.cpp:514
+#, c-format
+msgid ""
+"Model-specific registers (MSR)\t\t\t not found (try enabling "
+"CONFIG_X86_MSR).\n"
+msgstr ""
+
 #: src/process/do_process.cpp:817
 #, c-format
 msgid ""
@@ -180,7 +200,7 @@ msgstr ""
 msgid "Summary"
 msgstr ""
 
-#: src/process/do_process.cpp:841 src/process/do_process.cpp:1011
+#: src/process/do_process.cpp:841 src/process/do_process.cpp:1013
 msgid "wakeups/second"
 msgstr ""
 
@@ -192,77 +212,83 @@ msgstr ""
 msgid "VFS ops/sec and"
 msgstr ""
 
-#: src/process/do_process.cpp:841 src/process/do_process.cpp:1015
+#: src/process/do_process.cpp:841 src/process/do_process.cpp:1017
 msgid "CPU use"
 msgstr ""
 
-#: src/process/do_process.cpp:845 src/process/do_process.cpp:902
-#: src/process/do_process.cpp:1021
+#: src/process/do_process.cpp:845 src/process/do_process.cpp:904
+#: src/process/do_process.cpp:1023
 msgid "Power est."
 msgstr ""
 
 #: src/process/do_process.cpp:845 src/process/do_process.cpp:847
-#: src/process/do_process.cpp:906 src/process/do_process.cpp:1025
+#: src/process/do_process.cpp:908 src/process/do_process.cpp:1027
 msgid "Usage"
 msgstr ""
 
 #: src/process/do_process.cpp:845 src/process/do_process.cpp:847
-#: src/process/do_process.cpp:1027
+#: src/process/do_process.cpp:1029
 msgid "Events/s"
 msgstr ""
 
 #: src/process/do_process.cpp:845 src/process/do_process.cpp:847
-#: src/process/do_process.cpp:916 src/process/do_process.cpp:1029
+#: src/process/do_process.cpp:918 src/process/do_process.cpp:1031
 msgid "Category"
 msgstr ""
 
 #: src/process/do_process.cpp:845 src/process/do_process.cpp:847
-#: src/process/do_process.cpp:918 src/process/do_process.cpp:1031
+#: src/process/do_process.cpp:920 src/process/do_process.cpp:1033
 msgid "Description"
 msgstr ""
 
-#: src/process/do_process.cpp:897
+#: src/process/do_process.cpp:899
 msgid "Overview of Software Power Consumers"
 msgstr ""
 
-#: src/process/do_process.cpp:908
+#: src/process/do_process.cpp:910
 msgid "Wakeups/s"
 msgstr ""
 
-#: src/process/do_process.cpp:910
+#: src/process/do_process.cpp:912
 msgid "GPU ops/s"
 msgstr ""
 
-#: src/process/do_process.cpp:912
+#: src/process/do_process.cpp:914
 msgid "Disk IO/s"
 msgstr ""
 
-#: src/process/do_process.cpp:914
+#: src/process/do_process.cpp:916
 msgid "GFX Wakeups/s"
 msgstr ""
 
-#: src/process/do_process.cpp:1008
+#: src/process/do_process.cpp:1010
 msgid "Power Consumption Summary"
 msgstr ""
 
-#: src/process/do_process.cpp:1012
+#: src/process/do_process.cpp:1014
 msgid "GPU ops/second"
 msgstr ""
 
-#: src/process/do_process.cpp:1013
+#: src/process/do_process.cpp:1015
 msgid "VFS ops/sec"
 msgstr ""
 
-#: src/process/do_process.cpp:1014
+#: src/process/do_process.cpp:1016
 msgid "GFX wakes/sec and"
 msgstr ""
 
-#: src/perf/perf.cpp:111
+#: src/perf/perf.cpp:115
+#, c-format
+msgid ""
+"Too many open files, please increase the limit of open file descriptors.\n"
+msgstr ""
+
+#: src/perf/perf.cpp:117
 #, c-format
 msgid "PowerTOP %s needs the kernel to support the 'perf' subsystem\n"
 msgstr "PowerTOP %s needs the kernel to support the 'perf' subsystem\n"
 
-#: src/perf/perf.cpp:112
+#: src/perf/perf.cpp:118
 #, c-format
 msgid "as well as support for trace points in the kernel:\n"
 msgstr "as well as support for trace points in the kernel:\n"
@@ -280,12 +306,12 @@ msgstr "Power est.    Usage     Device name\n"
 msgid "              Usage     Device name\n"
 msgstr "              Usage     Device name\n"
 
-#: src/devices/alsa.cpp:79
+#: src/devices/alsa.cpp:77
 #, c-format
 msgid "Audio codec %s: %s (%s)"
 msgstr "Audio codec %s: %s (%s)"
 
-#: src/devices/alsa.cpp:81 src/devices/alsa.cpp:83
+#: src/devices/alsa.cpp:79 src/devices/alsa.cpp:81
 #, c-format
 msgid "Audio codec %s: %s"
 msgstr "Audio codec %s: %s"
@@ -295,32 +321,32 @@ msgstr "Audio codec %s: %s"
 msgid "PCI Device: %s"
 msgstr "PCI Device: %s"
 
-#: src/devices/usb.cpp:51 src/devices/usb.cpp:94 src/devices/usb.cpp:96
+#: src/devices/usb.cpp:49 src/devices/usb.cpp:92 src/devices/usb.cpp:94
 #, c-format
 msgid "USB device: %s"
 msgstr "USB device: %s"
 
-#: src/devices/usb.cpp:92
+#: src/devices/usb.cpp:90
 #, c-format
 msgid "USB device: %s (%s)"
 msgstr "USB device: %s (%s)"
 
-#: src/devices/ahci.cpp:140
+#: src/devices/ahci.cpp:142
 #, c-format
 msgid "SATA link: %s"
 msgstr "SATA link: %s"
 
-#: src/devices/ahci.cpp:142
+#: src/devices/ahci.cpp:144
 #, c-format
 msgid "SATA disk: %s"
 msgstr "SATA disk: %s"
 
-#: src/devices/rfkill.cpp:65 src/devices/rfkill.cpp:69
+#: src/devices/rfkill.cpp:64 src/devices/rfkill.cpp:68
 #, c-format
 msgid "Radio device: %s"
 msgstr "Radio device: %s"
 
-#: src/devices/network.cpp:177
+#: src/devices/network.cpp:176
 #, c-format
 msgid "Network interface: %s (%s)"
 msgstr "Network interface: %s (%s)"
@@ -330,21 +356,21 @@ msgstr "Network interface: %s (%s)"
 msgid "Bluetooth device interface status"
 msgstr "Bluetooth device interface status"
 
-#: src/tuning/cpufreq.cpp:44 src/tuning/ethernet.cpp:53
+#: src/tuning/cpufreq.cpp:44 src/tuning/ethernet.cpp:50
 #: src/tuning/tunable.cpp:48 src/tuning/wifi.cpp:45 src/tuning/runtime.cpp:41
-#: src/tuning/tuningusb.cpp:40 src/tuning/tuningsysfs.cpp:44
+#: src/tuning/tuningusb.cpp:37 src/tuning/tuningsysfs.cpp:44
 msgid "Good"
 msgstr "Good"
 
-#: src/tuning/cpufreq.cpp:44 src/tuning/ethernet.cpp:53
+#: src/tuning/cpufreq.cpp:44 src/tuning/ethernet.cpp:50
 #: src/tuning/tunable.cpp:49 src/tuning/wifi.cpp:45 src/tuning/runtime.cpp:41
-#: src/tuning/tuningusb.cpp:40 src/tuning/tuningsysfs.cpp:44
+#: src/tuning/tuningusb.cpp:37 src/tuning/tuningsysfs.cpp:44
 msgid "Bad"
 msgstr "Bad"
 
-#: src/tuning/cpufreq.cpp:44 src/tuning/ethernet.cpp:53
+#: src/tuning/cpufreq.cpp:44 src/tuning/ethernet.cpp:50
 #: src/tuning/tunable.cpp:50 src/tuning/wifi.cpp:45 src/tuning/runtime.cpp:41
-#: src/tuning/tuningusb.cpp:40 src/tuning/tuningsysfs.cpp:44
+#: src/tuning/tuningusb.cpp:37 src/tuning/tuningsysfs.cpp:44
 msgid "Unknown"
 msgstr "Unknown"
 
@@ -377,7 +403,7 @@ msgstr "Tunables"
 msgid " <ESC> Exit | <Enter> Toggle tunable | <r> Window refresh"
 msgstr ""
 
-#: src/tuning/ethernet.cpp:57
+#: src/tuning/ethernet.cpp:54
 #, c-format
 msgid "Wake-on-lan status for device %s"
 msgstr "Wake-on-lan status for device %s"
@@ -407,13 +433,13 @@ msgstr "PCI Device %s has no runtime power management"
 msgid "Runtime PM for PCI Device %s"
 msgstr "Runtime PM for PCI Device %s"
 
-#: src/tuning/tuningusb.cpp:55
+#: src/tuning/tuningusb.cpp:52
 #, c-format
 msgid "Autosuspend for unknown USB device %s (%s:%s)"
 msgstr "Autosuspend for unknown USB device %s (%s:%s)"
 
-#: src/tuning/tuningusb.cpp:72 src/tuning/tuningusb.cpp:74
-#: src/tuning/tuningusb.cpp:76
+#: src/tuning/tuningusb.cpp:69 src/tuning/tuningusb.cpp:71
+#: src/tuning/tuningusb.cpp:73
 #, c-format
 msgid "Autosuspend for USB device %s [%s]"
 msgstr "Autosuspend for USB device %s [%s]"
@@ -423,186 +449,190 @@ msgstr "Autosuspend for USB device %s [%s]"
 msgid "Enable SATA link power Managmenet for %s"
 msgstr ""
 
-#: src/calibrate/calibrate.cpp:291
+#: src/calibrate/calibrate.cpp:236
 #, c-format
 msgid "Cannot create temp file\n"
 msgstr "Cannot create temp file\n"
 
-#: src/calibrate/calibrate.cpp:310
+#: src/calibrate/calibrate.cpp:255
 #, c-format
 msgid "Calibrating: CPU usage on %i threads\n"
 msgstr "Calibrating: CPU usage on %i threads\n"
 
-#: src/calibrate/calibrate.cpp:325
+#: src/calibrate/calibrate.cpp:270
 #, c-format
 msgid "Calibrating: CPU wakeup power consumption\n"
 msgstr "Calibrating: CPU wakeup power consumption\n"
 
-#: src/calibrate/calibrate.cpp:342
+#: src/calibrate/calibrate.cpp:287
 #, c-format
 msgid "Calibrating USB devices\n"
 msgstr "Calibrating USB devices\n"
 
-#: src/calibrate/calibrate.cpp:344 src/calibrate/calibrate.cpp:361
-#: src/calibrate/calibrate.cpp:369 src/calibrate/calibrate.cpp:386
+#: src/calibrate/calibrate.cpp:289 src/calibrate/calibrate.cpp:306
+#: src/calibrate/calibrate.cpp:314 src/calibrate/calibrate.cpp:331
 #, c-format
 msgid ".... device %s \n"
 msgstr ".... device %s \n"
 
-#: src/calibrate/calibrate.cpp:359
+#: src/calibrate/calibrate.cpp:304
 #, c-format
 msgid "Calibrating radio devices\n"
 msgstr "Calibrating radio devices\n"
 
-#: src/calibrate/calibrate.cpp:383
+#: src/calibrate/calibrate.cpp:328
 #, c-format
 msgid "Calibrating backlight\n"
 msgstr "Calibrating backlight\n"
 
-#: src/calibrate/calibrate.cpp:407 src/calibrate/calibrate.cpp:415
+#: src/calibrate/calibrate.cpp:352 src/calibrate/calibrate.cpp:360
 #, c-format
 msgid "Calibrating idle\n"
 msgstr "Calibrating idle\n"
 
-#: src/calibrate/calibrate.cpp:426
+#: src/calibrate/calibrate.cpp:371
 #, c-format
 msgid "Calibrating: disk usage \n"
 msgstr "Calibrating: disk usage \n"
 
-#: src/calibrate/calibrate.cpp:451
+#: src/calibrate/calibrate.cpp:396
 msgid "Starting PowerTOP power estimate calibration \n"
 msgstr "Starting PowerTOP power estimate calibration \n"
 
-#: src/calibrate/calibrate.cpp:474
+#: src/calibrate/calibrate.cpp:419
 msgid "Finishing PowerTOP power estimate calibration \n"
 msgstr "Finishing PowerTOP power estimate calibration \n"
 
-#: src/calibrate/calibrate.cpp:478
+#: src/calibrate/calibrate.cpp:423
 #, c-format
 msgid "Parameters after calibration:\n"
 msgstr "Parameters after calibration:\n"
 
-#: src/main.cpp:86
+#: src/main.cpp:91
 #, c-format
 msgid "PowerTOP version"
 msgstr ""
 
-#: src/main.cpp:92
+#: src/main.cpp:97
 msgid "Set refresh time out"
 msgstr ""
 
-#: src/main.cpp:105
+#: src/main.cpp:110
 msgid "Usage: powertop [OPTIONS]"
 msgstr ""
 
-#: src/main.cpp:106
+#: src/main.cpp:111
 msgid "run in \"debug\" mode"
 msgstr ""
 
-#: src/main.cpp:107
+#: src/main.cpp:112
 msgid "print version information"
 msgstr ""
 
-#: src/main.cpp:108
+#: src/main.cpp:113
 msgid "runs powertop in calibration mode"
 msgstr ""
 
-#: src/main.cpp:109
+#: src/main.cpp:114
+msgid "Sets all tunable options to their GOOD setting"
+msgstr ""
+
+#: src/main.cpp:115
 msgid "[=devnode]"
 msgstr ""
 
-#: src/main.cpp:109
+#: src/main.cpp:115
 msgid "uses an Extech Power Analyzer for measurements"
 msgstr ""
 
-#: src/main.cpp:110 src/main.cpp:111
+#: src/main.cpp:116 src/main.cpp:117
 msgid "[=FILENAME]"
 msgstr ""
 
-#: src/main.cpp:110
+#: src/main.cpp:116
 msgid "generate a html report"
 msgstr ""
 
-#: src/main.cpp:111
+#: src/main.cpp:117
 msgid "generate a csv report"
 msgstr ""
 
-#: src/main.cpp:112
+#: src/main.cpp:118
 msgid "[=seconds]"
 msgstr ""
 
-#: src/main.cpp:112
+#: src/main.cpp:118
 msgid "generate a report for 'x' seconds"
 msgstr ""
 
-#: src/main.cpp:113
+#: src/main.cpp:119
 msgid "[=iterations] number of times to run each test"
 msgstr ""
 
-#: src/main.cpp:114
+#: src/main.cpp:120
 msgid "[=workload]"
 msgstr ""
 
-#: src/main.cpp:114
+#: src/main.cpp:120
 msgid "file to execute for workload"
 msgstr ""
 
-#: src/main.cpp:115
+#: src/main.cpp:121
 msgid "suppress stderr output"
 msgstr ""
 
-#: src/main.cpp:116
+#: src/main.cpp:122
 msgid "print this help menu"
 msgstr ""
 
-#: src/main.cpp:118
+#: src/main.cpp:124
 msgid "For more help please refer to the README"
 msgstr ""
 
-#: src/main.cpp:195
+#: src/main.cpp:201
 #, c-format
 msgid "Unknown issue running workload!\n"
 msgstr ""
 
-#: src/main.cpp:236
+#: src/main.cpp:242
 msgid "PowerTOP is out of memory. PowerTOP is Aborting"
 msgstr ""
 
-#: src/main.cpp:244
+#: src/main.cpp:250
 #, c-format
 msgid "Preparing to take measurements\n"
 msgstr ""
 
-#: src/main.cpp:249
+#: src/main.cpp:255
 #, c-format
 msgid "Taking %d measurement(s) for a duration of %d second(s) each.\n"
 msgstr ""
 
-#: src/main.cpp:251
+#: src/main.cpp:257
 #, c-format
 msgid "Measuring workload %s.\n"
 msgstr ""
 
-#: src/main.cpp:274
+#: src/main.cpp:280
 #, c-format
 msgid "PowerTOP "
 msgstr "PowerTOP "
 
-#: src/main.cpp:275 src/main.cpp:303
+#: src/main.cpp:281 src/main.cpp:328
 #, c-format
 msgid "exiting...\n"
 msgstr "exiting...\n"
 
-#: src/main.cpp:302
+#: src/main.cpp:327
 #, c-format
 msgid "Failed to mount debugfs!\n"
 msgstr ""
 
-#: src/main.cpp:394
+#: src/main.cpp:422
 #, c-format
 msgid "Quite mode failed!\n"
 msgstr ""
 
-#: src/main.cpp:440
+#: src/main.cpp:472
 msgid "Leaving PowerTOP"
 msgstr ""
index eebbe71..e7d711c 100644 (file)
Binary files a/po/es_ES.gmo and b/po/es_ES.gmo differ
index 315fe23..ea3754d 100644 (file)
@@ -3,15 +3,15 @@
 # This file is distributed under the same license as the PACKAGE package.
 #
 # Translators:
-# Andres  <andreshko9@hotmail.com>, 2011.
-# Patrick McCarty <patrick.mccarty@linux.intel.com>, 2013.
+# Andres <andreshko9@hotmail.com>, 2011
+# Patrick McCarty <patrick.mccarty@linux.intel.com>, 2013
 msgid ""
 msgstr ""
 "Project-Id-Version: PowerTOP\n"
 "Report-Msgid-Bugs-To: \"powertop@lists.01.org\"\n"
-"POT-Creation-Date: 2013-03-18 11:06-0700\n"
-"PO-Revision-Date: 2013-02-26 19:08+0000\n"
-"Last-Translator: Patrick McCarty <patrick.mccarty@linux.intel.com>\n"
+"POT-Creation-Date: 2013-11-04 10:45-0800\n"
+"PO-Revision-Date: 2013-11-05 08:40+0000\n"
+"Last-Translator: Margie Foster <margie@linux.intel.com>\n"
 "Language-Team: Spanish (Spain) (http://www.transifex.com/projects/p/PowerTOP/"
 "language/es_ES/)\n"
 "Language: es_ES\n"
@@ -53,46 +53,64 @@ msgstr "Estadísticas del dispositivo"
 msgid "Exit"
 msgstr "Salida"
 
-#: src/cpu/cpu_core.cpp:37 src/cpu/cpu_core.cpp:93 src/cpu/intel_cpus.cpp:201
+#: src/cpu/cpu_core.cpp:37 src/cpu/cpu_core.cpp:93 src/cpu/intel_cpus.cpp:245
 #, c-format
 msgid "  Core"
 msgstr ""
 
-#: src/cpu/cpu.cpp:94
+#: src/cpu/cpu.cpp:80
 #, c-format
 msgid "cpu package %i"
 msgstr "package cpu %i"
 
-#: src/cpu/cpu.cpp:95
+#: src/cpu/cpu.cpp:81
 msgid "cpu package"
 msgstr "paquete cpu"
 
-#: src/cpu/cpu.cpp:446 src/cpu/cpu.cpp:573
+#: src/cpu/cpu.cpp:84
+#, c-format
+msgid "cpu rapl package %i"
+msgstr ""
+
+#: src/cpu/cpu.cpp:85
+msgid "cpu rapl package"
+msgstr ""
+
+#: src/cpu/cpu.cpp:89
+#, c-format
+msgid "dram rapl package %i"
+msgstr ""
+
+#: src/cpu/cpu.cpp:90
+msgid "dram rapl package"
+msgstr ""
+
+#: src/cpu/cpu.cpp:459 src/cpu/cpu.cpp:586
 #, c-format
 msgid "Package %i"
 msgstr ""
 
-#: src/cpu/cpu.cpp:478 src/cpu/cpu.cpp:593
+#: src/cpu/cpu.cpp:491 src/cpu/cpu.cpp:606
 #, c-format
 msgid "Core %i"
 msgstr ""
 
-#: src/cpu/cpu.cpp:480
+#: src/cpu/cpu.cpp:493
 #, c-format
 msgid "GPU %i"
 msgstr ""
 
-#: src/cpu/cpu.cpp:502 src/cpu/cpu.cpp:614
+#: src/cpu/cpu.cpp:515 src/cpu/cpu.cpp:627
 #, c-format
 msgid "CPU %i"
 msgstr " CPU %i"
 
-#: src/cpu/cpu.cpp:796
+#: src/cpu/cpu.cpp:807
 #, c-format
 msgid "cpu_idle event returned no state?\n"
 msgstr ""
 
-#: src/cpu/cpu.cpp:811
+#: src/cpu/cpu.cpp:822
 #, c-format
 msgid "power or cpu_frequency event returned no state?\n"
 msgstr ""
@@ -102,7 +120,7 @@ msgid "C0 polling"
 msgstr "C0 sondeando"
 
 #: src/cpu/cpu_linux.cpp:240 src/cpu/cpu_linux.cpp:339
-#: src/cpu/intel_cpus.cpp:423
+#: src/cpu/intel_cpus.cpp:521
 #, c-format
 msgid " CPU %i"
 msgstr ""
@@ -112,52 +130,54 @@ msgstr ""
 msgid "Package"
 msgstr ""
 
-#: src/cpu/cpu_package.cpp:105 src/cpu/intel_cpus.cpp:226
+#: src/cpu/cpu_package.cpp:105 src/cpu/intel_cpus.cpp:297
 #, c-format
 msgid "  Package"
 msgstr ""
 
-#: src/cpu/intel_cpus.cpp:61
+#: src/cpu/intel_cpus.cpp:81
 #, c-format
-msgid "msr reg not found"
+msgid "read_msr cpu%d 0x%llx : "
 msgstr ""
 
-#: src/cpu/intel_cpus.cpp:71
-#, c-format
-msgid "pread cpu%d 0x%llx : "
-msgstr ""
-
-#: src/cpu/intel_cpus.cpp:347
+#: src/cpu/intel_cpus.cpp:445
 msgid "C0 active"
 msgstr "C0 activo"
 
-#: src/cpu/intel_cpus.cpp:406
+#: src/cpu/intel_cpus.cpp:504
 #, c-format
 msgid "Actual"
 msgstr "Actual"
 
-#: src/lib.cpp:266
+#: src/lib.cpp:286
 #, c-format
 msgid "%7sW"
 msgstr "%7sW"
 
-#: src/lib.cpp:269
+#: src/lib.cpp:289
 #, c-format
 msgid "    0 mW"
 msgstr "    0 mW"
 
-#: src/lib.cpp:390
+#: src/lib.cpp:408
 msgid "PS/2 Touchpad / Keyboard / Mouse"
 msgstr "PS/2 Touchpad / Teclado / Ratón"
 
-#: src/lib.cpp:391
+#: src/lib.cpp:409
 msgid "SATA controller"
 msgstr "Controlador SATA"
 
-#: src/lib.cpp:392
+#: src/lib.cpp:410
 msgid "Intel built in USB hub"
 msgstr "Intel construido en concentrador USB"
 
+#: src/lib.cpp:482 src/lib.cpp:514
+#, c-format
+msgid ""
+"Model-specific registers (MSR)\t\t\t not found (try enabling "
+"CONFIG_X86_MSR).\n"
+msgstr ""
+
 #: src/process/do_process.cpp:817
 #, c-format
 msgid ""
@@ -181,7 +201,7 @@ msgstr ""
 msgid "Summary"
 msgstr "Resumen"
 
-#: src/process/do_process.cpp:841 src/process/do_process.cpp:1011
+#: src/process/do_process.cpp:841 src/process/do_process.cpp:1013
 msgid "wakeups/second"
 msgstr ""
 
@@ -193,77 +213,83 @@ msgstr ""
 msgid "VFS ops/sec and"
 msgstr ""
 
-#: src/process/do_process.cpp:841 src/process/do_process.cpp:1015
+#: src/process/do_process.cpp:841 src/process/do_process.cpp:1017
 msgid "CPU use"
 msgstr ""
 
-#: src/process/do_process.cpp:845 src/process/do_process.cpp:902
-#: src/process/do_process.cpp:1021
+#: src/process/do_process.cpp:845 src/process/do_process.cpp:904
+#: src/process/do_process.cpp:1023
 msgid "Power est."
 msgstr ""
 
 #: src/process/do_process.cpp:845 src/process/do_process.cpp:847
-#: src/process/do_process.cpp:906 src/process/do_process.cpp:1025
+#: src/process/do_process.cpp:908 src/process/do_process.cpp:1027
 msgid "Usage"
 msgstr ""
 
 #: src/process/do_process.cpp:845 src/process/do_process.cpp:847
-#: src/process/do_process.cpp:1027
+#: src/process/do_process.cpp:1029
 msgid "Events/s"
 msgstr ""
 
 #: src/process/do_process.cpp:845 src/process/do_process.cpp:847
-#: src/process/do_process.cpp:916 src/process/do_process.cpp:1029
+#: src/process/do_process.cpp:918 src/process/do_process.cpp:1031
 msgid "Category"
 msgstr ""
 
 #: src/process/do_process.cpp:845 src/process/do_process.cpp:847
-#: src/process/do_process.cpp:918 src/process/do_process.cpp:1031
+#: src/process/do_process.cpp:920 src/process/do_process.cpp:1033
 msgid "Description"
 msgstr ""
 
-#: src/process/do_process.cpp:897
+#: src/process/do_process.cpp:899
 msgid "Overview of Software Power Consumers"
 msgstr ""
 
-#: src/process/do_process.cpp:908
+#: src/process/do_process.cpp:910
 msgid "Wakeups/s"
 msgstr ""
 
-#: src/process/do_process.cpp:910
+#: src/process/do_process.cpp:912
 msgid "GPU ops/s"
 msgstr ""
 
-#: src/process/do_process.cpp:912
+#: src/process/do_process.cpp:914
 msgid "Disk IO/s"
 msgstr ""
 
-#: src/process/do_process.cpp:914
+#: src/process/do_process.cpp:916
 msgid "GFX Wakeups/s"
 msgstr ""
 
-#: src/process/do_process.cpp:1008
+#: src/process/do_process.cpp:1010
 msgid "Power Consumption Summary"
 msgstr ""
 
-#: src/process/do_process.cpp:1012
+#: src/process/do_process.cpp:1014
 msgid "GPU ops/second"
 msgstr ""
 
-#: src/process/do_process.cpp:1013
+#: src/process/do_process.cpp:1015
 msgid "VFS ops/sec"
 msgstr ""
 
-#: src/process/do_process.cpp:1014
+#: src/process/do_process.cpp:1016
 msgid "GFX wakes/sec and"
 msgstr ""
 
-#: src/perf/perf.cpp:111
+#: src/perf/perf.cpp:115
+#, c-format
+msgid ""
+"Too many open files, please increase the limit of open file descriptors.\n"
+msgstr ""
+
+#: src/perf/perf.cpp:117
 #, c-format
 msgid "PowerTOP %s needs the kernel to support the 'perf' subsystem\n"
 msgstr "PowerTOP %s necesita que el kernel soporte el subsistema 'perf'\n"
 
-#: src/perf/perf.cpp:112
+#: src/perf/perf.cpp:118
 #, c-format
 msgid "as well as support for trace points in the kernel:\n"
 msgstr "así como soporte para puntos de seguimiento en el kernel:\n"
@@ -281,12 +307,12 @@ msgstr "Power est.    Usage     Device name\n"
 msgid "              Usage     Device name\n"
 msgstr "              Uso     Nombre del dispositivo\n"
 
-#: src/devices/alsa.cpp:79
+#: src/devices/alsa.cpp:77
 #, c-format
 msgid "Audio codec %s: %s (%s)"
 msgstr "Codec de audio %s: %s (%s)"
 
-#: src/devices/alsa.cpp:81 src/devices/alsa.cpp:83
+#: src/devices/alsa.cpp:79 src/devices/alsa.cpp:81
 #, c-format
 msgid "Audio codec %s: %s"
 msgstr "Codec de audio %s: %s"
@@ -296,32 +322,32 @@ msgstr "Codec de audio %s: %s"
 msgid "PCI Device: %s"
 msgstr "Dispositivo PCI: %s"
 
-#: src/devices/usb.cpp:51 src/devices/usb.cpp:94 src/devices/usb.cpp:96
+#: src/devices/usb.cpp:49 src/devices/usb.cpp:92 src/devices/usb.cpp:94
 #, c-format
 msgid "USB device: %s"
 msgstr "Dispositivo USB: %s"
 
-#: src/devices/usb.cpp:92
+#: src/devices/usb.cpp:90
 #, c-format
 msgid "USB device: %s (%s)"
 msgstr "Dispositivo USB: %s (%s)"
 
-#: src/devices/ahci.cpp:140
+#: src/devices/ahci.cpp:142
 #, c-format
 msgid "SATA link: %s"
 msgstr "Enlace SATA: %s"
 
-#: src/devices/ahci.cpp:142
+#: src/devices/ahci.cpp:144
 #, c-format
 msgid "SATA disk: %s"
 msgstr "Disco SATA: %s"
 
-#: src/devices/rfkill.cpp:65 src/devices/rfkill.cpp:69
+#: src/devices/rfkill.cpp:64 src/devices/rfkill.cpp:68
 #, c-format
 msgid "Radio device: %s"
 msgstr "Dispositivo de radio: %s"
 
-#: src/devices/network.cpp:177
+#: src/devices/network.cpp:176
 #, c-format
 msgid "Network interface: %s (%s)"
 msgstr "Interfaz de red: %s (%s)"
@@ -331,21 +357,21 @@ msgstr "Interfaz de red: %s (%s)"
 msgid "Bluetooth device interface status"
 msgstr "Estado de la interfaz de dispositivo Bluetooth"
 
-#: src/tuning/cpufreq.cpp:44 src/tuning/ethernet.cpp:53
+#: src/tuning/cpufreq.cpp:44 src/tuning/ethernet.cpp:50
 #: src/tuning/tunable.cpp:48 src/tuning/wifi.cpp:45 src/tuning/runtime.cpp:41
-#: src/tuning/tuningusb.cpp:40 src/tuning/tuningsysfs.cpp:44
+#: src/tuning/tuningusb.cpp:37 src/tuning/tuningsysfs.cpp:44
 msgid "Good"
 msgstr "Bueno"
 
-#: src/tuning/cpufreq.cpp:44 src/tuning/ethernet.cpp:53
+#: src/tuning/cpufreq.cpp:44 src/tuning/ethernet.cpp:50
 #: src/tuning/tunable.cpp:49 src/tuning/wifi.cpp:45 src/tuning/runtime.cpp:41
-#: src/tuning/tuningusb.cpp:40 src/tuning/tuningsysfs.cpp:44
+#: src/tuning/tuningusb.cpp:37 src/tuning/tuningsysfs.cpp:44
 msgid "Bad"
 msgstr "Malo"
 
-#: src/tuning/cpufreq.cpp:44 src/tuning/ethernet.cpp:53
+#: src/tuning/cpufreq.cpp:44 src/tuning/ethernet.cpp:50
 #: src/tuning/tunable.cpp:50 src/tuning/wifi.cpp:45 src/tuning/runtime.cpp:41
-#: src/tuning/tuningusb.cpp:40 src/tuning/tuningsysfs.cpp:44
+#: src/tuning/tuningusb.cpp:37 src/tuning/tuningsysfs.cpp:44
 msgid "Unknown"
 msgstr "Desconocido"
 
@@ -379,7 +405,7 @@ msgid " <ESC> Exit | <Enter> Toggle tunable | <r> Window refresh"
 msgstr ""
 " Salida de <ESC>| <Enter>Palanca ajustable | Actualización de <r>ventana"
 
-#: src/tuning/ethernet.cpp:57
+#: src/tuning/ethernet.cpp:54
 #, c-format
 msgid "Wake-on-lan status for device %s"
 msgstr "Estado Wake-on-lan para dispositivo %s"
@@ -411,13 +437,13 @@ msgstr ""
 msgid "Runtime PM for PCI Device %s"
 msgstr "Tiempo de ejecución PM para dispositivo PCI %s"
 
-#: src/tuning/tuningusb.cpp:55
+#: src/tuning/tuningusb.cpp:52
 #, c-format
 msgid "Autosuspend for unknown USB device %s (%s:%s)"
 msgstr "Autosuspender para dispositivo USB desconocido %s (%s:%s)"
 
-#: src/tuning/tuningusb.cpp:72 src/tuning/tuningusb.cpp:74
-#: src/tuning/tuningusb.cpp:76
+#: src/tuning/tuningusb.cpp:69 src/tuning/tuningusb.cpp:71
+#: src/tuning/tuningusb.cpp:73
 #, c-format
 msgid "Autosuspend for USB device %s [%s]"
 msgstr "Autosuspender para dispositivo USB %s [%s]"
@@ -427,186 +453,190 @@ msgstr "Autosuspender para dispositivo USB %s [%s]"
 msgid "Enable SATA link power Managmenet for %s"
 msgstr ""
 
-#: src/calibrate/calibrate.cpp:291
+#: src/calibrate/calibrate.cpp:236
 #, c-format
 msgid "Cannot create temp file\n"
 msgstr "No puede crear archivo temp\n"
 
-#: src/calibrate/calibrate.cpp:310
+#: src/calibrate/calibrate.cpp:255
 #, c-format
 msgid "Calibrating: CPU usage on %i threads\n"
 msgstr "Calibrando: uso de CPU en %i discusiones\n"
 
-#: src/calibrate/calibrate.cpp:325
+#: src/calibrate/calibrate.cpp:270
 #, c-format
 msgid "Calibrating: CPU wakeup power consumption\n"
 msgstr "Calibrando: consumo de energía del despertado de la CPU\n"
 
-#: src/calibrate/calibrate.cpp:342
+#: src/calibrate/calibrate.cpp:287
 #, c-format
 msgid "Calibrating USB devices\n"
 msgstr "Calibrando dispositivos USB\n"
 
-#: src/calibrate/calibrate.cpp:344 src/calibrate/calibrate.cpp:361
-#: src/calibrate/calibrate.cpp:369 src/calibrate/calibrate.cpp:386
+#: src/calibrate/calibrate.cpp:289 src/calibrate/calibrate.cpp:306
+#: src/calibrate/calibrate.cpp:314 src/calibrate/calibrate.cpp:331
 #, c-format
 msgid ".... device %s \n"
 msgstr ".... dispositivo %s \n"
 
-#: src/calibrate/calibrate.cpp:359
+#: src/calibrate/calibrate.cpp:304
 #, c-format
 msgid "Calibrating radio devices\n"
 msgstr "Calibrando dispositivos de radio\n"
 
-#: src/calibrate/calibrate.cpp:383
+#: src/calibrate/calibrate.cpp:328
 #, c-format
 msgid "Calibrating backlight\n"
 msgstr "Calibrando luz trasera\n"
 
-#: src/calibrate/calibrate.cpp:407 src/calibrate/calibrate.cpp:415
+#: src/calibrate/calibrate.cpp:352 src/calibrate/calibrate.cpp:360
 #, c-format
 msgid "Calibrating idle\n"
 msgstr "Calibrando parado\n"
 
-#: src/calibrate/calibrate.cpp:426
+#: src/calibrate/calibrate.cpp:371
 #, c-format
 msgid "Calibrating: disk usage \n"
 msgstr "Calibrando: uso de disco \n"
 
-#: src/calibrate/calibrate.cpp:451
+#: src/calibrate/calibrate.cpp:396
 msgid "Starting PowerTOP power estimate calibration \n"
 msgstr "Iniciando calibración de estimado de energía PowerTOP \n"
 
-#: src/calibrate/calibrate.cpp:474
+#: src/calibrate/calibrate.cpp:419
 msgid "Finishing PowerTOP power estimate calibration \n"
 msgstr "Finalizando calibración de estimación de energía de PowerTOP  \n"
 
-#: src/calibrate/calibrate.cpp:478
+#: src/calibrate/calibrate.cpp:423
 #, c-format
 msgid "Parameters after calibration:\n"
 msgstr "Parámetros tras calibración:\n"
 
-#: src/main.cpp:86
+#: src/main.cpp:91
 #, c-format
 msgid "PowerTOP version"
 msgstr ""
 
-#: src/main.cpp:92
+#: src/main.cpp:97
 msgid "Set refresh time out"
 msgstr "Actualización Set time out"
 
-#: src/main.cpp:105
+#: src/main.cpp:110
 msgid "Usage: powertop [OPTIONS]"
 msgstr ""
 
-#: src/main.cpp:106
+#: src/main.cpp:111
 msgid "run in \"debug\" mode"
 msgstr ""
 
-#: src/main.cpp:107
+#: src/main.cpp:112
 msgid "print version information"
 msgstr ""
 
-#: src/main.cpp:108
+#: src/main.cpp:113
 msgid "runs powertop in calibration mode"
 msgstr ""
 
-#: src/main.cpp:109
+#: src/main.cpp:114
+msgid "Sets all tunable options to their GOOD setting"
+msgstr ""
+
+#: src/main.cpp:115
 msgid "[=devnode]"
 msgstr ""
 
-#: src/main.cpp:109
+#: src/main.cpp:115
 msgid "uses an Extech Power Analyzer for measurements"
 msgstr ""
 
-#: src/main.cpp:110 src/main.cpp:111
+#: src/main.cpp:116 src/main.cpp:117
 msgid "[=FILENAME]"
 msgstr ""
 
-#: src/main.cpp:110
+#: src/main.cpp:116
 msgid "generate a html report"
 msgstr ""
 
-#: src/main.cpp:111
+#: src/main.cpp:117
 msgid "generate a csv report"
 msgstr ""
 
-#: src/main.cpp:112
+#: src/main.cpp:118
 msgid "[=seconds]"
 msgstr ""
 
-#: src/main.cpp:112
+#: src/main.cpp:118
 msgid "generate a report for 'x' seconds"
 msgstr ""
 
-#: src/main.cpp:113
+#: src/main.cpp:119
 msgid "[=iterations] number of times to run each test"
 msgstr ""
 
-#: src/main.cpp:114
+#: src/main.cpp:120
 msgid "[=workload]"
 msgstr ""
 
-#: src/main.cpp:114
+#: src/main.cpp:120
 msgid "file to execute for workload"
 msgstr ""
 
-#: src/main.cpp:115
+#: src/main.cpp:121
 msgid "suppress stderr output"
 msgstr ""
 
-#: src/main.cpp:116
+#: src/main.cpp:122
 msgid "print this help menu"
 msgstr ""
 
-#: src/main.cpp:118
+#: src/main.cpp:124
 msgid "For more help please refer to the README"
 msgstr ""
 
-#: src/main.cpp:195
+#: src/main.cpp:201
 #, c-format
 msgid "Unknown issue running workload!\n"
 msgstr ""
 
-#: src/main.cpp:236
+#: src/main.cpp:242
 msgid "PowerTOP is out of memory. PowerTOP is Aborting"
 msgstr ""
 
-#: src/main.cpp:244
+#: src/main.cpp:250
 #, c-format
 msgid "Preparing to take measurements\n"
 msgstr ""
 
-#: src/main.cpp:249
+#: src/main.cpp:255
 #, c-format
 msgid "Taking %d measurement(s) for a duration of %d second(s) each.\n"
 msgstr ""
 
-#: src/main.cpp:251
+#: src/main.cpp:257
 #, c-format
 msgid "Measuring workload %s.\n"
 msgstr ""
 
-#: src/main.cpp:274
+#: src/main.cpp:280
 #, c-format
 msgid "PowerTOP "
 msgstr "PowerTOP "
 
-#: src/main.cpp:275 src/main.cpp:303
+#: src/main.cpp:281 src/main.cpp:328
 #, c-format
 msgid "exiting...\n"
 msgstr "saliendo...\n"
 
-#: src/main.cpp:302
+#: src/main.cpp:327
 #, c-format
 msgid "Failed to mount debugfs!\n"
 msgstr ""
 
-#: src/main.cpp:394
+#: src/main.cpp:422
 #, c-format
 msgid "Quite mode failed!\n"
 msgstr ""
 
-#: src/main.cpp:440
+#: src/main.cpp:472
 msgid "Leaving PowerTOP"
 msgstr ""
index b0c4a7a..556e9c2 100644 (file)
Binary files a/po/hu_HU.gmo and b/po/hu_HU.gmo differ
index 478cf16..241d1ce 100644 (file)
@@ -3,17 +3,17 @@
 # This file is distributed under the same license as the PACKAGE package.
 #
 # Translators:
-#   <chris.e.ferron@linux.intel.com>, 2012.
-# Márton Németh <nemeth.marton@gmail.com>, 2012.
-# Márton Németh <nm127@freemail.hu>, 2012.
-# Zoltan Hoppár <hopparz@gmail.com>, 2012.
+# ceferron <chris.e.ferron@linux.intel.com>, 2012
+# Márton Németh <nemeth.marton@gmail.com>, 2012
+# Márton Németh <nm127@freemail.hu>, 2012
+# Zoltan Hoppár <hopparz@gmail.com>, 2012
 msgid ""
 msgstr ""
 "Project-Id-Version: PowerTOP\n"
 "Report-Msgid-Bugs-To: \"powertop@lists.01.org\"\n"
-"POT-Creation-Date: 2013-03-18 11:06-0700\n"
-"PO-Revision-Date: 2013-02-26 19:08+0000\n"
-"Last-Translator: Zoltan Hoppár <hopparz@gmail.com>\n"
+"POT-Creation-Date: 2013-11-04 10:45-0800\n"
+"PO-Revision-Date: 2013-11-05 08:40+0000\n"
+"Last-Translator: Margie Foster <margie@linux.intel.com>\n"
 "Language-Team: Hungarian (Hungary) (http://www.transifex.com/projects/p/"
 "PowerTOP/language/hu_HU/)\n"
 "Language: hu_HU\n"
@@ -55,46 +55,64 @@ msgstr "Eszközstatisztika"
 msgid "Exit"
 msgstr "Kilépés"
 
-#: src/cpu/cpu_core.cpp:37 src/cpu/cpu_core.cpp:93 src/cpu/intel_cpus.cpp:201
+#: src/cpu/cpu_core.cpp:37 src/cpu/cpu_core.cpp:93 src/cpu/intel_cpus.cpp:245
 #, c-format
 msgid "  Core"
 msgstr ""
 
-#: src/cpu/cpu.cpp:94
+#: src/cpu/cpu.cpp:80
 #, c-format
 msgid "cpu package %i"
 msgstr "CPU tok %i"
 
-#: src/cpu/cpu.cpp:95
+#: src/cpu/cpu.cpp:81
 msgid "cpu package"
 msgstr "CPU tok"
 
-#: src/cpu/cpu.cpp:446 src/cpu/cpu.cpp:573
+#: src/cpu/cpu.cpp:84
+#, c-format
+msgid "cpu rapl package %i"
+msgstr ""
+
+#: src/cpu/cpu.cpp:85
+msgid "cpu rapl package"
+msgstr ""
+
+#: src/cpu/cpu.cpp:89
+#, c-format
+msgid "dram rapl package %i"
+msgstr ""
+
+#: src/cpu/cpu.cpp:90
+msgid "dram rapl package"
+msgstr ""
+
+#: src/cpu/cpu.cpp:459 src/cpu/cpu.cpp:586
 #, c-format
 msgid "Package %i"
 msgstr "Csomag %i"
 
-#: src/cpu/cpu.cpp:478 src/cpu/cpu.cpp:593
+#: src/cpu/cpu.cpp:491 src/cpu/cpu.cpp:606
 #, c-format
 msgid "Core %i"
 msgstr "Mag %i"
 
-#: src/cpu/cpu.cpp:480
+#: src/cpu/cpu.cpp:493
 #, c-format
 msgid "GPU %i"
 msgstr "GPU %i"
 
-#: src/cpu/cpu.cpp:502 src/cpu/cpu.cpp:614
+#: src/cpu/cpu.cpp:515 src/cpu/cpu.cpp:627
 #, c-format
 msgid "CPU %i"
 msgstr "CPU %i"
 
-#: src/cpu/cpu.cpp:796
+#: src/cpu/cpu.cpp:807
 #, c-format
 msgid "cpu_idle event returned no state?\n"
 msgstr "a CPU üresjáratesemény nem adott vissza állapotot?\n"
 
-#: src/cpu/cpu.cpp:811
+#: src/cpu/cpu.cpp:822
 #, c-format
 msgid "power or cpu_frequency event returned no state?\n"
 msgstr ""
@@ -104,7 +122,7 @@ msgid "C0 polling"
 msgstr "C0 ciklikus lekérdezés"
 
 #: src/cpu/cpu_linux.cpp:240 src/cpu/cpu_linux.cpp:339
-#: src/cpu/intel_cpus.cpp:423
+#: src/cpu/intel_cpus.cpp:521
 #, c-format
 msgid " CPU %i"
 msgstr ""
@@ -114,52 +132,54 @@ msgstr ""
 msgid "Package"
 msgstr ""
 
-#: src/cpu/cpu_package.cpp:105 src/cpu/intel_cpus.cpp:226
+#: src/cpu/cpu_package.cpp:105 src/cpu/intel_cpus.cpp:297
 #, c-format
 msgid "  Package"
 msgstr ""
 
-#: src/cpu/intel_cpus.cpp:61
+#: src/cpu/intel_cpus.cpp:81
 #, c-format
-msgid "msr reg not found"
-msgstr "Az msr regiszterek nem találhatók"
-
-#: src/cpu/intel_cpus.cpp:71
-#, c-format
-msgid "pread cpu%d 0x%llx : "
-msgstr "pread cpu%d 0x%llx: "
+msgid "read_msr cpu%d 0x%llx : "
+msgstr ""
 
-#: src/cpu/intel_cpus.cpp:347
+#: src/cpu/intel_cpus.cpp:445
 msgid "C0 active"
 msgstr "C0 aktív"
 
-#: src/cpu/intel_cpus.cpp:406
+#: src/cpu/intel_cpus.cpp:504
 #, c-format
 msgid "Actual"
 msgstr "Aktuális"
 
-#: src/lib.cpp:266
+#: src/lib.cpp:286
 #, c-format
 msgid "%7sW"
 msgstr "%7sW"
 
-#: src/lib.cpp:269
+#: src/lib.cpp:289
 #, c-format
 msgid "    0 mW"
 msgstr "    0 mW"
 
-#: src/lib.cpp:390
+#: src/lib.cpp:408
 msgid "PS/2 Touchpad / Keyboard / Mouse"
 msgstr "PS/2 tapipad / billentyűzet / egér"
 
-#: src/lib.cpp:391
+#: src/lib.cpp:409
 msgid "SATA controller"
 msgstr "SATA vezérlő"
 
-#: src/lib.cpp:392
+#: src/lib.cpp:410
 msgid "Intel built in USB hub"
 msgstr "Beépített Intel USB hub"
 
+#: src/lib.cpp:482 src/lib.cpp:514
+#, c-format
+msgid ""
+"Model-specific registers (MSR)\t\t\t not found (try enabling "
+"CONFIG_X86_MSR).\n"
+msgstr ""
+
 #: src/process/do_process.cpp:817
 #, c-format
 msgid ""
@@ -183,7 +203,7 @@ msgstr "Becsült hátralévő idő %i óra %i perc\n"
 msgid "Summary"
 msgstr "Összefoglalás"
 
-#: src/process/do_process.cpp:841 src/process/do_process.cpp:1011
+#: src/process/do_process.cpp:841 src/process/do_process.cpp:1013
 msgid "wakeups/second"
 msgstr "felébredés/másodperc"
 
@@ -195,79 +215,85 @@ msgstr "GPU művelet/másodperc"
 msgid "VFS ops/sec and"
 msgstr "VFS művelet/másodperc"
 
-#: src/process/do_process.cpp:841 src/process/do_process.cpp:1015
+#: src/process/do_process.cpp:841 src/process/do_process.cpp:1017
 msgid "CPU use"
 msgstr "CPU használtság"
 
-#: src/process/do_process.cpp:845 src/process/do_process.cpp:902
-#: src/process/do_process.cpp:1021
+#: src/process/do_process.cpp:845 src/process/do_process.cpp:904
+#: src/process/do_process.cpp:1023
 msgid "Power est."
 msgstr "Becsült telj."
 
 #: src/process/do_process.cpp:845 src/process/do_process.cpp:847
-#: src/process/do_process.cpp:906 src/process/do_process.cpp:1025
+#: src/process/do_process.cpp:908 src/process/do_process.cpp:1027
 msgid "Usage"
 msgstr "Használat"
 
 #: src/process/do_process.cpp:845 src/process/do_process.cpp:847
-#: src/process/do_process.cpp:1027
+#: src/process/do_process.cpp:1029
 msgid "Events/s"
 msgstr "Esemény/s"
 
 #: src/process/do_process.cpp:845 src/process/do_process.cpp:847
-#: src/process/do_process.cpp:916 src/process/do_process.cpp:1029
+#: src/process/do_process.cpp:918 src/process/do_process.cpp:1031
 msgid "Category"
 msgstr "Kategória"
 
 #: src/process/do_process.cpp:845 src/process/do_process.cpp:847
-#: src/process/do_process.cpp:918 src/process/do_process.cpp:1031
+#: src/process/do_process.cpp:920 src/process/do_process.cpp:1033
 msgid "Description"
 msgstr "Leírás"
 
-#: src/process/do_process.cpp:897
+#: src/process/do_process.cpp:899
 msgid "Overview of Software Power Consumers"
 msgstr "Szofver teljesítményfogyasztók áttekintése"
 
-#: src/process/do_process.cpp:908
+#: src/process/do_process.cpp:910
 msgid "Wakeups/s"
 msgstr "Felébredés/s"
 
-#: src/process/do_process.cpp:910
+#: src/process/do_process.cpp:912
 msgid "GPU ops/s"
 msgstr "GPU művelet/s"
 
-#: src/process/do_process.cpp:912
+#: src/process/do_process.cpp:914
 msgid "Disk IO/s"
 msgstr "Lemez BK/s"
 
-#: src/process/do_process.cpp:914
+#: src/process/do_process.cpp:916
 msgid "GFX Wakeups/s"
 msgstr "GFX felébredés/s"
 
-#: src/process/do_process.cpp:1008
+#: src/process/do_process.cpp:1010
 msgid "Power Consumption Summary"
 msgstr "Teljesítményfelvétel összefoglaló"
 
-#: src/process/do_process.cpp:1012
+#: src/process/do_process.cpp:1014
 msgid "GPU ops/second"
 msgstr "GPU művelet/másodperc"
 
-#: src/process/do_process.cpp:1013
+#: src/process/do_process.cpp:1015
 msgid "VFS ops/sec"
 msgstr "VFS művelet/mp"
 
-#: src/process/do_process.cpp:1014
+#: src/process/do_process.cpp:1016
 msgid "GFX wakes/sec and"
 msgstr "GFX felébredés/mp és"
 
-#: src/perf/perf.cpp:111
+#: src/perf/perf.cpp:115
+#, c-format
+msgid ""
+"Too many open files, please increase the limit of open file descriptors.\n"
+msgstr ""
+
+#: src/perf/perf.cpp:117
 #, c-format
 msgid "PowerTOP %s needs the kernel to support the 'perf' subsystem\n"
 msgstr ""
 "A PowerTOP %s verziójának szüksége van arra, hogy a rendszermag támogassa a "
 "„perf” alrendszert\n"
 
-#: src/perf/perf.cpp:112
+#: src/perf/perf.cpp:118
 #, c-format
 msgid "as well as support for trace points in the kernel:\n"
 msgstr "valamint a nyomkövetési pontokra is a rendszermagban:\n"
@@ -285,12 +311,12 @@ msgstr "Becsült telj.   Használat   Eszköz név\n"
 msgid "              Usage     Device name\n"
 msgstr "                Használat   Eszköz név\n"
 
-#: src/devices/alsa.cpp:79
+#: src/devices/alsa.cpp:77
 #, c-format
 msgid "Audio codec %s: %s (%s)"
 msgstr "Hangkodek %s: %s (%s)"
 
-#: src/devices/alsa.cpp:81 src/devices/alsa.cpp:83
+#: src/devices/alsa.cpp:79 src/devices/alsa.cpp:81
 #, c-format
 msgid "Audio codec %s: %s"
 msgstr "Hangkodek %s: %s"
@@ -300,32 +326,32 @@ msgstr "Hangkodek %s: %s"
 msgid "PCI Device: %s"
 msgstr "PCI eszköz: %s"
 
-#: src/devices/usb.cpp:51 src/devices/usb.cpp:94 src/devices/usb.cpp:96
+#: src/devices/usb.cpp:49 src/devices/usb.cpp:92 src/devices/usb.cpp:94
 #, c-format
 msgid "USB device: %s"
 msgstr "USB eszköz: %s"
 
-#: src/devices/usb.cpp:92
+#: src/devices/usb.cpp:90
 #, c-format
 msgid "USB device: %s (%s)"
 msgstr "USB eszköz: %s (%s)"
 
-#: src/devices/ahci.cpp:140
+#: src/devices/ahci.cpp:142
 #, c-format
 msgid "SATA link: %s"
 msgstr "SATA kapcsolat: %s"
 
-#: src/devices/ahci.cpp:142
+#: src/devices/ahci.cpp:144
 #, c-format
 msgid "SATA disk: %s"
 msgstr "SATA lemez: %s"
 
-#: src/devices/rfkill.cpp:65 src/devices/rfkill.cpp:69
+#: src/devices/rfkill.cpp:64 src/devices/rfkill.cpp:68
 #, c-format
 msgid "Radio device: %s"
 msgstr "Rádiós eszköz: %s"
 
-#: src/devices/network.cpp:177
+#: src/devices/network.cpp:176
 #, c-format
 msgid "Network interface: %s (%s)"
 msgstr "Hálózati csatoló: %s (%s)"
@@ -335,21 +361,21 @@ msgstr "Hálózati csatoló: %s (%s)"
 msgid "Bluetooth device interface status"
 msgstr "Bluetooth eszközcsatoló állapota"
 
-#: src/tuning/cpufreq.cpp:44 src/tuning/ethernet.cpp:53
+#: src/tuning/cpufreq.cpp:44 src/tuning/ethernet.cpp:50
 #: src/tuning/tunable.cpp:48 src/tuning/wifi.cpp:45 src/tuning/runtime.cpp:41
-#: src/tuning/tuningusb.cpp:40 src/tuning/tuningsysfs.cpp:44
+#: src/tuning/tuningusb.cpp:37 src/tuning/tuningsysfs.cpp:44
 msgid "Good"
 msgstr "Jó"
 
-#: src/tuning/cpufreq.cpp:44 src/tuning/ethernet.cpp:53
+#: src/tuning/cpufreq.cpp:44 src/tuning/ethernet.cpp:50
 #: src/tuning/tunable.cpp:49 src/tuning/wifi.cpp:45 src/tuning/runtime.cpp:41
-#: src/tuning/tuningusb.cpp:40 src/tuning/tuningsysfs.cpp:44
+#: src/tuning/tuningusb.cpp:37 src/tuning/tuningsysfs.cpp:44
 msgid "Bad"
 msgstr "Rossz"
 
-#: src/tuning/cpufreq.cpp:44 src/tuning/ethernet.cpp:53
+#: src/tuning/cpufreq.cpp:44 src/tuning/ethernet.cpp:50
 #: src/tuning/tunable.cpp:50 src/tuning/wifi.cpp:45 src/tuning/runtime.cpp:41
-#: src/tuning/tuningusb.cpp:40 src/tuning/tuningsysfs.cpp:44
+#: src/tuning/tuningusb.cpp:37 src/tuning/tuningsysfs.cpp:44
 msgid "Unknown"
 msgstr "Ismeretlen"
 
@@ -382,7 +408,7 @@ msgstr "Hangolások"
 msgid " <ESC> Exit | <Enter> Toggle tunable | <r> Window refresh"
 msgstr " <ESC> Kilépés | <Enter> Hangolás átkapcsolása | <r> Ablak frissítése"
 
-#: src/tuning/ethernet.cpp:57
+#: src/tuning/ethernet.cpp:54
 #, c-format
 msgid "Wake-on-lan status for device %s"
 msgstr "Felébredés hálózati eseményre (wake-on-lan) állapot a(z) %s eszközön"
@@ -412,13 +438,13 @@ msgstr "A(z) %s PCI eszköznek nincs futásidejű energiagazdálkodása"
 msgid "Runtime PM for PCI Device %s"
 msgstr "Futásidejű energiagazdálkodás a(z) %s PCI eszközön"
 
-#: src/tuning/tuningusb.cpp:55
+#: src/tuning/tuningusb.cpp:52
 #, c-format
 msgid "Autosuspend for unknown USB device %s (%s:%s)"
 msgstr "Automatikus felfüggesztés a(z) %s (%s:%s) ismeretlen USB eszközön"
 
-#: src/tuning/tuningusb.cpp:72 src/tuning/tuningusb.cpp:74
-#: src/tuning/tuningusb.cpp:76
+#: src/tuning/tuningusb.cpp:69 src/tuning/tuningusb.cpp:71
+#: src/tuning/tuningusb.cpp:73
 #, c-format
 msgid "Autosuspend for USB device %s [%s]"
 msgstr "Automatikus felfüggesztés a(z) %s [%s] USB eszközön"
@@ -428,186 +454,190 @@ msgstr "Automatikus felfüggesztés a(z) %s [%s] USB eszközön"
 msgid "Enable SATA link power Managmenet for %s"
 msgstr "SATA link energiaszabályozás engedélyezése %s számára"
 
-#: src/calibrate/calibrate.cpp:291
+#: src/calibrate/calibrate.cpp:236
 #, c-format
 msgid "Cannot create temp file\n"
 msgstr "Nem tudok létrehozni ideiglenes fájlt\n"
 
-#: src/calibrate/calibrate.cpp:310
+#: src/calibrate/calibrate.cpp:255
 #, c-format
 msgid "Calibrating: CPU usage on %i threads\n"
 msgstr "Kalibrálás: CPU használtság %i szálon\n"
 
-#: src/calibrate/calibrate.cpp:325
+#: src/calibrate/calibrate.cpp:270
 #, c-format
 msgid "Calibrating: CPU wakeup power consumption\n"
 msgstr "Kalibrálás: CPU felébredési teljesítményfelvétel\n"
 
-#: src/calibrate/calibrate.cpp:342
+#: src/calibrate/calibrate.cpp:287
 #, c-format
 msgid "Calibrating USB devices\n"
 msgstr "USB eszközök kalibrálása\n"
 
-#: src/calibrate/calibrate.cpp:344 src/calibrate/calibrate.cpp:361
-#: src/calibrate/calibrate.cpp:369 src/calibrate/calibrate.cpp:386
+#: src/calibrate/calibrate.cpp:289 src/calibrate/calibrate.cpp:306
+#: src/calibrate/calibrate.cpp:314 src/calibrate/calibrate.cpp:331
 #, c-format
 msgid ".... device %s \n"
 msgstr ".... %s eszköz \n"
 
-#: src/calibrate/calibrate.cpp:359
+#: src/calibrate/calibrate.cpp:304
 #, c-format
 msgid "Calibrating radio devices\n"
 msgstr "Rádiós eszközök kalibrálása\n"
 
-#: src/calibrate/calibrate.cpp:383
+#: src/calibrate/calibrate.cpp:328
 #, c-format
 msgid "Calibrating backlight\n"
 msgstr "Háttérvilágítás kalibrálása\n"
 
-#: src/calibrate/calibrate.cpp:407 src/calibrate/calibrate.cpp:415
+#: src/calibrate/calibrate.cpp:352 src/calibrate/calibrate.cpp:360
 #, c-format
 msgid "Calibrating idle\n"
 msgstr "Üresjárat kalibrálása\n"
 
-#: src/calibrate/calibrate.cpp:426
+#: src/calibrate/calibrate.cpp:371
 #, c-format
 msgid "Calibrating: disk usage \n"
 msgstr "Kalibrálás: lemezhasználat \n"
 
-#: src/calibrate/calibrate.cpp:451
+#: src/calibrate/calibrate.cpp:396
 msgid "Starting PowerTOP power estimate calibration \n"
 msgstr "PowerTop teljesítménybecslés kalibrálás indítása \n"
 
-#: src/calibrate/calibrate.cpp:474
+#: src/calibrate/calibrate.cpp:419
 msgid "Finishing PowerTOP power estimate calibration \n"
 msgstr "PowerTop teljesítménybecslés-kalibrálás befejezése \n"
 
-#: src/calibrate/calibrate.cpp:478
+#: src/calibrate/calibrate.cpp:423
 #, c-format
 msgid "Parameters after calibration:\n"
 msgstr "Paraméterek a kalibrálás után:\n"
 
-#: src/main.cpp:86
+#: src/main.cpp:91
 #, c-format
 msgid "PowerTOP version"
 msgstr "PowerTOP verzió"
 
-#: src/main.cpp:92
+#: src/main.cpp:97
 msgid "Set refresh time out"
 msgstr "Frissítés időkorlát leteltének beállítása"
 
-#: src/main.cpp:105
+#: src/main.cpp:110
 msgid "Usage: powertop [OPTIONS]"
 msgstr "Használat: powertop [OPCIÓK]"
 
-#: src/main.cpp:106
+#: src/main.cpp:111
 msgid "run in \"debug\" mode"
 msgstr "futtatás hibakeresési módban"
 
-#: src/main.cpp:107
+#: src/main.cpp:112
 msgid "print version information"
 msgstr "verzió-információ kiíratása"
 
-#: src/main.cpp:108
+#: src/main.cpp:113
 msgid "runs powertop in calibration mode"
 msgstr "a powertop futtatása kalibrációs módban"
 
-#: src/main.cpp:109
+#: src/main.cpp:114
+msgid "Sets all tunable options to their GOOD setting"
+msgstr ""
+
+#: src/main.cpp:115
 msgid "[=devnode]"
 msgstr "[=eszköznév]"
 
-#: src/main.cpp:109
+#: src/main.cpp:115
 msgid "uses an Extech Power Analyzer for measurements"
 msgstr "Extech Power Analyzer eszköz használata a mérésekhez"
 
-#: src/main.cpp:110 src/main.cpp:111
+#: src/main.cpp:116 src/main.cpp:117
 msgid "[=FILENAME]"
 msgstr "[=FÁJLNÉV]"
 
-#: src/main.cpp:110
+#: src/main.cpp:116
 msgid "generate a html report"
 msgstr "HTML jelentés készítése"
 
-#: src/main.cpp:111
+#: src/main.cpp:117
 msgid "generate a csv report"
 msgstr "CSV jelentés készítése"
 
-#: src/main.cpp:112
+#: src/main.cpp:118
 msgid "[=seconds]"
 msgstr "[=másodperc]"
 
-#: src/main.cpp:112
+#: src/main.cpp:118
 msgid "generate a report for 'x' seconds"
 msgstr "ennyi másodpercig készüljön a jelentés"
 
-#: src/main.cpp:113
+#: src/main.cpp:119
 msgid "[=iterations] number of times to run each test"
 msgstr "[=iterációk] ennyiszer fusson le minden egyes teszt"
 
-#: src/main.cpp:114
+#: src/main.cpp:120
 msgid "[=workload]"
 msgstr "[=terhelés]"
 
-#: src/main.cpp:114
+#: src/main.cpp:120
 msgid "file to execute for workload"
 msgstr "végrehajtandó fájl a terheléshez"
 
-#: src/main.cpp:115
+#: src/main.cpp:121
 msgid "suppress stderr output"
 msgstr "szabványos hibakimenet elnyomása"
 
-#: src/main.cpp:116
+#: src/main.cpp:122
 msgid "print this help menu"
 msgstr "e súgó kiíratása"
 
-#: src/main.cpp:118
+#: src/main.cpp:124
 msgid "For more help please refer to the README"
 msgstr "További információk a README fájlban találhatók"
 
-#: src/main.cpp:195
+#: src/main.cpp:201
 #, c-format
 msgid "Unknown issue running workload!\n"
 msgstr ""
 
-#: src/main.cpp:236
+#: src/main.cpp:242
 msgid "PowerTOP is out of memory. PowerTOP is Aborting"
 msgstr "Nincs elég memória a PowerTOP-nak. A PowerTOP futása megszakad"
 
-#: src/main.cpp:244
+#: src/main.cpp:250
 #, c-format
 msgid "Preparing to take measurements\n"
 msgstr "Előkészülés a mérések elvégzéséhez\n"
 
-#: src/main.cpp:249
+#: src/main.cpp:255
 #, c-format
 msgid "Taking %d measurement(s) for a duration of %d second(s) each.\n"
 msgstr "%d darab, egyenként %d másodperces mérés készítése.\n"
 
-#: src/main.cpp:251
+#: src/main.cpp:257
 #, c-format
 msgid "Measuring workload %s.\n"
 msgstr "Terhelés mérése %s.\n"
 
-#: src/main.cpp:274
+#: src/main.cpp:280
 #, c-format
 msgid "PowerTOP "
 msgstr "PowerTOP "
 
-#: src/main.cpp:275 src/main.cpp:303
+#: src/main.cpp:281 src/main.cpp:328
 #, c-format
 msgid "exiting...\n"
 msgstr "kilépés...\n"
 
-#: src/main.cpp:302
+#: src/main.cpp:327
 #, c-format
 msgid "Failed to mount debugfs!\n"
 msgstr "Nem tudtam csatolni a debugfs-t!\n"
 
-#: src/main.cpp:394
+#: src/main.cpp:422
 #, c-format
 msgid "Quite mode failed!\n"
 msgstr ""
 
-#: src/main.cpp:440
+#: src/main.cpp:472
 msgid "Leaving PowerTOP"
 msgstr "A PowerTOP elhagyása"
index 8848996..d138e12 100644 (file)
Binary files a/po/id_ID.gmo and b/po/id_ID.gmo differ
index 0b9b389..80b8cd8 100644 (file)
@@ -3,14 +3,14 @@
 # This file is distributed under the same license as the PACKAGE package.
 #
 # Translators:
-# Andika Triwidada <andika@gmail.com>, 2012-2013.
+# Andika Triwidada <andika@gmail.com>, 2012-2013
 msgid ""
 msgstr ""
 "Project-Id-Version: PowerTOP\n"
 "Report-Msgid-Bugs-To: \"powertop@lists.01.org\"\n"
-"POT-Creation-Date: 2013-03-18 11:06-0700\n"
-"PO-Revision-Date: 2013-03-15 11:29+0000\n"
-"Last-Translator: Andika Triwidada <andika@gmail.com>\n"
+"POT-Creation-Date: 2013-11-04 10:45-0800\n"
+"PO-Revision-Date: 2013-11-05 08:40+0000\n"
+"Last-Translator: Margie Foster <margie@linux.intel.com>\n"
 "Language-Team: Indonesian (Indonesia) (http://www.transifex.com/projects/p/"
 "PowerTOP/language/id_ID/)\n"
 "Language: id_ID\n"
@@ -52,46 +52,64 @@ msgstr "Stat perangkat"
 msgid "Exit"
 msgstr "Keluar"
 
-#: src/cpu/cpu_core.cpp:37 src/cpu/cpu_core.cpp:93 src/cpu/intel_cpus.cpp:201
+#: src/cpu/cpu_core.cpp:37 src/cpu/cpu_core.cpp:93 src/cpu/intel_cpus.cpp:245
 #, c-format
 msgid "  Core"
 msgstr "  Core"
 
-#: src/cpu/cpu.cpp:94
+#: src/cpu/cpu.cpp:80
 #, c-format
 msgid "cpu package %i"
 msgstr "paket %i cpu"
 
-#: src/cpu/cpu.cpp:95
+#: src/cpu/cpu.cpp:81
 msgid "cpu package"
 msgstr "paket cpu"
 
-#: src/cpu/cpu.cpp:446 src/cpu/cpu.cpp:573
+#: src/cpu/cpu.cpp:84
+#, c-format
+msgid "cpu rapl package %i"
+msgstr ""
+
+#: src/cpu/cpu.cpp:85
+msgid "cpu rapl package"
+msgstr ""
+
+#: src/cpu/cpu.cpp:89
+#, c-format
+msgid "dram rapl package %i"
+msgstr ""
+
+#: src/cpu/cpu.cpp:90
+msgid "dram rapl package"
+msgstr ""
+
+#: src/cpu/cpu.cpp:459 src/cpu/cpu.cpp:586
 #, c-format
 msgid "Package %i"
 msgstr "Paket %i"
 
-#: src/cpu/cpu.cpp:478 src/cpu/cpu.cpp:593
+#: src/cpu/cpu.cpp:491 src/cpu/cpu.cpp:606
 #, c-format
 msgid "Core %i"
 msgstr "Core %i"
 
-#: src/cpu/cpu.cpp:480
+#: src/cpu/cpu.cpp:493
 #, c-format
 msgid "GPU %i"
 msgstr "GPU %i"
 
-#: src/cpu/cpu.cpp:502 src/cpu/cpu.cpp:614
+#: src/cpu/cpu.cpp:515 src/cpu/cpu.cpp:627
 #, c-format
 msgid "CPU %i"
 msgstr "CPU %i"
 
-#: src/cpu/cpu.cpp:796
+#: src/cpu/cpu.cpp:807
 #, c-format
 msgid "cpu_idle event returned no state?\n"
 msgstr "kejadian cpu_idle tak mengembalikan keadaan?\n"
 
-#: src/cpu/cpu.cpp:811
+#: src/cpu/cpu.cpp:822
 #, c-format
 msgid "power or cpu_frequency event returned no state?\n"
 msgstr "kejadian power atau cpu_frequency tak mengembalikan keadaan?\n"
@@ -101,7 +119,7 @@ msgid "C0 polling"
 msgstr "C0 polling"
 
 #: src/cpu/cpu_linux.cpp:240 src/cpu/cpu_linux.cpp:339
-#: src/cpu/intel_cpus.cpp:423
+#: src/cpu/intel_cpus.cpp:521
 #, c-format
 msgid " CPU %i"
 msgstr " CPU %i"
@@ -111,52 +129,54 @@ msgstr " CPU %i"
 msgid "Package"
 msgstr "Paket"
 
-#: src/cpu/cpu_package.cpp:105 src/cpu/intel_cpus.cpp:226
+#: src/cpu/cpu_package.cpp:105 src/cpu/intel_cpus.cpp:297
 #, c-format
 msgid "  Package"
 msgstr "Paket"
 
-#: src/cpu/intel_cpus.cpp:61
+#: src/cpu/intel_cpus.cpp:81
 #, c-format
-msgid "msr reg not found"
-msgstr "msg reg tak ditemukan"
-
-#: src/cpu/intel_cpus.cpp:71
-#, c-format
-msgid "pread cpu%d 0x%llx : "
-msgstr "pread cpu%d 0x%llx : "
+msgid "read_msr cpu%d 0x%llx : "
+msgstr ""
 
-#: src/cpu/intel_cpus.cpp:347
+#: src/cpu/intel_cpus.cpp:445
 msgid "C0 active"
 msgstr "C0 aktif"
 
-#: src/cpu/intel_cpus.cpp:406
+#: src/cpu/intel_cpus.cpp:504
 #, c-format
 msgid "Actual"
 msgstr "Aktual"
 
-#: src/lib.cpp:266
+#: src/lib.cpp:286
 #, c-format
 msgid "%7sW"
 msgstr "%7sW"
 
-#: src/lib.cpp:269
+#: src/lib.cpp:289
 #, c-format
 msgid "    0 mW"
 msgstr "    0 mW"
 
-#: src/lib.cpp:390
+#: src/lib.cpp:408
 msgid "PS/2 Touchpad / Keyboard / Mouse"
 msgstr "PS/2 Touchpad / Keyboard / Mouse"
 
-#: src/lib.cpp:391
+#: src/lib.cpp:409
 msgid "SATA controller"
 msgstr "Pengendali SATA"
 
-#: src/lib.cpp:392
+#: src/lib.cpp:410
 msgid "Intel built in USB hub"
 msgstr "Hub USB built in Intel"
 
+#: src/lib.cpp:482 src/lib.cpp:514
+#, c-format
+msgid ""
+"Model-specific registers (MSR)\t\t\t not found (try enabling "
+"CONFIG_X86_MSR).\n"
+msgstr ""
+
 #: src/process/do_process.cpp:817
 #, c-format
 msgid ""
@@ -180,7 +200,7 @@ msgstr "Perkiraan sisa waktu adalah %i jam, %i menit\n"
 msgid "Summary"
 msgstr "Ringkasan"
 
-#: src/process/do_process.cpp:841 src/process/do_process.cpp:1011
+#: src/process/do_process.cpp:841 src/process/do_process.cpp:1013
 msgid "wakeups/second"
 msgstr "bangun/detik"
 
@@ -192,77 +212,83 @@ msgstr "op GPU/detik"
 msgid "VFS ops/sec and"
 msgstr "op VFS/detik"
 
-#: src/process/do_process.cpp:841 src/process/do_process.cpp:1015
+#: src/process/do_process.cpp:841 src/process/do_process.cpp:1017
 msgid "CPU use"
 msgstr "pakai CPU"
 
-#: src/process/do_process.cpp:845 src/process/do_process.cpp:902
-#: src/process/do_process.cpp:1021
+#: src/process/do_process.cpp:845 src/process/do_process.cpp:904
+#: src/process/do_process.cpp:1023
 msgid "Power est."
 msgstr "Est. daya"
 
 #: src/process/do_process.cpp:845 src/process/do_process.cpp:847
-#: src/process/do_process.cpp:906 src/process/do_process.cpp:1025
+#: src/process/do_process.cpp:908 src/process/do_process.cpp:1027
 msgid "Usage"
 msgstr "Pakai"
 
 #: src/process/do_process.cpp:845 src/process/do_process.cpp:847
-#: src/process/do_process.cpp:1027
+#: src/process/do_process.cpp:1029
 msgid "Events/s"
 msgstr "Kejadian/d"
 
 #: src/process/do_process.cpp:845 src/process/do_process.cpp:847
-#: src/process/do_process.cpp:916 src/process/do_process.cpp:1029
+#: src/process/do_process.cpp:918 src/process/do_process.cpp:1031
 msgid "Category"
 msgstr "Kategori"
 
 #: src/process/do_process.cpp:845 src/process/do_process.cpp:847
-#: src/process/do_process.cpp:918 src/process/do_process.cpp:1031
+#: src/process/do_process.cpp:920 src/process/do_process.cpp:1033
 msgid "Description"
 msgstr "Deskripsi"
 
-#: src/process/do_process.cpp:897
+#: src/process/do_process.cpp:899
 msgid "Overview of Software Power Consumers"
 msgstr "Ringkasan Pemakai Daya Perangkat Lunak"
 
-#: src/process/do_process.cpp:908
+#: src/process/do_process.cpp:910
 msgid "Wakeups/s"
 msgstr "Bangun/d"
 
-#: src/process/do_process.cpp:910
+#: src/process/do_process.cpp:912
 msgid "GPU ops/s"
 msgstr "Op GPU/d"
 
-#: src/process/do_process.cpp:912
+#: src/process/do_process.cpp:914
 msgid "Disk IO/s"
 msgstr "IO Disk/d"
 
-#: src/process/do_process.cpp:914
+#: src/process/do_process.cpp:916
 msgid "GFX Wakeups/s"
 msgstr "GFX Bangun/d"
 
-#: src/process/do_process.cpp:1008
+#: src/process/do_process.cpp:1010
 msgid "Power Consumption Summary"
 msgstr "Ringkasan Konsumsi Daya"
 
-#: src/process/do_process.cpp:1012
+#: src/process/do_process.cpp:1014
 msgid "GPU ops/second"
 msgstr "Op GPU/detik"
 
-#: src/process/do_process.cpp:1013
+#: src/process/do_process.cpp:1015
 msgid "VFS ops/sec"
 msgstr "Op VFS/det"
 
-#: src/process/do_process.cpp:1014
+#: src/process/do_process.cpp:1016
 msgid "GFX wakes/sec and"
 msgstr "GFX bangu/det dan"
 
-#: src/perf/perf.cpp:111
+#: src/perf/perf.cpp:115
+#, c-format
+msgid ""
+"Too many open files, please increase the limit of open file descriptors.\n"
+msgstr ""
+
+#: src/perf/perf.cpp:117
 #, c-format
 msgid "PowerTOP %s needs the kernel to support the 'perf' subsystem\n"
 msgstr "PowerTop %s memerlukan kernel yang mendukung subsistem 'perf'\n"
 
-#: src/perf/perf.cpp:112
+#: src/perf/perf.cpp:118
 #, c-format
 msgid "as well as support for trace points in the kernel:\n"
 msgstr "dan juga dukungan trace point dalam kernel:\n"
@@ -280,12 +306,12 @@ msgstr "Est. daya     Pakai     Nama perangkat\n"
 msgid "              Usage     Device name\n"
 msgstr "              Pakai     Nama perangkat\n"
 
-#: src/devices/alsa.cpp:79
+#: src/devices/alsa.cpp:77
 #, c-format
 msgid "Audio codec %s: %s (%s)"
 msgstr "Codec audio %s: %s (%s)"
 
-#: src/devices/alsa.cpp:81 src/devices/alsa.cpp:83
+#: src/devices/alsa.cpp:79 src/devices/alsa.cpp:81
 #, c-format
 msgid "Audio codec %s: %s"
 msgstr "Codec audio %s: %s"
@@ -295,32 +321,32 @@ msgstr "Codec audio %s: %s"
 msgid "PCI Device: %s"
 msgstr "Perangkat PCI: %s"
 
-#: src/devices/usb.cpp:51 src/devices/usb.cpp:94 src/devices/usb.cpp:96
+#: src/devices/usb.cpp:49 src/devices/usb.cpp:92 src/devices/usb.cpp:94
 #, c-format
 msgid "USB device: %s"
 msgstr "Perangkat USB: %s"
 
-#: src/devices/usb.cpp:92
+#: src/devices/usb.cpp:90
 #, c-format
 msgid "USB device: %s (%s)"
 msgstr "Perangkat USB: %s (%s)"
 
-#: src/devices/ahci.cpp:140
+#: src/devices/ahci.cpp:142
 #, c-format
 msgid "SATA link: %s"
 msgstr "Link SATA: %s"
 
-#: src/devices/ahci.cpp:142
+#: src/devices/ahci.cpp:144
 #, c-format
 msgid "SATA disk: %s"
 msgstr "Disk SATA: %s"
 
-#: src/devices/rfkill.cpp:65 src/devices/rfkill.cpp:69
+#: src/devices/rfkill.cpp:64 src/devices/rfkill.cpp:68
 #, c-format
 msgid "Radio device: %s"
 msgstr "Perangkat radio: %s"
 
-#: src/devices/network.cpp:177
+#: src/devices/network.cpp:176
 #, c-format
 msgid "Network interface: %s (%s)"
 msgstr "Antarmuka jaringa: %s (%s)"
@@ -330,21 +356,21 @@ msgstr "Antarmuka jaringa: %s (%s)"
 msgid "Bluetooth device interface status"
 msgstr "Status antarmuka perangkat Bluetooth"
 
-#: src/tuning/cpufreq.cpp:44 src/tuning/ethernet.cpp:53
+#: src/tuning/cpufreq.cpp:44 src/tuning/ethernet.cpp:50
 #: src/tuning/tunable.cpp:48 src/tuning/wifi.cpp:45 src/tuning/runtime.cpp:41
-#: src/tuning/tuningusb.cpp:40 src/tuning/tuningsysfs.cpp:44
+#: src/tuning/tuningusb.cpp:37 src/tuning/tuningsysfs.cpp:44
 msgid "Good"
 msgstr "Baik"
 
-#: src/tuning/cpufreq.cpp:44 src/tuning/ethernet.cpp:53
+#: src/tuning/cpufreq.cpp:44 src/tuning/ethernet.cpp:50
 #: src/tuning/tunable.cpp:49 src/tuning/wifi.cpp:45 src/tuning/runtime.cpp:41
-#: src/tuning/tuningusb.cpp:40 src/tuning/tuningsysfs.cpp:44
+#: src/tuning/tuningusb.cpp:37 src/tuning/tuningsysfs.cpp:44
 msgid "Bad"
 msgstr "Buruk"
 
-#: src/tuning/cpufreq.cpp:44 src/tuning/ethernet.cpp:53
+#: src/tuning/cpufreq.cpp:44 src/tuning/ethernet.cpp:50
 #: src/tuning/tunable.cpp:50 src/tuning/wifi.cpp:45 src/tuning/runtime.cpp:41
-#: src/tuning/tuningusb.cpp:40 src/tuning/tuningsysfs.cpp:44
+#: src/tuning/tuningusb.cpp:37 src/tuning/tuningsysfs.cpp:44
 msgid "Unknown"
 msgstr "Tak diketahui"
 
@@ -377,7 +403,7 @@ msgstr "Tunables"
 msgid " <ESC> Exit | <Enter> Toggle tunable | <r> Window refresh"
 msgstr " <ESC> Keluar | <Enter> Jungkit tunable | <r> Segarkan jendela"
 
-#: src/tuning/ethernet.cpp:57
+#: src/tuning/ethernet.cpp:54
 #, c-format
 msgid "Wake-on-lan status for device %s"
 msgstr "Status wake-on-lan bagi perangkat %s"
@@ -407,13 +433,13 @@ msgstr "Perangkat PCI %s tak memiliki manajemen daya runtime"
 msgid "Runtime PM for PCI Device %s"
 msgstr "PM runtime bagi Perangkat PCI %s"
 
-#: src/tuning/tuningusb.cpp:55
+#: src/tuning/tuningusb.cpp:52
 #, c-format
 msgid "Autosuspend for unknown USB device %s (%s:%s)"
 msgstr "Suspensi otomatis bagi perangkat USB tak dikenal %s (%s:%s)"
 
-#: src/tuning/tuningusb.cpp:72 src/tuning/tuningusb.cpp:74
-#: src/tuning/tuningusb.cpp:76
+#: src/tuning/tuningusb.cpp:69 src/tuning/tuningusb.cpp:71
+#: src/tuning/tuningusb.cpp:73
 #, c-format
 msgid "Autosuspend for USB device %s [%s]"
 msgstr "Suspensi otomatis bagi perangkat USB %s [%s]"
@@ -423,186 +449,190 @@ msgstr "Suspensi otomatis bagi perangkat USB %s [%s]"
 msgid "Enable SATA link power Managmenet for %s"
 msgstr "Fungsikan Manajemen daya link SATA bagi %s"
 
-#: src/calibrate/calibrate.cpp:291
+#: src/calibrate/calibrate.cpp:236
 #, c-format
 msgid "Cannot create temp file\n"
 msgstr "Tak bisa membuat berkas temp\n"
 
-#: src/calibrate/calibrate.cpp:310
+#: src/calibrate/calibrate.cpp:255
 #, c-format
 msgid "Calibrating: CPU usage on %i threads\n"
 msgstr "Kalibrasi: Pemakaian CPU pada %i thread \n"
 
-#: src/calibrate/calibrate.cpp:325
+#: src/calibrate/calibrate.cpp:270
 #, c-format
 msgid "Calibrating: CPU wakeup power consumption\n"
 msgstr "Kalibrasi: Konsumsi daya CPU bangun \n"
 
-#: src/calibrate/calibrate.cpp:342
+#: src/calibrate/calibrate.cpp:287
 #, c-format
 msgid "Calibrating USB devices\n"
 msgstr "Kalibrasi perangkat USB \n"
 
-#: src/calibrate/calibrate.cpp:344 src/calibrate/calibrate.cpp:361
-#: src/calibrate/calibrate.cpp:369 src/calibrate/calibrate.cpp:386
+#: src/calibrate/calibrate.cpp:289 src/calibrate/calibrate.cpp:306
+#: src/calibrate/calibrate.cpp:314 src/calibrate/calibrate.cpp:331
 #, c-format
 msgid ".... device %s \n"
 msgstr ".... perangkat %s \n"
 
-#: src/calibrate/calibrate.cpp:359
+#: src/calibrate/calibrate.cpp:304
 #, c-format
 msgid "Calibrating radio devices\n"
 msgstr "Kalibrasi perangkat radio \n"
 
-#: src/calibrate/calibrate.cpp:383
+#: src/calibrate/calibrate.cpp:328
 #, c-format
 msgid "Calibrating backlight\n"
 msgstr "Kalibrasi cahaya latar \n"
 
-#: src/calibrate/calibrate.cpp:407 src/calibrate/calibrate.cpp:415
+#: src/calibrate/calibrate.cpp:352 src/calibrate/calibrate.cpp:360
 #, c-format
 msgid "Calibrating idle\n"
 msgstr "Kalibrasi menganggur \n"
 
-#: src/calibrate/calibrate.cpp:426
+#: src/calibrate/calibrate.cpp:371
 #, c-format
 msgid "Calibrating: disk usage \n"
 msgstr "Kalibrasi: pemakaian disk \n"
 
-#: src/calibrate/calibrate.cpp:451
+#: src/calibrate/calibrate.cpp:396
 msgid "Starting PowerTOP power estimate calibration \n"
 msgstr "Memulai kalibrasi estimasi daya PowerTop \n"
 
-#: src/calibrate/calibrate.cpp:474
+#: src/calibrate/calibrate.cpp:419
 msgid "Finishing PowerTOP power estimate calibration \n"
 msgstr "Mengakhiri kalibrasi estimasi daya PowerTop \n"
 
-#: src/calibrate/calibrate.cpp:478
+#: src/calibrate/calibrate.cpp:423
 #, c-format
 msgid "Parameters after calibration:\n"
 msgstr "Parameter setelah kalibrasi:\n"
 
-#: src/main.cpp:86
+#: src/main.cpp:91
 #, c-format
 msgid "PowerTOP version"
 msgstr "PowerTop versi"
 
-#: src/main.cpp:92
+#: src/main.cpp:97
 msgid "Set refresh time out"
 msgstr "Tata tenggang waktu penyegaran"
 
-#: src/main.cpp:105
+#: src/main.cpp:110
 msgid "Usage: powertop [OPTIONS]"
 msgstr "Cara pakai: powertop [OPSI]"
 
-#: src/main.cpp:106
+#: src/main.cpp:111
 msgid "run in \"debug\" mode"
 msgstr "jalankan dalam mode \"debug\""
 
-#: src/main.cpp:107
+#: src/main.cpp:112
 msgid "print version information"
 msgstr "cetak informasi versi"
 
-#: src/main.cpp:108
+#: src/main.cpp:113
 msgid "runs powertop in calibration mode"
 msgstr "jalankan powertop dalam mode kalibrasi"
 
-#: src/main.cpp:109
+#: src/main.cpp:114
+msgid "Sets all tunable options to their GOOD setting"
+msgstr ""
+
+#: src/main.cpp:115
 msgid "[=devnode]"
 msgstr "[=devnode]"
 
-#: src/main.cpp:109
+#: src/main.cpp:115
 msgid "uses an Extech Power Analyzer for measurements"
 msgstr "pakai Extech Power Analyzer untuk pengukuran"
 
-#: src/main.cpp:110 src/main.cpp:111
+#: src/main.cpp:116 src/main.cpp:117
 msgid "[=FILENAME]"
 msgstr "[=NAMAFILE]"
 
-#: src/main.cpp:110
+#: src/main.cpp:116
 msgid "generate a html report"
 msgstr "buat laporan html"
 
-#: src/main.cpp:111
+#: src/main.cpp:117
 msgid "generate a csv report"
 msgstr "buat laporan csv"
 
-#: src/main.cpp:112
+#: src/main.cpp:118
 msgid "[=seconds]"
 msgstr "[=detik]"
 
-#: src/main.cpp:112
+#: src/main.cpp:118
 msgid "generate a report for 'x' seconds"
 msgstr "buat laporan untuk 'x' detik"
 
-#: src/main.cpp:113
+#: src/main.cpp:119
 msgid "[=iterations] number of times to run each test"
 msgstr "[=iterasi] berapa kali menjalankan tiap tes"
 
-#: src/main.cpp:114
+#: src/main.cpp:120
 msgid "[=workload]"
 msgstr "[=beban kerja]"
 
-#: src/main.cpp:114
+#: src/main.cpp:120
 msgid "file to execute for workload"
 msgstr "berkas yang akan dieksekusi untuk beban kerja"
 
-#: src/main.cpp:115
+#: src/main.cpp:121
 msgid "suppress stderr output"
 msgstr "redam keluaran stderr"
 
-#: src/main.cpp:116
+#: src/main.cpp:122
 msgid "print this help menu"
 msgstr "cetik menu bantuan ini"
 
-#: src/main.cpp:118
+#: src/main.cpp:124
 msgid "For more help please refer to the README"
 msgstr "Untuk bantuan lebih lanjut lihatlah README"
 
-#: src/main.cpp:195
+#: src/main.cpp:201
 #, c-format
 msgid "Unknown issue running workload!\n"
 msgstr "Masalah tak dikenal saat menjalankan beban!\n"
 
-#: src/main.cpp:236
+#: src/main.cpp:242
 msgid "PowerTOP is out of memory. PowerTOP is Aborting"
 msgstr "PowerTop kehabisan memori. PowerTop digugurkan."
 
-#: src/main.cpp:244
+#: src/main.cpp:250
 #, c-format
 msgid "Preparing to take measurements\n"
 msgstr "Bersiap melakukan pengkukuran\n"
 
-#: src/main.cpp:249
+#: src/main.cpp:255
 #, c-format
 msgid "Taking %d measurement(s) for a duration of %d second(s) each.\n"
 msgstr "Melakukan %d pengukuran selama masing-masing %d detik.\n"
 
-#: src/main.cpp:251
+#: src/main.cpp:257
 #, c-format
 msgid "Measuring workload %s.\n"
 msgstr "Mengukur beban kerja %s.\n"
 
-#: src/main.cpp:274
+#: src/main.cpp:280
 #, c-format
 msgid "PowerTOP "
 msgstr "PowerTOP "
 
-#: src/main.cpp:275 src/main.cpp:303
+#: src/main.cpp:281 src/main.cpp:328
 #, c-format
 msgid "exiting...\n"
 msgstr "keluar...\n"
 
-#: src/main.cpp:302
+#: src/main.cpp:327
 #, c-format
 msgid "Failed to mount debugfs!\n"
 msgstr "Gagal mengait debugfs!\n"
 
-#: src/main.cpp:394
+#: src/main.cpp:422
 #, c-format
 msgid "Quite mode failed!\n"
 msgstr "Mode hening gagal!\n"
 
-#: src/main.cpp:440
+#: src/main.cpp:472
 msgid "Leaving PowerTOP"
 msgstr "Meninggalkan PowerTop"
index 8a4511c..1797198 100644 (file)
Binary files a/po/nl_NL.gmo and b/po/nl_NL.gmo differ
index 09fd6ce..1ee9a40 100644 (file)
@@ -3,15 +3,15 @@
 # This file is distributed under the same license as the PACKAGE package.
 #
 # Translators:
-#   <auke-jan.h.kok@intel.com>, 2012.
-#   <jan.ceuleers@computer.org>, 2012.
+# auke <auke-jan.h.kok@intel.com>, 2012
+# JanCeuleers <jan.ceuleers@computer.org>, 2012
 msgid ""
 msgstr ""
 "Project-Id-Version: PowerTOP\n"
 "Report-Msgid-Bugs-To: \"powertop@lists.01.org\"\n"
-"POT-Creation-Date: 2013-03-18 11:06-0700\n"
-"PO-Revision-Date: 2013-02-26 19:08+0000\n"
-"Last-Translator: ceferron <chris.e.ferron@linux.intel.com>\n"
+"POT-Creation-Date: 2013-11-04 10:45-0800\n"
+"PO-Revision-Date: 2013-11-05 08:40+0000\n"
+"Last-Translator: Margie Foster <margie@linux.intel.com>\n"
 "Language-Team: Dutch (Netherlands) (http://www.transifex.com/projects/p/"
 "PowerTOP/language/nl_NL/)\n"
 "Language: nl_NL\n"
@@ -53,46 +53,64 @@ msgstr "Apparaat stats"
 msgid "Exit"
 msgstr ""
 
-#: src/cpu/cpu_core.cpp:37 src/cpu/cpu_core.cpp:93 src/cpu/intel_cpus.cpp:201
+#: src/cpu/cpu_core.cpp:37 src/cpu/cpu_core.cpp:93 src/cpu/intel_cpus.cpp:245
 #, c-format
 msgid "  Core"
 msgstr ""
 
-#: src/cpu/cpu.cpp:94
+#: src/cpu/cpu.cpp:80
 #, c-format
 msgid "cpu package %i"
 msgstr "cpu package %i"
 
-#: src/cpu/cpu.cpp:95
+#: src/cpu/cpu.cpp:81
 msgid "cpu package"
 msgstr "cpu package"
 
-#: src/cpu/cpu.cpp:446 src/cpu/cpu.cpp:573
+#: src/cpu/cpu.cpp:84
+#, c-format
+msgid "cpu rapl package %i"
+msgstr ""
+
+#: src/cpu/cpu.cpp:85
+msgid "cpu rapl package"
+msgstr ""
+
+#: src/cpu/cpu.cpp:89
+#, c-format
+msgid "dram rapl package %i"
+msgstr ""
+
+#: src/cpu/cpu.cpp:90
+msgid "dram rapl package"
+msgstr ""
+
+#: src/cpu/cpu.cpp:459 src/cpu/cpu.cpp:586
 #, c-format
 msgid "Package %i"
 msgstr ""
 
-#: src/cpu/cpu.cpp:478 src/cpu/cpu.cpp:593
+#: src/cpu/cpu.cpp:491 src/cpu/cpu.cpp:606
 #, c-format
 msgid "Core %i"
 msgstr ""
 
-#: src/cpu/cpu.cpp:480
+#: src/cpu/cpu.cpp:493
 #, c-format
 msgid "GPU %i"
 msgstr ""
 
-#: src/cpu/cpu.cpp:502 src/cpu/cpu.cpp:614
+#: src/cpu/cpu.cpp:515 src/cpu/cpu.cpp:627
 #, c-format
 msgid "CPU %i"
 msgstr ""
 
-#: src/cpu/cpu.cpp:796
+#: src/cpu/cpu.cpp:807
 #, c-format
 msgid "cpu_idle event returned no state?\n"
 msgstr ""
 
-#: src/cpu/cpu.cpp:811
+#: src/cpu/cpu.cpp:822
 #, c-format
 msgid "power or cpu_frequency event returned no state?\n"
 msgstr ""
@@ -102,7 +120,7 @@ msgid "C0 polling"
 msgstr "C0 polling"
 
 #: src/cpu/cpu_linux.cpp:240 src/cpu/cpu_linux.cpp:339
-#: src/cpu/intel_cpus.cpp:423
+#: src/cpu/intel_cpus.cpp:521
 #, c-format
 msgid " CPU %i"
 msgstr ""
@@ -112,52 +130,54 @@ msgstr ""
 msgid "Package"
 msgstr ""
 
-#: src/cpu/cpu_package.cpp:105 src/cpu/intel_cpus.cpp:226
+#: src/cpu/cpu_package.cpp:105 src/cpu/intel_cpus.cpp:297
 #, c-format
 msgid "  Package"
 msgstr ""
 
-#: src/cpu/intel_cpus.cpp:61
+#: src/cpu/intel_cpus.cpp:81
 #, c-format
-msgid "msr reg not found"
+msgid "read_msr cpu%d 0x%llx : "
 msgstr ""
 
-#: src/cpu/intel_cpus.cpp:71
-#, c-format
-msgid "pread cpu%d 0x%llx : "
-msgstr ""
-
-#: src/cpu/intel_cpus.cpp:347
+#: src/cpu/intel_cpus.cpp:445
 msgid "C0 active"
 msgstr "C0 active"
 
-#: src/cpu/intel_cpus.cpp:406
+#: src/cpu/intel_cpus.cpp:504
 #, c-format
 msgid "Actual"
 msgstr "Huidig"
 
-#: src/lib.cpp:266
+#: src/lib.cpp:286
 #, c-format
 msgid "%7sW"
 msgstr "%7sW"
 
-#: src/lib.cpp:269
+#: src/lib.cpp:289
 #, c-format
 msgid "    0 mW"
 msgstr "    0 mW"
 
-#: src/lib.cpp:390
+#: src/lib.cpp:408
 msgid "PS/2 Touchpad / Keyboard / Mouse"
 msgstr ""
 
-#: src/lib.cpp:391
+#: src/lib.cpp:409
 msgid "SATA controller"
 msgstr ""
 
-#: src/lib.cpp:392
+#: src/lib.cpp:410
 msgid "Intel built in USB hub"
 msgstr ""
 
+#: src/lib.cpp:482 src/lib.cpp:514
+#, c-format
+msgid ""
+"Model-specific registers (MSR)\t\t\t not found (try enabling "
+"CONFIG_X86_MSR).\n"
+msgstr ""
+
 #: src/process/do_process.cpp:817
 #, c-format
 msgid ""
@@ -179,7 +199,7 @@ msgstr ""
 msgid "Summary"
 msgstr ""
 
-#: src/process/do_process.cpp:841 src/process/do_process.cpp:1011
+#: src/process/do_process.cpp:841 src/process/do_process.cpp:1013
 msgid "wakeups/second"
 msgstr ""
 
@@ -191,77 +211,83 @@ msgstr ""
 msgid "VFS ops/sec and"
 msgstr ""
 
-#: src/process/do_process.cpp:841 src/process/do_process.cpp:1015
+#: src/process/do_process.cpp:841 src/process/do_process.cpp:1017
 msgid "CPU use"
 msgstr ""
 
-#: src/process/do_process.cpp:845 src/process/do_process.cpp:902
-#: src/process/do_process.cpp:1021
+#: src/process/do_process.cpp:845 src/process/do_process.cpp:904
+#: src/process/do_process.cpp:1023
 msgid "Power est."
 msgstr ""
 
 #: src/process/do_process.cpp:845 src/process/do_process.cpp:847
-#: src/process/do_process.cpp:906 src/process/do_process.cpp:1025
+#: src/process/do_process.cpp:908 src/process/do_process.cpp:1027
 msgid "Usage"
 msgstr ""
 
 #: src/process/do_process.cpp:845 src/process/do_process.cpp:847
-#: src/process/do_process.cpp:1027
+#: src/process/do_process.cpp:1029
 msgid "Events/s"
 msgstr ""
 
 #: src/process/do_process.cpp:845 src/process/do_process.cpp:847
-#: src/process/do_process.cpp:916 src/process/do_process.cpp:1029
+#: src/process/do_process.cpp:918 src/process/do_process.cpp:1031
 msgid "Category"
 msgstr ""
 
 #: src/process/do_process.cpp:845 src/process/do_process.cpp:847
-#: src/process/do_process.cpp:918 src/process/do_process.cpp:1031
+#: src/process/do_process.cpp:920 src/process/do_process.cpp:1033
 msgid "Description"
 msgstr ""
 
-#: src/process/do_process.cpp:897
+#: src/process/do_process.cpp:899
 msgid "Overview of Software Power Consumers"
 msgstr ""
 
-#: src/process/do_process.cpp:908
+#: src/process/do_process.cpp:910
 msgid "Wakeups/s"
 msgstr ""
 
-#: src/process/do_process.cpp:910
+#: src/process/do_process.cpp:912
 msgid "GPU ops/s"
 msgstr ""
 
-#: src/process/do_process.cpp:912
+#: src/process/do_process.cpp:914
 msgid "Disk IO/s"
 msgstr ""
 
-#: src/process/do_process.cpp:914
+#: src/process/do_process.cpp:916
 msgid "GFX Wakeups/s"
 msgstr ""
 
-#: src/process/do_process.cpp:1008
+#: src/process/do_process.cpp:1010
 msgid "Power Consumption Summary"
 msgstr ""
 
-#: src/process/do_process.cpp:1012
+#: src/process/do_process.cpp:1014
 msgid "GPU ops/second"
 msgstr ""
 
-#: src/process/do_process.cpp:1013
+#: src/process/do_process.cpp:1015
 msgid "VFS ops/sec"
 msgstr ""
 
-#: src/process/do_process.cpp:1014
+#: src/process/do_process.cpp:1016
 msgid "GFX wakes/sec and"
 msgstr ""
 
-#: src/perf/perf.cpp:111
+#: src/perf/perf.cpp:115
+#, c-format
+msgid ""
+"Too many open files, please increase the limit of open file descriptors.\n"
+msgstr ""
+
+#: src/perf/perf.cpp:117
 #, c-format
 msgid "PowerTOP %s needs the kernel to support the 'perf' subsystem\n"
 msgstr ""
 
-#: src/perf/perf.cpp:112
+#: src/perf/perf.cpp:118
 #, c-format
 msgid "as well as support for trace points in the kernel:\n"
 msgstr ""
@@ -279,12 +305,12 @@ msgstr ""
 msgid "              Usage     Device name\n"
 msgstr ""
 
-#: src/devices/alsa.cpp:79
+#: src/devices/alsa.cpp:77
 #, c-format
 msgid "Audio codec %s: %s (%s)"
 msgstr ""
 
-#: src/devices/alsa.cpp:81 src/devices/alsa.cpp:83
+#: src/devices/alsa.cpp:79 src/devices/alsa.cpp:81
 #, c-format
 msgid "Audio codec %s: %s"
 msgstr ""
@@ -294,32 +320,32 @@ msgstr ""
 msgid "PCI Device: %s"
 msgstr ""
 
-#: src/devices/usb.cpp:51 src/devices/usb.cpp:94 src/devices/usb.cpp:96
+#: src/devices/usb.cpp:49 src/devices/usb.cpp:92 src/devices/usb.cpp:94
 #, c-format
 msgid "USB device: %s"
 msgstr ""
 
-#: src/devices/usb.cpp:92
+#: src/devices/usb.cpp:90
 #, c-format
 msgid "USB device: %s (%s)"
 msgstr ""
 
-#: src/devices/ahci.cpp:140
+#: src/devices/ahci.cpp:142
 #, c-format
 msgid "SATA link: %s"
 msgstr ""
 
-#: src/devices/ahci.cpp:142
+#: src/devices/ahci.cpp:144
 #, c-format
 msgid "SATA disk: %s"
 msgstr ""
 
-#: src/devices/rfkill.cpp:65 src/devices/rfkill.cpp:69
+#: src/devices/rfkill.cpp:64 src/devices/rfkill.cpp:68
 #, c-format
 msgid "Radio device: %s"
 msgstr ""
 
-#: src/devices/network.cpp:177
+#: src/devices/network.cpp:176
 #, c-format
 msgid "Network interface: %s (%s)"
 msgstr ""
@@ -329,21 +355,21 @@ msgstr ""
 msgid "Bluetooth device interface status"
 msgstr ""
 
-#: src/tuning/cpufreq.cpp:44 src/tuning/ethernet.cpp:53
+#: src/tuning/cpufreq.cpp:44 src/tuning/ethernet.cpp:50
 #: src/tuning/tunable.cpp:48 src/tuning/wifi.cpp:45 src/tuning/runtime.cpp:41
-#: src/tuning/tuningusb.cpp:40 src/tuning/tuningsysfs.cpp:44
+#: src/tuning/tuningusb.cpp:37 src/tuning/tuningsysfs.cpp:44
 msgid "Good"
 msgstr "Goed"
 
-#: src/tuning/cpufreq.cpp:44 src/tuning/ethernet.cpp:53
+#: src/tuning/cpufreq.cpp:44 src/tuning/ethernet.cpp:50
 #: src/tuning/tunable.cpp:49 src/tuning/wifi.cpp:45 src/tuning/runtime.cpp:41
-#: src/tuning/tuningusb.cpp:40 src/tuning/tuningsysfs.cpp:44
+#: src/tuning/tuningusb.cpp:37 src/tuning/tuningsysfs.cpp:44
 msgid "Bad"
 msgstr "Slecht"
 
-#: src/tuning/cpufreq.cpp:44 src/tuning/ethernet.cpp:53
+#: src/tuning/cpufreq.cpp:44 src/tuning/ethernet.cpp:50
 #: src/tuning/tunable.cpp:50 src/tuning/wifi.cpp:45 src/tuning/runtime.cpp:41
-#: src/tuning/tuningusb.cpp:40 src/tuning/tuningsysfs.cpp:44
+#: src/tuning/tuningusb.cpp:37 src/tuning/tuningsysfs.cpp:44
 msgid "Unknown"
 msgstr "Onbekend"
 
@@ -376,7 +402,7 @@ msgstr ""
 msgid " <ESC> Exit | <Enter> Toggle tunable | <r> Window refresh"
 msgstr ""
 
-#: src/tuning/ethernet.cpp:57
+#: src/tuning/ethernet.cpp:54
 #, c-format
 msgid "Wake-on-lan status for device %s"
 msgstr ""
@@ -406,13 +432,13 @@ msgstr ""
 msgid "Runtime PM for PCI Device %s"
 msgstr ""
 
-#: src/tuning/tuningusb.cpp:55
+#: src/tuning/tuningusb.cpp:52
 #, c-format
 msgid "Autosuspend for unknown USB device %s (%s:%s)"
 msgstr ""
 
-#: src/tuning/tuningusb.cpp:72 src/tuning/tuningusb.cpp:74
-#: src/tuning/tuningusb.cpp:76
+#: src/tuning/tuningusb.cpp:69 src/tuning/tuningusb.cpp:71
+#: src/tuning/tuningusb.cpp:73
 #, c-format
 msgid "Autosuspend for USB device %s [%s]"
 msgstr ""
@@ -422,186 +448,190 @@ msgstr ""
 msgid "Enable SATA link power Managmenet for %s"
 msgstr ""
 
-#: src/calibrate/calibrate.cpp:291
+#: src/calibrate/calibrate.cpp:236
 #, c-format
 msgid "Cannot create temp file\n"
 msgstr ""
 
-#: src/calibrate/calibrate.cpp:310
+#: src/calibrate/calibrate.cpp:255
 #, c-format
 msgid "Calibrating: CPU usage on %i threads\n"
 msgstr ""
 
-#: src/calibrate/calibrate.cpp:325
+#: src/calibrate/calibrate.cpp:270
 #, c-format
 msgid "Calibrating: CPU wakeup power consumption\n"
 msgstr ""
 
-#: src/calibrate/calibrate.cpp:342
+#: src/calibrate/calibrate.cpp:287
 #, c-format
 msgid "Calibrating USB devices\n"
 msgstr ""
 
-#: src/calibrate/calibrate.cpp:344 src/calibrate/calibrate.cpp:361
-#: src/calibrate/calibrate.cpp:369 src/calibrate/calibrate.cpp:386
+#: src/calibrate/calibrate.cpp:289 src/calibrate/calibrate.cpp:306
+#: src/calibrate/calibrate.cpp:314 src/calibrate/calibrate.cpp:331
 #, c-format
 msgid ".... device %s \n"
 msgstr ""
 
-#: src/calibrate/calibrate.cpp:359
+#: src/calibrate/calibrate.cpp:304
 #, c-format
 msgid "Calibrating radio devices\n"
 msgstr ""
 
-#: src/calibrate/calibrate.cpp:383
+#: src/calibrate/calibrate.cpp:328
 #, c-format
 msgid "Calibrating backlight\n"
 msgstr ""
 
-#: src/calibrate/calibrate.cpp:407 src/calibrate/calibrate.cpp:415
+#: src/calibrate/calibrate.cpp:352 src/calibrate/calibrate.cpp:360
 #, c-format
 msgid "Calibrating idle\n"
 msgstr ""
 
-#: src/calibrate/calibrate.cpp:426
+#: src/calibrate/calibrate.cpp:371
 #, c-format
 msgid "Calibrating: disk usage \n"
 msgstr ""
 
-#: src/calibrate/calibrate.cpp:451
+#: src/calibrate/calibrate.cpp:396
 msgid "Starting PowerTOP power estimate calibration \n"
 msgstr ""
 
-#: src/calibrate/calibrate.cpp:474
+#: src/calibrate/calibrate.cpp:419
 msgid "Finishing PowerTOP power estimate calibration \n"
 msgstr ""
 
-#: src/calibrate/calibrate.cpp:478
+#: src/calibrate/calibrate.cpp:423
 #, c-format
 msgid "Parameters after calibration:\n"
 msgstr "Parameters na calibratie:\n"
 
-#: src/main.cpp:86
+#: src/main.cpp:91
 #, c-format
 msgid "PowerTOP version"
 msgstr ""
 
-#: src/main.cpp:92
+#: src/main.cpp:97
 msgid "Set refresh time out"
 msgstr "Stel verversingstijd in"
 
-#: src/main.cpp:105
+#: src/main.cpp:110
 msgid "Usage: powertop [OPTIONS]"
 msgstr ""
 
-#: src/main.cpp:106
+#: src/main.cpp:111
 msgid "run in \"debug\" mode"
 msgstr ""
 
-#: src/main.cpp:107
+#: src/main.cpp:112
 msgid "print version information"
 msgstr ""
 
-#: src/main.cpp:108
+#: src/main.cpp:113
 msgid "runs powertop in calibration mode"
 msgstr ""
 
-#: src/main.cpp:109
+#: src/main.cpp:114
+msgid "Sets all tunable options to their GOOD setting"
+msgstr ""
+
+#: src/main.cpp:115
 msgid "[=devnode]"
 msgstr ""
 
-#: src/main.cpp:109
+#: src/main.cpp:115
 msgid "uses an Extech Power Analyzer for measurements"
 msgstr ""
 
-#: src/main.cpp:110 src/main.cpp:111
+#: src/main.cpp:116 src/main.cpp:117
 msgid "[=FILENAME]"
 msgstr ""
 
-#: src/main.cpp:110
+#: src/main.cpp:116
 msgid "generate a html report"
 msgstr ""
 
-#: src/main.cpp:111
+#: src/main.cpp:117
 msgid "generate a csv report"
 msgstr ""
 
-#: src/main.cpp:112
+#: src/main.cpp:118
 msgid "[=seconds]"
 msgstr ""
 
-#: src/main.cpp:112
+#: src/main.cpp:118
 msgid "generate a report for 'x' seconds"
 msgstr ""
 
-#: src/main.cpp:113
+#: src/main.cpp:119
 msgid "[=iterations] number of times to run each test"
 msgstr ""
 
-#: src/main.cpp:114
+#: src/main.cpp:120
 msgid "[=workload]"
 msgstr ""
 
-#: src/main.cpp:114
+#: src/main.cpp:120
 msgid "file to execute for workload"
 msgstr ""
 
-#: src/main.cpp:115
+#: src/main.cpp:121
 msgid "suppress stderr output"
 msgstr ""
 
-#: src/main.cpp:116
+#: src/main.cpp:122
 msgid "print this help menu"
 msgstr ""
 
-#: src/main.cpp:118
+#: src/main.cpp:124
 msgid "For more help please refer to the README"
 msgstr ""
 
-#: src/main.cpp:195
+#: src/main.cpp:201
 #, c-format
 msgid "Unknown issue running workload!\n"
 msgstr ""
 
-#: src/main.cpp:236
+#: src/main.cpp:242
 msgid "PowerTOP is out of memory. PowerTOP is Aborting"
 msgstr ""
 
-#: src/main.cpp:244
+#: src/main.cpp:250
 #, c-format
 msgid "Preparing to take measurements\n"
 msgstr "Voorbereiding om metingen te nemen\n"
 
-#: src/main.cpp:249
+#: src/main.cpp:255
 #, c-format
 msgid "Taking %d measurement(s) for a duration of %d second(s) each.\n"
 msgstr ""
 
-#: src/main.cpp:251
+#: src/main.cpp:257
 #, c-format
 msgid "Measuring workload %s.\n"
 msgstr ""
 
-#: src/main.cpp:274
+#: src/main.cpp:280
 #, c-format
 msgid "PowerTOP "
 msgstr "PowerTOP"
 
-#: src/main.cpp:275 src/main.cpp:303
+#: src/main.cpp:281 src/main.cpp:328
 #, c-format
 msgid "exiting...\n"
 msgstr "afsluiten...\n"
 
-#: src/main.cpp:302
+#: src/main.cpp:327
 #, c-format
 msgid "Failed to mount debugfs!\n"
 msgstr "Kan debugfs niet aankoppelen!\n"
 
-#: src/main.cpp:394
+#: src/main.cpp:422
 #, c-format
 msgid "Quite mode failed!\n"
 msgstr ""
 
-#: src/main.cpp:440
+#: src/main.cpp:472
 msgid "Leaving PowerTOP"
 msgstr ""
index fa86d77..842f2f3 100644 (file)
@@ -6,9 +6,9 @@
 #, fuzzy
 msgid ""
 msgstr ""
-"Project-Id-Version: powertop 2.3\n"
+"Project-Id-Version: powertop 2.5\n"
 "Report-Msgid-Bugs-To: \"powertop@lists.01.org\"\n"
-"POT-Creation-Date: 2013-03-18 11:06-0700\n"
+"POT-Creation-Date: 2013-11-04 10:45-0800\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
@@ -50,46 +50,64 @@ msgstr ""
 msgid "Exit"
 msgstr ""
 
-#: src/cpu/cpu_core.cpp:37 src/cpu/cpu_core.cpp:93 src/cpu/intel_cpus.cpp:201
+#: src/cpu/cpu_core.cpp:37 src/cpu/cpu_core.cpp:93 src/cpu/intel_cpus.cpp:245
 #, c-format
 msgid "  Core"
 msgstr ""
 
-#: src/cpu/cpu.cpp:94
+#: src/cpu/cpu.cpp:80
 #, c-format
 msgid "cpu package %i"
 msgstr ""
 
-#: src/cpu/cpu.cpp:95
+#: src/cpu/cpu.cpp:81
 msgid "cpu package"
 msgstr ""
 
-#: src/cpu/cpu.cpp:446 src/cpu/cpu.cpp:573
+#: src/cpu/cpu.cpp:84
+#, c-format
+msgid "cpu rapl package %i"
+msgstr ""
+
+#: src/cpu/cpu.cpp:85
+msgid "cpu rapl package"
+msgstr ""
+
+#: src/cpu/cpu.cpp:89
+#, c-format
+msgid "dram rapl package %i"
+msgstr ""
+
+#: src/cpu/cpu.cpp:90
+msgid "dram rapl package"
+msgstr ""
+
+#: src/cpu/cpu.cpp:459 src/cpu/cpu.cpp:586
 #, c-format
 msgid "Package %i"
 msgstr ""
 
-#: src/cpu/cpu.cpp:478 src/cpu/cpu.cpp:593
+#: src/cpu/cpu.cpp:491 src/cpu/cpu.cpp:606
 #, c-format
 msgid "Core %i"
 msgstr ""
 
-#: src/cpu/cpu.cpp:480
+#: src/cpu/cpu.cpp:493
 #, c-format
 msgid "GPU %i"
 msgstr ""
 
-#: src/cpu/cpu.cpp:502 src/cpu/cpu.cpp:614
+#: src/cpu/cpu.cpp:515 src/cpu/cpu.cpp:627
 #, c-format
 msgid "CPU %i"
 msgstr ""
 
-#: src/cpu/cpu.cpp:796
+#: src/cpu/cpu.cpp:807
 #, c-format
 msgid "cpu_idle event returned no state?\n"
 msgstr ""
 
-#: src/cpu/cpu.cpp:811
+#: src/cpu/cpu.cpp:822
 #, c-format
 msgid "power or cpu_frequency event returned no state?\n"
 msgstr ""
@@ -99,7 +117,7 @@ msgid "C0 polling"
 msgstr ""
 
 #: src/cpu/cpu_linux.cpp:240 src/cpu/cpu_linux.cpp:339
-#: src/cpu/intel_cpus.cpp:423
+#: src/cpu/intel_cpus.cpp:521
 #, c-format
 msgid " CPU %i"
 msgstr ""
@@ -109,52 +127,54 @@ msgstr ""
 msgid "Package"
 msgstr ""
 
-#: src/cpu/cpu_package.cpp:105 src/cpu/intel_cpus.cpp:226
+#: src/cpu/cpu_package.cpp:105 src/cpu/intel_cpus.cpp:297
 #, c-format
 msgid "  Package"
 msgstr ""
 
-#: src/cpu/intel_cpus.cpp:61
+#: src/cpu/intel_cpus.cpp:81
 #, c-format
-msgid "msr reg not found"
+msgid "read_msr cpu%d 0x%llx : "
 msgstr ""
 
-#: src/cpu/intel_cpus.cpp:71
-#, c-format
-msgid "pread cpu%d 0x%llx : "
-msgstr ""
-
-#: src/cpu/intel_cpus.cpp:347
+#: src/cpu/intel_cpus.cpp:445
 msgid "C0 active"
 msgstr ""
 
-#: src/cpu/intel_cpus.cpp:406
+#: src/cpu/intel_cpus.cpp:504
 #, c-format
 msgid "Actual"
 msgstr ""
 
-#: src/lib.cpp:266
+#: src/lib.cpp:286
 #, c-format
 msgid "%7sW"
 msgstr ""
 
-#: src/lib.cpp:269
+#: src/lib.cpp:289
 #, c-format
 msgid "    0 mW"
 msgstr ""
 
-#: src/lib.cpp:390
+#: src/lib.cpp:408
 msgid "PS/2 Touchpad / Keyboard / Mouse"
 msgstr ""
 
-#: src/lib.cpp:391
+#: src/lib.cpp:409
 msgid "SATA controller"
 msgstr ""
 
-#: src/lib.cpp:392
+#: src/lib.cpp:410
 msgid "Intel built in USB hub"
 msgstr ""
 
+#: src/lib.cpp:482 src/lib.cpp:514
+#, c-format
+msgid ""
+"Model-specific registers (MSR)\t\t\t not found (try enabling "
+"CONFIG_X86_MSR).\n"
+msgstr ""
+
 #: src/process/do_process.cpp:817
 #, c-format
 msgid ""
@@ -176,7 +196,7 @@ msgstr ""
 msgid "Summary"
 msgstr ""
 
-#: src/process/do_process.cpp:841 src/process/do_process.cpp:1011
+#: src/process/do_process.cpp:841 src/process/do_process.cpp:1013
 msgid "wakeups/second"
 msgstr ""
 
@@ -188,77 +208,83 @@ msgstr ""
 msgid "VFS ops/sec and"
 msgstr ""
 
-#: src/process/do_process.cpp:841 src/process/do_process.cpp:1015
+#: src/process/do_process.cpp:841 src/process/do_process.cpp:1017
 msgid "CPU use"
 msgstr ""
 
-#: src/process/do_process.cpp:845 src/process/do_process.cpp:902
-#: src/process/do_process.cpp:1021
+#: src/process/do_process.cpp:845 src/process/do_process.cpp:904
+#: src/process/do_process.cpp:1023
 msgid "Power est."
 msgstr ""
 
 #: src/process/do_process.cpp:845 src/process/do_process.cpp:847
-#: src/process/do_process.cpp:906 src/process/do_process.cpp:1025
+#: src/process/do_process.cpp:908 src/process/do_process.cpp:1027
 msgid "Usage"
 msgstr ""
 
 #: src/process/do_process.cpp:845 src/process/do_process.cpp:847
-#: src/process/do_process.cpp:1027
+#: src/process/do_process.cpp:1029
 msgid "Events/s"
 msgstr ""
 
 #: src/process/do_process.cpp:845 src/process/do_process.cpp:847
-#: src/process/do_process.cpp:916 src/process/do_process.cpp:1029
+#: src/process/do_process.cpp:918 src/process/do_process.cpp:1031
 msgid "Category"
 msgstr ""
 
 #: src/process/do_process.cpp:845 src/process/do_process.cpp:847
-#: src/process/do_process.cpp:918 src/process/do_process.cpp:1031
+#: src/process/do_process.cpp:920 src/process/do_process.cpp:1033
 msgid "Description"
 msgstr ""
 
-#: src/process/do_process.cpp:897
+#: src/process/do_process.cpp:899
 msgid "Overview of Software Power Consumers"
 msgstr ""
 
-#: src/process/do_process.cpp:908
+#: src/process/do_process.cpp:910
 msgid "Wakeups/s"
 msgstr ""
 
-#: src/process/do_process.cpp:910
+#: src/process/do_process.cpp:912
 msgid "GPU ops/s"
 msgstr ""
 
-#: src/process/do_process.cpp:912
+#: src/process/do_process.cpp:914
 msgid "Disk IO/s"
 msgstr ""
 
-#: src/process/do_process.cpp:914
+#: src/process/do_process.cpp:916
 msgid "GFX Wakeups/s"
 msgstr ""
 
-#: src/process/do_process.cpp:1008
+#: src/process/do_process.cpp:1010
 msgid "Power Consumption Summary"
 msgstr ""
 
-#: src/process/do_process.cpp:1012
+#: src/process/do_process.cpp:1014
 msgid "GPU ops/second"
 msgstr ""
 
-#: src/process/do_process.cpp:1013
+#: src/process/do_process.cpp:1015
 msgid "VFS ops/sec"
 msgstr ""
 
-#: src/process/do_process.cpp:1014
+#: src/process/do_process.cpp:1016
 msgid "GFX wakes/sec and"
 msgstr ""
 
-#: src/perf/perf.cpp:111
+#: src/perf/perf.cpp:115
+#, c-format
+msgid ""
+"Too many open files, please increase the limit of open file descriptors.\n"
+msgstr ""
+
+#: src/perf/perf.cpp:117
 #, c-format
 msgid "PowerTOP %s needs the kernel to support the 'perf' subsystem\n"
 msgstr ""
 
-#: src/perf/perf.cpp:112
+#: src/perf/perf.cpp:118
 #, c-format
 msgid "as well as support for trace points in the kernel:\n"
 msgstr ""
@@ -276,12 +302,12 @@ msgstr ""
 msgid "              Usage     Device name\n"
 msgstr ""
 
-#: src/devices/alsa.cpp:79
+#: src/devices/alsa.cpp:77
 #, c-format
 msgid "Audio codec %s: %s (%s)"
 msgstr ""
 
-#: src/devices/alsa.cpp:81 src/devices/alsa.cpp:83
+#: src/devices/alsa.cpp:79 src/devices/alsa.cpp:81
 #, c-format
 msgid "Audio codec %s: %s"
 msgstr ""
@@ -291,32 +317,32 @@ msgstr ""
 msgid "PCI Device: %s"
 msgstr ""
 
-#: src/devices/usb.cpp:51 src/devices/usb.cpp:94 src/devices/usb.cpp:96
+#: src/devices/usb.cpp:49 src/devices/usb.cpp:92 src/devices/usb.cpp:94
 #, c-format
 msgid "USB device: %s"
 msgstr ""
 
-#: src/devices/usb.cpp:92
+#: src/devices/usb.cpp:90
 #, c-format
 msgid "USB device: %s (%s)"
 msgstr ""
 
-#: src/devices/ahci.cpp:140
+#: src/devices/ahci.cpp:142
 #, c-format
 msgid "SATA link: %s"
 msgstr ""
 
-#: src/devices/ahci.cpp:142
+#: src/devices/ahci.cpp:144
 #, c-format
 msgid "SATA disk: %s"
 msgstr ""
 
-#: src/devices/rfkill.cpp:65 src/devices/rfkill.cpp:69
+#: src/devices/rfkill.cpp:64 src/devices/rfkill.cpp:68
 #, c-format
 msgid "Radio device: %s"
 msgstr ""
 
-#: src/devices/network.cpp:177
+#: src/devices/network.cpp:176
 #, c-format
 msgid "Network interface: %s (%s)"
 msgstr ""
@@ -326,21 +352,21 @@ msgstr ""
 msgid "Bluetooth device interface status"
 msgstr ""
 
-#: src/tuning/cpufreq.cpp:44 src/tuning/ethernet.cpp:53
+#: src/tuning/cpufreq.cpp:44 src/tuning/ethernet.cpp:50
 #: src/tuning/tunable.cpp:48 src/tuning/wifi.cpp:45 src/tuning/runtime.cpp:41
-#: src/tuning/tuningusb.cpp:40 src/tuning/tuningsysfs.cpp:44
+#: src/tuning/tuningusb.cpp:37 src/tuning/tuningsysfs.cpp:44
 msgid "Good"
 msgstr ""
 
-#: src/tuning/cpufreq.cpp:44 src/tuning/ethernet.cpp:53
+#: src/tuning/cpufreq.cpp:44 src/tuning/ethernet.cpp:50
 #: src/tuning/tunable.cpp:49 src/tuning/wifi.cpp:45 src/tuning/runtime.cpp:41
-#: src/tuning/tuningusb.cpp:40 src/tuning/tuningsysfs.cpp:44
+#: src/tuning/tuningusb.cpp:37 src/tuning/tuningsysfs.cpp:44
 msgid "Bad"
 msgstr ""
 
-#: src/tuning/cpufreq.cpp:44 src/tuning/ethernet.cpp:53
+#: src/tuning/cpufreq.cpp:44 src/tuning/ethernet.cpp:50
 #: src/tuning/tunable.cpp:50 src/tuning/wifi.cpp:45 src/tuning/runtime.cpp:41
-#: src/tuning/tuningusb.cpp:40 src/tuning/tuningsysfs.cpp:44
+#: src/tuning/tuningusb.cpp:37 src/tuning/tuningsysfs.cpp:44
 msgid "Unknown"
 msgstr ""
 
@@ -373,7 +399,7 @@ msgstr ""
 msgid " <ESC> Exit | <Enter> Toggle tunable | <r> Window refresh"
 msgstr ""
 
-#: src/tuning/ethernet.cpp:57
+#: src/tuning/ethernet.cpp:54
 #, c-format
 msgid "Wake-on-lan status for device %s"
 msgstr ""
@@ -403,13 +429,13 @@ msgstr ""
 msgid "Runtime PM for PCI Device %s"
 msgstr ""
 
-#: src/tuning/tuningusb.cpp:55
+#: src/tuning/tuningusb.cpp:52
 #, c-format
 msgid "Autosuspend for unknown USB device %s (%s:%s)"
 msgstr ""
 
-#: src/tuning/tuningusb.cpp:72 src/tuning/tuningusb.cpp:74
-#: src/tuning/tuningusb.cpp:76
+#: src/tuning/tuningusb.cpp:69 src/tuning/tuningusb.cpp:71
+#: src/tuning/tuningusb.cpp:73
 #, c-format
 msgid "Autosuspend for USB device %s [%s]"
 msgstr ""
@@ -419,186 +445,190 @@ msgstr ""
 msgid "Enable SATA link power Managmenet for %s"
 msgstr ""
 
-#: src/calibrate/calibrate.cpp:291
+#: src/calibrate/calibrate.cpp:236
 #, c-format
 msgid "Cannot create temp file\n"
 msgstr ""
 
-#: src/calibrate/calibrate.cpp:310
+#: src/calibrate/calibrate.cpp:255
 #, c-format
 msgid "Calibrating: CPU usage on %i threads\n"
 msgstr ""
 
-#: src/calibrate/calibrate.cpp:325
+#: src/calibrate/calibrate.cpp:270
 #, c-format
 msgid "Calibrating: CPU wakeup power consumption\n"
 msgstr ""
 
-#: src/calibrate/calibrate.cpp:342
+#: src/calibrate/calibrate.cpp:287
 #, c-format
 msgid "Calibrating USB devices\n"
 msgstr ""
 
-#: src/calibrate/calibrate.cpp:344 src/calibrate/calibrate.cpp:361
-#: src/calibrate/calibrate.cpp:369 src/calibrate/calibrate.cpp:386
+#: src/calibrate/calibrate.cpp:289 src/calibrate/calibrate.cpp:306
+#: src/calibrate/calibrate.cpp:314 src/calibrate/calibrate.cpp:331
 #, c-format
 msgid ".... device %s \n"
 msgstr ""
 
-#: src/calibrate/calibrate.cpp:359
+#: src/calibrate/calibrate.cpp:304
 #, c-format
 msgid "Calibrating radio devices\n"
 msgstr ""
 
-#: src/calibrate/calibrate.cpp:383
+#: src/calibrate/calibrate.cpp:328
 #, c-format
 msgid "Calibrating backlight\n"
 msgstr ""
 
-#: src/calibrate/calibrate.cpp:407 src/calibrate/calibrate.cpp:415
+#: src/calibrate/calibrate.cpp:352 src/calibrate/calibrate.cpp:360
 #, c-format
 msgid "Calibrating idle\n"
 msgstr ""
 
-#: src/calibrate/calibrate.cpp:426
+#: src/calibrate/calibrate.cpp:371
 #, c-format
 msgid "Calibrating: disk usage \n"
 msgstr ""
 
-#: src/calibrate/calibrate.cpp:451
+#: src/calibrate/calibrate.cpp:396
 msgid "Starting PowerTOP power estimate calibration \n"
 msgstr ""
 
-#: src/calibrate/calibrate.cpp:474
+#: src/calibrate/calibrate.cpp:419
 msgid "Finishing PowerTOP power estimate calibration \n"
 msgstr ""
 
-#: src/calibrate/calibrate.cpp:478
+#: src/calibrate/calibrate.cpp:423
 #, c-format
 msgid "Parameters after calibration:\n"
 msgstr ""
 
-#: src/main.cpp:86
+#: src/main.cpp:91
 #, c-format
 msgid "PowerTOP version"
 msgstr ""
 
-#: src/main.cpp:92
+#: src/main.cpp:97
 msgid "Set refresh time out"
 msgstr ""
 
-#: src/main.cpp:105
+#: src/main.cpp:110
 msgid "Usage: powertop [OPTIONS]"
 msgstr ""
 
-#: src/main.cpp:106
+#: src/main.cpp:111
 msgid "run in \"debug\" mode"
 msgstr ""
 
-#: src/main.cpp:107
+#: src/main.cpp:112
 msgid "print version information"
 msgstr ""
 
-#: src/main.cpp:108
+#: src/main.cpp:113
 msgid "runs powertop in calibration mode"
 msgstr ""
 
-#: src/main.cpp:109
+#: src/main.cpp:114
+msgid "Sets all tunable options to their GOOD setting"
+msgstr ""
+
+#: src/main.cpp:115
 msgid "[=devnode]"
 msgstr ""
 
-#: src/main.cpp:109
+#: src/main.cpp:115
 msgid "uses an Extech Power Analyzer for measurements"
 msgstr ""
 
-#: src/main.cpp:110 src/main.cpp:111
+#: src/main.cpp:116 src/main.cpp:117
 msgid "[=FILENAME]"
 msgstr ""
 
-#: src/main.cpp:110
+#: src/main.cpp:116
 msgid "generate a html report"
 msgstr ""
 
-#: src/main.cpp:111
+#: src/main.cpp:117
 msgid "generate a csv report"
 msgstr ""
 
-#: src/main.cpp:112
+#: src/main.cpp:118
 msgid "[=seconds]"
 msgstr ""
 
-#: src/main.cpp:112
+#: src/main.cpp:118
 msgid "generate a report for 'x' seconds"
 msgstr ""
 
-#: src/main.cpp:113
+#: src/main.cpp:119
 msgid "[=iterations] number of times to run each test"
 msgstr ""
 
-#: src/main.cpp:114
+#: src/main.cpp:120
 msgid "[=workload]"
 msgstr ""
 
-#: src/main.cpp:114
+#: src/main.cpp:120
 msgid "file to execute for workload"
 msgstr ""
 
-#: src/main.cpp:115
+#: src/main.cpp:121
 msgid "suppress stderr output"
 msgstr ""
 
-#: src/main.cpp:116
+#: src/main.cpp:122
 msgid "print this help menu"
 msgstr ""
 
-#: src/main.cpp:118
+#: src/main.cpp:124
 msgid "For more help please refer to the README"
 msgstr ""
 
-#: src/main.cpp:195
+#: src/main.cpp:201
 #, c-format
 msgid "Unknown issue running workload!\n"
 msgstr ""
 
-#: src/main.cpp:236
+#: src/main.cpp:242
 msgid "PowerTOP is out of memory. PowerTOP is Aborting"
 msgstr ""
 
-#: src/main.cpp:244
+#: src/main.cpp:250
 #, c-format
 msgid "Preparing to take measurements\n"
 msgstr ""
 
-#: src/main.cpp:249
+#: src/main.cpp:255
 #, c-format
 msgid "Taking %d measurement(s) for a duration of %d second(s) each.\n"
 msgstr ""
 
-#: src/main.cpp:251
+#: src/main.cpp:257
 #, c-format
 msgid "Measuring workload %s.\n"
 msgstr ""
 
-#: src/main.cpp:274
+#: src/main.cpp:280
 #, c-format
 msgid "PowerTOP "
 msgstr ""
 
-#: src/main.cpp:275 src/main.cpp:303
+#: src/main.cpp:281 src/main.cpp:328
 #, c-format
 msgid "exiting...\n"
 msgstr ""
 
-#: src/main.cpp:302
+#: src/main.cpp:327
 #, c-format
 msgid "Failed to mount debugfs!\n"
 msgstr ""
 
-#: src/main.cpp:394
+#: src/main.cpp:422
 #, c-format
 msgid "Quite mode failed!\n"
 msgstr ""
 
-#: src/main.cpp:440
+#: src/main.cpp:472
 msgid "Leaving PowerTOP"
 msgstr ""
index a97b78b..5c02721 100644 (file)
Binary files a/po/zh_TW.gmo and b/po/zh_TW.gmo differ
index 69f61dd..802a64e 100644 (file)
@@ -3,14 +3,14 @@
 # This file is distributed under the same license as the PACKAGE package.
 #
 # Translators:
-# Yuan CHAO <yuanchao@gmail.com>, 2012.
+# Yuan CHAO <yuanchao@gmail.com>, 2012-2013
 msgid ""
 msgstr ""
 "Project-Id-Version: PowerTOP\n"
 "Report-Msgid-Bugs-To: \"powertop@lists.01.org\"\n"
-"POT-Creation-Date: 2013-03-18 11:06-0700\n"
-"PO-Revision-Date: 2013-02-26 19:08+0000\n"
-"Last-Translator: Yuan CHAO <yuanchao@gmail.com>\n"
+"POT-Creation-Date: 2013-11-04 10:45-0800\n"
+"PO-Revision-Date: 2013-11-05 08:40+0000\n"
+"Last-Translator: Margie Foster <margie@linux.intel.com>\n"
 "Language-Team: Chinese (Taiwan) (http://www.transifex.com/projects/p/"
 "PowerTOP/language/zh_TW/)\n"
 "Language: zh_TW\n"
@@ -30,7 +30,7 @@ msgstr "無法讀取檔案"
 #: src/parameters/persistent.cpp:123
 #, c-format
 msgid "Loaded %i prior measurements\n"
-msgstr "載入 %i 先前量測數據\n"
+msgstr "已載入 %i 筆先前量測數據\n"
 
 #: src/display.cpp:70
 msgid "Overview"
@@ -52,111 +52,131 @@ msgstr "設備統計"
 msgid "Exit"
 msgstr "離開"
 
-#: src/cpu/cpu_core.cpp:37 src/cpu/cpu_core.cpp:93 src/cpu/intel_cpus.cpp:201
+#: src/cpu/cpu_core.cpp:37 src/cpu/cpu_core.cpp:93 src/cpu/intel_cpus.cpp:245
 #, c-format
 msgid "  Core"
-msgstr ""
+msgstr "  核心"
 
-#: src/cpu/cpu.cpp:94
+#: src/cpu/cpu.cpp:80
 #, c-format
 msgid "cpu package %i"
 msgstr "cpu 代號 %i"
 
-#: src/cpu/cpu.cpp:95
+#: src/cpu/cpu.cpp:81
 msgid "cpu package"
 msgstr "cpu 代號"
 
-#: src/cpu/cpu.cpp:446 src/cpu/cpu.cpp:573
+#: src/cpu/cpu.cpp:84
+#, c-format
+msgid "cpu rapl package %i"
+msgstr ""
+
+#: src/cpu/cpu.cpp:85
+msgid "cpu rapl package"
+msgstr ""
+
+#: src/cpu/cpu.cpp:89
+#, c-format
+msgid "dram rapl package %i"
+msgstr ""
+
+#: src/cpu/cpu.cpp:90
+msgid "dram rapl package"
+msgstr ""
+
+#: src/cpu/cpu.cpp:459 src/cpu/cpu.cpp:586
 #, c-format
 msgid "Package %i"
 msgstr "代號 %i"
 
-#: src/cpu/cpu.cpp:478 src/cpu/cpu.cpp:593
+#: src/cpu/cpu.cpp:491 src/cpu/cpu.cpp:606
 #, c-format
 msgid "Core %i"
 msgstr "核心 %i"
 
-#: src/cpu/cpu.cpp:480
+#: src/cpu/cpu.cpp:493
 #, c-format
 msgid "GPU %i"
 msgstr "GPU %i"
 
-#: src/cpu/cpu.cpp:502 src/cpu/cpu.cpp:614
+#: src/cpu/cpu.cpp:515 src/cpu/cpu.cpp:627
 #, c-format
 msgid "CPU %i"
 msgstr "CPU %i"
 
-#: src/cpu/cpu.cpp:796
+#: src/cpu/cpu.cpp:807
 #, c-format
 msgid "cpu_idle event returned no state?\n"
 msgstr "cpu_idle 事件沒有傳回狀態?\n"
 
-#: src/cpu/cpu.cpp:811
+#: src/cpu/cpu.cpp:822
 #, c-format
 msgid "power or cpu_frequency event returned no state?\n"
-msgstr ""
+msgstr "power 或 cpu_frequecny 事件沒有傳回狀態?\n"
 
 #: src/cpu/cpu_linux.cpp:79
 msgid "C0 polling"
 msgstr "C0 輪巡"
 
 #: src/cpu/cpu_linux.cpp:240 src/cpu/cpu_linux.cpp:339
-#: src/cpu/intel_cpus.cpp:423
+#: src/cpu/intel_cpus.cpp:521
 #, c-format
 msgid " CPU %i"
-msgstr ""
+msgstr " CPU %i"
 
 #: src/cpu/cpu_package.cpp:47
 #, c-format
 msgid "Package"
-msgstr ""
+msgstr "代號"
 
-#: src/cpu/cpu_package.cpp:105 src/cpu/intel_cpus.cpp:226
+#: src/cpu/cpu_package.cpp:105 src/cpu/intel_cpus.cpp:297
 #, c-format
 msgid "  Package"
-msgstr ""
+msgstr "代號"
 
-#: src/cpu/intel_cpus.cpp:61
+#: src/cpu/intel_cpus.cpp:81
 #, c-format
-msgid "msr reg not found"
-msgstr "找不到 msr 暫存器"
-
-#: src/cpu/intel_cpus.cpp:71
-#, c-format
-msgid "pread cpu%d 0x%llx : "
-msgstr "pread cpu%d 0x%llx : "
+msgid "read_msr cpu%d 0x%llx : "
+msgstr ""
 
-#: src/cpu/intel_cpus.cpp:347
+#: src/cpu/intel_cpus.cpp:445
 msgid "C0 active"
 msgstr "C0 運作中"
 
-#: src/cpu/intel_cpus.cpp:406
+#: src/cpu/intel_cpus.cpp:504
 #, c-format
 msgid "Actual"
 msgstr "實際"
 
-#: src/lib.cpp:266
+#: src/lib.cpp:286
 #, c-format
 msgid "%7sW"
 msgstr "%7sW"
 
-#: src/lib.cpp:269
+#: src/lib.cpp:289
 #, c-format
 msgid "    0 mW"
 msgstr "    0 mW"
 
-#: src/lib.cpp:390
+#: src/lib.cpp:408
 msgid "PS/2 Touchpad / Keyboard / Mouse"
 msgstr "PS/2  觸控板 / 鍵盤 / 滑鼠"
 
-#: src/lib.cpp:391
+#: src/lib.cpp:409
 msgid "SATA controller"
 msgstr "SATA 控制器"
 
-#: src/lib.cpp:392
+#: src/lib.cpp:410
 msgid "Intel built in USB hub"
 msgstr "Intel 內建 USB 集線器"
 
+#: src/lib.cpp:482 src/lib.cpp:514
+#, c-format
+msgid ""
+"Model-specific registers (MSR)\t\t\t not found (try enabling "
+"CONFIG_X86_MSR).\n"
+msgstr ""
+
 #: src/process/do_process.cpp:817
 #, c-format
 msgid ""
@@ -180,7 +200,7 @@ msgstr "估計剩餘時間為 %i 小時 %i 分鐘\n"
 msgid "Summary"
 msgstr "總覽"
 
-#: src/process/do_process.cpp:841 src/process/do_process.cpp:1011
+#: src/process/do_process.cpp:841 src/process/do_process.cpp:1013
 msgid "wakeups/second"
 msgstr "喚醒 / 秒"
 
@@ -192,77 +212,83 @@ msgstr "GPU 指令 / 秒"
 msgid "VFS ops/sec and"
 msgstr "VFS 指令 / 秒 以及"
 
-#: src/process/do_process.cpp:841 src/process/do_process.cpp:1015
+#: src/process/do_process.cpp:841 src/process/do_process.cpp:1017
 msgid "CPU use"
 msgstr "CPU 用量"
 
-#: src/process/do_process.cpp:845 src/process/do_process.cpp:902
-#: src/process/do_process.cpp:1021
+#: src/process/do_process.cpp:845 src/process/do_process.cpp:904
+#: src/process/do_process.cpp:1023
 msgid "Power est."
 msgstr "電源預計"
 
 #: src/process/do_process.cpp:845 src/process/do_process.cpp:847
-#: src/process/do_process.cpp:906 src/process/do_process.cpp:1025
+#: src/process/do_process.cpp:908 src/process/do_process.cpp:1027
 msgid "Usage"
 msgstr "用法"
 
 #: src/process/do_process.cpp:845 src/process/do_process.cpp:847
-#: src/process/do_process.cpp:1027
+#: src/process/do_process.cpp:1029
 msgid "Events/s"
 msgstr "事件 / 秒"
 
 #: src/process/do_process.cpp:845 src/process/do_process.cpp:847
-#: src/process/do_process.cpp:916 src/process/do_process.cpp:1029
+#: src/process/do_process.cpp:918 src/process/do_process.cpp:1031
 msgid "Category"
 msgstr "分類"
 
 #: src/process/do_process.cpp:845 src/process/do_process.cpp:847
-#: src/process/do_process.cpp:918 src/process/do_process.cpp:1031
+#: src/process/do_process.cpp:920 src/process/do_process.cpp:1033
 msgid "Description"
 msgstr "描述"
 
-#: src/process/do_process.cpp:897
+#: src/process/do_process.cpp:899
 msgid "Overview of Software Power Consumers"
 msgstr "軟體耗電量大戶總覽"
 
-#: src/process/do_process.cpp:908
+#: src/process/do_process.cpp:910
 msgid "Wakeups/s"
 msgstr "喚醒 / 秒"
 
-#: src/process/do_process.cpp:910
+#: src/process/do_process.cpp:912
 msgid "GPU ops/s"
 msgstr "GPU 指令 / 秒"
 
-#: src/process/do_process.cpp:912
+#: src/process/do_process.cpp:914
 msgid "Disk IO/s"
 msgstr "磁碟 IO / 秒"
 
-#: src/process/do_process.cpp:914
+#: src/process/do_process.cpp:916
 msgid "GFX Wakeups/s"
 msgstr "GFX 喚醒 / 秒"
 
-#: src/process/do_process.cpp:1008
+#: src/process/do_process.cpp:1010
 msgid "Power Consumption Summary"
 msgstr "電源使用量總覽"
 
-#: src/process/do_process.cpp:1012
+#: src/process/do_process.cpp:1014
 msgid "GPU ops/second"
 msgstr "GPU 指令 / 秒"
 
-#: src/process/do_process.cpp:1013
+#: src/process/do_process.cpp:1015
 msgid "VFS ops/sec"
 msgstr "VFS 指令 / 秒"
 
-#: src/process/do_process.cpp:1014
+#: src/process/do_process.cpp:1016
 msgid "GFX wakes/sec and"
 msgstr "GFX 喚醒 / 秒 以及"
 
-#: src/perf/perf.cpp:111
+#: src/perf/perf.cpp:115
+#, c-format
+msgid ""
+"Too many open files, please increase the limit of open file descriptors.\n"
+msgstr ""
+
+#: src/perf/perf.cpp:117
 #, c-format
 msgid "PowerTOP %s needs the kernel to support the 'perf' subsystem\n"
 msgstr "PowerTOP %s 需要 Linux 核心 'perf' 子系統支援\n"
 
-#: src/perf/perf.cpp:112
+#: src/perf/perf.cpp:118
 #, c-format
 msgid "as well as support for trace points in the kernel:\n"
 msgstr "以及 Linux 核心中斷點 (trace point) 支援:\n"
@@ -280,12 +306,12 @@ msgstr "電源預估      使用量    設備名稱\n"
 msgid "              Usage     Device name\n"
 msgstr "              使用量    設備名稱\n"
 
-#: src/devices/alsa.cpp:79
+#: src/devices/alsa.cpp:77
 #, c-format
 msgid "Audio codec %s: %s (%s)"
 msgstr "音效設備 %s: %s (%s)"
 
-#: src/devices/alsa.cpp:81 src/devices/alsa.cpp:83
+#: src/devices/alsa.cpp:79 src/devices/alsa.cpp:81
 #, c-format
 msgid "Audio codec %s: %s"
 msgstr "音效設備 %s: %s"
@@ -295,32 +321,32 @@ msgstr "音效設備 %s: %s"
 msgid "PCI Device: %s"
 msgstr "PCI 設備: %s"
 
-#: src/devices/usb.cpp:51 src/devices/usb.cpp:94 src/devices/usb.cpp:96
+#: src/devices/usb.cpp:49 src/devices/usb.cpp:92 src/devices/usb.cpp:94
 #, c-format
 msgid "USB device: %s"
 msgstr "USB 設備: %s"
 
-#: src/devices/usb.cpp:92
+#: src/devices/usb.cpp:90
 #, c-format
 msgid "USB device: %s (%s)"
 msgstr "USB 設備: %s (%s)"
 
-#: src/devices/ahci.cpp:140
+#: src/devices/ahci.cpp:142
 #, c-format
 msgid "SATA link: %s"
 msgstr "SATA 連線: %s"
 
-#: src/devices/ahci.cpp:142
+#: src/devices/ahci.cpp:144
 #, c-format
 msgid "SATA disk: %s"
 msgstr "SATA 磁碟: %s"
 
-#: src/devices/rfkill.cpp:65 src/devices/rfkill.cpp:69
+#: src/devices/rfkill.cpp:64 src/devices/rfkill.cpp:68
 #, c-format
 msgid "Radio device: %s"
 msgstr "無線電設備: %s"
 
-#: src/devices/network.cpp:177
+#: src/devices/network.cpp:176
 #, c-format
 msgid "Network interface: %s (%s)"
 msgstr "網路介面卡: %s (%s)"
@@ -330,21 +356,21 @@ msgstr "網路介面卡: %s (%s)"
 msgid "Bluetooth device interface status"
 msgstr "藍牙設備介面狀態"
 
-#: src/tuning/cpufreq.cpp:44 src/tuning/ethernet.cpp:53
+#: src/tuning/cpufreq.cpp:44 src/tuning/ethernet.cpp:50
 #: src/tuning/tunable.cpp:48 src/tuning/wifi.cpp:45 src/tuning/runtime.cpp:41
-#: src/tuning/tuningusb.cpp:40 src/tuning/tuningsysfs.cpp:44
+#: src/tuning/tuningusb.cpp:37 src/tuning/tuningsysfs.cpp:44
 msgid "Good"
 msgstr "好"
 
-#: src/tuning/cpufreq.cpp:44 src/tuning/ethernet.cpp:53
+#: src/tuning/cpufreq.cpp:44 src/tuning/ethernet.cpp:50
 #: src/tuning/tunable.cpp:49 src/tuning/wifi.cpp:45 src/tuning/runtime.cpp:41
-#: src/tuning/tuningusb.cpp:40 src/tuning/tuningsysfs.cpp:44
+#: src/tuning/tuningusb.cpp:37 src/tuning/tuningsysfs.cpp:44
 msgid "Bad"
 msgstr "壞"
 
-#: src/tuning/cpufreq.cpp:44 src/tuning/ethernet.cpp:53
+#: src/tuning/cpufreq.cpp:44 src/tuning/ethernet.cpp:50
 #: src/tuning/tunable.cpp:50 src/tuning/wifi.cpp:45 src/tuning/runtime.cpp:41
-#: src/tuning/tuningusb.cpp:40 src/tuning/tuningsysfs.cpp:44
+#: src/tuning/tuningusb.cpp:37 src/tuning/tuningsysfs.cpp:44
 msgid "Unknown"
 msgstr "未知"
 
@@ -377,7 +403,7 @@ msgstr "可調選項"
 msgid " <ESC> Exit | <Enter> Toggle tunable | <r> Window refresh"
 msgstr " <ESC> 離開 | <Enter> 切換選項開關   | <r> 更新視窗內容"
 
-#: src/tuning/ethernet.cpp:57
+#: src/tuning/ethernet.cpp:54
 #, c-format
 msgid "Wake-on-lan status for device %s"
 msgstr "網路喚醒啟用狀態於設備 %s"
@@ -407,13 +433,13 @@ msgstr "PCI 設備 %s 沒有執行時期電源管理功能"
 msgid "Runtime PM for PCI Device %s"
 msgstr "PCI 設備 %s 電源管理"
 
-#: src/tuning/tuningusb.cpp:55
+#: src/tuning/tuningusb.cpp:52
 #, c-format
 msgid "Autosuspend for unknown USB device %s (%s:%s)"
 msgstr "自動閒置於未知的 USB 設備 %s (%s:%s)"
 
-#: src/tuning/tuningusb.cpp:72 src/tuning/tuningusb.cpp:74
-#: src/tuning/tuningusb.cpp:76
+#: src/tuning/tuningusb.cpp:69 src/tuning/tuningusb.cpp:71
+#: src/tuning/tuningusb.cpp:73
 #, c-format
 msgid "Autosuspend for USB device %s [%s]"
 msgstr "自動閒置於 USB 設備 %s [%s]"
@@ -423,186 +449,190 @@ msgstr "自動閒置於 USB 設備 %s [%s]"
 msgid "Enable SATA link power Managmenet for %s"
 msgstr "啟用 %s 的 SATA 連線電源管理"
 
-#: src/calibrate/calibrate.cpp:291
+#: src/calibrate/calibrate.cpp:236
 #, c-format
 msgid "Cannot create temp file\n"
 msgstr "無法建立暫存檔案\n"
 
-#: src/calibrate/calibrate.cpp:310
+#: src/calibrate/calibrate.cpp:255
 #, c-format
 msgid "Calibrating: CPU usage on %i threads\n"
 msgstr "校正: CPU 使用量於 %i 執行緒\n"
 
-#: src/calibrate/calibrate.cpp:325
+#: src/calibrate/calibrate.cpp:270
 #, c-format
 msgid "Calibrating: CPU wakeup power consumption\n"
 msgstr "校正: CPU 喚醒電源使用量\n"
 
-#: src/calibrate/calibrate.cpp:342
+#: src/calibrate/calibrate.cpp:287
 #, c-format
 msgid "Calibrating USB devices\n"
 msgstr "校正 USB 設備\n"
 
-#: src/calibrate/calibrate.cpp:344 src/calibrate/calibrate.cpp:361
-#: src/calibrate/calibrate.cpp:369 src/calibrate/calibrate.cpp:386
+#: src/calibrate/calibrate.cpp:289 src/calibrate/calibrate.cpp:306
+#: src/calibrate/calibrate.cpp:314 src/calibrate/calibrate.cpp:331
 #, c-format
 msgid ".... device %s \n"
 msgstr ".... 裝置 %s \n"
 
-#: src/calibrate/calibrate.cpp:359
+#: src/calibrate/calibrate.cpp:304
 #, c-format
 msgid "Calibrating radio devices\n"
 msgstr "校正無線電設備\n"
 
-#: src/calibrate/calibrate.cpp:383
+#: src/calibrate/calibrate.cpp:328
 #, c-format
 msgid "Calibrating backlight\n"
 msgstr "校正螢幕背光\n"
 
-#: src/calibrate/calibrate.cpp:407 src/calibrate/calibrate.cpp:415
+#: src/calibrate/calibrate.cpp:352 src/calibrate/calibrate.cpp:360
 #, c-format
 msgid "Calibrating idle\n"
 msgstr "校正閒置\n"
 
-#: src/calibrate/calibrate.cpp:426
+#: src/calibrate/calibrate.cpp:371
 #, c-format
 msgid "Calibrating: disk usage \n"
 msgstr "校正: 磁碟使用\n"
 
-#: src/calibrate/calibrate.cpp:451
+#: src/calibrate/calibrate.cpp:396
 msgid "Starting PowerTOP power estimate calibration \n"
 msgstr "開始 PowerTOP 電源估計校正 \n"
 
-#: src/calibrate/calibrate.cpp:474
+#: src/calibrate/calibrate.cpp:419
 msgid "Finishing PowerTOP power estimate calibration \n"
 msgstr "完成 PowerTOP 電源估計校正 \n"
 
-#: src/calibrate/calibrate.cpp:478
+#: src/calibrate/calibrate.cpp:423
 #, c-format
 msgid "Parameters after calibration:\n"
 msgstr "校正取得參數:\n"
 
-#: src/main.cpp:86
+#: src/main.cpp:91
 #, c-format
 msgid "PowerTOP version"
 msgstr "PowerTop 版本"
 
-#: src/main.cpp:92
+#: src/main.cpp:97
 msgid "Set refresh time out"
 msgstr "設定更新週期"
 
-#: src/main.cpp:105
+#: src/main.cpp:110
 msgid "Usage: powertop [OPTIONS]"
 msgstr "用法: powertop [選項]"
 
-#: src/main.cpp:106
+#: src/main.cpp:111
 msgid "run in \"debug\" mode"
 msgstr "以 \"debug\" 模式執行"
 
-#: src/main.cpp:107
+#: src/main.cpp:112
 msgid "print version information"
 msgstr "顯示版本資訊"
 
-#: src/main.cpp:108
+#: src/main.cpp:113
 msgid "runs powertop in calibration mode"
 msgstr "以校正模式執行 powertop"
 
-#: src/main.cpp:109
+#: src/main.cpp:114
+msgid "Sets all tunable options to their GOOD setting"
+msgstr ""
+
+#: src/main.cpp:115
 msgid "[=devnode]"
 msgstr "[= 設備節點]"
 
-#: src/main.cpp:109
+#: src/main.cpp:115
 msgid "uses an Extech Power Analyzer for measurements"
 msgstr "使用 Extech 電源分析儀進行量測"
 
-#: src/main.cpp:110 src/main.cpp:111
+#: src/main.cpp:116 src/main.cpp:117
 msgid "[=FILENAME]"
 msgstr "[= 檔案名稱]"
 
-#: src/main.cpp:110
+#: src/main.cpp:116
 msgid "generate a html report"
 msgstr "產生 html 報告"
 
-#: src/main.cpp:111
+#: src/main.cpp:117
 msgid "generate a csv report"
 msgstr "產生 csv 報告"
 
-#: src/main.cpp:112
+#: src/main.cpp:118
 msgid "[=seconds]"
 msgstr "[= 秒]"
 
-#: src/main.cpp:112
+#: src/main.cpp:118
 msgid "generate a report for 'x' seconds"
 msgstr "產生蒐集資料 'x' 秒鐘的報告"
 
-#: src/main.cpp:113
+#: src/main.cpp:119
 msgid "[=iterations] number of times to run each test"
 msgstr "[=iterations] 每次檢驗進行量測次數"
 
-#: src/main.cpp:114
+#: src/main.cpp:120
 msgid "[=workload]"
 msgstr "[=工作負載]"
 
-#: src/main.cpp:114
+#: src/main.cpp:120
 msgid "file to execute for workload"
 msgstr "工作負載要執行的檔案"
 
-#: src/main.cpp:115
+#: src/main.cpp:121
 msgid "suppress stderr output"
 msgstr "關閉標準錯誤輸出"
 
-#: src/main.cpp:116
+#: src/main.cpp:122
 msgid "print this help menu"
 msgstr "顯示此輔助說明選單"
 
-#: src/main.cpp:118
+#: src/main.cpp:124
 msgid "For more help please refer to the README"
 msgstr "更多的輔助說明請參閱 README"
 
-#: src/main.cpp:195
+#: src/main.cpp:201
 #, c-format
 msgid "Unknown issue running workload!\n"
-msgstr ""
+msgstr "執行工作負載發生未知問題!\n"
 
-#: src/main.cpp:236
+#: src/main.cpp:242
 msgid "PowerTOP is out of memory. PowerTOP is Aborting"
 msgstr "PowerTOP 已耗盡記憶體,退出中。"
 
-#: src/main.cpp:244
+#: src/main.cpp:250
 #, c-format
 msgid "Preparing to take measurements\n"
 msgstr "量測準備中\n"
 
-#: src/main.cpp:249
+#: src/main.cpp:255
 #, c-format
 msgid "Taking %d measurement(s) for a duration of %d second(s) each.\n"
 msgstr "測量 %d 次於每 %d 秒。\n"
 
-#: src/main.cpp:251
+#: src/main.cpp:257
 #, c-format
 msgid "Measuring workload %s.\n"
 msgstr "量測工作負載 %s 。\n"
 
-#: src/main.cpp:274
+#: src/main.cpp:280
 #, c-format
 msgid "PowerTOP "
 msgstr "PowerTOP "
 
-#: src/main.cpp:275 src/main.cpp:303
+#: src/main.cpp:281 src/main.cpp:328
 #, c-format
 msgid "exiting...\n"
 msgstr "離開中...\n"
 
-#: src/main.cpp:302
+#: src/main.cpp:327
 #, c-format
 msgid "Failed to mount debugfs!\n"
 msgstr "debugfs 掛載失敗!\n"
 
-#: src/main.cpp:394
+#: src/main.cpp:422
 #, c-format
 msgid "Quite mode failed!\n"
-msgstr ""
+msgstr "進入安靜模式失敗!\n"
 
-#: src/main.cpp:440
+#: src/main.cpp:472
 msgid "Leaving PowerTOP"
 msgstr "離開 PowerTOP"
index 398b8a7..19950a1 100644 (file)
@@ -24,14 +24,17 @@ powertop_SOURCES = parameters/persistent.cpp parameters/learn.cpp parameters/par
                tuning/tunable.cpp tuning/nl80211.h tuning/iw.c tuning/wifi.cpp tuning/tuningsysfs.h \
                tuning/tuningsysfs.cpp tuning/wifi.h tuning/runtime.cpp tuning/tunable.h \
                tuning/runtime.h tuning/tuningusb.h tuning/iw.h calibrate/calibrate.cpp \
-               calibrate/calibrate.h measurement/measurement.cpp measurement/power_supply.cpp \
+               calibrate/calibrate.h measurement/measurement.cpp \
                measurement/measurement.h measurement/acpi.cpp measurement/sysfs.h measurement/sysfs.cpp \
-               measurement/acpi.h measurement/extech.cpp measurement/power_supply.h measurement/extech.h \
+               measurement/acpi.h measurement/extech.cpp measurement/extech.h \
                report/report-maker.cpp report/report-maker.h report/report-formatter.h \
                report/report-formatter-base.cpp report/report-formatter-base.h \
                report/report-formatter-csv.cpp report/report-formatter-csv.h \
                report/report-formatter-html.cpp report/report-formatter-html.h \
-               main.cpp css.h powertop.css cpu/intel_gpu.cpp
+               main.cpp css.h powertop.css cpu/intel_gpu.cpp \
+               cpu/rapl/rapl_interface.cpp cpu/cpu_rapl_device.cpp cpu/rapl/rapl_interface.h\
+               cpu/dram_rapl_device.cpp devices/gpu_rapl_device.cpp cpu/cpu_rapl_device.h \
+               cpu/dram_rapl_device.h devices/gpu_rapl_device.h
 
 
 powertop_CXXFLAGS = -fno-omit-frame-pointer -fstack-protector -Wall -Wshadow -Wformat $(NCURSES_CFLAGS) $(PCIUTILS_CFLAGS) $(LIBNL_CFLAGS) $(GLIB2_CFLAGS)
index fde9aed..7d68586 100644 (file)
@@ -1,9 +1,8 @@
-# Makefile.in generated by automake 1.11.6 from Makefile.am.
+# Makefile.in generated by automake 1.13.4 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software
-# Foundation, Inc.
+# Copyright (C) 1994-2013 Free Software Foundation, Inc.
+
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
 @SET_MAKE@
 
 VPATH = @srcdir@
-am__make_dryrun = \
-  { \
-    am__dry=no; \
+am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__make_running_with_option = \
+  case $${target_option-} in \
+      ?) ;; \
+      *) echo "am__make_running_with_option: internal error: invalid" \
+              "target option '$${target_option-}' specified" >&2; \
+         exit 1;; \
+  esac; \
+  has_opt=no; \
+  sane_makeflags=$$MAKEFLAGS; \
+  if $(am__is_gnu_make); then \
+    sane_makeflags=$$MFLAGS; \
+  else \
     case $$MAKEFLAGS in \
       *\\[\ \  ]*) \
-        echo 'am--echo: ; @echo "AM"  OK' | $(MAKE) -f - 2>/dev/null \
-          | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
-      *) \
-        for am__flg in $$MAKEFLAGS; do \
-          case $$am__flg in \
-            *=*|--*) ;; \
-            *n*) am__dry=yes; break;; \
-          esac; \
-        done;; \
+        bs=\\; \
+        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+          | sed "s/$$bs$$bs[$$bs $$bs  ]*//g"`;; \
+    esac; \
+  fi; \
+  skip_next=no; \
+  strip_trailopt () \
+  { \
+    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+  }; \
+  for flg in $$sane_makeflags; do \
+    test $$skip_next = yes && { skip_next=no; continue; }; \
+    case $$flg in \
+      *=*|--*) continue;; \
+        -*I) strip_trailopt 'I'; skip_next=yes;; \
+      -*I?*) strip_trailopt 'I';; \
+        -*O) strip_trailopt 'O'; skip_next=yes;; \
+      -*O?*) strip_trailopt 'O';; \
+        -*l) strip_trailopt 'l'; skip_next=yes;; \
+      -*l?*) strip_trailopt 'l';; \
+      -[dEDm]) skip_next=yes;; \
+      -[JT]) skip_next=yes;; \
+    esac; \
+    case $$flg in \
+      *$$target_option*) has_opt=yes; break;; \
     esac; \
-    test $$am__dry = yes; \
-  }
+  done; \
+  test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
 pkgdatadir = $(datadir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
 pkglibdir = $(libdir)/@PACKAGE@
@@ -53,7 +80,8 @@ build_triplet = @build@
 host_triplet = @host@
 sbin_PROGRAMS = powertop$(EXEEXT)
 subdir = src
-DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
+       $(top_srcdir)/depcomp
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/m4/gettext.m4 \
        $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
@@ -112,7 +140,6 @@ am_powertop_OBJECTS = parameters/powertop-persistent.$(OBJEXT) \
        tuning/powertop-runtime.$(OBJEXT) \
        calibrate/powertop-calibrate.$(OBJEXT) \
        measurement/powertop-measurement.$(OBJEXT) \
-       measurement/powertop-power_supply.$(OBJEXT) \
        measurement/powertop-acpi.$(OBJEXT) \
        measurement/powertop-sysfs.$(OBJEXT) \
        measurement/powertop-extech.$(OBJEXT) \
@@ -120,16 +147,33 @@ am_powertop_OBJECTS = parameters/powertop-persistent.$(OBJEXT) \
        report/powertop-report-formatter-base.$(OBJEXT) \
        report/powertop-report-formatter-csv.$(OBJEXT) \
        report/powertop-report-formatter-html.$(OBJEXT) \
-       powertop-main.$(OBJEXT) cpu/powertop-intel_gpu.$(OBJEXT)
+       powertop-main.$(OBJEXT) cpu/powertop-intel_gpu.$(OBJEXT) \
+       cpu/rapl/powertop-rapl_interface.$(OBJEXT) \
+       cpu/powertop-cpu_rapl_device.$(OBJEXT) \
+       cpu/powertop-dram_rapl_device.$(OBJEXT) \
+       devices/powertop-gpu_rapl_device.$(OBJEXT)
 nodist_powertop_OBJECTS =
 powertop_OBJECTS = $(am_powertop_OBJECTS) $(nodist_powertop_OBJECTS)
 powertop_DEPENDENCIES = ../traceevent/libtraceevnet.la
 AM_V_lt = $(am__v_lt_@AM_V@)
 am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
 am__v_lt_0 = --silent
+am__v_lt_1 = 
 powertop_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \
        $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(powertop_CXXFLAGS) \
        $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+AM_V_P = $(am__v_P_@AM_V@)
+am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_@AM_V@)
+am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
+am__v_GEN_0 = @echo "  GEN     " $@;
+am__v_GEN_1 = 
+AM_V_at = $(am__v_at_@AM_V@)
+am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 = 
 DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)
 depcomp = $(SHELL) $(top_srcdir)/depcomp
 am__depfiles_maybe = depfiles
@@ -142,17 +186,16 @@ LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
        $(AM_CFLAGS) $(CFLAGS)
 AM_V_CC = $(am__v_CC_@AM_V@)
 am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@)
-am__v_CC_0 = @echo "  CC    " $@;
-AM_V_at = $(am__v_at_@AM_V@)
-am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
-am__v_at_0 = @
+am__v_CC_0 = @echo "  CC      " $@;
+am__v_CC_1 = 
 CCLD = $(CC)
 LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
        $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
        $(AM_LDFLAGS) $(LDFLAGS) -o $@
 AM_V_CCLD = $(am__v_CCLD_@AM_V@)
 am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@)
-am__v_CCLD_0 = @echo "  CCLD  " $@;
+am__v_CCLD_0 = @echo "  CCLD    " $@;
+am__v_CCLD_1 = 
 CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
        $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)
 LTCXXCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \
@@ -161,17 +204,16 @@ LTCXXCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \
        $(AM_CXXFLAGS) $(CXXFLAGS)
 AM_V_CXX = $(am__v_CXX_@AM_V@)
 am__v_CXX_ = $(am__v_CXX_@AM_DEFAULT_V@)
-am__v_CXX_0 = @echo "  CXX   " $@;
+am__v_CXX_0 = @echo "  CXX     " $@;
+am__v_CXX_1 = 
 CXXLD = $(CXX)
 CXXLINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \
        $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \
        $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
 AM_V_CXXLD = $(am__v_CXXLD_@AM_V@)
 am__v_CXXLD_ = $(am__v_CXXLD_@AM_DEFAULT_V@)
-am__v_CXXLD_0 = @echo "  CXXLD " $@;
-AM_V_GEN = $(am__v_GEN_@AM_V@)
-am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
-am__v_GEN_0 = @echo "  GEN   " $@;
+am__v_CXXLD_0 = @echo "  CXXLD   " $@;
+am__v_CXXLD_1 = 
 SOURCES = $(powertop_SOURCES) $(nodist_powertop_SOURCES)
 DIST_SOURCES = $(powertop_SOURCES)
 am__can_run_installinfo = \
@@ -179,6 +221,23 @@ am__can_run_installinfo = \
     n|no|NO) false;; \
     *) (install-info --version) >/dev/null 2>&1;; \
   esac
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+# Read a list of newline-separated strings from the standard input,
+# and print each of them once, without duplicates.  Input order is
+# *not* preserved.
+am__uniquify_input = $(AWK) '\
+  BEGIN { nonempty = 0; } \
+  { items[$$0] = 1; nonempty = 1; } \
+  END { if (nonempty) { for (i in items) print i; }; } \
+'
+# Make sure the list of sources is unique.  This is necessary because,
+# e.g., the same source file might be shared among _SOURCES variables
+# for different programs/libraries.
+am__define_uniq_tagged_files = \
+  list='$(am__tagged_files)'; \
+  unique=`for i in $$list; do \
+    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+  done | $(am__uniquify_input)`
 ETAGS = etags
 CTAGS = ctags
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
@@ -350,14 +409,17 @@ powertop_SOURCES = parameters/persistent.cpp parameters/learn.cpp parameters/par
                tuning/tunable.cpp tuning/nl80211.h tuning/iw.c tuning/wifi.cpp tuning/tuningsysfs.h \
                tuning/tuningsysfs.cpp tuning/wifi.h tuning/runtime.cpp tuning/tunable.h \
                tuning/runtime.h tuning/tuningusb.h tuning/iw.h calibrate/calibrate.cpp \
-               calibrate/calibrate.h measurement/measurement.cpp measurement/power_supply.cpp \
+               calibrate/calibrate.h measurement/measurement.cpp \
                measurement/measurement.h measurement/acpi.cpp measurement/sysfs.h measurement/sysfs.cpp \
-               measurement/acpi.h measurement/extech.cpp measurement/power_supply.h measurement/extech.h \
+               measurement/acpi.h measurement/extech.cpp measurement/extech.h \
                report/report-maker.cpp report/report-maker.h report/report-formatter.h \
                report/report-formatter-base.cpp report/report-formatter-base.h \
                report/report-formatter-csv.cpp report/report-formatter-csv.h \
                report/report-formatter-html.cpp report/report-formatter-html.h \
-               main.cpp css.h powertop.css cpu/intel_gpu.cpp
+               main.cpp css.h powertop.css cpu/intel_gpu.cpp \
+               cpu/rapl/rapl_interface.cpp cpu/cpu_rapl_device.cpp cpu/rapl/rapl_interface.h\
+               cpu/dram_rapl_device.cpp devices/gpu_rapl_device.cpp cpu/cpu_rapl_device.h \
+               cpu/dram_rapl_device.h devices/gpu_rapl_device.h
 
 powertop_CXXFLAGS = -fno-omit-frame-pointer -fstack-protector -Wall -Wshadow -Wformat $(NCURSES_CFLAGS) $(PCIUTILS_CFLAGS) $(LIBNL_CFLAGS) $(GLIB2_CFLAGS)
 powertop_CPPFLAGS = -D_FORTIFY_SOURCE=2 $(NCURSES_CFLAGS) $(PCIUTILS_CFLAGS) $(LIBNL_CFLAGS) $(GLIB2_CFLAGS) $(LIBZ_CFLAGS) -DLOCALEDIR=\"$(localedir)\"
@@ -409,10 +471,12 @@ install-sbinPROGRAMS: $(sbin_PROGRAMS)
        fi; \
        for p in $$list; do echo "$$p $$p"; done | \
        sed 's/$(EXEEXT)$$//' | \
-       while read p p1; do if test -f $$p || test -f $$p1; \
-         then echo "$$p"; echo "$$p"; else :; fi; \
+       while read p p1; do if test -f $$p \
+        || test -f $$p1 \
+         ; then echo "$$p"; echo "$$p"; else :; fi; \
        done | \
-       sed -e 'p;s,.*/,,;n;h' -e 's|.*|.|' \
+       sed -e 'p;s,.*/,,;n;h' \
+           -e 's|.*|.|' \
            -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \
        sed 'N;N;N;s,\n, ,g' | \
        $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \
@@ -433,7 +497,8 @@ uninstall-sbinPROGRAMS:
        @list='$(sbin_PROGRAMS)'; test -n "$(sbindir)" || list=; \
        files=`for p in $$list; do echo "$$p"; done | \
          sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \
-             -e 's/$$/$(EXEEXT)/' `; \
+             -e 's/$$/$(EXEEXT)/' \
+       `; \
        test -n "$$list" || exit 0; \
        echo " ( cd '$(DESTDIR)$(sbindir)' && rm -f" $$files ")"; \
        cd "$(DESTDIR)$(sbindir)" && rm -f $$files
@@ -587,9 +652,6 @@ measurement/$(DEPDIR)/$(am__dirstamp):
 measurement/powertop-measurement.$(OBJEXT):  \
        measurement/$(am__dirstamp) \
        measurement/$(DEPDIR)/$(am__dirstamp)
-measurement/powertop-power_supply.$(OBJEXT):  \
-       measurement/$(am__dirstamp) \
-       measurement/$(DEPDIR)/$(am__dirstamp)
 measurement/powertop-acpi.$(OBJEXT): measurement/$(am__dirstamp) \
        measurement/$(DEPDIR)/$(am__dirstamp)
 measurement/powertop-sysfs.$(OBJEXT): measurement/$(am__dirstamp) \
@@ -606,64 +668,37 @@ report/powertop-report-formatter-html.$(OBJEXT):  \
        report/$(am__dirstamp) report/$(DEPDIR)/$(am__dirstamp)
 cpu/powertop-intel_gpu.$(OBJEXT): cpu/$(am__dirstamp) \
        cpu/$(DEPDIR)/$(am__dirstamp)
+cpu/rapl/$(am__dirstamp):
+       @$(MKDIR_P) cpu/rapl
+       @: > cpu/rapl/$(am__dirstamp)
+cpu/rapl/$(DEPDIR)/$(am__dirstamp):
+       @$(MKDIR_P) cpu/rapl/$(DEPDIR)
+       @: > cpu/rapl/$(DEPDIR)/$(am__dirstamp)
+cpu/rapl/powertop-rapl_interface.$(OBJEXT): cpu/rapl/$(am__dirstamp) \
+       cpu/rapl/$(DEPDIR)/$(am__dirstamp)
+cpu/powertop-cpu_rapl_device.$(OBJEXT): cpu/$(am__dirstamp) \
+       cpu/$(DEPDIR)/$(am__dirstamp)
+cpu/powertop-dram_rapl_device.$(OBJEXT): cpu/$(am__dirstamp) \
+       cpu/$(DEPDIR)/$(am__dirstamp)
+devices/powertop-gpu_rapl_device.$(OBJEXT): devices/$(am__dirstamp) \
+       devices/$(DEPDIR)/$(am__dirstamp)
+
 powertop$(EXEEXT): $(powertop_OBJECTS) $(powertop_DEPENDENCIES) $(EXTRA_powertop_DEPENDENCIES) 
        @rm -f powertop$(EXEEXT)
        $(AM_V_CXXLD)$(powertop_LINK) $(powertop_OBJECTS) $(powertop_LDADD) $(LIBS)
 
 mostlyclean-compile:
        -rm -f *.$(OBJEXT)
-       -rm -f calibrate/powertop-calibrate.$(OBJEXT)
-       -rm -f cpu/powertop-abstract_cpu.$(OBJEXT)
-       -rm -f cpu/powertop-cpu.$(OBJEXT)
-       -rm -f cpu/powertop-cpu_core.$(OBJEXT)
-       -rm -f cpu/powertop-cpu_linux.$(OBJEXT)
-       -rm -f cpu/powertop-cpu_package.$(OBJEXT)
-       -rm -f cpu/powertop-cpudevice.$(OBJEXT)
-       -rm -f cpu/powertop-intel_cpus.$(OBJEXT)
-       -rm -f cpu/powertop-intel_gpu.$(OBJEXT)
-       -rm -f devices/powertop-ahci.$(OBJEXT)
-       -rm -f devices/powertop-alsa.$(OBJEXT)
-       -rm -f devices/powertop-backlight.$(OBJEXT)
-       -rm -f devices/powertop-device.$(OBJEXT)
-       -rm -f devices/powertop-i915-gpu.$(OBJEXT)
-       -rm -f devices/powertop-network.$(OBJEXT)
-       -rm -f devices/powertop-rfkill.$(OBJEXT)
-       -rm -f devices/powertop-runtime_pm.$(OBJEXT)
-       -rm -f devices/powertop-thinkpad-fan.$(OBJEXT)
-       -rm -f devices/powertop-thinkpad-light.$(OBJEXT)
-       -rm -f devices/powertop-usb.$(OBJEXT)
-       -rm -f measurement/powertop-acpi.$(OBJEXT)
-       -rm -f measurement/powertop-extech.$(OBJEXT)
-       -rm -f measurement/powertop-measurement.$(OBJEXT)
-       -rm -f measurement/powertop-power_supply.$(OBJEXT)
-       -rm -f measurement/powertop-sysfs.$(OBJEXT)
-       -rm -f parameters/powertop-learn.$(OBJEXT)
-       -rm -f parameters/powertop-parameters.$(OBJEXT)
-       -rm -f parameters/powertop-persistent.$(OBJEXT)
-       -rm -f perf/powertop-perf.$(OBJEXT)
-       -rm -f perf/powertop-perf_bundle.$(OBJEXT)
-       -rm -f process/powertop-do_process.$(OBJEXT)
-       -rm -f process/powertop-interrupt.$(OBJEXT)
-       -rm -f process/powertop-powerconsumer.$(OBJEXT)
-       -rm -f process/powertop-process.$(OBJEXT)
-       -rm -f process/powertop-processdevice.$(OBJEXT)
-       -rm -f process/powertop-timer.$(OBJEXT)
-       -rm -f process/powertop-work.$(OBJEXT)
-       -rm -f report/powertop-report-formatter-base.$(OBJEXT)
-       -rm -f report/powertop-report-formatter-csv.$(OBJEXT)
-       -rm -f report/powertop-report-formatter-html.$(OBJEXT)
-       -rm -f report/powertop-report-maker.$(OBJEXT)
-       -rm -f report/powertop-report.$(OBJEXT)
-       -rm -f tuning/powertop-bluetooth.$(OBJEXT)
-       -rm -f tuning/powertop-cpufreq.$(OBJEXT)
-       -rm -f tuning/powertop-ethernet.$(OBJEXT)
-       -rm -f tuning/powertop-iw.$(OBJEXT)
-       -rm -f tuning/powertop-runtime.$(OBJEXT)
-       -rm -f tuning/powertop-tunable.$(OBJEXT)
-       -rm -f tuning/powertop-tuning.$(OBJEXT)
-       -rm -f tuning/powertop-tuningsysfs.$(OBJEXT)
-       -rm -f tuning/powertop-tuningusb.$(OBJEXT)
-       -rm -f tuning/powertop-wifi.$(OBJEXT)
+       -rm -f calibrate/*.$(OBJEXT)
+       -rm -f cpu/*.$(OBJEXT)
+       -rm -f cpu/rapl/*.$(OBJEXT)
+       -rm -f devices/*.$(OBJEXT)
+       -rm -f measurement/*.$(OBJEXT)
+       -rm -f parameters/*.$(OBJEXT)
+       -rm -f perf/*.$(OBJEXT)
+       -rm -f process/*.$(OBJEXT)
+       -rm -f report/*.$(OBJEXT)
+       -rm -f tuning/*.$(OBJEXT)
 
 distclean-compile:
        -rm -f *.tab.c
@@ -678,13 +713,17 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@cpu/$(DEPDIR)/powertop-cpu_core.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@cpu/$(DEPDIR)/powertop-cpu_linux.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@cpu/$(DEPDIR)/powertop-cpu_package.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@cpu/$(DEPDIR)/powertop-cpu_rapl_device.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@cpu/$(DEPDIR)/powertop-cpudevice.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@cpu/$(DEPDIR)/powertop-dram_rapl_device.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@cpu/$(DEPDIR)/powertop-intel_cpus.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@cpu/$(DEPDIR)/powertop-intel_gpu.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@cpu/rapl/$(DEPDIR)/powertop-rapl_interface.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@devices/$(DEPDIR)/powertop-ahci.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@devices/$(DEPDIR)/powertop-alsa.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@devices/$(DEPDIR)/powertop-backlight.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@devices/$(DEPDIR)/powertop-device.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@devices/$(DEPDIR)/powertop-gpu_rapl_device.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@devices/$(DEPDIR)/powertop-i915-gpu.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@devices/$(DEPDIR)/powertop-network.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@devices/$(DEPDIR)/powertop-rfkill.Po@am__quote@
@@ -695,7 +734,6 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@measurement/$(DEPDIR)/powertop-acpi.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@measurement/$(DEPDIR)/powertop-extech.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@measurement/$(DEPDIR)/powertop-measurement.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@measurement/$(DEPDIR)/powertop-power_supply.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@measurement/$(DEPDIR)/powertop-sysfs.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@parameters/$(DEPDIR)/powertop-learn.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@parameters/$(DEPDIR)/powertop-parameters.Po@am__quote@
@@ -1417,20 +1455,6 @@ measurement/powertop-measurement.obj: measurement/measurement.cpp
 @AMDEP_TRUE@@am__fastdepCXX_FALSE@     DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(powertop_CPPFLAGS) $(CPPFLAGS) $(powertop_CXXFLAGS) $(CXXFLAGS) -c -o measurement/powertop-measurement.obj `if test -f 'measurement/measurement.cpp'; then $(CYGPATH_W) 'measurement/measurement.cpp'; else $(CYGPATH_W) '$(srcdir)/measurement/measurement.cpp'; fi`
 
-measurement/powertop-power_supply.o: measurement/power_supply.cpp
-@am__fastdepCXX_TRUE@  $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(powertop_CPPFLAGS) $(CPPFLAGS) $(powertop_CXXFLAGS) $(CXXFLAGS) -MT measurement/powertop-power_supply.o -MD -MP -MF measurement/$(DEPDIR)/powertop-power_supply.Tpo -c -o measurement/powertop-power_supply.o `test -f 'measurement/power_supply.cpp' || echo '$(srcdir)/'`measurement/power_supply.cpp
-@am__fastdepCXX_TRUE@  $(AM_V_at)$(am__mv) measurement/$(DEPDIR)/powertop-power_supply.Tpo measurement/$(DEPDIR)/powertop-power_supply.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@     $(AM_V_CXX)source='measurement/power_supply.cpp' object='measurement/powertop-power_supply.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@     DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(powertop_CPPFLAGS) $(CPPFLAGS) $(powertop_CXXFLAGS) $(CXXFLAGS) -c -o measurement/powertop-power_supply.o `test -f 'measurement/power_supply.cpp' || echo '$(srcdir)/'`measurement/power_supply.cpp
-
-measurement/powertop-power_supply.obj: measurement/power_supply.cpp
-@am__fastdepCXX_TRUE@  $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(powertop_CPPFLAGS) $(CPPFLAGS) $(powertop_CXXFLAGS) $(CXXFLAGS) -MT measurement/powertop-power_supply.obj -MD -MP -MF measurement/$(DEPDIR)/powertop-power_supply.Tpo -c -o measurement/powertop-power_supply.obj `if test -f 'measurement/power_supply.cpp'; then $(CYGPATH_W) 'measurement/power_supply.cpp'; else $(CYGPATH_W) '$(srcdir)/measurement/power_supply.cpp'; fi`
-@am__fastdepCXX_TRUE@  $(AM_V_at)$(am__mv) measurement/$(DEPDIR)/powertop-power_supply.Tpo measurement/$(DEPDIR)/powertop-power_supply.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@     $(AM_V_CXX)source='measurement/power_supply.cpp' object='measurement/powertop-power_supply.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@     DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(powertop_CPPFLAGS) $(CPPFLAGS) $(powertop_CXXFLAGS) $(CXXFLAGS) -c -o measurement/powertop-power_supply.obj `if test -f 'measurement/power_supply.cpp'; then $(CYGPATH_W) 'measurement/power_supply.cpp'; else $(CYGPATH_W) '$(srcdir)/measurement/power_supply.cpp'; fi`
-
 measurement/powertop-acpi.o: measurement/acpi.cpp
 @am__fastdepCXX_TRUE@  $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(powertop_CPPFLAGS) $(CPPFLAGS) $(powertop_CXXFLAGS) $(CXXFLAGS) -MT measurement/powertop-acpi.o -MD -MP -MF measurement/$(DEPDIR)/powertop-acpi.Tpo -c -o measurement/powertop-acpi.o `test -f 'measurement/acpi.cpp' || echo '$(srcdir)/'`measurement/acpi.cpp
 @am__fastdepCXX_TRUE@  $(AM_V_at)$(am__mv) measurement/$(DEPDIR)/powertop-acpi.Tpo measurement/$(DEPDIR)/powertop-acpi.Po
@@ -1557,32 +1581,77 @@ cpu/powertop-intel_gpu.obj: cpu/intel_gpu.cpp
 @AMDEP_TRUE@@am__fastdepCXX_FALSE@     DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(powertop_CPPFLAGS) $(CPPFLAGS) $(powertop_CXXFLAGS) $(CXXFLAGS) -c -o cpu/powertop-intel_gpu.obj `if test -f 'cpu/intel_gpu.cpp'; then $(CYGPATH_W) 'cpu/intel_gpu.cpp'; else $(CYGPATH_W) '$(srcdir)/cpu/intel_gpu.cpp'; fi`
 
+cpu/rapl/powertop-rapl_interface.o: cpu/rapl/rapl_interface.cpp
+@am__fastdepCXX_TRUE@  $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(powertop_CPPFLAGS) $(CPPFLAGS) $(powertop_CXXFLAGS) $(CXXFLAGS) -MT cpu/rapl/powertop-rapl_interface.o -MD -MP -MF cpu/rapl/$(DEPDIR)/powertop-rapl_interface.Tpo -c -o cpu/rapl/powertop-rapl_interface.o `test -f 'cpu/rapl/rapl_interface.cpp' || echo '$(srcdir)/'`cpu/rapl/rapl_interface.cpp
+@am__fastdepCXX_TRUE@  $(AM_V_at)$(am__mv) cpu/rapl/$(DEPDIR)/powertop-rapl_interface.Tpo cpu/rapl/$(DEPDIR)/powertop-rapl_interface.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     $(AM_V_CXX)source='cpu/rapl/rapl_interface.cpp' object='cpu/rapl/powertop-rapl_interface.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(powertop_CPPFLAGS) $(CPPFLAGS) $(powertop_CXXFLAGS) $(CXXFLAGS) -c -o cpu/rapl/powertop-rapl_interface.o `test -f 'cpu/rapl/rapl_interface.cpp' || echo '$(srcdir)/'`cpu/rapl/rapl_interface.cpp
+
+cpu/rapl/powertop-rapl_interface.obj: cpu/rapl/rapl_interface.cpp
+@am__fastdepCXX_TRUE@  $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(powertop_CPPFLAGS) $(CPPFLAGS) $(powertop_CXXFLAGS) $(CXXFLAGS) -MT cpu/rapl/powertop-rapl_interface.obj -MD -MP -MF cpu/rapl/$(DEPDIR)/powertop-rapl_interface.Tpo -c -o cpu/rapl/powertop-rapl_interface.obj `if test -f 'cpu/rapl/rapl_interface.cpp'; then $(CYGPATH_W) 'cpu/rapl/rapl_interface.cpp'; else $(CYGPATH_W) '$(srcdir)/cpu/rapl/rapl_interface.cpp'; fi`
+@am__fastdepCXX_TRUE@  $(AM_V_at)$(am__mv) cpu/rapl/$(DEPDIR)/powertop-rapl_interface.Tpo cpu/rapl/$(DEPDIR)/powertop-rapl_interface.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     $(AM_V_CXX)source='cpu/rapl/rapl_interface.cpp' object='cpu/rapl/powertop-rapl_interface.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(powertop_CPPFLAGS) $(CPPFLAGS) $(powertop_CXXFLAGS) $(CXXFLAGS) -c -o cpu/rapl/powertop-rapl_interface.obj `if test -f 'cpu/rapl/rapl_interface.cpp'; then $(CYGPATH_W) 'cpu/rapl/rapl_interface.cpp'; else $(CYGPATH_W) '$(srcdir)/cpu/rapl/rapl_interface.cpp'; fi`
+
+cpu/powertop-cpu_rapl_device.o: cpu/cpu_rapl_device.cpp
+@am__fastdepCXX_TRUE@  $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(powertop_CPPFLAGS) $(CPPFLAGS) $(powertop_CXXFLAGS) $(CXXFLAGS) -MT cpu/powertop-cpu_rapl_device.o -MD -MP -MF cpu/$(DEPDIR)/powertop-cpu_rapl_device.Tpo -c -o cpu/powertop-cpu_rapl_device.o `test -f 'cpu/cpu_rapl_device.cpp' || echo '$(srcdir)/'`cpu/cpu_rapl_device.cpp
+@am__fastdepCXX_TRUE@  $(AM_V_at)$(am__mv) cpu/$(DEPDIR)/powertop-cpu_rapl_device.Tpo cpu/$(DEPDIR)/powertop-cpu_rapl_device.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     $(AM_V_CXX)source='cpu/cpu_rapl_device.cpp' object='cpu/powertop-cpu_rapl_device.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(powertop_CPPFLAGS) $(CPPFLAGS) $(powertop_CXXFLAGS) $(CXXFLAGS) -c -o cpu/powertop-cpu_rapl_device.o `test -f 'cpu/cpu_rapl_device.cpp' || echo '$(srcdir)/'`cpu/cpu_rapl_device.cpp
+
+cpu/powertop-cpu_rapl_device.obj: cpu/cpu_rapl_device.cpp
+@am__fastdepCXX_TRUE@  $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(powertop_CPPFLAGS) $(CPPFLAGS) $(powertop_CXXFLAGS) $(CXXFLAGS) -MT cpu/powertop-cpu_rapl_device.obj -MD -MP -MF cpu/$(DEPDIR)/powertop-cpu_rapl_device.Tpo -c -o cpu/powertop-cpu_rapl_device.obj `if test -f 'cpu/cpu_rapl_device.cpp'; then $(CYGPATH_W) 'cpu/cpu_rapl_device.cpp'; else $(CYGPATH_W) '$(srcdir)/cpu/cpu_rapl_device.cpp'; fi`
+@am__fastdepCXX_TRUE@  $(AM_V_at)$(am__mv) cpu/$(DEPDIR)/powertop-cpu_rapl_device.Tpo cpu/$(DEPDIR)/powertop-cpu_rapl_device.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     $(AM_V_CXX)source='cpu/cpu_rapl_device.cpp' object='cpu/powertop-cpu_rapl_device.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(powertop_CPPFLAGS) $(CPPFLAGS) $(powertop_CXXFLAGS) $(CXXFLAGS) -c -o cpu/powertop-cpu_rapl_device.obj `if test -f 'cpu/cpu_rapl_device.cpp'; then $(CYGPATH_W) 'cpu/cpu_rapl_device.cpp'; else $(CYGPATH_W) '$(srcdir)/cpu/cpu_rapl_device.cpp'; fi`
+
+cpu/powertop-dram_rapl_device.o: cpu/dram_rapl_device.cpp
+@am__fastdepCXX_TRUE@  $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(powertop_CPPFLAGS) $(CPPFLAGS) $(powertop_CXXFLAGS) $(CXXFLAGS) -MT cpu/powertop-dram_rapl_device.o -MD -MP -MF cpu/$(DEPDIR)/powertop-dram_rapl_device.Tpo -c -o cpu/powertop-dram_rapl_device.o `test -f 'cpu/dram_rapl_device.cpp' || echo '$(srcdir)/'`cpu/dram_rapl_device.cpp
+@am__fastdepCXX_TRUE@  $(AM_V_at)$(am__mv) cpu/$(DEPDIR)/powertop-dram_rapl_device.Tpo cpu/$(DEPDIR)/powertop-dram_rapl_device.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     $(AM_V_CXX)source='cpu/dram_rapl_device.cpp' object='cpu/powertop-dram_rapl_device.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(powertop_CPPFLAGS) $(CPPFLAGS) $(powertop_CXXFLAGS) $(CXXFLAGS) -c -o cpu/powertop-dram_rapl_device.o `test -f 'cpu/dram_rapl_device.cpp' || echo '$(srcdir)/'`cpu/dram_rapl_device.cpp
+
+cpu/powertop-dram_rapl_device.obj: cpu/dram_rapl_device.cpp
+@am__fastdepCXX_TRUE@  $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(powertop_CPPFLAGS) $(CPPFLAGS) $(powertop_CXXFLAGS) $(CXXFLAGS) -MT cpu/powertop-dram_rapl_device.obj -MD -MP -MF cpu/$(DEPDIR)/powertop-dram_rapl_device.Tpo -c -o cpu/powertop-dram_rapl_device.obj `if test -f 'cpu/dram_rapl_device.cpp'; then $(CYGPATH_W) 'cpu/dram_rapl_device.cpp'; else $(CYGPATH_W) '$(srcdir)/cpu/dram_rapl_device.cpp'; fi`
+@am__fastdepCXX_TRUE@  $(AM_V_at)$(am__mv) cpu/$(DEPDIR)/powertop-dram_rapl_device.Tpo cpu/$(DEPDIR)/powertop-dram_rapl_device.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     $(AM_V_CXX)source='cpu/dram_rapl_device.cpp' object='cpu/powertop-dram_rapl_device.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(powertop_CPPFLAGS) $(CPPFLAGS) $(powertop_CXXFLAGS) $(CXXFLAGS) -c -o cpu/powertop-dram_rapl_device.obj `if test -f 'cpu/dram_rapl_device.cpp'; then $(CYGPATH_W) 'cpu/dram_rapl_device.cpp'; else $(CYGPATH_W) '$(srcdir)/cpu/dram_rapl_device.cpp'; fi`
+
+devices/powertop-gpu_rapl_device.o: devices/gpu_rapl_device.cpp
+@am__fastdepCXX_TRUE@  $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(powertop_CPPFLAGS) $(CPPFLAGS) $(powertop_CXXFLAGS) $(CXXFLAGS) -MT devices/powertop-gpu_rapl_device.o -MD -MP -MF devices/$(DEPDIR)/powertop-gpu_rapl_device.Tpo -c -o devices/powertop-gpu_rapl_device.o `test -f 'devices/gpu_rapl_device.cpp' || echo '$(srcdir)/'`devices/gpu_rapl_device.cpp
+@am__fastdepCXX_TRUE@  $(AM_V_at)$(am__mv) devices/$(DEPDIR)/powertop-gpu_rapl_device.Tpo devices/$(DEPDIR)/powertop-gpu_rapl_device.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     $(AM_V_CXX)source='devices/gpu_rapl_device.cpp' object='devices/powertop-gpu_rapl_device.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(powertop_CPPFLAGS) $(CPPFLAGS) $(powertop_CXXFLAGS) $(CXXFLAGS) -c -o devices/powertop-gpu_rapl_device.o `test -f 'devices/gpu_rapl_device.cpp' || echo '$(srcdir)/'`devices/gpu_rapl_device.cpp
+
+devices/powertop-gpu_rapl_device.obj: devices/gpu_rapl_device.cpp
+@am__fastdepCXX_TRUE@  $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(powertop_CPPFLAGS) $(CPPFLAGS) $(powertop_CXXFLAGS) $(CXXFLAGS) -MT devices/powertop-gpu_rapl_device.obj -MD -MP -MF devices/$(DEPDIR)/powertop-gpu_rapl_device.Tpo -c -o devices/powertop-gpu_rapl_device.obj `if test -f 'devices/gpu_rapl_device.cpp'; then $(CYGPATH_W) 'devices/gpu_rapl_device.cpp'; else $(CYGPATH_W) '$(srcdir)/devices/gpu_rapl_device.cpp'; fi`
+@am__fastdepCXX_TRUE@  $(AM_V_at)$(am__mv) devices/$(DEPDIR)/powertop-gpu_rapl_device.Tpo devices/$(DEPDIR)/powertop-gpu_rapl_device.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     $(AM_V_CXX)source='devices/gpu_rapl_device.cpp' object='devices/powertop-gpu_rapl_device.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(powertop_CPPFLAGS) $(CPPFLAGS) $(powertop_CXXFLAGS) $(CXXFLAGS) -c -o devices/powertop-gpu_rapl_device.obj `if test -f 'devices/gpu_rapl_device.cpp'; then $(CYGPATH_W) 'devices/gpu_rapl_device.cpp'; else $(CYGPATH_W) '$(srcdir)/devices/gpu_rapl_device.cpp'; fi`
+
 mostlyclean-libtool:
        -rm -f *.lo
 
 clean-libtool:
        -rm -rf .libs _libs
 
-ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
-       list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
-       unique=`for i in $$list; do \
-           if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-         done | \
-         $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-             END { if (nonempty) { for (i in files) print i; }; }'`; \
-       mkid -fID $$unique
-tags: TAGS
-
-TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-               $(TAGS_FILES) $(LISP)
+ID: $(am__tagged_files)
+       $(am__define_uniq_tagged_files); mkid -fID $$unique
+tags: tags-am
+TAGS: tags
+
+tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
        set x; \
        here=`pwd`; \
-       list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-       unique=`for i in $$list; do \
-           if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-         done | \
-         $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-             END { if (nonempty) { for (i in files) print i; }; }'`; \
+       $(am__define_uniq_tagged_files); \
        shift; \
        if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
          test -n "$$unique" || unique=$$empty_fix; \
@@ -1594,15 +1663,11 @@ TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
              $$unique; \
          fi; \
        fi
-ctags: CTAGS
-CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-               $(TAGS_FILES) $(LISP)
-       list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-       unique=`for i in $$list; do \
-           if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-         done | \
-         $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-             END { if (nonempty) { for (i in files) print i; }; }'`; \
+ctags: ctags-am
+
+CTAGS: ctags
+ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+       $(am__define_uniq_tagged_files); \
        test -z "$(CTAGS_ARGS)$$unique" \
          || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
             $$unique
@@ -1611,6 +1676,21 @@ GTAGS:
        here=`$(am__cd) $(top_builddir) && pwd` \
          && $(am__cd) $(top_srcdir) \
          && gtags -i $(GTAGS_ARGS) "$$here"
+cscopelist: cscopelist-am
+
+cscopelist-am: $(am__tagged_files)
+       list='$(am__tagged_files)'; \
+       case "$(srcdir)" in \
+         [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+         *) sdir=$(subdir)/$(srcdir) ;; \
+       esac; \
+       for i in $$list; do \
+         if test -f "$$i"; then \
+           echo "$(subdir)/$$i"; \
+         else \
+           echo "$$sdir/$$i"; \
+         fi; \
+       done >> $(top_builddir)/cscope.files
 
 distclean-tags:
        -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
@@ -1685,6 +1765,8 @@ distclean-generic:
        -rm -f calibrate/$(am__dirstamp)
        -rm -f cpu/$(DEPDIR)/$(am__dirstamp)
        -rm -f cpu/$(am__dirstamp)
+       -rm -f cpu/rapl/$(DEPDIR)/$(am__dirstamp)
+       -rm -f cpu/rapl/$(am__dirstamp)
        -rm -f devices/$(DEPDIR)/$(am__dirstamp)
        -rm -f devices/$(am__dirstamp)
        -rm -f measurement/$(DEPDIR)/$(am__dirstamp)
@@ -1710,7 +1792,7 @@ clean-am: clean-generic clean-libtool clean-sbinPROGRAMS \
        mostlyclean-am
 
 distclean: distclean-am
-       -rm -rf ./$(DEPDIR) calibrate/$(DEPDIR) cpu/$(DEPDIR) devices/$(DEPDIR) measurement/$(DEPDIR) parameters/$(DEPDIR) perf/$(DEPDIR) process/$(DEPDIR) report/$(DEPDIR) tuning/$(DEPDIR)
+       -rm -rf ./$(DEPDIR) calibrate/$(DEPDIR) cpu/$(DEPDIR) cpu/rapl/$(DEPDIR) devices/$(DEPDIR) measurement/$(DEPDIR) parameters/$(DEPDIR) perf/$(DEPDIR) process/$(DEPDIR) report/$(DEPDIR) tuning/$(DEPDIR)
        -rm -f Makefile
 distclean-am: clean-am distclean-compile distclean-generic \
        distclean-tags
@@ -1756,7 +1838,7 @@ install-ps-am:
 installcheck-am:
 
 maintainer-clean: maintainer-clean-am
-       -rm -rf ./$(DEPDIR) calibrate/$(DEPDIR) cpu/$(DEPDIR) devices/$(DEPDIR) measurement/$(DEPDIR) parameters/$(DEPDIR) perf/$(DEPDIR) process/$(DEPDIR) report/$(DEPDIR) tuning/$(DEPDIR)
+       -rm -rf ./$(DEPDIR) calibrate/$(DEPDIR) cpu/$(DEPDIR) cpu/rapl/$(DEPDIR) devices/$(DEPDIR) measurement/$(DEPDIR) parameters/$(DEPDIR) perf/$(DEPDIR) process/$(DEPDIR) report/$(DEPDIR) tuning/$(DEPDIR)
        -rm -f Makefile
 maintainer-clean-am: distclean-am maintainer-clean-generic
 
@@ -1777,19 +1859,19 @@ uninstall-am: uninstall-sbinPROGRAMS
 
 .MAKE: all check install install-am install-strip
 
-.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
-       clean-libtool clean-sbinPROGRAMS ctags distclean \
-       distclean-compile distclean-generic distclean-libtool \
-       distclean-tags distdir dvi dvi-am html html-am info info-am \
-       install install-am install-data install-data-am install-dvi \
-       install-dvi-am install-exec install-exec-am install-html \
-       install-html-am install-info install-info-am install-man \
-       install-pdf install-pdf-am install-ps install-ps-am \
-       install-sbinPROGRAMS install-strip installcheck \
-       installcheck-am installdirs maintainer-clean \
+.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \
+       clean-libtool clean-sbinPROGRAMS cscopelist-am ctags ctags-am \
+       distclean distclean-compile distclean-generic \
+       distclean-libtool distclean-tags distdir dvi dvi-am html \
+       html-am info info-am install install-am install-data \
+       install-data-am install-dvi install-dvi-am install-exec \
+       install-exec-am install-html install-html-am install-info \
+       install-info-am install-man install-pdf install-pdf-am \
+       install-ps install-ps-am install-sbinPROGRAMS install-strip \
+       installcheck installcheck-am installdirs maintainer-clean \
        maintainer-clean-generic mostlyclean mostlyclean-compile \
        mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
-       tags uninstall uninstall-am uninstall-sbinPROGRAMS
+       tags tags-am uninstall uninstall-am uninstall-sbinPROGRAMS
 
 css.h: powertop.css
        $(SHELL) ./csstoh.sh powertop.css css.h
index 5457cf8..db368e0 100644 (file)
@@ -33,7 +33,6 @@
 #include <pthread.h>
 #include <math.h>
 #include <sys/types.h>
-#include <dirent.h>
 
 #include "../parameters/parameters.h"
 extern "C" {
@@ -85,45 +84,32 @@ static void restore_all_sysfs(void)
        set_wifi_power_saving("wlan0", wireless_PS);
 }
 
-static void find_all_usb(void)
+static void find_all_usb_callback(const char *d_name)
 {
-       struct dirent *entry;
-       DIR *dir;
        char filename[4096];
+       ifstream file;
 
-       dir = opendir("/sys/bus/usb/devices/");
-       if (!dir)
+       sprintf(filename, "/sys/bus/usb/devices/%s/power/active_duration", d_name);
+       if (access(filename, R_OK) != 0)
                return;
-       while (1) {
-               ifstream file;
-
-               entry = readdir(dir);
-
-               if (!entry)
-                       break;
-               if (entry->d_name[0] == '.')
-                       continue;
-
-               sprintf(filename, "/sys/bus/usb/devices/%s/power/active_duration", entry->d_name);
-               if (access(filename, R_OK)!=0)
-                       continue;
-
-               sprintf(filename, "/sys/bus/usb/devices/%s/power/idVendor", entry->d_name);
-               file.open(filename, ios::in);
-               if (file) {
-                       file.getline(filename, 4096);
-                       file.close();
-                       if (strcmp(filename, "1d6b")==0)
-                               continue;
-               }
 
-               sprintf(filename, "/sys/bus/usb/devices/%s/power/control", entry->d_name);
+       sprintf(filename, "/sys/bus/usb/devices/%s/power/idVendor", d_name);
+       file.open(filename, ios::in);
+       if (file) {
+               file.getline(filename, 4096);
+               file.close();
+               if (strcmp(filename, "1d6b") == 0)
+                       return;
+       }
 
-               save_sysfs(filename);
+       sprintf(filename, "/sys/bus/usb/devices/%s/power/control", d_name);
+       save_sysfs(filename);
+       usb_devices.push_back(filename);
+}
 
-               usb_devices.push_back(filename);
-       }
-       closedir(dir);
+static void find_all_usb(void)
+{
+       process_directory("/sys/bus/usb/devices/", find_all_usb_callback);
 }
 
 static void suspend_all_usb_devices(void)
@@ -134,33 +120,19 @@ static void suspend_all_usb_devices(void)
                write_sysfs(usb_devices[i], "auto\n");
 }
 
-
-static void find_all_rfkill(void)
+static void find_all_rfkill_callback(const char *d_name)
 {
-       struct dirent *entry;
-       DIR *dir;
        char filename[4096];
-
-       dir = opendir("/sys/class/rfkill/");
-       if (!dir)
+       sprintf(filename, "/sys/class/rfkill/%s/soft", d_name);
+       if (access(filename, R_OK) != 0)
                return;
-       while (1) {
-               entry = readdir(dir);
-
-               if (!entry)
-                       break;
-               if (entry->d_name[0] == '.')
-                       continue;
-
-               sprintf(filename, "/sys/class/rfkill/%s/soft", entry->d_name);
-               if (access(filename, R_OK)!=0)
-                       continue;
-
-               save_sysfs(filename);
+       save_sysfs(filename);
+       rfkill_devices.push_back(filename);
+}
 
-               rfkill_devices.push_back(filename);
-       }
-       closedir(dir);
+static void find_all_rfkill(void)
+{
+       process_directory("/sys/class/rfkill/", find_all_rfkill_callback);
 }
 
 static void rfkill_all_radios(void)
@@ -178,35 +150,22 @@ static void unrfkill_all_radios(void)
                write_sysfs(rfkill_devices[i], "0\n");
 }
 
-static void find_backlight(void)
+static void find_backlight_callback(const char *d_name)
 {
-       struct dirent *entry;
-       DIR *dir;
        char filename[4096];
-
-       dir = opendir("/sys/class/backlight/");
-       if (!dir)
+       sprintf(filename, "/sys/class/backlight/%s/brightness", d_name);
+       if (access(filename, R_OK) != 0)
                return;
-       while (1) {
-               entry = readdir(dir);
-
-               if (!entry)
-                       break;
-               if (entry->d_name[0] == '.')
-                       continue;
-
-               sprintf(filename, "/sys/class/backlight/%s/brightness", entry->d_name);
-               if (access(filename, R_OK)!=0)
-                       continue;
 
-               save_sysfs(filename);
-
-               backlight_devices.push_back(filename);
+       save_sysfs(filename);
+       backlight_devices.push_back(filename);
+       sprintf(filename, "/sys/class/backlight/%s/max_brightness", d_name);
+       blmax = read_sysfs(filename);
+}
 
-               sprintf(filename, "/sys/class/backlight/%s/max_brightness", entry->d_name);
-               blmax = read_sysfs(filename);
-       }
-       closedir(dir);
+static void find_backlight(void)
+{
+       process_directory("/sys/class/backlight/", find_backlight_callback);
 }
 
 static void lower_backlight(void)
@@ -217,34 +176,20 @@ static void lower_backlight(void)
                write_sysfs(backlight_devices[i], "0\n");
 }
 
-
-static void find_scsi_link(void)
+static void find_scsi_link_callback(const char *d_name)
 {
-       struct dirent *entry;
-       DIR *dir;
        char filename[4096];
-
-       dir = opendir("/sys/class/scsi_host/");
-       if (!dir)
+       sprintf(filename, "/sys/class/scsi_host/%s/link_power_management_policy", d_name);
+       if (access(filename, R_OK)!=0)
                return;
-       while (1) {
-               entry = readdir(dir);
-
-               if (!entry)
-                       break;
-               if (entry->d_name[0] == '.')
-                       continue;
-
-               sprintf(filename, "/sys/class/scsi_host/%s/link_power_management_policy", entry->d_name);
-               if (access(filename, R_OK)!=0)
-                       continue;
 
-               save_sysfs(filename);
-
-               scsi_link_devices.push_back(filename);
+       save_sysfs(filename);
+       scsi_link_devices.push_back(filename);
+}
 
-       }
-       closedir(dir);
+static void find_scsi_link(void)
+{
+       process_directory("/sys/class/scsi_host/", find_scsi_link_callback);
 }
 
 static void set_scsi_link(const char *state)
index 1eb340c..4a7e197 100644 (file)
@@ -31,6 +31,8 @@
 #include <unistd.h>
 #include "cpu.h"
 #include "cpudevice.h"
+#include "cpu_rapl_device.h"
+#include "dram_rapl_device.h"
 #include "intel_cpus.h"
 #include "../parameters/parameters.h"
 
@@ -59,30 +61,14 @@ static class abstract_cpu * new_package(int package, int cpu, char * vendor, int
 {
        class abstract_cpu *ret = NULL;
        class cpudevice *cpudev;
+       class cpu_rapl_device *cpu_rapl_dev;
+       class dram_rapl_device *dram_rapl_dev;
+
        char packagename[128];
-       if (strcmp(vendor, "GenuineIntel") == 0) {
+       if (strcmp(vendor, "GenuineIntel") == 0)
                if (family == 6)
-                       switch (model) {
-                       case 0x1A:      /* Core i7, Xeon 5500 series */
-                       case 0x1E:      /* Core i7 and i5 Processor - Lynnfield Jasper Forest */
-                       case 0x1F:      /* Core i7 and i5 Processor - Nehalem */
-                       case 0x2E:      /* Nehalem-EX Xeon */
-                       case 0x2F:      /* Westmere-EX Xeon */
-                       case 0x25:      /* Westmere */
-                       case 0x27:      /* Medfield Atom*/
-                       case 0x2C:      /* Westmere */
-                               ret = new class nhm_package;
-                               break;
-                       case 0x2A:      /* SNB */
-                       case 0x2D:      /* SNB Xeon */
-                       case 0x3A:      /* IVB */
-                       case 0x3C:
-                       case 0x3D:      /* IVB Xeon */
-                               has_c2c7_res = 1;
-                               ret = new class nhm_package;
-                               break;
-                       }
-       }
+                       if (is_supported_intel_cpu(model))
+                               ret = new class nhm_package(model);
 
        if (!ret)
                ret = new class cpu_package;
@@ -94,6 +80,17 @@ static class abstract_cpu * new_package(int package, int cpu, char * vendor, int
        sprintf(packagename, _("cpu package %i"), cpu);
        cpudev = new class cpudevice(_("cpu package"), packagename, ret);
        all_devices.push_back(cpudev);
+
+       sprintf(packagename, _("cpu rapl package %i"), cpu);
+       cpu_rapl_dev = new class cpu_rapl_device(cpudev, _("cpu rapl package"), packagename, ret);
+       if (cpu_rapl_dev->device_present())
+               all_devices.push_back(cpu_rapl_dev);
+
+       sprintf(packagename, _("dram rapl package %i"), cpu);
+       dram_rapl_dev = new class dram_rapl_device(cpudev, _("dram rapl package"), packagename, ret);
+       if (dram_rapl_dev->device_present())
+               all_devices.push_back(dram_rapl_dev);
+
        return ret;
 }
 
@@ -101,24 +98,10 @@ static class abstract_cpu * new_core(int core, int cpu, char * vendor, int famil
 {
        class abstract_cpu *ret = NULL;
 
-       if (strcmp(vendor, "GenuineIntel") == 0) {
+       if (strcmp(vendor, "GenuineIntel") == 0)
                if (family == 6)
-                       switch (model) {
-                       case 0x1A:      /* Core i7, Xeon 5500 series */
-                       case 0x1E:      /* Core i7 and i5 Processor - Lynnfield Jasper Forest */
-                       case 0x1F:      /* Core i7 and i5 Processor - Nehalem */
-                       case 0x2E:      /* Nehalem-EX Xeon */
-                       case 0x2F:      /* Westmere-EX Xeon */
-                       case 0x25:      /* Westmere */
-                       case 0x2C:      /* Westmere */
-                       case 0x2A:      /* SNB */
-                       case 0x2D:      /* SNB Xeon */
-                       case 0x3A:      /* IVB */
-                       case 0x3C:
-                       case 0x3D:      /* IVB Xeon */
-                               ret = new class nhm_core;
-                       }
-       }
+                       if (is_supported_intel_cpu(model))
+                               ret = new class nhm_core(model);
 
        if (!ret)
                ret = new class cpu_core;
@@ -144,24 +127,10 @@ static class abstract_cpu * new_cpu(int number, char * vendor, int family, int m
 {
        class abstract_cpu * ret = NULL;
 
-       if (strcmp(vendor, "GenuineIntel") == 0) {
+       if (strcmp(vendor, "GenuineIntel") == 0)
                if (family == 6)
-                       switch (model) {
-                       case 0x1A:      /* Core i7, Xeon 5500 series */
-                       case 0x1E:      /* Core i7 and i5 Processor - Lynnfield Jasper Forest */
-                       case 0x1F:      /* Core i7 and i5 Processor - Nehalem */
-                       case 0x2E:      /* Nehalem-EX Xeon */
-                       case 0x2F:      /* Westmere-EX Xeon */
-                       case 0x25:      /* Westmere */
-                       case 0x2C:      /* Westmere */
-                       case 0x2A:      /* SNB */
-                       case 0x2D:      /* SNB Xeon */
-                       case 0x3A:      /* IVB */
-                       case 0x3C:
-                       case 0x3D:      /* IVB Xeon */
+                       if (is_supported_intel_cpu(model))
                                ret = new class nhm_cpu;
-                       }
-       }
 
        if (!ret)
                ret = new class cpu_linux;
@@ -399,20 +368,64 @@ static const char * fill_state_line(class abstract_cpu *acpu, int state, int lin
        return "-EINVAL";
 }
 
+static int get_cstates_num(void)
+{
+       unsigned int package, core, cpu;
+       class abstract_cpu *_package, * _core, * _cpu;
+       unsigned int i;
+       int cstates_num;
+
+       for (package = 0, cstates_num = 0;
+                       package < system_level.children.size(); package++) {
+               _package = system_level.children[package];
+               if (_package == NULL)
+                       continue;
+
+               /* walk package cstates and get largest cstates number */
+               for (i = 0; i < _package->cstates.size(); i++)
+                       cstates_num = std::max(cstates_num,
+                                               (_package->cstates[i])->line_level);
+
+               /*
+                * for each core in this package, walk core cstates and get
+                * largest cstates number
+                */
+               for (core = 0; core < _package->children.size(); core++) {
+                       _core = _package->children[core];
+                       if (_core == NULL)
+                               continue;
+
+                       for (i = 0; i <  _core->cstates.size(); i++)
+                               cstates_num = std::max(cstates_num,
+                                               (_core->cstates[i])->line_level);
+
+                       /*
+                        * for each core, walk the logical cpus in case
+                        * there is are more linux cstates than hw cstates
+                        */
+                        for (cpu = 0; cpu < _core->children.size(); cpu++) {
+                               _cpu = _core->children[cpu];
+                               if (_cpu == NULL)
+                                       continue;
+
+                               for (i = 0; i < _cpu->cstates.size(); i++)
+                                       cstates_num = std::max(cstates_num,
+                                               (_cpu->cstates[i])->line_level);
+                       }
+               }
+       }
+
+       return cstates_num;
+}
+
 void report_display_cpu_cstates(void)
 {
        char buffer[512], buffer2[512];
        unsigned int package, core, cpu;
        int line, cstates_num;
        class abstract_cpu *_package, * _core, * _cpu;
-       unsigned int i, j;
 
-       for (i = 0, cstates_num = 0; i < all_cpus.size(); i++) {
-               if (all_cpus[i])
-                       for (j = 0; j < all_cpus[i]->cstates.size(); j++)
-                               cstates_num = std::max(cstates_num,
-                                               (all_cpus[i]->cstates[j])->line_level);
-       }
+       cstates_num = get_cstates_num();
 
        report.begin_section(SECTION_CPUIDLE);
        report.add_header("Processor Idle state report");
@@ -641,17 +654,15 @@ void impl_w_display_cpu_states(int state)
        int line, loop, cstates_num, pstates_num;
        class abstract_cpu *_package, * _core, * _cpu;
        int ctr = 0;
-       unsigned int i, j;
+       unsigned int i;
+
+       cstates_num = get_cstates_num();
 
-       for (i = 0, cstates_num = 0, pstates_num = 0; i < all_cpus.size(); i++) {
+       for (i = 0, pstates_num = 0; i < all_cpus.size(); i++) {
                if (!all_cpus[i])
                        continue;
 
                pstates_num = std::max<int>(pstates_num, all_cpus[i]->pstates.size());
-
-               for (j = 0; j < all_cpus[i]->cstates.size(); j++)
-                       cstates_num = std::max(cstates_num,
-                                               (all_cpus[i]->cstates[j])->line_level);
        }
 
        if (state == PSTATE) {
@@ -797,7 +808,7 @@ void perf_power_bundle::handle_trace_point(void *trace, int cpunr, uint64_t time
                         exit(-1);
                 }
 
-               if (val == 4294967295)
+               if (val == (unsigned int)-1)
                        cpu->go_unidle(time);
                else
                        cpu->go_idle(time);
index a863b49..18ebeb7 100644 (file)
@@ -105,6 +105,7 @@ public:
        class abstract_cpu *parent;
 
 
+       int     get_first_cpu() { return first_cpu; }
        void    set_number(int _number, int cpu) {this->number = _number; this->first_cpu = cpu;};
        void    set_type(const char* _name) {this->name = _name;};
        int     get_number(void) { return number; };
diff --git a/src/cpu/cpu_rapl_device.cpp b/src/cpu/cpu_rapl_device.cpp
new file mode 100644 (file)
index 0000000..be10d9e
--- /dev/null
@@ -0,0 +1,74 @@
+/*
+ * Copyright 2010, 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
+ * or just google for it.
+ *
+ * Authors:
+ *     Srinivas Pandruvada<Srinivas.Pandruvada@linux.intel.com>
+ */
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+#include "../parameters/parameters.h"
+#include "cpu_rapl_device.h"
+
+cpu_rapl_device::cpu_rapl_device(cpudevice *parent, const char *classname, const char *dev_name, class abstract_cpu *_cpu)
+       : cpudevice(classname, dev_name, _cpu),
+         device_valid(false)
+{
+       if (_cpu)
+               rapl = new c_rapl_interface(cpu->get_first_cpu());
+       else
+               rapl = new c_rapl_interface(0);
+       last_time = time(NULL);
+       if (rapl->pp0_domain_present()) {
+               device_valid = true;
+               parent->add_child(this);
+               rapl->get_pp0_energy_status(&last_energy);
+       }
+}
+
+void cpu_rapl_device::start_measurement(void)
+{
+       last_time = time(NULL);
+
+       rapl->get_pp0_energy_status(&last_energy);
+}
+
+void cpu_rapl_device::end_measurement(void)
+{
+       time_t          curr_time = time(NULL);
+       double energy;
+
+       consumed_power = 0.0;
+       if ((curr_time - last_time) > 0) {
+               rapl->get_pp0_energy_status(&energy);
+               consumed_power = (energy-last_energy)/(curr_time-last_time);
+               last_energy = energy;
+               last_time = curr_time;
+       }
+}
+
+double cpu_rapl_device::power_usage(struct result_bundle *result, struct parameter_bundle *bundle)
+{
+       if (rapl->pp0_domain_present())
+               return consumed_power;
+       else
+               return 0.0;
+}
diff --git a/src/cpu/cpu_rapl_device.h b/src/cpu/cpu_rapl_device.h
new file mode 100644 (file)
index 0000000..407f2da
--- /dev/null
@@ -0,0 +1,57 @@
+/*
+ * Copyright 2010, 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
+ * or just google for it.
+ *
+ * Authors:
+ *     Srinivas Pandruvada <Srinivas.Pandruvada@linux.intel.com>
+ */
+#ifndef _INCLUDE_GUARD_CPU_RAPL_DEVICE_H
+#define _INCLUDE_GUARD_CPU_RAPL_DEVICE_H
+
+#include <vector>
+#include <string>
+
+using namespace std;
+
+#include <sys/time.h>
+#include "cpudevice.h"
+#include "rapl/rapl_interface.h"
+
+class cpu_rapl_device: public cpudevice {
+
+       c_rapl_interface *rapl;
+       time_t          last_time;
+       double          last_energy;
+       double          consumed_power;
+       bool            device_valid;
+
+public:
+       cpu_rapl_device(cpudevice *parent, const char *classname = "cpu_core", const char *device_name = "cpu_core", class abstract_cpu *_cpu = NULL);
+       ~cpu_rapl_device() { delete rapl; }
+       virtual const char * device_name(void) {return "CPU core";};
+       bool device_present() { return device_valid;}
+       virtual double power_usage(struct result_bundle *result, struct parameter_bundle *bundle);
+       virtual void start_measurement(void);
+       virtual void end_measurement(void);
+
+};
+
+
+#endif
index 48fbcf5..371d8a8 100644 (file)
@@ -40,12 +40,20 @@ cpudevice::cpudevice(const char *classname, const char *dev_name, class abstract
        r_consumption_index = get_result_index("cpu-consumption");;
 }
 
+const char * cpudevice::device_name(void)
+{
+       if (child_devices.size())
+               return "CPU misc";
+       else
+               return "CPU use";
+}
 
 double cpudevice::power_usage(struct result_bundle *result, struct parameter_bundle *bundle)
 {
        double power;
        double factor;
        double _utilization;
+       double child_power;
 
        power = 0;
        factor = get_parameter_value(wake_index, bundle);
@@ -58,6 +66,12 @@ double cpudevice::power_usage(struct result_bundle *result, struct parameter_bun
 
        power += _utilization * factor;
 
+       for (unsigned int i = 0; i < child_devices.size(); ++i) {
+               child_power = child_devices[i]->power_usage(result, bundle);
+               if ((power - child_power) > 0.0)
+                       power -= child_power;
+       }
+
        return power;
 }
 
index 6a5636f..841a101 100644 (file)
@@ -34,6 +34,7 @@ using namespace std;
 #include "cpu.h"
 
 class cpudevice: public device {
+protected:
        char _class[128];
        char _cpuname[128];
 
@@ -44,15 +45,18 @@ class cpudevice: public device {
        int r_wake_index;
        int r_consumption_index;
 
+       vector<device *>child_devices;
+
 public:
        cpudevice(const char *classname = "cpu", const char *device_name = "cpu0", class abstract_cpu *_cpu = NULL);
        virtual const char * class_name(void) { return _class;};
 
-       virtual const char * device_name(void) {return "CPU use";};
+       virtual const char * device_name(void);
 
        virtual double power_usage(struct result_bundle *result, struct parameter_bundle *bundle);
        virtual bool show_in_list(void) {return false;};
        virtual double  utilization(void); /* percentage */
+       void add_child(device *dev_ptr) { child_devices.push_back(dev_ptr);}
 };
 
 
diff --git a/src/cpu/dram_rapl_device.cpp b/src/cpu/dram_rapl_device.cpp
new file mode 100644 (file)
index 0000000..fd31cb5
--- /dev/null
@@ -0,0 +1,75 @@
+/*
+ * Copyright 2010, 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
+ * or just google for it.
+ *
+ * Authors:
+ *     Srinivas Pandruvada <Srinivas.Pandruvada@linux.intel.com>
+ */
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+#include "../parameters/parameters.h"
+#include "dram_rapl_device.h"
+
+
+dram_rapl_device::dram_rapl_device(cpudevice *parent, const char *classname, const char *dev_name, class abstract_cpu *_cpu)
+       : cpudevice(classname, dev_name, _cpu),
+         device_valid(false)
+{
+       if (_cpu)
+               rapl = new c_rapl_interface(cpu->get_first_cpu());
+       else
+               rapl = new c_rapl_interface(0);
+       last_time = time(NULL);
+       if (rapl->dram_domain_present()) {
+               device_valid = true;
+               parent->add_child(this);
+               rapl->get_dram_energy_status(&last_energy);
+       }
+}
+
+void dram_rapl_device::start_measurement(void)
+{
+       last_time = time(NULL);
+
+       rapl->get_dram_energy_status(&last_energy);
+}
+
+void dram_rapl_device::end_measurement(void)
+{
+       time_t          curr_time = time(NULL);
+       double energy;
+
+       consumed_power = 0.0;
+       if ((curr_time - last_time) > 0) {
+               rapl->get_dram_energy_status(&energy);
+               consumed_power = (energy-last_energy)/(curr_time-last_time);
+               last_energy = energy;
+               last_time = curr_time;
+       }
+}
+
+double dram_rapl_device::power_usage(struct result_bundle *result, struct parameter_bundle *bundle)
+{
+       if (rapl->dram_domain_present())
+               return consumed_power;
+       else
+               return 0.0;
+}
diff --git a/src/cpu/dram_rapl_device.h b/src/cpu/dram_rapl_device.h
new file mode 100644 (file)
index 0000000..dc53094
--- /dev/null
@@ -0,0 +1,57 @@
+/*
+ * Copyright 2010, 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
+ * or just google for it.
+ *
+ * Authors:
+ *     Srinivas Pandruvada <Srinivas.Pandruvada@linux.intel.com>
+ */
+#ifndef _INCLUDE_GUARD_DRAM_RAPL_DEVICE_H
+#define _INCLUDE_GUARD_DRAM_RAPL_DEVICE_H
+
+#include <vector>
+#include <string>
+
+using namespace std;
+
+#include <sys/time.h>
+#include "cpudevice.h"
+#include "rapl/rapl_interface.h"
+
+class dram_rapl_device: public cpudevice {
+
+       c_rapl_interface *rapl;
+       time_t          last_time;
+       double          last_energy;
+       double          consumed_power;
+       bool            device_valid;
+
+public:
+       dram_rapl_device(cpudevice *parent, const char *classname = "dram_core", const char *device_name = "dram_core", class abstract_cpu *_cpu = NULL);
+       ~dram_rapl_device() { delete rapl; }
+       virtual const char * device_name(void) {return "DRAM";};
+       bool device_present() { return device_valid;}
+       virtual double power_usage(struct result_bundle *result, struct parameter_bundle *bundle);
+       void start_measurement(void);
+       void end_measurement(void);
+
+};
+
+
+#endif
index 2b78d31..394ddd4 100644 (file)
 #include "../parameters/parameters.h"
 #include "../display.h"
 
+static int intel_cpu_models[] = {
+       0x1A,   /* Core i7, Xeon 5500 series */
+       0x1E,   /* Core i7 and i5 Processor - Lynnfield Jasper Forest */
+       0x1F,   /* Core i7 and i5 Processor - Nehalem */
+       0x2E,   /* Nehalem-EX Xeon */
+       0x2F,   /* Westmere-EX Xeon */
+       0x25,   /* Westmere */
+       0x27,   /* Medfield Atom*/
+       0x2C,   /* Westmere */
+       0x2A,   /* SNB */
+       0x2D,   /* SNB Xeon */
+       0x3A,   /* IVB */
+       0x3C,
+       0x3D,   /* IVB Xeon */
+       0x37,   /* BYT-M */
+       0x45,   /* HSW-ULT */
+       0       /* last entry must be zero */
+};
+
+int is_supported_intel_cpu(int model)
+{
+       int i;
 
-int has_c2c7_res;
-
+       for (i = 0; intel_cpu_models[i] != 0; i++)
+               if (model == intel_cpu_models[i])
+                       return 1;
 
+       return 0;
+}
 
 static uint64_t get_msr(int cpu, uint64_t offset)
 {
        ssize_t retval;
        uint64_t msr;
-       int fd;
-       char msr_path[256];
-
-       fd = sprintf(msr_path, "/dev/cpu/%d/msr", cpu);
-
-       if (access(msr_path, R_OK) != 0){
-               fd = sprintf(msr_path, "/dev/msr%d", cpu);
-
-               if (access(msr_path, R_OK) != 0){
-                       fprintf(stderr, _("msr reg not found"));
-                       exit(-2);
-               }
-       }
 
-       fd = open(msr_path, O_RDONLY);
-
-       retval = pread(fd, &msr, sizeof msr, offset);
-       if (retval != sizeof msr) {
+       retval = read_msr(cpu, offset, &msr);
+       if (retval < 0) {
                reset_display();
-               fprintf(stderr, _("pread cpu%d 0x%llx : "), cpu, (unsigned long long)offset);
+               fprintf(stderr, _("read_msr cpu%d 0x%llx : "), cpu, (unsigned long long)offset);
                fprintf(stderr, "%s\n", strerror(errno));
                exit(-2);
        }
-       close(fd);
+
        return msr;
 }
 
+nhm_core::nhm_core(int model)
+{
+       has_c2c7_res = 0;
+
+       switch(model) {
+               case 0x2A:      /* SNB */
+               case 0x2D:      /* SNB Xeon */
+               case 0x3A:      /* IVB */
+               case 0x3C:
+               case 0x3D:      /* IVB Xeon */
+               case 0x45:      /* Next Gen Intel Core Processor */
+                       has_c2c7_res = 1;
+       }
+
+       /* BYT-M does not support C3/C4 */
+       if (model == 0x37) {
+               has_c3_res = 0;
+               has_c1_res = 1;
+       } else {
+               has_c3_res = 1;
+               has_c1_res = 0;
+       }
+}
+
 void nhm_core::measurement_start(void)
 {
        ifstream file;
@@ -86,15 +120,21 @@ void nhm_core::measurement_start(void)
 
        last_stamp = 0;
 
-       c3_before    = get_msr(first_cpu, MSR_CORE_C3_RESIDENCY);
+       if (this->has_c1_res)
+               c1_before = get_msr(first_cpu, MSR_CORE_C1_RESIDENCY);
+       if (this->has_c3_res)
+               c3_before    = get_msr(first_cpu, MSR_CORE_C3_RESIDENCY);
        c6_before    = get_msr(first_cpu, MSR_CORE_C6_RESIDENCY);
-       if (has_c2c7_res)
+       if (this->has_c2c7_res)
                c7_before    = get_msr(first_cpu, MSR_CORE_C7_RESIDENCY);
        tsc_before   = get_msr(first_cpu, MSR_TSC);
 
-       insert_cstate("core c3", "C3 (cc3)", 0, c3_before, 1);
+       if (this->has_c1_res)
+               insert_cstate("core c1", "C1 (cc1)", 0, c1_before, 1);
+       if (this->has_c3_res)
+               insert_cstate("core c3", "C3 (cc3)", 0, c3_before, 1);
        insert_cstate("core c6", "C6 (cc6)", 0, c6_before, 1);
-       if (has_c2c7_res) {
+       if (this->has_c2c7_res) {
                insert_cstate("core c7", "C7 (cc7)", 0, c7_before, 1);
        }
 
@@ -124,17 +164,21 @@ void nhm_core::measurement_end(void)
        uint64_t time_delta;
        double ratio;
 
-       c3_after    = get_msr(first_cpu, MSR_CORE_C3_RESIDENCY);
+       if (this->has_c1_res)
+               c1_after = get_msr(first_cpu, MSR_CORE_C1_RESIDENCY);
+       if (this->has_c3_res)
+               c3_after    = get_msr(first_cpu, MSR_CORE_C3_RESIDENCY);
        c6_after    = get_msr(first_cpu, MSR_CORE_C6_RESIDENCY);
-       if (has_c2c7_res)
+       if (this->has_c2c7_res)
                c7_after    = get_msr(first_cpu, MSR_CORE_C7_RESIDENCY);
        tsc_after   = get_msr(first_cpu, MSR_TSC);
 
-
-
-       finalize_cstate("core c3", 0, c3_after, 1);
+       if (this->has_c1_res)
+               finalize_cstate("core c1", 0, c1_after, 1);
+       if (this->has_c3_res)
+               finalize_cstate("core c3", 0, c3_after, 1);
        finalize_cstate("core c6", 0, c6_after, 1);
-       if (has_c2c7_res)
+       if (this->has_c2c7_res)
                finalize_cstate("core c7", 0, c7_after, 1);
 
        gettimeofday(&stamp_after, NULL);
@@ -209,6 +253,33 @@ char * nhm_core::fill_pstate_line(int line_nr, char *buffer)
        return buffer;
 }
 
+nhm_package::nhm_package(int model)
+{
+       has_c8c9c10_res = 0;
+       has_c2c7_res = 0;
+
+       switch(model) {
+               case 0x2A:      /* SNB */
+               case 0x2D:      /* SNB Xeon */
+               case 0x3A:      /* IVB */
+               case 0x3C:
+               case 0x37:
+               case 0x3D:      /* IVB Xeon */
+               case 0x45:
+                       has_c2c7_res = 1;
+       }
+
+       /* BYT-M doesn't have C3 */
+       if (model == 0x37)
+               has_c3_res = 0;
+       else
+               has_c3_res = 1;
+
+       /* Haswell-ULT has C8/9/10*/
+       if (model == 0x45)
+               has_c8c9c10_res = 1;
+}
+
 char * nhm_package::fill_pstate_line(int line_nr, char *buffer)
 {
        buffer[0] = 0;
@@ -242,21 +313,34 @@ void nhm_package::measurement_start(void)
 
        last_stamp = 0;
 
-       if (has_c2c7_res)
+       if (this->has_c2c7_res)
                c2_before    = get_msr(number, MSR_PKG_C2_RESIDENCY);
-       c3_before    = get_msr(number, MSR_PKG_C3_RESIDENCY);
+
+       if (this->has_c3_res)
+               c3_before    = get_msr(number, MSR_PKG_C3_RESIDENCY);
        c6_before    = get_msr(number, MSR_PKG_C6_RESIDENCY);
-       if (has_c2c7_res)
+       if (this->has_c2c7_res)
                c7_before    = get_msr(number, MSR_PKG_C7_RESIDENCY);
+       if (this->has_c8c9c10_res) {
+               c8_before    = get_msr(number, MSR_PKG_C8_RESIDENCY);
+               c9_before    = get_msr(number, MSR_PKG_C9_RESIDENCY);
+               c10_before    = get_msr(number, MSR_PKG_C10_RESIDENCY);
+       }
        tsc_before   = get_msr(first_cpu, MSR_TSC);
 
-       if (has_c2c7_res)
+       if (this->has_c2c7_res)
                insert_cstate("pkg c2", "C2 (pc2)", 0, c2_before, 1);
 
-       insert_cstate("pkg c3", "C3 (pc3)", 0, c3_before, 1);
+       if (this->has_c3_res)
+               insert_cstate("pkg c3", "C3 (pc3)", 0, c3_before, 1);
        insert_cstate("pkg c6", "C6 (pc6)", 0, c6_before, 1);
-       if (has_c2c7_res)
+       if (this->has_c2c7_res)
                insert_cstate("pkg c7", "C7 (pc7)", 0, c7_before, 1);
+       if (this->has_c8c9c10_res) {
+               insert_cstate("pkg c8", "C8 (pc8)", 0, c8_before, 1);
+               insert_cstate("pkg c9", "C9 (pc9)", 0, c9_before, 1);
+               insert_cstate("pkg c10", "C10 (pc10)", 0, c10_before, 1);
+       }
 }
 
 void nhm_package::measurement_end(void)
@@ -270,12 +354,19 @@ void nhm_package::measurement_end(void)
                        children[i]->wiggle();
 
 
-       if (has_c2c7_res)
+       if (this->has_c2c7_res)
                c2_after    = get_msr(number, MSR_PKG_C2_RESIDENCY);
-       c3_after    = get_msr(number, MSR_PKG_C3_RESIDENCY);
+
+       if (this->has_c3_res)
+               c3_after    = get_msr(number, MSR_PKG_C3_RESIDENCY);
        c6_after    = get_msr(number, MSR_PKG_C6_RESIDENCY);
-       if (has_c2c7_res)
+       if (this->has_c2c7_res)
                c7_after    = get_msr(number, MSR_PKG_C7_RESIDENCY);
+       if (has_c8c9c10_res) {
+               c8_after = get_msr(number, MSR_PKG_C8_RESIDENCY);
+               c9_after = get_msr(number, MSR_PKG_C9_RESIDENCY);
+               c10_after = get_msr(number, MSR_PKG_C10_RESIDENCY);
+       }
        tsc_after   = get_msr(first_cpu, MSR_TSC);
 
        gettimeofday(&stamp_after, NULL);
@@ -283,12 +374,19 @@ void nhm_package::measurement_end(void)
        time_factor = 1000000.0 * (stamp_after.tv_sec - stamp_before.tv_sec) + stamp_after.tv_usec - stamp_before.tv_usec;
 
 
-       if (has_c2c7_res)
+       if (this->has_c2c7_res)
                finalize_cstate("pkg c2", 0, c2_after, 1);
-       finalize_cstate("pkg c3", 0, c3_after, 1);
+
+       if (this->has_c3_res)
+               finalize_cstate("pkg c3", 0, c3_after, 1);
        finalize_cstate("pkg c6", 0, c6_after, 1);
-       if (has_c2c7_res)
+       if (this->has_c2c7_res)
                finalize_cstate("pkg c7", 0, c7_after, 1);
+       if (has_c8c9c10_res) {
+               finalize_cstate("pkg c8", 0, c8_after, 1);
+               finalize_cstate("pkg c9", 0, c9_after, 1);
+               finalize_cstate("pkg c10", 0, c10_after, 1);
+       }
 
        for (i = 0; i < children.size(); i++)
                if (children[i])
index a51a6d1..57afd8a 100644 (file)
 #define MSR_PKG_C3_RESIDENCY           0x3F8
 #define MSR_PKG_C6_RESIDENCY           0x3F9
 #define MSR_PKG_C7_RESIDENCY           0x3FA
+#define MSR_PKG_C8_RESIDENCY           0x630
+#define MSR_PKG_C9_RESIDENCY           0x631
+#define MSR_PKG_C10_RESIDENCY          0x632
+#define MSR_CORE_C1_RESIDENCY          0x660
 #define MSR_CORE_C3_RESIDENCY          0x3FC
 #define MSR_CORE_C6_RESIDENCY          0x3FD
 #define MSR_CORE_C7_RESIDENCY          0x3FE
 
-
 class nhm_package: public cpu_package
 {
 private:
@@ -49,11 +52,18 @@ private:
        uint64_t        c3_before, c3_after;
        uint64_t        c6_before, c6_after;
        uint64_t        c7_before, c7_after;
+       uint64_t        c8_before, c8_after;
+       uint64_t        c9_before, c9_after;
+       uint64_t        c10_before, c10_after;
        uint64_t        tsc_before, tsc_after;
 
        uint64_t        last_stamp;
        uint64_t        total_stamp;
 public:
+       int             has_c2c7_res;
+       int             has_c3_res;
+       int             has_c8c9c10_res;
+       nhm_package(int model);
        virtual void    measurement_start(void);
        virtual void    measurement_end(void);
        virtual int     can_collapse(void) { return 0;};
@@ -64,6 +74,7 @@ public:
 class nhm_core: public cpu_core
 {
 private:
+       uint64_t        c1_before, c1_after;
        uint64_t        c3_before, c3_after;
        uint64_t        c6_before, c6_after;
        uint64_t        c7_before, c7_after;
@@ -72,6 +83,10 @@ private:
        uint64_t        last_stamp;
        uint64_t        total_stamp;
 public:
+       int             has_c1_res;
+       int             has_c2c7_res;
+       int             has_c3_res;
+       nhm_core(int model);
        virtual void    measurement_start(void);
        virtual void    measurement_end(void);
        virtual int     can_collapse(void) { return 0;};
@@ -117,8 +132,6 @@ public:
 };
 
 
-extern int has_c2c7_res;
-
 class i965_core: public cpu_core
 {
 private:
@@ -142,3 +155,5 @@ public:
        virtual void    wiggle(void) { };
 
 };
+
+int is_supported_intel_cpu(int model);
diff --git a/src/cpu/rapl/rapl_interface.cpp b/src/cpu/rapl/rapl_interface.cpp
new file mode 100644 (file)
index 0000000..6dd7b26
--- /dev/null
@@ -0,0 +1,611 @@
+/* rapl_interface.cpp: rapl interface for power top implementation
+ *
+ * Copyright (C) 2012 Intel Corporation. All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License version
+ * 2 as published by the Free Software Foundation.
+ *
+ * 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., 51 Franklin Street, Fifth Floor, Boston, MA
+ * 02110-1301, USA.
+ *
+ *
+ * Author Name <Srinivas.Pandruvada@linux.intel.com>
+ *
+ */
+#include <stdio.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <fcntl.h>
+#include <unistd.h>
+#include <errno.h>
+#include <math.h>
+#include "lib.h"
+#include "rapl_interface.h"
+
+#ifdef DEBUG
+#define RAPL_DBG_PRINT printf
+#define RAPL_ERROR_PRINT printf
+#else
+#define RAPL_DBG_PRINT(...)    ((void) 0)
+#define RAPL_ERROR_PRINT(...) ((void) 0)
+#endif
+#define RAPL_INFO_PRINT printf
+
+#define MAX_TEMP_STR_SIZE      20
+
+// RAPL interface
+#define MSR_RAPL_POWER_UNIT    0x606
+#define MSR_PKG_POWER_LIMIT    0x610
+
+#define MSR_PKG_ENERY_STATUS   0x611
+#define MSR_PKG_POWER_INFO     0x614
+#define MSR_PKG_PERF_STATUS    0x613
+
+#define MSR_DRAM_POWER_LIMIT   0x618
+#define MSR_DRAM_ENERY_STATUS  0x619
+#define MSR_DRAM_PERF_STATUS   0x61B
+#define MSR_DRAM_POWER_INFO    0x61c
+
+#define MSR_PP0_POWER_LIMIT    0x638
+#define MSR_PP0_ENERY_STATUS   0x639
+#define MSR_PP0_POLICY         0x63A
+#define MSR_PP0_PERF_STATUS    0x63B
+
+#define MSR_PP1_POWER_LIMIT    0x640
+#define MSR_PP1_ENERY_STATUS   0x641
+#define MSR_PP1_POLICY         0x642
+
+#define PKG_DOMAIN_PRESENT     0x01
+#define DRAM_DOMAIN_PRESENT    0x02
+#define PP0_DOMAIN_PRESENT     0x04
+#define PP1_DOMAIN_PRESENT     0x08
+
+c_rapl_interface::c_rapl_interface(int cpu) :
+       measurment_interval(def_sampling_interval),
+       first_cpu(cpu),
+       last_pkg_energy_status(0.0),
+       last_dram_energy_status(0.0),
+       last_pp0_energy_status(0.0),
+       last_pp1_energy_status(0.0)
+{
+       uint64_t value;
+       int ret;
+
+       RAPL_INFO_PRINT("RAPL device for cpu %d\n", cpu);
+
+       rapl_domains = 0;
+       // presence of each domain
+       // Check presence of PKG domain
+       ret = read_msr(first_cpu, MSR_PKG_ENERY_STATUS, &value);
+       if (ret > 0) {
+               rapl_domains |= PKG_DOMAIN_PRESENT;
+               RAPL_DBG_PRINT("Domain : PKG present\n");
+       } else {
+               RAPL_DBG_PRINT("Domain : PKG Not present\n");
+       }
+
+       // Check presence of DRAM domain
+       ret = read_msr(first_cpu, MSR_DRAM_ENERY_STATUS, &value);
+       if (ret > 0) {
+               rapl_domains |= DRAM_DOMAIN_PRESENT;
+               RAPL_DBG_PRINT("Domain : DRAM present\n");
+       } else {
+               RAPL_DBG_PRINT("Domain : DRAM Not present\n");
+       }
+
+       // Check presence of PP0 domain
+       ret = read_msr(first_cpu, MSR_PP0_ENERY_STATUS, &value);
+       if (ret > 0) {
+               rapl_domains |= PP0_DOMAIN_PRESENT;
+               RAPL_DBG_PRINT("Domain : PP0 present\n");
+       } else {
+               RAPL_DBG_PRINT("Domain : PP0 Not present\n");
+       }
+
+       // Check presence of PP1 domain
+       ret = read_msr(first_cpu, MSR_PP1_ENERY_STATUS, &value);
+       if (ret > 0) {
+               rapl_domains |= PP1_DOMAIN_PRESENT;
+               RAPL_DBG_PRINT("Domain : PP1 present\n");
+       } else {
+               RAPL_DBG_PRINT("Domain : PP1 Not present\n");
+       }
+
+       power_units = get_power_unit();
+       energy_status_units = get_energy_status_unit();
+       time_units = get_time_unit();
+
+       RAPL_DBG_PRINT("RAPL Domain mask: %x\n", rapl_domains);
+}
+
+bool c_rapl_interface::pkg_domain_present()
+{
+       if ((rapl_domains & PKG_DOMAIN_PRESENT)) {
+               return true;
+       }
+
+       return false;
+}
+
+bool c_rapl_interface::dram_domain_present()
+{
+       if ((rapl_domains & DRAM_DOMAIN_PRESENT)) {
+               return true;
+       }
+
+       return false;
+}
+
+bool c_rapl_interface::pp0_domain_present()
+{
+       if ((rapl_domains & PP0_DOMAIN_PRESENT)) {
+               return true;
+       }
+
+       return false;
+}
+
+bool c_rapl_interface::pp1_domain_present()
+{
+       if ((rapl_domains & PP1_DOMAIN_PRESENT)) {
+               return true;
+       }
+
+       return false;
+}
+
+int c_rapl_interface::read_msr(int cpu, unsigned int idx, uint64_t *val)
+{
+       return ::read_msr(cpu, idx, val);
+}
+
+int c_rapl_interface::write_msr(int cpu, unsigned int idx, uint64_t val)
+{
+       return ::write_msr(cpu, idx, val);
+}
+
+int c_rapl_interface::get_rapl_power_unit(uint64_t *value)
+{
+       int ret;
+
+       ret = read_msr(first_cpu, MSR_RAPL_POWER_UNIT, value);
+
+       return ret;
+}
+
+double c_rapl_interface::get_power_unit()
+{
+       int ret;
+       uint64_t value;
+
+       ret = get_rapl_power_unit(&value);
+       if(ret < 0)
+       {
+               return ret;
+       }
+
+       return (double) 1/pow((double)2, (double)(value & 0xf));
+}
+
+double c_rapl_interface::get_energy_status_unit()
+{
+       int ret;
+       uint64_t value;
+
+       ret = get_rapl_power_unit(&value);
+       if(ret < 0)
+       {
+               return ret;
+       }
+
+       return (double)1/ pow((double)2, (double)((value & 0x1f00) >> 8));
+}
+
+double c_rapl_interface::get_time_unit()
+{
+       int ret;
+       uint64_t value;
+
+       ret = get_rapl_power_unit(&value);
+       if(ret < 0)
+       {
+               return ret;
+       }
+
+       return (double)1 / pow((double)2, (double)((value & 0xf0000) >> 16));
+}
+
+int c_rapl_interface::get_pkg_energy_status(double *status)
+{
+       int ret;
+       uint64_t value;
+
+       if (!pkg_domain_present()) {
+               return -1;
+       }
+
+       ret = read_msr(first_cpu, MSR_PKG_ENERY_STATUS, &value);
+       if(ret < 0)
+       {
+               RAPL_ERROR_PRINT("get_pkg_energy_status failed\n");
+               return ret;
+       }
+
+       *status = (double) (value & 0xffffffff) * get_energy_status_unit();
+
+       return ret;
+}
+
+int c_rapl_interface::get_pkg_power_info(double *thermal_spec_power,
+                       double *max_power, double *min_power, double *max_time_window)
+{
+       int ret;
+       uint64_t value;
+
+       if (!pkg_domain_present()) {
+               return -1;
+       }
+       ret = read_msr(first_cpu, MSR_PKG_POWER_INFO, &value);
+       if(ret < 0)
+       {
+               RAPL_ERROR_PRINT("get_pkg_power_info failed\n");
+               return ret;
+       }
+       *thermal_spec_power =  (value & 0x7FFF) * power_units;
+       *min_power =  ((value & 0x7FFF0000) >> 16) * power_units;
+       *max_power =  ((value & 0x7FFF00000000) >> 32) * power_units;
+       *max_time_window = ((value & 0x3f000000000000)>>48) * time_units;
+
+       return ret;
+}
+
+int c_rapl_interface::get_pkg_power_limit(uint64_t *value)
+{
+       int ret;
+
+       if (!pkg_domain_present()) {
+               return -1;
+       }
+
+       ret = read_msr(first_cpu, MSR_PKG_POWER_LIMIT, value);
+       if(ret < 0)
+       {
+               RAPL_ERROR_PRINT("get_pkg_power_limit failed\n");
+               return ret;
+       }
+
+       return ret;
+}
+
+int c_rapl_interface::set_pkg_power_limit(uint64_t value)
+{
+       int ret;
+
+       if (!pkg_domain_present()) {
+               return -1;
+       }
+
+       ret = write_msr(first_cpu, MSR_PKG_POWER_LIMIT, value);
+       if(ret < 0)
+       {
+               RAPL_ERROR_PRINT("set_pkg_power_limit failed\n");
+               return ret;
+       }
+
+       return ret;
+}
+
+int c_rapl_interface::get_dram_energy_status(double *status)
+{
+       int ret;
+       uint64_t value;
+
+       if (!dram_domain_present()) {
+               return -1;
+       }
+
+       ret = read_msr(first_cpu, MSR_DRAM_ENERY_STATUS, &value);
+       if(ret < 0)
+       {
+               RAPL_ERROR_PRINT("get_dram_energy_status failed\n");
+               return ret;
+       }
+
+       *status = (double) (value & 0xffffffff) * get_energy_status_unit();
+
+       return ret;
+}
+
+int c_rapl_interface::get_dram_power_info(double *thermal_spec_power,
+                       double *max_power, double *min_power, double *max_time_window)
+{
+       int ret;
+       uint64_t value;
+
+       if (!dram_domain_present()) {
+               return -1;
+       }
+       ret = read_msr(first_cpu, MSR_DRAM_POWER_INFO, &value);
+       if(ret < 0)
+       {
+               RAPL_ERROR_PRINT("get_dram_power_info failed\n");
+               return ret;
+       }
+
+       *thermal_spec_power =  (value & 0x7FFF) * power_units;
+       *min_power =  ((value & 0x7FFF0000) >> 16) * power_units;
+       *max_power =  ((value & 0x7FFF00000000) >> 32) * power_units;
+       *max_time_window = ((value & 0x3f000000000000)>>48) * time_units;
+
+       return ret;
+}
+
+int c_rapl_interface::get_dram_power_limit(uint64_t *value)
+{
+       int ret;
+
+       if (!dram_domain_present()) {
+               return -1;
+       }
+
+       ret = read_msr(first_cpu, MSR_DRAM_POWER_LIMIT, value);
+       if(ret < 0)
+       {
+               RAPL_ERROR_PRINT("get_dram_power_limit failed\n");
+               return ret;
+       }
+
+       return ret;
+}
+
+int c_rapl_interface::set_dram_power_limit(uint64_t value)
+{
+       int ret;
+
+       if (!dram_domain_present()) {
+               return -1;
+       }
+
+       ret = write_msr(first_cpu, MSR_DRAM_POWER_LIMIT, value);
+       if(ret < 0)
+       {
+               RAPL_ERROR_PRINT("set_dram_power_limit failed\n");
+               return ret;
+       }
+
+       return ret;
+}
+
+int c_rapl_interface::get_pp0_energy_status(double *status)
+{
+       int ret;
+       uint64_t value;
+
+       if (!pp0_domain_present()) {
+               return -1;
+       }
+
+       ret = read_msr(first_cpu, MSR_PP0_ENERY_STATUS, &value);
+       if(ret < 0)
+       {
+               RAPL_ERROR_PRINT("get_pp0_energy_status failed\n");
+               return ret;
+       }
+
+       *status = (double) (value & 0xffffffff) * get_energy_status_unit();
+
+       return ret;
+}
+
+int c_rapl_interface::get_pp0_power_limit(uint64_t *value)
+{
+       int ret;
+
+       if (!pp0_domain_present()) {
+               return -1;
+       }
+
+       ret = read_msr(first_cpu, MSR_PP0_POWER_LIMIT, value);
+       if(ret < 0)
+       {
+               RAPL_ERROR_PRINT("get_pp0_power_limit failed\n");
+               return ret;
+       }
+
+       return ret;
+}
+
+int c_rapl_interface::set_pp0_power_limit(uint64_t value)
+{
+       int ret;
+
+       if (!pp0_domain_present()) {
+               return -1;
+       }
+
+       ret = write_msr(first_cpu, MSR_PP0_POWER_LIMIT, value);
+       if(ret < 0)
+       {
+               RAPL_ERROR_PRINT("set_pp0_power_limit failed\n");
+               return ret;
+       }
+
+       return ret;
+}
+
+int c_rapl_interface::get_pp0_power_policy(unsigned int *pp0_power_policy)
+{
+       int ret;
+       uint64_t value;
+
+       if (!pp0_domain_present()) {
+               return -1;
+       }
+
+       ret = read_msr(first_cpu, MSR_PP0_POLICY, &value);
+       if(ret < 0)
+       {
+               RAPL_ERROR_PRINT("get_pp0_power_policy failed\n");
+               return ret;
+       }
+
+       *pp0_power_policy =  value & 0x0f;
+
+       return ret;
+}
+
+int c_rapl_interface::get_pp1_energy_status(double *status)
+{
+       int ret;
+       uint64_t value;
+
+       if (!pp1_domain_present()) {
+               return -1;
+       }
+
+       ret = read_msr(first_cpu, MSR_PP1_ENERY_STATUS, &value);
+       if(ret < 0)
+       {
+               RAPL_ERROR_PRINT("get_pp1_energy_status failed\n");
+               return ret;
+       }
+
+       *status = (double) (value & 0xffffffff) * get_energy_status_unit();
+
+       return ret;
+}
+
+int c_rapl_interface::get_pp1_power_limit(uint64_t *value)
+{
+       int ret;
+
+       if (!pp1_domain_present()) {
+               return -1;
+       }
+
+       ret = read_msr(first_cpu, MSR_PP1_POWER_LIMIT, value);
+       if(ret < 0)
+       {
+               RAPL_ERROR_PRINT("get_pp1_power_info failed\n");
+               return ret;
+       }
+
+       return ret;
+}
+
+int c_rapl_interface::set_pp1_power_limit(uint64_t value)
+{
+       int ret;
+
+       if (!pp1_domain_present()) {
+               return -1;
+       }
+
+       ret = write_msr(first_cpu, MSR_PP1_POWER_LIMIT, value);
+       if(ret < 0)
+       {
+               RAPL_ERROR_PRINT("set_pp1_power_limit failed\n");
+               return ret;
+       }
+
+       return ret;
+}
+
+int c_rapl_interface::get_pp1_power_policy(unsigned int *pp1_power_policy)
+{
+       int ret;
+       uint64_t value;
+
+       if (!pp1_domain_present()) {
+               return -1;
+       }
+
+       ret = read_msr(first_cpu, MSR_PP1_POLICY, &value);
+       if(ret < 0)
+       {
+               RAPL_ERROR_PRINT("get_pp1_power_policy failed\n");
+               return ret;
+       }
+
+       *pp1_power_policy =  value & 0x0f;
+
+       return ret;
+}
+
+void c_rapl_interface::rapl_measure_energy()
+{
+#ifdef RAPL_TEST_MODE
+       int ret;
+       double energy_status;
+       double thermal_spec_power;
+       double max_power;
+       double min_power;
+       double max_time_window;
+       double pkg_watts = 0;
+       double dram_watts = 0;
+       double pp0_watts = 0;
+       double pp1_watts = 0;
+       double pkg_joules = 0;
+       double dram_joules = 0;
+       double pp0_joules = 0;
+       double pp1_joules = 0;
+
+       ret = get_pkg_power_info(&thermal_spec_power, &max_power, &min_power, &max_time_window);
+       RAPL_DBG_PRINT("Pkg Power Info: Thermal spec %f watts, max %f watts, min %f watts, max time window %f seconds\n", thermal_spec_power, max_power, min_power, max_time_window);
+       ret = get_dram_power_info(&thermal_spec_power, &max_power, &min_power, &max_time_window);
+       RAPL_DBG_PRINT("DRAM Power Info: Thermal spec %f watts, max %f watts, min %f watts, max time window %f seconds\n", thermal_spec_power, max_power, min_power, max_time_window);
+
+       for (;;) {
+               if (pkg_domain_present()) {
+                       ret = get_pkg_energy_status(&energy_status);
+                       if (last_pkg_energy_status == 0)
+                               last_pkg_energy_status = energy_status;
+                       if (ret > 0) {
+                               pkg_joules = energy_status;
+                               pkg_watts = (energy_status-last_pkg_energy_status)/measurment_interval;
+                       }
+                       last_pkg_energy_status = energy_status;
+               }
+               if (dram_domain_present()) {
+                       ret = get_dram_energy_status(&energy_status);
+                       if (last_dram_energy_status == 0)
+                               last_dram_energy_status = energy_status;
+                       if (ret > 0){
+                               dram_joules = energy_status;
+                               dram_watts = (energy_status-last_dram_energy_status)/measurment_interval;
+                       }
+                       last_dram_energy_status = energy_status;
+               }
+               if (pp0_domain_present()) {
+                       ret = get_pp0_energy_status(&energy_status);
+                       if (last_pp0_energy_status == 0)
+                               last_pp0_energy_status = energy_status;
+                       if (ret > 0){
+                               pp0_joules = energy_status;
+                               pp0_watts = (energy_status-last_pp0_energy_status)/measurment_interval;
+                       }
+                       last_pp0_energy_status = energy_status;
+               }
+               if (pp1_domain_present()) {
+                       ret = get_pp1_energy_status(&energy_status);
+                       if (last_pp1_energy_status == 0)
+                               last_pp1_energy_status = energy_status;
+                       if (ret > 0){
+                               pp1_joules = energy_status;
+                               pp1_watts = (energy_status-last_pp1_energy_status)/measurment_interval;
+                       }
+                       last_pp1_energy_status = energy_status;
+               }
+               RAPL_DBG_PRINT("%f, %f, %f, %f\n", pkg_watts, dram_watts, pp0_watts, pp1_watts);
+               sleep(measurment_interval);
+       }
+#endif
+}
diff --git a/src/cpu/rapl/rapl_interface.h b/src/cpu/rapl/rapl_interface.h
new file mode 100644 (file)
index 0000000..be863e2
--- /dev/null
@@ -0,0 +1,85 @@
+/* rapl_interface.h: rapl interface for power top
+ *
+ * Copyright (C) 2012 Intel Corporation. All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License version
+ * 2 as published by the Free Software Foundation.
+ *
+ * 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., 51 Franklin Street, Fifth Floor, Boston, MA
+ * 02110-1301, USA.
+ *
+ *
+ * Author Name <Srinivas.Pandruvada@linux.intel.com>
+ *
+ */
+
+#ifndef RAPL_INTERFACE_H
+#define RAPL_INTERFACE_H
+
+class c_rapl_interface
+{
+private:
+       static const int def_sampling_interval = 1; //In seconds
+       unsigned char rapl_domains;
+       int measurment_interval;
+       int first_cpu;
+
+       double power_units;
+       double energy_status_units;
+       double time_units;
+
+       double last_pkg_energy_status;
+       double last_dram_energy_status;
+       double last_pp0_energy_status;
+       double last_pp1_energy_status;
+
+       int read_msr(int cpu, unsigned int idx, uint64_t *val);
+       int write_msr(int cpu, unsigned int idx, uint64_t val);
+
+public:
+       c_rapl_interface(int cpu = 0);
+
+       int get_rapl_power_unit(uint64_t *value);
+       double get_power_unit();
+       double get_energy_status_unit();
+       double get_time_unit();
+
+       int get_pkg_energy_status(double *status);
+       int get_pkg_power_info(double *thermal_spec_power,
+                       double *max_power, double *min_power, double *max_time_window);
+       int get_pkg_power_limit(uint64_t *value);
+       int set_pkg_power_limit(uint64_t value);
+
+       int get_dram_energy_status(double *status);
+       int get_dram_power_info(double *thermal_spec_power,
+                       double *max_power, double *min_power, double *max_time_window);
+       int get_dram_power_limit(uint64_t *value);
+       int set_dram_power_limit(uint64_t value);
+
+       int get_pp0_energy_status(double *status);
+       int get_pp0_power_limit(uint64_t *value);
+       int set_pp0_power_limit(uint64_t value);
+       int get_pp0_power_policy(unsigned int *pp0_power_policy);
+
+       int get_pp1_energy_status(double *status);
+       int get_pp1_power_limit(uint64_t *value);
+       int set_pp1_power_limit(uint64_t value);
+       int get_pp1_power_policy(unsigned int *pp1_power_policy);
+
+       bool pkg_domain_present();
+       bool dram_domain_present();
+       bool pp0_domain_present();
+       bool pp1_domain_present();
+
+       void rapl_measure_energy();
+};
+
+#endif
index 572e19e..1227e15 100644 (file)
--- a/src/css.h
+++ b/src/css.h
@@ -7,276 +7,82 @@ const char css[] =
        "<head>\n"
        "<title>PowerTOP report</title>\n"
        "<meta http-equiv=\"content-type\" content=\"text/html;charset=utf-8\">\n"
-       "<script type=\"text/javascript\" src=\"http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js\"></script>\n"
-       "<script type=\"text/javascript\">\n"
-       "$(document).ready(function(){\n"
-       "\n"
-       "       $('#system h2').addClass('hide');\n"
-       "       $('#system table').addClass('hide');\n"
-       "       $('#cpuidle h2').addClass('hide');\n"
-       "       $('#cpuidle table').addClass('hide');\n"
-       "       $('#cpufreq h2').addClass('hide');\n"
-       "       $('#cpufreq table').addClass('hide');\n"
-       "       $('#software h2').addClass('hide');\n"
-       "       $('#software table').addClass('hide');\n"
-       "       $('#device h2').addClass('hide');\n"
-       "       $('#device table').addClass('hide');\n"
-       "       $('#device p').addClass('hide');\n"
-       "       $('#tuning h2').addClass('hide');\n"
-       "       $('#tuning table').addClass('hide');\n"
-       "\n"
-       "       $('#top').append('<div class=\"SystemButton\"   onclick=\"toggleSystem()\">System Info</div>');\n"
-       "       $('#top').append('<div class=\"SummaryButton\"  onclick=\"toggleSummary()\">Summary</div>');\n"
-       "       $('#top').append('<div class=\"CpuidleButton\"  onclick=\"toggleCpuidle()\">CPU Idle</div>');\n"
-       "       $('#top').append('<div class=\"CpufreqButton\"  onclick=\"toggleCpufreq()\">CPU Frequency</div>');\n"
-       "       $('#top').append('<div class=\"SoftwareButton\" onclick=\"toggleSoftware()\">Software info</div>');\n"
-       "       $('#top').append('<div class=\"DeviceButton\"   onclick=\"toggleDevice()\">Device Info</div>');\n"
-       "       $('#top').append('<div class=\"TuningButton\"   onclick=\"toggleTuning()\">Tuning</div>');\n"
-       "       $('#top').append('<div class=\"AllButton\"      onclick=\"toggleAll()\">All</div>');\n"
-       "       $('#top .SummaryButton').toggleClass('pressed');\n"
-       "\n"
-       "    }\n"
-       "       );\n"
-       "function toggleDummy() {\n"
-       "               $('#system table').toggleClass('hide', true);\n"
-       "               $('#system h2').toggleClass('hide', true);\n"
-       "               $('#summary table').toggleClass('hide', true);\n"
-       "               $('#summary h2').toggleClass('hide', true);\n"
-       "               $('#summary p').toggleClass('hide', true);\n"
-       "               $('#cpuidle table').toggleClass('hide', true);\n"
-       "               $('#cpuidle h2').toggleClass('hide', true);\n"
-       "               $('#cpufreq table').toggleClass('hide', true);\n"
-       "               $('#cpufreq h2').toggleClass('hide', true);\n"
-       "               $('#software table').toggleClass('hide', true);\n"
-       "               $('#software h2').toggleClass('hide', true);\n"
-       "               $('#device table').toggleClass('hide', true);\n"
-       "               $('#device h2').toggleClass('hide', true);\n"
-       "               $('#device p').toggleClass('hide', true);\n"
-       "               $('#tuning table').toggleClass('hide', true);\n"
-       "               $('#tuning h2').toggleClass('hide', true);\n"
-       "               $('#top .SystemButton').toggleClass('pressed', false);\n"
-       "               $('#top .SummaryButton').toggleClass('pressed', false);\n"
-       "               $('#top .CpuidleButton').toggleClass('pressed', false);\n"
-       "               $('#top .CpufreqButton').toggleClass('pressed', false);\n"
-       "               $('#top .SoftwareButton').toggleClass('pressed', false);\n"
-       "               $('#top .DeviceButton').toggleClass('pressed', false);\n"
-       "               $('#top .TuningButton').toggleClass('pressed', false);\n"
-       "               $('#top .AllButton').toggleClass('pressed', false);\n"
-       "}\n"
-       "function toggleSystem() {\n"
-       "               $('#system table').toggleClass('hide', false);\n"
-       "               $('#system h2').toggleClass('hide', false);\n"
-       "               $('#summary table').toggleClass('hide', true);\n"
-       "               $('#summary h2').toggleClass('hide', true);\n"
-       "               $('#summary p').toggleClass('hide', true);\n"
-       "               $('#cpuidle table').toggleClass('hide', true);\n"
-       "               $('#cpuidle h2').toggleClass('hide', true);\n"
-       "               $('#cpufreq table').toggleClass('hide', true);\n"
-       "               $('#cpufreq h2').toggleClass('hide', true);\n"
-       "               $('#software table').toggleClass('hide', true);\n"
-       "               $('#software h2').toggleClass('hide', true);\n"
-       "               $('#device table').toggleClass('hide', true);\n"
-       "               $('#device h2').toggleClass('hide', true);\n"
-       "               $('#device p').toggleClass('hide', true);\n"
-       "               $('#tuning table').toggleClass('hide', true);\n"
-       "               $('#tuning h2').toggleClass('hide', true);\n"
-       "               $('#top .SystemButton').toggleClass('pressed', true);\n"
-       "               $('#top .SummaryButton').toggleClass('pressed', false);\n"
-       "               $('#top .CpuidleButton').toggleClass('pressed', false);\n"
-       "               $('#top .CpufreqButton').toggleClass('pressed', false);\n"
-       "               $('#top .SoftwareButton').toggleClass('pressed', false);\n"
-       "               $('#top .DeviceButton').toggleClass('pressed', false);\n"
-       "               $('#top .TuningButton').toggleClass('pressed', false);\n"
-       "               $('#top .AllButton').toggleClass('pressed', false);\n"
-       "}\n"
-       "function toggleSummary() {\n"
-       "               $('#system table').toggleClass('hide', true);\n"
-       "               $('#system h2').toggleClass('hide', true);\n"
-       "               $('#summary table').toggleClass('hide', false);\n"
-       "               $('#summary h2').toggleClass('hide', false);\n"
-       "               $('#summary p').toggleClass('hide', false);\n"
-       "               $('#cpuidle table').toggleClass('hide', true);\n"
-       "               $('#cpuidle h2').toggleClass('hide', true);\n"
-       "               $('#cpufreq table').toggleClass('hide', true);\n"
-       "               $('#cpufreq h2').toggleClass('hide', true);\n"
-       "               $('#software table').toggleClass('hide', true);\n"
-       "               $('#software h2').toggleClass('hide', true);\n"
-       "               $('#device table').toggleClass('hide', true);\n"
-       "               $('#device h2').toggleClass('hide', true);\n"
-       "               $('#device p').toggleClass('hide', true);\n"
-       "               $('#tuning table').toggleClass('hide', true);\n"
-       "               $('#tuning h2').toggleClass('hide', true);\n"
-       "               $('#top .SystemButton').toggleClass('pressed', false);\n"
-       "               $('#top .SummaryButton').toggleClass('pressed', true);\n"
-       "               $('#top .CpuidleButton').toggleClass('pressed', false);\n"
-       "               $('#top .CpufreqButton').toggleClass('pressed', false);\n"
-       "               $('#top .SoftwareButton').toggleClass('pressed', false);\n"
-       "               $('#top .DeviceButton').toggleClass('pressed', false);\n"
-       "               $('#top .TuningButton').toggleClass('pressed', false);\n"
-       "               $('#top .AllButton').toggleClass('pressed', false);\n"
-       "}\n"
-       "function toggleCpuidle() {\n"
-       "               $('#system table').toggleClass('hide', true);\n"
-       "               $('#system h2').toggleClass('hide', true);\n"
-       "               $('#summary table').toggleClass('hide', true);\n"
-       "               $('#summary h2').toggleClass('hide', true);\n"
-       "               $('#summary p').toggleClass('hide', true);\n"
-       "               $('#cpuidle table').toggleClass('hide', false);\n"
-       "               $('#cpuidle h2').toggleClass('hide', false);\n"
-       "               $('#cpufreq table').toggleClass('hide', true);\n"
-       "               $('#cpufreq h2').toggleClass('hide', true);\n"
-       "               $('#software table').toggleClass('hide', true);\n"
-       "               $('#software h2').toggleClass('hide', true);\n"
-       "               $('#device table').toggleClass('hide', true);\n"
-       "               $('#device h2').toggleClass('hide', true);\n"
-       "               $('#device p').toggleClass('hide', true);\n"
-       "               $('#tuning table').toggleClass('hide', true);\n"
-       "               $('#tuning h2').toggleClass('hide', true);\n"
-       "               $('#top .SystemButton').toggleClass('pressed', false);\n"
-       "               $('#top .SummaryButton').toggleClass('pressed', false);\n"
-       "               $('#top .CpuidleButton').toggleClass('pressed', true);\n"
-       "               $('#top .CpufreqButton').toggleClass('pressed', false);\n"
-       "               $('#top .SoftwareButton').toggleClass('pressed', false);\n"
-       "               $('#top .DeviceButton').toggleClass('pressed', false);\n"
-       "               $('#top .TuningButton').toggleClass('pressed', false);\n"
-       "               $('#top .AllButton').toggleClass('pressed', false);\n"
-       "\n"
-       "}\n"
-       "function toggleCpufreq() {\n"
-       "               $('#system table').toggleClass('hide', true);\n"
-       "               $('#system h2').toggleClass('hide', true);\n"
-       "               $('#summary table').toggleClass('hide', true);\n"
-       "               $('#summary h2').toggleClass('hide', true);\n"
-       "               $('#summary p').toggleClass('hide', true);\n"
-       "               $('#cpuidle table').toggleClass('hide', true);\n"
-       "               $('#cpuidle h2').toggleClass('hide', true);\n"
-       "               $('#cpufreq table').toggleClass('hide', false);\n"
-       "               $('#cpufreq h2').toggleClass('hide', false);\n"
-       "               $('#software table').toggleClass('hide', true);\n"
-       "               $('#software h2').toggleClass('hide', true);\n"
-       "               $('#device table').toggleClass('hide', true);\n"
-       "               $('#device h2').toggleClass('hide', true);\n"
-       "               $('#device p').toggleClass('hide', true);\n"
-       "               $('#tuning table').toggleClass('hide', true);\n"
-       "               $('#tuning h2').toggleClass('hide', true);\n"
-       "               $('#top .SystemButton').toggleClass('pressed', false);\n"
-       "               $('#top .SummaryButton').toggleClass('pressed', false);\n"
-       "               $('#top .CpuidleButton').toggleClass('pressed', false);\n"
-       "               $('#top .CpufreqButton').toggleClass('pressed', true);\n"
-       "               $('#top .SoftwareButton').toggleClass('pressed', false);\n"
-       "               $('#top .DeviceButton').toggleClass('pressed', false);\n"
-       "               $('#top .TuningButton').toggleClass('pressed', false);\n"
-       "               $('#top .AllButton').toggleClass('pressed', false);\n"
-       "}\n"
-       "\n"
-       "function toggleSoftware() {\n"
-       "               $('#system table').toggleClass('hide', true);\n"
-       "               $('#system h2').toggleClass('hide', true);\n"
-       "               $('#summary table').toggleClass('hide', true);\n"
-       "               $('#summary h2').toggleClass('hide', true);\n"
-       "               $('#summary p').toggleClass('hide', true);\n"
-       "               $('#cpuidle table').toggleClass('hide', true);\n"
-       "               $('#cpuidle h2').toggleClass('hide', true);\n"
-       "               $('#cpufreq table').toggleClass('hide', true);\n"
-       "               $('#cpufreq h2').toggleClass('hide', true);\n"
-       "               $('#software table').toggleClass('hide', false);\n"
-       "               $('#software h2').toggleClass('hide', false);\n"
-       "               $('#device table').toggleClass('hide', true);\n"
-       "               $('#device h2').toggleClass('hide', true);\n"
-       "               $('#device p').toggleClass('hide', true);\n"
-       "               $('#tuning table').toggleClass('hide', true);\n"
-       "               $('#tuning h2').toggleClass('hide', true);\n"
-       "               $('#top .SystemButton').toggleClass('pressed', false);\n"
-       "               $('#top .SummaryButton').toggleClass('pressed', false);\n"
-       "               $('#top .CpuidleButton').toggleClass('pressed', false);\n"
-       "               $('#top .CpufreqButton').toggleClass('pressed', false);\n"
-       "               $('#top .SoftwareButton').toggleClass('pressed', true);\n"
-       "               $('#top .DeviceButton').toggleClass('pressed', false);\n"
-       "               $('#top .TuningButton').toggleClass('pressed', false);\n"
-       "               $('#top .AllButton').toggleClass('pressed', false);\n"
-       "}\n"
-       "\n"
-       "function toggleDevice() {\n"
-       "               $('#system table').toggleClass('hide', true);\n"
-       "               $('#system h2').toggleClass('hide', true);\n"
-       "               $('#summary table').toggleClass('hide', true);\n"
-       "               $('#summary h2').toggleClass('hide', true);\n"
-       "               $('#summary p').toggleClass('hide', true);\n"
-       "               $('#cpuidle table').toggleClass('hide', true);\n"
-       "               $('#cpuidle h2').toggleClass('hide', true);\n"
-       "               $('#cpufreq table').toggleClass('hide', true);\n"
-       "               $('#cpufreq h2').toggleClass('hide', true);\n"
-       "               $('#software table').toggleClass('hide', true);\n"
-       "               $('#software h2').toggleClass('hide', true);\n"
-       "               $('#device table').toggleClass('hide', false);\n"
-       "               $('#device h2').toggleClass('hide', false);\n"
-       "               $('#device p').toggleClass('hide', false);\n"
-       "               $('#tuning table').toggleClass('hide', true);\n"
-       "               $('#tuning h2').toggleClass('hide', true);\n"
-       "               $('#top .SystemButton').toggleClass('pressed', false);\n"
-       "               $('#top .SummaryButton').toggleClass('pressed', false);\n"
-       "               $('#top .CpuidleButton').toggleClass('pressed', false);\n"
-       "               $('#top .CpufreqButton').toggleClass('pressed', false);\n"
-       "               $('#top .SoftwareButton').toggleClass('pressed', false);\n"
-       "               $('#top .DeviceButton').toggleClass('pressed', true);\n"
-       "               $('#top .TuningButton').toggleClass('pressed', false);\n"
-       "               $('#top .AllButton').toggleClass('pressed', false);\n"
+       "<script type='text/javascript'>\n"
+       "\n"
+       "var powertop = {\n"
+       " blocks: {\n"
+       "  system: 'System Info',\n"
+       "  summary: 'Summary',\n"
+       "  cpuidle: 'CPU Idle',\n"
+       "  cpufreq: 'CPU Frequency',\n"
+       "  software: 'Software Info',\n"
+       "  device: 'Device Info',\n"
+       "  tuning: 'Tuning'\n"
+       " },\n"
+       " cadd: function(idx, c){\n"
+       "   var el = document.getElementById(idx);\n"
+       "   if (el) {\n"
+       "      var cn = el.className;\n"
+       "      if (cn.indexOf(c) != -1)\n"
+       "         return;\n"
+       "      cn += ' ' + c;\n"
+       "      el.className = cn;\n"
+       "   }\n"
+       " },\n"
+       " crm: function(id, c){\n"
+       "   var el = document.getElementById(id);\n"
+       "   if (el) {\n"
+       "      var cn = el.className\n"
+       "      while (cn.indexOf(' ' + c) != -1)\n"
+       "         cn = cn.replace(' ' + c,'');\n"
+       "      el.className = cn;\n"
+       "   }\n"
+       " },\n"
+       " newbutton: function(id, txt) {\n"
+       "  var x = document.createElement('div');\n"
+       "  x.id = id + '_button';\n"
+       "  x.className = 'nav_button';\n"
+       "  x.textContent = txt;\n"
+       "  x.innerText = txt;\n"
+       "  x.onclick = function() { powertop.toggle(id); };\n"
+       "  return x;\n"
+       " },\n"
+       " setupbuttons: function() {\n"
+       "   var t = document.getElementById('top');\n"
+       "   if (t) {\n"
+       "     for (var b in powertop.blocks) {\n"
+       "       t.appendChild(powertop.newbutton(b, powertop.blocks[b]));\n"
+       "     }\n"
+       "    t.appendChild(powertop.newbutton('all', 'All'));\n"
+       "   }\n"
+       " },\n"
+       " toggle: function(b) {\n"
+       "   powertop.baseall();\n"
+       "   if (b == 'all') {\n"
+       "      for (var c in powertop.blocks) {\n"
+       "        powertop.crm(c, 'hide');\n"
+       "      }\n"
+       "   } else {\n"
+       "      powertop.crm(b, 'hide');\n"
+       "   }\n"
+       "   powertop.cadd(b + '_button', 'pressed');\n"
+       " },\n"
+       " baseall: function() {\n"
+       "   for (var b in powertop.blocks) {\n"
+       "     powertop.cadd(b, 'hide');\n"
+       "     powertop.crm(b + '_button', 'pressed');\n"
+       "   }\n"
+       "   powertop.cadd('all', 'hide');\n"
+       "   powertop.crm('all_button', 'pressed');\n"
+       " },\n"
+       " onload: function() {\n"
+       "   powertop.setupbuttons();\n"
+       "   powertop.toggle('summary');\n"
+       " }\n"
        "}\n"
        "\n"
-       "function toggleTuning() {\n"
-       "               $('#system table').toggleClass('hide', true);\n"
-       "               $('#system h2').toggleClass('hide', true);\n"
-       "               $('#summary table').toggleClass('hide', true);\n"
-       "               $('#summary h2').toggleClass('hide', true);\n"
-       "               $('#summary p').toggleClass('hide', true);\n"
-       "               $('#cpuidle table').toggleClass('hide', true);\n"
-       "               $('#cpuidle h2').toggleClass('hide', true);\n"
-       "               $('#cpufreq table').toggleClass('hide', true);\n"
-       "               $('#cpufreq h2').toggleClass('hide', true);\n"
-       "               $('#software table').toggleClass('hide', true);\n"
-       "               $('#software h2').toggleClass('hide', true);\n"
-       "               $('#device table').toggleClass('hide', true);\n"
-       "               $('#device h2').toggleClass('hide', true);\n"
-       "               $('#device p').toggleClass('hide', true);\n"
-       "               $('#tuning table').toggleClass('hide', false);\n"
-       "               $('#tuning h2').toggleClass('hide', false);\n"
-       "               $('#top .SystemButton').toggleClass('pressed', false);\n"
-       "               $('#top .SummaryButton').toggleClass('pressed', false);\n"
-       "               $('#top .CpuidleButton').toggleClass('pressed', false);\n"
-       "               $('#top .CpufreqButton').toggleClass('pressed', false);\n"
-       "               $('#top .SoftwareButton').toggleClass('pressed', false);\n"
-       "               $('#top .DeviceButton').toggleClass('pressed', false);\n"
-       "               $('#top .TuningButton').toggleClass('pressed', true);\n"
-       "               $('#top .AllButton').toggleClass('pressed', false);\n"
-       "}\n"
-       "function toggleAll() {\n"
-       "               $('#system table').toggleClass('hide', false);\n"
-       "               $('#system h2').toggleClass('hide', false);\n"
-       "               $('#summary table').toggleClass('hide', false);\n"
-       "               $('#summary h2').toggleClass('hide', false);\n"
-       "               $('#summary p').toggleClass('hide', false);\n"
-       "               $('#cpuidle table').toggleClass('hide', false);\n"
-       "               $('#cpuidle h2').toggleClass('hide', false);\n"
-       "               $('#cpufreq table').toggleClass('hide', false);\n"
-       "               $('#cpufreq h2').toggleClass('hide', false);\n"
-       "               $('#software table').toggleClass('hide', false);\n"
-       "               $('#software h2').toggleClass('hide', false);\n"
-       "               $('#device table').toggleClass('hide', false);\n"
-       "               $('#device h2').toggleClass('hide', false);\n"
-       "               $('#device p').toggleClass('hide', false);\n"
-       "               $('#tuning table').toggleClass('hide', false);\n"
-       "               $('#tuning h2').toggleClass('hide', false);\n"
-       "               $('#top .SystemButton').toggleClass('pressed', false);\n"
-       "               $('#top .SummaryButton').toggleClass('pressed', false);\n"
-       "               $('#top .CpuidleButton').toggleClass('pressed', false);\n"
-       "               $('#top .CpufreqButton').toggleClass('pressed', false);\n"
-       "               $('#top .SoftwareButton').toggleClass('pressed', false);\n"
-       "               $('#top .DeviceButton').toggleClass('pressed', false);\n"
-       "               $('#top .TuningButton').toggleClass('pressed', false);\n"
-       "               $('#top .AllButton').toggleClass('pressed', true);\n"
-       "}\n"
        "</script>\n"
-       "<style type=\"text/css\">\n"
+       "<style type='text/css'>\n"
        "table\n"
        "{\n"
        "       background-color: #F8F8F8;\n"
@@ -458,11 +264,7 @@ const char css[] =
        "       padding: 0;             /* Amount of negative space around the\n"
        "                                   inside of the body */\n"
        "}\n"
-       "#top h1 {\n"
-       "       margin: 0;\n"
-       "       padding: 0;\n"
-       "}\n"
-       "#top h1 a {\n"
+       "#top {\n"
        "       background-color: #ccc;\n"
        "       border-bottom: 1px solid #666;\n"
        "       color: #222;\n"
@@ -487,73 +289,27 @@ const char css[] =
        "       line-height: 28px;\n"
        "       border-width:0px 8px 0px 8px;\n"
        "}\n"
-       "#top div.SystemButton {\n"
-       "       position: absolute;\n"
-       "       top: 7px;\n"
-       "       left: 6px;\n"
-       "}\n"
-       "#top div.SummaryButton {\n"
-       "       position: absolute;\n"
-       "       top: 7px;\n"
-       "       left: 160px;\n"
-       "}\n"
-       "#top div.CpuidleButton {\n"
-       "       position: absolute;\n"
-       "       top: 7px;\n"
-       "       left: 320px;\n"
-       "}\n"
-       "#top div.CpufreqButton {\n"
-       "       position: absolute;\n"
-       "       top: 7px;\n"
-       "       left: 480px;\n"
-       "}\n"
-       "#top div.SoftwareButton {\n"
-       "       position: absolute;\n"
-       "       top: 7px;\n"
-       "       left: 640px;\n"
-       "}\n"
-       "#top div.DeviceButton {\n"
-       "       position: absolute;\n"
-       "       top: 7px;\n"
-       "       left: 800px;\n"
-       "}\n"
-       "#top div.TuningButton {\n"
-       "       position: absolute;\n"
-       "       top: 7px;\n"
-       "       left: 960px;\n"
-       "}\n"
-       "#top div.AllButton {\n"
-       "       position: absolute;\n"
-       "       top: 7px;\n"
-       "       left: 1120px;\n"
+       "#top div.nav_button {\n"
+       " display: inline;\n"
+       " cursor: pointer;\n"
+       " padding: 0.3em 0.5em;\n"
+       " margin: 0 0.2em;\n"
        "}\n"
+       "\n"
        "div.pressed {\n"
        "       background-color: #000000;\n"
        "       border: 1px solid #000000;\n"
        "       color: #000000;\n"
-       "       display: block;\n"
-       "       border-width:0px 8px 0px 8px;\n"
-       "       -webkit-border-top-left-radius: 8px;\n"
-       "       -webkit-border-top-right-radius: 8px;\n"
-       "       -webkit-border-bottom-left-radius: 8px;\n"
-       "       -webkit-border-bottom-right-radius: 8px;\n"
-       "}\n"
-       "table.hide {\n"
-       "       display: none;\n"
+       "       border-radius: 8px;\n"
        "}\n"
-       "h2.hide {\n"
-       "       display: none;\n"
-       "}\n"
-       "p.hide {\n"
-       "       display: none\n"
+       "div.hide {\n"
+       " display: none;\n"
        "}\n"
        "</style>\n"
        "</head>\n"
        "\n"
-       "<body>\n"
-       "\n"
+       "<body onload='powertop.onload();'>\n"
        "<div id='top'>\n"
-       "<h1><a href='#top'>&nbsp;</a></h1>\n"
        "</div>\n"
        "\n"
 ;
index 1fe39c7..2b8da00 100644 (file)
@@ -115,9 +115,11 @@ ahci::ahci(char *_name, char *path): device()
 
        end_active = 0;
        end_slumber = 0;
+       end_devslp = 0;
        end_partial = 0;
        start_active = 0;
        start_slumber = 0;
+       start_devslp = 0;
        start_partial = 0;
        strncpy(sysfs_path, path, sizeof(sysfs_path));
 
@@ -165,7 +167,13 @@ void ahci::start_measurement(void)
                sprintf(filename, "%s/ahci_alpm_slumber", sysfs_path);
                file.open(filename, ios::in);
                if (file) {
-                               file >> start_slumber;
+                       file >> start_slumber;
+               }
+               file.close();
+               sprintf(filename, "%s/ahci_alpm_devslp", sysfs_path);
+               file.open(filename, ios::in);
+               if (file) {
+                       file >> start_devslp;
                }
                file.close();
        }
@@ -201,6 +209,12 @@ void ahci::end_measurement(void)
                        file >> end_slumber;
                }
                file.close();
+               sprintf(filename, "%s/ahci_alpm_devslp", sysfs_path);
+               file.open(filename, ios::in);
+               if (file) {
+                       file >> end_devslp;
+               }
+               file.close();
        }
        catch (std::ios_base::failure &c) {
                fprintf(stderr, "%s\n", c.what());
@@ -208,7 +222,7 @@ void ahci::end_measurement(void)
        if (end_active < start_active)
                end_active = start_active;
 
-       p = (end_active - start_active) / (0.001 + end_active + end_partial + end_slumber - start_active - start_partial - start_slumber) * 100.0;
+       p = (end_active - start_active) / (0.001 + end_active + end_partial + end_slumber + end_devslp - start_active - start_partial - start_slumber - start_devslp) * 100.0;
        if (p < 0)
                 p = 0;
        sprintf(powername, "%s-active", name);
@@ -217,7 +231,7 @@ void ahci::end_measurement(void)
        if (end_partial < start_partial)
                end_partial = start_partial;
 
-       p = (end_partial - start_partial) / (0.001 + end_active + end_partial + end_slumber - start_active - start_partial - start_slumber) * 100.0;
+       p = (end_partial - start_partial) / (0.001 + end_active + end_partial + end_slumber + end_devslp - start_active - start_partial - start_slumber - start_devslp) * 100.0;
        if (p < 0)
                 p = 0;
        sprintf(powername, "%s-partial", name);
@@ -229,7 +243,7 @@ double ahci::utilization(void)
 {
        double p;
 
-       p = (end_partial - start_partial + end_active - start_active) / (0.001 + end_active + end_partial + end_slumber - start_active - start_partial - start_slumber) * 100.0;
+       p = (end_partial - start_partial + end_active - start_active) / (0.001 + end_active + end_partial + end_slumber + end_devslp - start_active - start_partial - start_slumber - start_devslp) * 100.0;
 
        if (p < 0)
                p = 0;
index c2dda40..2adb87b 100644 (file)
@@ -35,6 +35,7 @@ class ahci: public device {
        uint64_t start_active, end_active;
        uint64_t start_partial, end_partial;
        uint64_t start_slumber, end_slumber;
+       uint64_t start_devslp, end_devslp;
        char sysfs_path[4096];
        char name[4096];
        int partial_rindex;
index 33a52f5..5dee334 100644 (file)
 
 #include <stdio.h>
 #include <sys/types.h>
-#include <dirent.h>
 #include <unistd.h>
 
-
 using namespace std;
 
 #include "device.h"
@@ -42,7 +40,7 @@ using namespace std;
 #include <string.h>
 #include <unistd.h>
 
-alsa::alsa(char *_name, char *path): device()
+alsa::alsa(const char *_name, const char *path): device()
 {
        ifstream file;
 
@@ -152,39 +150,29 @@ const char * alsa::device_name(void)
        return name;
 }
 
-void create_all_alsa(void)
+static void create_all_alsa_callback(const char *d_name)
 {
-       struct dirent *entry;
-       DIR *dir;
        char filename[4096];
+       class alsa *bl;
+       ofstream file;
 
-       dir = opendir("/sys/class/sound/card0/");
-       if (!dir)
+       if (strncmp(d_name, "hwC", 3) != 0)
                return;
-       while (1) {
-               class alsa *bl;
-               ofstream file;
-               entry = readdir(dir);
-               if (!entry)
-                       break;
-               if (strncmp(entry->d_name, "hwC", 3) != 0)
-                       continue;
-               sprintf(filename, "/sys/class/sound/card0/%s/power_on_acct", entry->d_name);
-
-               if (access(filename, R_OK) != 0)
-                       continue;
-
-               sprintf(filename, "/sys/class/sound/card0/%s", entry->d_name);
-
-               bl = new class alsa(entry->d_name, filename);
-               all_devices.push_back(bl);
-               register_parameter("alsa-codec-power", 0.5);
-       }
-       closedir(dir);
 
-}
+       sprintf(filename, "/sys/class/sound/card0/%s/power_on_acct", d_name);
+       if (access(filename, R_OK) != 0)
+               return;
 
+       sprintf(filename, "/sys/class/sound/card0/%s", d_name);
+       bl = new class alsa(d_name, filename);
+       all_devices.push_back(bl);
+       register_parameter("alsa-codec-power", 0.5);
+}
 
+void create_all_alsa(void)
+{
+       process_directory("/sys/class/sound/card0/", create_all_alsa_callback);
+}
 
 double alsa::power_usage(struct result_bundle *result, struct parameter_bundle *bundle)
 {
index 5aebfd7..f7b4b97 100644 (file)
@@ -41,7 +41,7 @@ class alsa: public device {
        int rindex;
 public:
 
-       alsa(char *_name, char *path);
+       alsa(const char *_name, const char *path);
 
        virtual void start_measurement(void);
        virtual void end_measurement(void);
@@ -63,4 +63,4 @@ public:
 extern void create_all_alsa(void);
 
 
-#endif
\ No newline at end of file
+#endif
index 03aa5bc..73bdac9 100644 (file)
@@ -39,17 +39,15 @@ using namespace std;
 #include <string.h>
 
 
-backlight::backlight(char *_name, char *path): device()
+backlight::backlight(const char *_name, const char *path): device()
 {
-       char devname[128];
        min_level = 0;
        max_level = 0;
        start_level = 0;
        end_level = 0;
        strncpy(sysfs_path, path, sizeof(sysfs_path));
        register_sysfs_path(sysfs_path);
-       sprintf(devname, "backlight:%s", _name);
-       strncpy(name, devname, sizeof(name));
+       snprintf(name, sizeof(name) - 1, "backlight:%s", _name);
        r_index = get_result_index(name);
        r_index_power = 0;
 }
@@ -156,36 +154,24 @@ const char * backlight::device_name(void)
        return name;
 }
 
-void create_all_backlights(void)
+static void create_all_backlights_callback(const char *d_name)
 {
-       struct dirent *entry;
-       DIR *dir;
+       class backlight *bl;
        char filename[4096];
-
-       dir = opendir("/sys/class/backlight/");
-       if (!dir)
-               return;
-       while (1) {
-               class backlight *bl;
-               entry = readdir(dir);
-               if (!entry)
-                       break;
-               if (entry->d_name[0] == '.')
-                       continue;
-               sprintf(filename, "/sys/class/backlight/%s", entry->d_name);
-               bl = new class backlight(entry->d_name, filename);
-               all_devices.push_back(bl);
-               register_parameter("backlight");
-               register_parameter("backlight-power");
-               register_parameter("backlight-boost-40", 0, 0.5);
-               register_parameter("backlight-boost-80", 0, 0.5);
-               register_parameter("backlight-boost-100", 0, 0.5);
-       }
-       closedir(dir);
-
+       sprintf(filename, "/sys/class/backlight/%s", d_name);
+       bl = new class backlight(d_name, filename);
+       all_devices.push_back(bl);
 }
 
-
+void create_all_backlights(void)
+{
+       process_directory("/sys/class/backlight/", create_all_backlights_callback);
+       register_parameter("backlight");
+       register_parameter("backlight-power");
+       register_parameter("backlight-boost-40", 0, 0.5);
+       register_parameter("backlight-boost-80", 0, 0.5);
+       register_parameter("backlight-boost-100", 0, 0.5);
+}
 
 double backlight::power_usage(struct result_bundle *result, struct parameter_bundle *bundle)
 {
index 549654e..3d5377a 100644 (file)
@@ -37,7 +37,7 @@ class backlight: public device {
        int r_index_power;
 public:
 
-       backlight(char *_name, char *path);
+       backlight(const char *_name, const char *path);
 
        virtual void start_measurement(void);
        virtual void end_measurement(void);
@@ -55,4 +55,4 @@ public:
 extern void create_all_backlights(void);
 
 
-#endif
\ No newline at end of file
+#endif
diff --git a/src/devices/gpu_rapl_device.cpp b/src/devices/gpu_rapl_device.cpp
new file mode 100644 (file)
index 0000000..71d71a0
--- /dev/null
@@ -0,0 +1,70 @@
+/*
+ * Copyright 2010, 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
+ * or just google for it.
+ *
+ * Authors:
+ *     Srinivas Pandruvada<Srinivas.Pandruvada@linux.intel.com>
+ */
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+#include "../parameters/parameters.h"
+#include "gpu_rapl_device.h"
+
+gpu_rapl_device::gpu_rapl_device(i915gpu *parent)
+       : i915gpu(),
+         device_valid(false)
+{
+       last_time = time(NULL);
+       if (rapl.pp1_domain_present()) {
+               device_valid = true;
+               parent->add_child(this);
+               rapl.get_pp1_energy_status(&last_energy);
+       }
+}
+
+void gpu_rapl_device::start_measurement(void)
+{
+       last_time = time(NULL);
+
+       rapl.get_pp1_energy_status(&last_energy);
+}
+
+void gpu_rapl_device::end_measurement(void)
+{
+       time_t          curr_time = time(NULL);
+       double energy;
+
+       consumed_power = 0.0;
+       if ((curr_time - last_time) > 0) {
+               rapl.get_pp1_energy_status(&energy);
+               consumed_power = (energy-last_energy)/(curr_time-last_time);
+               last_energy = energy;
+               last_time = curr_time;
+       }
+}
+
+double gpu_rapl_device::power_usage(struct result_bundle *result, struct parameter_bundle *bundle)
+{
+       if (rapl.pp1_domain_present())
+               return consumed_power;
+       else
+               return 0.0;
+}
similarity index 53%
rename from src/measurement/power_supply.h
rename to src/devices/gpu_rapl_device.h
index 5ad776e..fbde246 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright 2011, Intel Corporation
+ * Copyright 2010, Intel Corporation
  *
  * This file is part of PowerTOP
  *
  * or just google for it.
  *
  * Authors:
- *     John Mathew <johnx.mathew@intel.com>
+ *     Srinivas Pandruvada <Srinivas.Pandruvada@linux.intel.com>
  */
-#ifndef __INCLUDE_GUARD_POWER_SUPPLY_H
-#define __INCLUDE_GUARD_POWER_SUPPLY_H
+#ifndef _INCLUDE_GUARD_GPU_RAPL_DEVICE_H
+#define _INCLUDE_GUARD_GPU_RAPL_DEVICE_H
 
-#include "measurement.h"
+#include <vector>
+#include <string>
 
-class power_supply:public power_meter {
-       char battery_name[256];
+using namespace std;
+
+#include <sys/time.h>
+#include "i915-gpu.h"
+#include "cpu/rapl/rapl_interface.h"
+
+class gpu_rapl_device: public i915gpu {
+
+       c_rapl_interface rapl;
+       time_t          last_time;
+       double          last_energy;
+       double          consumed_power;
+       bool            device_valid;
 
-       double capacity;
-       double rate;
-       double voltage;
-       void measure(void);
 public:
-       power_supply(const char *_battery_name);
+       gpu_rapl_device(i915gpu *parent);
+       virtual const char * class_name(void) { return "GPU core";};
+       virtual const char * device_name(void) { return "GPU core";};
+       bool device_present() { return device_valid;}
+       virtual double power_usage(struct result_bundle *result, struct parameter_bundle *bundle);
        virtual void start_measurement(void);
        virtual void end_measurement(void);
 
-       virtual double joules_consumed(void);
-       virtual double dev_capacity(void) { return capacity; };
 };
 
+
 #endif
index bcc07cc..a2cfaa5 100644 (file)
@@ -37,6 +37,7 @@ using namespace std;
 #include "i915-gpu.h"
 #include "../parameters/parameters.h"
 #include "../process/powerconsumer.h"
+#include "gpu_rapl_device.h"
 
 #include <string.h>
 #include <unistd.h>
@@ -47,6 +48,14 @@ i915gpu::i915gpu(): device()
        rindex = get_result_index("gpu-operations");
 }
 
+const char * i915gpu::device_name(void)
+{
+       if (child_devices.size())
+               return "GPU misc";
+       else
+               return "GPU";
+}
+
 void i915gpu::start_measurement(void)
 {
 }
@@ -66,6 +75,7 @@ void create_i915_gpu(void)
 {
        char filename[4096];
        class i915gpu *gpu;
+       gpu_rapl_device *rapl_dev;
 
        strcpy(filename, "/sys/kernel/debug/tracing/events/i915/i915_gem_ring_dispatch/format");
 
@@ -80,6 +90,10 @@ void create_i915_gpu(void)
 
        gpu = new class i915gpu();
        all_devices.push_back(gpu);
+
+       rapl_dev = new class gpu_rapl_device(gpu);
+       if (rapl_dev->device_present())
+               all_devices.push_back(rapl_dev);
 }
 
 
@@ -89,11 +103,18 @@ double i915gpu::power_usage(struct result_bundle *result, struct parameter_bundl
        double power;
        double factor;
        double util;
+       double child_power;
 
        power = 0;
        factor = get_parameter_value(index, bundle);
        util = get_result_value(rindex, result);
 
        power += util * factor / 100.0;
+       for (unsigned int i = 0; i < child_devices.size(); ++i) {
+               child_power = child_devices[i]->power_usage(result, bundle);
+               if ((power - child_power) > 0.0)
+                       power -= child_power;
+       }
+
        return power;
 }
index 25cf748..7653b94 100644 (file)
@@ -31,6 +31,8 @@
 class i915gpu: public device {
        int index;
        int rindex;
+       vector<device *>child_devices;
+
 public:
 
        i915gpu();
@@ -42,10 +44,12 @@ public:
 
        virtual const char * class_name(void) { return "GPU";};
 
-       virtual const char * device_name(void) { return "GPU";};
+       virtual const char * device_name(void);
        virtual double power_usage(struct result_bundle *result, struct parameter_bundle *bundle);
        virtual bool show_in_list(void) {return false;};
        virtual const char * util_units(void) { return " ops/s"; };
+
+       virtual void add_child(device *dev_ptr) { child_devices.push_back(dev_ptr);}
 };
 
 extern void create_i915_gpu(void);
index 3b67610..002600b 100644 (file)
@@ -30,7 +30,6 @@
 
 #include <stdio.h>
 #include <sys/types.h>
-#include <dirent.h>
 #include <libgen.h>
 #include <stdlib.h>
 #include <unistd.h>
@@ -344,11 +343,34 @@ const char * network::device_name(void)
        return name;
 }
 
-void netdev_callback(const char *d_name)
+static void netdev_callback(const char *d_name)
 {
+       char devname[128];
+
        std::string f_name("/sys/class/net/");
+       if (strcmp(d_name, "lo") == 0)
+               return;
+
        f_name.append(d_name);
 
+       sprintf(devname, "%s-up", d_name);
+       register_parameter(devname);
+
+       sprintf(devname, "%s-powerunsave", d_name);
+       register_parameter(devname);
+
+       sprintf(devname, "%s-link-100", d_name);
+       register_parameter(devname);
+
+       sprintf(devname, "%s-link-1000", d_name);
+       register_parameter(devname);
+
+       sprintf(devname, "%s-link-high", d_name);
+       register_parameter(devname);
+
+       sprintf(devname, "%s-packets", d_name);
+       register_parameter(devname);
+
        network *bl = new(std::nothrow) class network(d_name, f_name.c_str());
        if (bl) {
                all_devices.push_back(bl);
@@ -356,7 +378,6 @@ void netdev_callback(const char *d_name)
        }
 }
 
-
 void create_all_nics(callback fn)
 {
        if (!fn)
index 2404432..01aec23 100644 (file)
@@ -27,7 +27,6 @@
 
 #include <stdio.h>
 #include <sys/types.h>
-#include <dirent.h>
 #include <libgen.h>
 #include <unistd.h>
 
@@ -136,41 +135,30 @@ const char * rfkill::device_name(void)
        return name;
 }
 
-void create_all_rfkills(void)
+static void create_all_rfkills_callback(const char *d_name)
 {
-       struct dirent *entry;
-       DIR *dir;
        char filename[4096];
        char name[4096];
+       class rfkill *bl;
+       ifstream file;
 
-       dir = opendir("/sys/class/rfkill/");
-       if (!dir)
-               return;
-       while (1) {
-               class rfkill *bl;
-               ifstream file;
-               entry = readdir(dir);
-               if (!entry)
-                       break;
-               if (entry->d_name[0] == '.')
-                       continue;
-               sprintf(filename, "/sys/class/rfkill/%s/name", entry->d_name);
-               strcpy(name, entry->d_name);
-               file.open(filename, ios::in);
-               if (file) {
-                       file.getline(name, 100);
-                       file.close();
-               }
-
-               sprintf(filename, "/sys/class/rfkill/%s", entry->d_name);
-               bl = new class rfkill(name, filename);
-               all_devices.push_back(bl);
+       sprintf(filename, "/sys/class/rfkill/%s/name", d_name);
+       strcpy(name, d_name);
+       file.open(filename, ios::in);
+       if (file) {
+               file.getline(name, 100);
+               file.close();
        }
-       closedir(dir);
 
+       sprintf(filename, "/sys/class/rfkill/%s", d_name);
+       bl = new class rfkill(name, filename);
+       all_devices.push_back(bl);
 }
 
-
+void create_all_rfkills(void)
+{
+       process_directory("/sys/class/rfkill/", create_all_rfkills_callback);
+}
 
 double rfkill::power_usage(struct result_bundle *result, struct parameter_bundle *bundle)
 {
@@ -185,4 +173,4 @@ double rfkill::power_usage(struct result_bundle *result, struct parameter_bundle
        power += util * factor / 100.0;
 
        return power;
-}
\ No newline at end of file
+}
index e7542a8..2c5d38b 100644 (file)
 #include "usb.h"
 
 #include <string.h>
-
 #include <stdio.h>
 #include <unistd.h>
 #include <sys/types.h>
-#include <dirent.h>
 
 #include "../lib.h"
 #include "../parameters/parameters.h"
@@ -186,57 +184,42 @@ double usbdevice::power_usage(struct result_bundle *result, struct parameter_bun
        return power;
 }
 
-
-void create_all_usb_devices(void)
+static void create_all_usb_devices_callback(const char *d_name)
 {
-       struct dirent *entry;
-       DIR *dir;
        char filename[4096];
-
-       dir = opendir("/sys/bus/usb/devices/");
-       if (!dir)
+       ifstream file;
+       class usbdevice *usb;
+       char device_name[4096];
+       char vendorid[64], devid[64];
+       char devid_name[4096];
+
+       sprintf(filename, "/sys/bus/usb/devices/%s", d_name);
+       sprintf(device_name, "%s/power/active_duration", filename);
+       if (access(device_name, R_OK) != 0)
                return;
-       while (1) {
-               ifstream file;
-               class usbdevice *usb;
-               char device_name[4096];
-               char vendorid[64], devid[64];
-               char devid_name[4096];
-               entry = readdir(dir);
-
-               if (!entry)
-                       break;
-               if (entry->d_name[0] == '.')
-                       continue;
-
-               sprintf(filename, "/sys/bus/usb/devices/%s", entry->d_name);
-
-               sprintf(device_name, "%s/power/active_duration", filename);
-               if (access(device_name, R_OK)!=0)
-                       continue;
-
-               sprintf(device_name, "%s/idVendor", filename);
-               file.open(device_name, ios::in);
-               if (file)
-                       file.getline(vendorid, 64);
-               file.close();
-               sprintf(device_name, "%s/idProduct", filename);
-               file.open(device_name, ios::in);
-               if (file)
-                       file.getline(devid, 64);
-               file.close();
-
-               sprintf(devid_name, "usb-device-%s-%s", vendorid, devid);
 
-               sprintf(device_name, "usb-device-%s-%s-%s", entry->d_name, vendorid, devid);
+       sprintf(device_name, "%s/idVendor", filename);
+       file.open(device_name, ios::in);
+       if (file)
+               file.getline(vendorid, 64);
+       file.close();
+       sprintf(device_name, "%s/idProduct", filename);
+       file.open(device_name, ios::in);
+       if (file)
+               file.getline(devid, 64);
+       file.close();
 
-               if (result_device_exists(device_name))
-                       continue;
+       sprintf(devid_name, "usb-device-%s-%s", vendorid, devid);
+       sprintf(device_name, "usb-device-%s-%s-%s", d_name, vendorid, devid);
+       if (result_device_exists(device_name))
+               return;
 
-               usb = new class usbdevice(device_name, filename, devid_name);
-               all_devices.push_back(usb);
+       usb = new class usbdevice(device_name, filename, devid_name);
+       all_devices.push_back(usb);
+       register_parameter(devid_name, 0.1);
+}
 
-               register_parameter(devid_name, 0.1);
-       }
-       closedir(dir);
+void create_all_usb_devices(void)
+{
+       process_directory("/sys/bus/usb/devices/", create_all_usb_devices_callback);
 }
index 723517a..a8f3746 100644 (file)
@@ -56,6 +56,7 @@ extern "C" {
 #include <limits>
 #include <math.h>
 #include <ncurses.h>
+#include <fcntl.h>
 
 static int kallsyms_read = 0;
 
@@ -257,22 +258,39 @@ string read_sysfs_string(const char *format, const char *param)
        return content;
 }
 
+void align_string(char *buffer, size_t min_sz, size_t max_sz)
+{
+       size_t sz;
+
+       /** mbsrtowcs() allows NULL dst and zero sz,
+        * comparing to mbstowcs(), which causes undefined
+        * behaviour under given circumstances*/
+
+       /* start with mbsrtowcs() local mbstate_t * and
+        * NULL dst pointer*/
+       sz = mbsrtowcs(NULL, (const char **)&buffer, max_sz, NULL);
+       if (sz == (size_t)-1) {
+               buffer[min_sz] = 0x00;
+               return;
+       }
+       while (sz < min_sz) {
+               strcat(buffer, " ");
+               sz++;
+       }
+}
 
 void format_watts(double W, char *buffer, unsigned int len)
 {
        buffer[0] = 0;
        char buf[32];
-
        sprintf(buffer, _("%7sW"), fmt_prefix(W, buf));
 
        if (W < 0.0001)
                sprintf(buffer, _("    0 mW"));
 
-       while (mbstowcs(NULL,buffer,0) < len)
-               strcat(buffer, " ");
+       align_string(buffer, len, len);
 }
 
-
 #ifndef HAVE_NO_PCI
 static struct pci_access *pci_access;
 
@@ -430,12 +448,8 @@ void process_directory(const char *d_name, callback fn)
                        break;
                if (entry->d_name[0] == '.')
                        continue;
-               if (strcmp(entry->d_name, "lo")==0)
-                       continue;
-
                fn(entry->d_name);
        }
-
        closedir(dir);
 }
 
@@ -450,3 +464,87 @@ int get_user_input(char *buf, unsigned sz)
        /* to distinguish between getnstr error and empty line */
        return ret || strlen(buf);
 }
+
+int read_msr(int cpu, uint64_t offset, uint64_t *value)
+{
+       ssize_t retval;
+       uint64_t msr;
+       int fd;
+       char msr_path[256];
+
+       fd = sprintf(msr_path, "/dev/cpu/%d/msr", cpu);
+
+       if (access(msr_path, R_OK) != 0){
+               fd = sprintf(msr_path, "/dev/msr%d", cpu);
+
+               if (access(msr_path, R_OK) != 0){
+                       fprintf(stderr,
+                        _("Model-specific registers (MSR)\
+                        not found (try enabling CONFIG_X86_MSR).\n"));
+                       return -1;
+               }
+       }
+
+       fd = open(msr_path, O_RDONLY);
+       if (fd < 0)
+               return -1;
+       retval = pread(fd, &msr, sizeof msr, offset);
+       close(fd);
+       if (retval != sizeof msr) {
+               return -1;
+       }
+       *value = msr;
+
+       return retval;
+}
+
+int write_msr(int cpu, uint64_t offset, uint64_t value)
+{
+       ssize_t retval;
+       int fd;
+       char msr_path[256];
+
+       fd = sprintf(msr_path, "/dev/cpu/%d/msr", cpu);
+
+       if (access(msr_path, R_OK) != 0){
+               fd = sprintf(msr_path, "/dev/msr%d", cpu);
+
+               if (access(msr_path, R_OK) != 0){
+                       fprintf(stderr,
+                        _("Model-specific registers (MSR)\
+                        not found (try enabling CONFIG_X86_MSR).\n"));
+                       return -1;
+               }
+       }
+
+       fd = open(msr_path, O_WRONLY);
+       if (fd < 0)
+               return -1;
+       retval = pwrite(fd, &value, sizeof value, offset);
+       close(fd);
+       if (retval != sizeof value) {
+               return -1;
+       }
+
+       return retval;
+}
+
+#define UI_NOTIFY_BUFF_SZ 2048
+
+void ui_notify_user(const char *frmt, ...)
+{
+       char notify[UI_NOTIFY_BUFF_SZ];
+       va_list list;
+
+       start_color();
+       init_pair(1, COLOR_BLACK, COLOR_WHITE);
+       attron(COLOR_PAIR(1));
+       va_start(list, frmt);
+       /* there is no ncurses *print() function which takes
+        * int x, int y and va_list, this is why we use temp
+        * buffer */
+       vsnprintf(notify, UI_NOTIFY_BUFF_SZ - 1, frmt, list);
+       va_end(list);
+       mvprintw(1, 0, notify);
+       attroff(COLOR_PAIR(1));
+}
index de2de5a..adcc4a2 100644 (file)
--- a/src/lib.h
+++ b/src/lib.h
@@ -74,5 +74,10 @@ typedef void (*callback)(const char*);
 extern void process_directory(const char *d_name, callback fn);
 extern int utf_ok;
 extern int get_user_input(char *buf, unsigned sz);
+extern int read_msr(int cpu, uint64_t offset, uint64_t *value);
+extern int write_msr(int cpu, uint64_t offset, uint64_t value);
 
+extern void align_string(char *buffer, size_t min_sz, size_t max_sz);
+
+extern void ui_notify_user(const char *frmt, ...);
 #endif
index 0883424..4e34ee6 100644 (file)
@@ -28,6 +28,7 @@
  *     Arjan van de Ven <arjan@linux.intel.com>
  */
 #include <iostream>
+#include <fstream>
 #include <stdlib.h>
 #include <stdio.h>
 #include <time.h>
@@ -36,6 +37,7 @@
 #include <getopt.h>
 #include <unistd.h>
 #include <locale.h>
+#include <sys/resource.h>
 
 #include "cpu/cpu.h"
 #include "process/process.h"
@@ -60,6 +62,8 @@
 
 #define DEBUGFS_MAGIC          0x64626720
 
+#define NR_OPEN_DEF 1024 * 1024
+
 int debug_learning = 0;
 unsigned time_out = 20;
 int leave_powertop = 0;
@@ -71,6 +75,7 @@ static const struct option long_options[] =
        {"version", no_argument, NULL, 'V'},
        {"help",no_argument, NULL, 'u'}, /* u for usage */
        {"calibrate",no_argument, NULL, 'c'},
+       {"auto-tune",no_argument, NULL, 'a'},
        {"html", optional_argument, NULL, 'h'},
        {"csv", optional_argument, NULL, 'C'},
        {"extech", optional_argument, NULL, 'e'},
@@ -106,6 +111,7 @@ static void print_usage()
        printf("--debug \t\t %s\n",_("run in \"debug\" mode"));
        printf("--version \t\t %s\n",_("print version information"));
        printf("--calibrate \t\t %s\n",_("runs powertop in calibration mode"));
+       printf("--auto-tune \t\t %s\n",_("Sets all tunable options to their GOOD setting"));
        printf("--extech%s \t %s\n",_("[=devnode]"),_("uses an Extech Power Analyzer for measurements"));
        printf("--html%s \t %s\n",_("[=FILENAME]"),_("generate a html report"));
        printf("--csv%s \t %s\n",_("[=FILENAME]"),_("generate a csv report"));
@@ -136,10 +142,10 @@ static void do_sleep(int seconds)
 
                c = getch();
                switch (c) {
-               case 353: 
+               case KEY_BTAB:
                        show_prev_tab();
                        break;
-               case 9:
+               case '\t':
                        show_next_tab(); 
                        break;
                case KEY_RIGHT:
@@ -156,8 +162,8 @@ static void do_sleep(int seconds)
                case KEY_UP:
                        cursor_up();
                        break;
-               case 32:
-               case 10:
+               case ' ':
+               case '\n':
                        cursor_enter();
                        break;
                case 's':
@@ -169,7 +175,7 @@ static void do_sleep(int seconds)
                        return;
                case KEY_EXIT:
                case 'q':
-               case 27:
+               case 27:        // Escape
                        leave_powertop = 1;
                        return;
                }
@@ -278,16 +284,35 @@ static void checkroot() {
 
 }
 
+static int get_nr_open(void) {
+       int nr_open = NR_OPEN_DEF;
+       ifstream file;
+
+       file.open("/proc/sys/fs/nr_open", ios::in);
+       if (file) {
+               file >> nr_open;
+               if (!file)
+                       nr_open = NR_OPEN_DEF;
+               file.close();
+       }
+       return nr_open;
+}
+
 static void powertop_init(void)
 {
        static char initialized = 0;
        int ret;
        struct statfs st_fs;
+       struct rlimit rlmt;
 
        if (initialized)
                return;
 
        checkroot();
+
+       rlmt.rlim_cur = rlmt.rlim_max = get_nr_open();
+       setrlimit (RLIMIT_NOFILE, &rlmt);
+
        ret = system("/sbin/modprobe cpufreq_stats > /dev/null 2>&1");
        ret = system("/sbin/modprobe msr > /dev/null 2>&1");
        statfs("/sys/kernel/debug", &st_fs);
@@ -339,7 +364,7 @@ int main(int argc, char **argv)
        int c;
        char filename[4096];
        char workload[4096] = {0,};
-       int  iterations = 1;
+       int  iterations = 1, auto_tune = 0;
 
        set_new_handler(out_of_memory);
 
@@ -367,7 +392,10 @@ int main(int argc, char **argv)
                                print_usage();
                                exit(0);
                                break;
-
+                       case 'a':
+                               auto_tune = 1;
+                               leave_powertop = 1;
+                               break;
                        case 'c':
                                powertop_init();
                                calibrate();
@@ -423,13 +451,17 @@ int main(int argc, char **argv)
                end_pci_access();
                exit(0);
        }
-
-       /* first one is short to not let the user wait too long */
        init_display();
-       one_measurement(1, NULL);
        initialize_tuning();
-       tuning_update_display();
-       show_tab(0);
+       /* first one is short to not let the user wait too long */
+       one_measurement(1, NULL);
+
+       if (!auto_tune) {
+               tuning_update_display();
+               show_tab(0);
+       } else {
+               auto_toggle_tuning();
+       }
 
        while (!leave_powertop) {
                show_cur_tab();
index 0b68940..efbdc1e 100644 (file)
@@ -25,7 +25,6 @@
 #include "measurement.h"
 #include "acpi.h"
 #include "extech.h"
-#include "power_supply.h"
 #include "sysfs.h"
 #include "../parameters/parameters.h"
 #include "../lib.h"
@@ -54,23 +53,6 @@ double power_meter::joules_consumed(void)
        return 0.0;
 }
 
-double power_meter::time_left(void)
-{
-       double cap, rate;
-
-       cap = dev_capacity();
-       rate = joules_consumed();
-
-       if (cap < 0.001)
-               return 0.0;
-
-       /* return 0.0 instead of INF+ */
-       if (rate < 0.001)
-               return 0.0;
-
-       return cap / rate;
-}
-
 vector<class power_meter *> power_meters;
 
 void start_power_measurement(void)
@@ -88,10 +70,17 @@ void end_power_measurement(void)
 
 double global_joules_consumed(void)
 {
+       bool global_discharging = false;
        double total = 0.0;
        unsigned int i;
-       for (i = 0; i < power_meters.size(); i++)
+
+       for (i = 0; i < power_meters.size(); i++) {
+               global_discharging |= power_meters[i]->is_discharging();
                total += power_meters[i]->joules_consumed();
+       }
+       /* report global time left if at least one battery is discharging */
+       if (!global_discharging)
+               return 0.0;
 
        all_results.power = total;
        if (total < min_power && total > 0.01)
@@ -101,13 +90,19 @@ double global_joules_consumed(void)
 
 double global_time_left(void)
 {
+       bool global_discharging = false;
        double total_capacity = 0.0;
        double total_rate = 0.0;
        unsigned int i;
        for (i = 0; i < power_meters.size(); i++) {
+               global_discharging |= power_meters[i]->is_discharging();
                total_capacity += power_meters[i]->dev_capacity();
                total_rate += power_meters[i]->joules_consumed();
        }
+       /* report global time left if at least one battery is discharging */
+       if (!global_discharging)
+               return 0.0;
+
        /* return 0.0 instead of INF+ */
        if (total_rate < 0.001)
                return 0.0;
@@ -135,35 +130,6 @@ void acpi_power_meters_callback(const char *d_name)
                power_meters.push_back(meter);
 }
 
-void power_supply_callback(const char *d_name)
-{
-       char filename[4096];
-       char line[4096];
-       ifstream file;
-       bool discharging = false;
-
-       sprintf(filename, "/sys/class/power_supply/%s/uevent", d_name);
-       file.open(filename, ios::in);
-       if (!file)
-               return;
-
-       while (file) {
-               file.getline(line, 4096);
-
-               if (strstr(line, "POWER_SUPPLY_STATUS") && strstr(line, "Discharging"))
-                     discharging = true;
-       }
-       file.close();
-
-       if (!discharging)
-           return;
-
-       class power_supply *power;
-       power = new(std::nothrow) class power_supply(d_name);
-       if (power)
-               power_meters.push_back(power);
-}
-
 void detect_power_meters(void)
 {
        process_directory("/sys/class/power_supply", sysfs_power_meters_callback);
index 5bcd8e2..83ffc34 100644 (file)
 using namespace std;
 
 class power_meter {
+       bool discharging;
 public:
+       virtual ~power_meter() {};
+
        virtual void start_measurement(void);
        virtual void end_measurement(void);
-
        virtual double joules_consumed(void);
-       virtual double dev_capacity(void) { return 0.0;};  /* in Joules */
 
-       virtual double time_left(void);
+       virtual double dev_capacity(void)
+       {
+               return 0.0; /* in Joules */
+       }
 
-       virtual ~power_meter() {};
-};
+       virtual void set_discharging(bool d)
+       {
+               discharging = d;
+       }
 
+       virtual bool is_discharging()
+       {
+               return discharging;
+       }
+};
 
 extern vector<class power_meter *> power_meters;
 
@@ -53,7 +64,6 @@ extern double global_time_left(void);
 extern void detect_power_meters(void);
 extern void extech_power_meter(const char *devnode);
 
-
 extern double min_power;
 
-#endif
\ No newline at end of file
+#endif
diff --git a/src/measurement/power_supply.cpp b/src/measurement/power_supply.cpp
deleted file mode 100644 (file)
index f514740..0000000
+++ /dev/null
@@ -1,190 +0,0 @@
-/*
- * Copyright 2011, 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
- * or just google for it.
- *
- * Authors:
- *     John Mathew <johnx.mathew@intel.com>
- */
-#include "measurement.h"
-#include "power_supply.h"
-#include <iostream>
-#include <fstream>
-#include <string.h>
-#include <stdio.h>
-#include <stdlib.h>
-
-using namespace std;
-
-power_supply::power_supply(const char *supply_name)
-{
-       rate = 0.0;
-       capacity = 0.0;
-       voltage = 0.0;
-       strncpy(battery_name, supply_name, sizeof(battery_name));
-}
-
-/*
-POWER_SUPPLY_NAME=msic-battery
-POWER_SUPPLY_STATUS=Discharging
-POWER_SUPPLY_HEALTH=Cold
-POWER_SUPPLY_PRESENT=1
-POWER_SUPPLY_TECHNOLOGY=Li-ion
-POWER_SUPPLY_VOLTAGE_MAX_DESIGN=4200000
-POWER_SUPPLY_VOLTAGE_NOW=4119000
-POWER_SUPPLY_CURRENT_NOW=-290000
-POWER_SUPPLY_CHARGE_NOW=1503000
-POWER_SUPPLY_CHARGE_COUNTER=-254923
-POWER_SUPPLY_CHARGE_FULL_DESIGN=1500000
-POWER_SUPPLY_CHARGE_FULL=1500000
-POWER_SUPPLY_CHARGE_AVG=32762000
-POWER_SUPPLY_ENERGY_FULL=6300000
-POWER_SUPPLY_ENERGY_NOW=6235000
-POWER_SUPPLY_CAPACITY_LEVEL=Full
-POWER_SUPPLY_CAPACITY=100
-POWER_SUPPLY_TEMP=-340
-POWER_SUPPLY_MODEL_NAME=CDK0
-POWER_SUPPLY_MANUFACTURER=IN
-
-Quoting include/linux/power_supply.h:
-
-All voltages, currents, charges, energies, time and temperatures in µV,
-µA, µAh, µWh, seconds and tenths of degree Celsius unless otherwise
-stated. It's driver's job to convert its raw values to units in which
-this class operates.
-*/
-
-void power_supply::measure(void)
-{
-       char filename[4096];
-       char line[4096];
-       ifstream file;
-
-       double _power_rate = 0;
-       double _current_rate = 0;
-       double _capacity = 0;
-       double _voltage = 0;
-
-       rate = 0;
-       voltage = 0;
-       capacity = 0;
-
-       sprintf(filename, "/sys/class/power_supply/%s/uevent", battery_name);
-
-       file.open(filename, ios::in);
-       if (!file)
-               return;
-
-       while (file) {
-               char *c;
-               file.getline(line, 4096);
-
-               if (strstr(line, "PRESENT")) {
-                       c = strchr(line, '=');
-                       c++;
-                       if(*c == '0'){
-                               printf ("Battery not present");
-                               return;
-                       }
-               }
-               if (strstr(line, "CURRENT_NOW")) {
-                       c = strchr(line, '=');
-                       c++;
-                       if(*c == '-') c++; // ignoring the negative sign
-                       _current_rate = strtoull(c, NULL, 10);
-                       if (c) {
-                               //printf ("CURRENT: %f. \n",_current_rate);
-                       } else {
-                               _current_rate = 0;
-                       }
-               }
-               if (strstr(line, "POWER_NOW")) {
-                       c = strchr(line, '=');
-                       c++;
-                       _power_rate = strtoull(c, NULL, 10);
-                       if (c) {
-                               //printf ("POWER: %f. \n",_power_rate);
-                       } else {
-                               _power_rate = 0;
-                       }
-               }
-               if (strstr(line, "CAPACITY=")) {
-                       c = strchr(line, '=');
-                       c++;
-                       _capacity = strtoull(c, NULL, 10);
-                       if (c) {
-                               //printf ("CAPACITY: %f. \n",_capacity);
-                       } else {
-                               _capacity = 0;
-                       }
-               }
-               if (strstr(line, "VOLTAGE_NOW")) {
-                       c = strchr(line, '=');
-                       c++;
-                       while (*c == ' ') c++;
-                       _voltage = strtoull(c, NULL, 10);
-                       if (c) {
-                               //printf ("VOLTAGE_NOW: %f. \n",_voltage);
-                       } else {
-                               _voltage = 0;
-                       }
-               }
-       }
-       file.close();
-
-       if(_voltage) {
-               _voltage = _voltage / 1000.0;
-               voltage = _voltage;
-       } else {
-               voltage = 0.0;
-       }
-
-       if(_power_rate)
-       {
-               rate = _power_rate / 1000000.0;
-       }
-       else if(_current_rate) {
-               _current_rate = _current_rate / 1000.0;
-               rate = _current_rate * _voltage;
-       } else {
-               rate = 0.0;
-       }
-
-       if(_capacity)
-               capacity = _capacity;
-       else
-               capacity = 0.0;
-}
-
-
-void power_supply::end_measurement(void)
-{
-       measure();
-}
-
-void power_supply::start_measurement(void)
-{
-       /* ACPI battery state is a lagging indication, lets only measure at the end */
-}
-
-
-double power_supply::joules_consumed(void)
-{
-       return rate;
-}
index 66cb1cd..ed42ed4 100644 (file)
@@ -126,11 +126,13 @@ void sysfs_power_meter::measure()
 
        rate = 0.0;
        capacity = 0.0;
+       this->set_discharging(false);
 
        if (!is_present())
                return;
-       if (read_sysfs_string("/sys/class/power_supply/%s/status", name) != "Discharging")
-               return;
+       /** do not jump over. we may have discharging battery */
+       if (read_sysfs_string("/sys/class/power_supply/%s/status", name) == "Discharging")
+               this->set_discharging(true);
 
        got_rate = set_rate_from_power();
        got_capacity = set_capacity_from_energy();
@@ -146,7 +148,6 @@ void sysfs_power_meter::measure()
        }
 }
 
-
 void sysfs_power_meter::end_measurement(void)
 {
        measure();
index 936d789..8ffda16 100644 (file)
@@ -188,18 +188,14 @@ double compute_bundle(struct parameter_bundle *parameters, struct result_bundle
        if (!bpi)
                bpi = get_param_index("base power");
 
-       power = parameters->parameters[bpi];
-
-       for (i = 0; i < all_devices.size(); i++) {
-
+       for (i = 0; i < all_devices.size(); i++)
                power += all_devices[i]->power_usage(results, parameters);
-       }
-//     printf("result power is %6.2f  guessed is %6.2f\n", results->power, power);
+
        parameters->actual_power = results->power;
        parameters->guessed_power = power;
        /* scale the squared error by the actual power so that non-idle data points weigh heavier */
        parameters->score += results->power * (power - results->power) * (power - results->power);
-
+       parameters->parameters[bpi] = power;
        return power;
 }
 
index 35b4017..b176256 100644 (file)
@@ -26,6 +26,7 @@
 #include <iostream>
 #include <fstream>
 
+#include <errno.h>
 #include <unistd.h>
 #include <stdio.h>
 #include <stdlib.h>
@@ -72,6 +73,7 @@ void perf_event::create_perf_event(char *eventname, int _cpu)
 {
        struct perf_event_attr attr;
        int ret;
+       int err;
 
        struct {
                __u64 count;
@@ -107,10 +109,15 @@ void perf_event::create_perf_event(char *eventname, int _cpu)
        perf_fd = sys_perf_event_open(&attr, -1, _cpu, -1, 0);
 
        if (perf_fd < 0) {
+               err = errno;
                reset_display();
-               fprintf(stderr, _("PowerTOP %s needs the kernel to support the 'perf' subsystem\n"), POWERTOP_VERSION);
-               fprintf(stderr, _("as well as support for trace points in the kernel:\n"));
-               fprintf(stderr, "CONFIG_PERF_EVENTS=y\nCONFIG_PERF_COUNTERS=y\nCONFIG_TRACEPOINTS=y\nCONFIG_TRACING=y\n");
+               if (err == EMFILE)
+                       fprintf(stderr, _("Too many open files, please increase the limit of open file descriptors.\n"));
+               else {
+                       fprintf(stderr, _("PowerTOP %s needs the kernel to support the 'perf' subsystem\n"), POWERTOP_VERSION);
+                       fprintf(stderr, _("as well as support for trace points in the kernel:\n"));
+                       fprintf(stderr, "CONFIG_PERF_EVENTS=y\nCONFIG_PERF_COUNTERS=y\nCONFIG_TRACEPOINTS=y\nCONFIG_TRACING=y\n");
+               }
                exit(EXIT_FAILURE);
        }
        if (read(perf_fd, &read_data, sizeof(read_data)) == -1) {
@@ -167,6 +174,7 @@ perf_event::~perf_event(void)
        if (perf_event::pevent->ref_count == 1) {
                pevent_free(perf_event::pevent);
                perf_event::pevent = NULL;
+               clear();
        } else
                pevent_unref(perf_event::pevent);
 }
index 38e1e91..b0e982b 100644 (file)
@@ -123,6 +123,7 @@ static char * read_file(const char *file)
                buffer[len] = '\0';
        }
 out:
+       close(fd);
        return buffer;
 }
 
@@ -284,6 +285,31 @@ static bool event_sort_function (void *i, void *j)
        return (timestamp(I)<timestamp(J));
 }
 
+/*
+ * sample's PERF_SAMPLE_CPU cpu nr is a raw_smp_processor_id() by the
+ * time of perf_event_output(), which may differ from struct perf_event
+ * cpu, thus we need to fix sample->trace.cpu.
+ */
+static void fixup_sample_trace_cpu(struct perf_sample *sample)
+{
+       struct event_format *event;
+       struct pevent_record rec;
+       unsigned long long cpu_nr;
+       int type;
+       int ret;
+
+       rec.data = &sample->data;
+       type = pevent_data_type(perf_event::pevent, &rec);
+       event = pevent_find_event(perf_event::pevent, type);
+       if (!event)
+               return;
+       /** don't touch trace if event does not contain cpu_id field*/
+       ret = pevent_get_field_val(NULL, event, "cpu_id", &rec, &cpu_nr, 0);
+       if (ret < 0)
+               return;
+       sample->trace.cpu = cpu_nr;
+}
+
 void perf_bundle::process(void)
 {
        unsigned int i;
@@ -308,6 +334,7 @@ void perf_bundle::process(void)
                if (sample->header.type != PERF_RECORD_SAMPLE)
                        continue;
 
+               fixup_sample_trace_cpu(sample);
                handle_trace_point(&sample->data, sample->trace.cpu, sample->trace.time);
        }
 }
index c73d3e2..ce7dbb2 100644 (file)
 <head>
 <title>PowerTOP report</title>
 <meta http-equiv=\"content-type\" content=\"text/html;charset=utf-8\">
-<script type=\"text/javascript\" src=\"http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js\"></script>
-<script type=\"text/javascript\">
-$(document).ready(function(){
-
-       $('#system h2').addClass('hide');
-       $('#system table').addClass('hide');
-       $('#cpuidle h2').addClass('hide');
-       $('#cpuidle table').addClass('hide');
-       $('#cpufreq h2').addClass('hide');
-       $('#cpufreq table').addClass('hide');
-       $('#software h2').addClass('hide');
-       $('#software table').addClass('hide');
-       $('#device h2').addClass('hide');
-       $('#device table').addClass('hide');
-       $('#device p').addClass('hide');
-       $('#tuning h2').addClass('hide');
-       $('#tuning table').addClass('hide');
-
-       $('#top').append('<div class=\"SystemButton\"   onclick=\"toggleSystem()\">System Info</div>');
-       $('#top').append('<div class=\"SummaryButton\"  onclick=\"toggleSummary()\">Summary</div>');
-       $('#top').append('<div class=\"CpuidleButton\"  onclick=\"toggleCpuidle()\">CPU Idle</div>');
-       $('#top').append('<div class=\"CpufreqButton\"  onclick=\"toggleCpufreq()\">CPU Frequency</div>');
-       $('#top').append('<div class=\"SoftwareButton\" onclick=\"toggleSoftware()\">Software info</div>');
-       $('#top').append('<div class=\"DeviceButton\"   onclick=\"toggleDevice()\">Device Info</div>');
-       $('#top').append('<div class=\"TuningButton\"   onclick=\"toggleTuning()\">Tuning</div>');
-       $('#top').append('<div class=\"AllButton\"      onclick=\"toggleAll()\">All</div>');
-       $('#top .SummaryButton').toggleClass('pressed');
-
-    }
-       );
-function toggleDummy() {
-               $('#system table').toggleClass('hide', true);
-               $('#system h2').toggleClass('hide', true);
-               $('#summary table').toggleClass('hide', true);
-               $('#summary h2').toggleClass('hide', true);
-               $('#summary p').toggleClass('hide', true);
-               $('#cpuidle table').toggleClass('hide', true);
-               $('#cpuidle h2').toggleClass('hide', true);
-               $('#cpufreq table').toggleClass('hide', true);
-               $('#cpufreq h2').toggleClass('hide', true);
-               $('#software table').toggleClass('hide', true);
-               $('#software h2').toggleClass('hide', true);
-               $('#device table').toggleClass('hide', true);
-               $('#device h2').toggleClass('hide', true);
-               $('#device p').toggleClass('hide', true);
-               $('#tuning table').toggleClass('hide', true);
-               $('#tuning h2').toggleClass('hide', true);
-               $('#top .SystemButton').toggleClass('pressed', false);
-               $('#top .SummaryButton').toggleClass('pressed', false);
-               $('#top .CpuidleButton').toggleClass('pressed', false);
-               $('#top .CpufreqButton').toggleClass('pressed', false);
-               $('#top .SoftwareButton').toggleClass('pressed', false);
-               $('#top .DeviceButton').toggleClass('pressed', false);
-               $('#top .TuningButton').toggleClass('pressed', false);
-               $('#top .AllButton').toggleClass('pressed', false);
-}
-function toggleSystem() {
-               $('#system table').toggleClass('hide', false);
-               $('#system h2').toggleClass('hide', false);
-               $('#summary table').toggleClass('hide', true);
-               $('#summary h2').toggleClass('hide', true);
-               $('#summary p').toggleClass('hide', true);
-               $('#cpuidle table').toggleClass('hide', true);
-               $('#cpuidle h2').toggleClass('hide', true);
-               $('#cpufreq table').toggleClass('hide', true);
-               $('#cpufreq h2').toggleClass('hide', true);
-               $('#software table').toggleClass('hide', true);
-               $('#software h2').toggleClass('hide', true);
-               $('#device table').toggleClass('hide', true);
-               $('#device h2').toggleClass('hide', true);
-               $('#device p').toggleClass('hide', true);
-               $('#tuning table').toggleClass('hide', true);
-               $('#tuning h2').toggleClass('hide', true);
-               $('#top .SystemButton').toggleClass('pressed', true);
-               $('#top .SummaryButton').toggleClass('pressed', false);
-               $('#top .CpuidleButton').toggleClass('pressed', false);
-               $('#top .CpufreqButton').toggleClass('pressed', false);
-               $('#top .SoftwareButton').toggleClass('pressed', false);
-               $('#top .DeviceButton').toggleClass('pressed', false);
-               $('#top .TuningButton').toggleClass('pressed', false);
-               $('#top .AllButton').toggleClass('pressed', false);
-}
-function toggleSummary() {
-               $('#system table').toggleClass('hide', true);
-               $('#system h2').toggleClass('hide', true);
-               $('#summary table').toggleClass('hide', false);
-               $('#summary h2').toggleClass('hide', false);
-               $('#summary p').toggleClass('hide', false);
-               $('#cpuidle table').toggleClass('hide', true);
-               $('#cpuidle h2').toggleClass('hide', true);
-               $('#cpufreq table').toggleClass('hide', true);
-               $('#cpufreq h2').toggleClass('hide', true);
-               $('#software table').toggleClass('hide', true);
-               $('#software h2').toggleClass('hide', true);
-               $('#device table').toggleClass('hide', true);
-               $('#device h2').toggleClass('hide', true);
-               $('#device p').toggleClass('hide', true);
-               $('#tuning table').toggleClass('hide', true);
-               $('#tuning h2').toggleClass('hide', true);
-               $('#top .SystemButton').toggleClass('pressed', false);
-               $('#top .SummaryButton').toggleClass('pressed', true);
-               $('#top .CpuidleButton').toggleClass('pressed', false);
-               $('#top .CpufreqButton').toggleClass('pressed', false);
-               $('#top .SoftwareButton').toggleClass('pressed', false);
-               $('#top .DeviceButton').toggleClass('pressed', false);
-               $('#top .TuningButton').toggleClass('pressed', false);
-               $('#top .AllButton').toggleClass('pressed', false);
-}
-function toggleCpuidle() {
-               $('#system table').toggleClass('hide', true);
-               $('#system h2').toggleClass('hide', true);
-               $('#summary table').toggleClass('hide', true);
-               $('#summary h2').toggleClass('hide', true);
-               $('#summary p').toggleClass('hide', true);
-               $('#cpuidle table').toggleClass('hide', false);
-               $('#cpuidle h2').toggleClass('hide', false);
-               $('#cpufreq table').toggleClass('hide', true);
-               $('#cpufreq h2').toggleClass('hide', true);
-               $('#software table').toggleClass('hide', true);
-               $('#software h2').toggleClass('hide', true);
-               $('#device table').toggleClass('hide', true);
-               $('#device h2').toggleClass('hide', true);
-               $('#device p').toggleClass('hide', true);
-               $('#tuning table').toggleClass('hide', true);
-               $('#tuning h2').toggleClass('hide', true);
-               $('#top .SystemButton').toggleClass('pressed', false);
-               $('#top .SummaryButton').toggleClass('pressed', false);
-               $('#top .CpuidleButton').toggleClass('pressed', true);
-               $('#top .CpufreqButton').toggleClass('pressed', false);
-               $('#top .SoftwareButton').toggleClass('pressed', false);
-               $('#top .DeviceButton').toggleClass('pressed', false);
-               $('#top .TuningButton').toggleClass('pressed', false);
-               $('#top .AllButton').toggleClass('pressed', false);
-
-}
-function toggleCpufreq() {
-               $('#system table').toggleClass('hide', true);
-               $('#system h2').toggleClass('hide', true);
-               $('#summary table').toggleClass('hide', true);
-               $('#summary h2').toggleClass('hide', true);
-               $('#summary p').toggleClass('hide', true);
-               $('#cpuidle table').toggleClass('hide', true);
-               $('#cpuidle h2').toggleClass('hide', true);
-               $('#cpufreq table').toggleClass('hide', false);
-               $('#cpufreq h2').toggleClass('hide', false);
-               $('#software table').toggleClass('hide', true);
-               $('#software h2').toggleClass('hide', true);
-               $('#device table').toggleClass('hide', true);
-               $('#device h2').toggleClass('hide', true);
-               $('#device p').toggleClass('hide', true);
-               $('#tuning table').toggleClass('hide', true);
-               $('#tuning h2').toggleClass('hide', true);
-               $('#top .SystemButton').toggleClass('pressed', false);
-               $('#top .SummaryButton').toggleClass('pressed', false);
-               $('#top .CpuidleButton').toggleClass('pressed', false);
-               $('#top .CpufreqButton').toggleClass('pressed', true);
-               $('#top .SoftwareButton').toggleClass('pressed', false);
-               $('#top .DeviceButton').toggleClass('pressed', false);
-               $('#top .TuningButton').toggleClass('pressed', false);
-               $('#top .AllButton').toggleClass('pressed', false);
-}
-
-function toggleSoftware() {
-               $('#system table').toggleClass('hide', true);
-               $('#system h2').toggleClass('hide', true);
-               $('#summary table').toggleClass('hide', true);
-               $('#summary h2').toggleClass('hide', true);
-               $('#summary p').toggleClass('hide', true);
-               $('#cpuidle table').toggleClass('hide', true);
-               $('#cpuidle h2').toggleClass('hide', true);
-               $('#cpufreq table').toggleClass('hide', true);
-               $('#cpufreq h2').toggleClass('hide', true);
-               $('#software table').toggleClass('hide', false);
-               $('#software h2').toggleClass('hide', false);
-               $('#device table').toggleClass('hide', true);
-               $('#device h2').toggleClass('hide', true);
-               $('#device p').toggleClass('hide', true);
-               $('#tuning table').toggleClass('hide', true);
-               $('#tuning h2').toggleClass('hide', true);
-               $('#top .SystemButton').toggleClass('pressed', false);
-               $('#top .SummaryButton').toggleClass('pressed', false);
-               $('#top .CpuidleButton').toggleClass('pressed', false);
-               $('#top .CpufreqButton').toggleClass('pressed', false);
-               $('#top .SoftwareButton').toggleClass('pressed', true);
-               $('#top .DeviceButton').toggleClass('pressed', false);
-               $('#top .TuningButton').toggleClass('pressed', false);
-               $('#top .AllButton').toggleClass('pressed', false);
-}
-
-function toggleDevice() {
-               $('#system table').toggleClass('hide', true);
-               $('#system h2').toggleClass('hide', true);
-               $('#summary table').toggleClass('hide', true);
-               $('#summary h2').toggleClass('hide', true);
-               $('#summary p').toggleClass('hide', true);
-               $('#cpuidle table').toggleClass('hide', true);
-               $('#cpuidle h2').toggleClass('hide', true);
-               $('#cpufreq table').toggleClass('hide', true);
-               $('#cpufreq h2').toggleClass('hide', true);
-               $('#software table').toggleClass('hide', true);
-               $('#software h2').toggleClass('hide', true);
-               $('#device table').toggleClass('hide', false);
-               $('#device h2').toggleClass('hide', false);
-               $('#device p').toggleClass('hide', false);
-               $('#tuning table').toggleClass('hide', true);
-               $('#tuning h2').toggleClass('hide', true);
-               $('#top .SystemButton').toggleClass('pressed', false);
-               $('#top .SummaryButton').toggleClass('pressed', false);
-               $('#top .CpuidleButton').toggleClass('pressed', false);
-               $('#top .CpufreqButton').toggleClass('pressed', false);
-               $('#top .SoftwareButton').toggleClass('pressed', false);
-               $('#top .DeviceButton').toggleClass('pressed', true);
-               $('#top .TuningButton').toggleClass('pressed', false);
-               $('#top .AllButton').toggleClass('pressed', false);
+<script type='text/javascript'>
+
+var powertop = {
+ blocks: {
+  system: 'System Info',
+  summary: 'Summary',
+  cpuidle: 'CPU Idle',
+  cpufreq: 'CPU Frequency',
+  software: 'Software Info',
+  device: 'Device Info',
+  tuning: 'Tuning'
+ },
+ cadd: function(idx, c){
+   var el = document.getElementById(idx);
+   if (el) {
+      var cn = el.className;
+      if (cn.indexOf(c) != -1)
+         return;
+      cn += ' ' + c;
+      el.className = cn;
+   }
+ },
+ crm: function(id, c){
+   var el = document.getElementById(id);
+   if (el) {
+      var cn = el.className
+      while (cn.indexOf(' ' + c) != -1)
+         cn = cn.replace(' ' + c,'');
+      el.className = cn;
+   }
+ },
+ newbutton: function(id, txt) {
+  var x = document.createElement('div');
+  x.id = id + '_button';
+  x.className = 'nav_button';
+  x.textContent = txt;
+  x.innerText = txt;
+  x.onclick = function() { powertop.toggle(id); };
+  return x;
+ },
+ setupbuttons: function() {
+   var t = document.getElementById('top');
+   if (t) {
+     for (var b in powertop.blocks) {
+       t.appendChild(powertop.newbutton(b, powertop.blocks[b]));
+     }
+    t.appendChild(powertop.newbutton('all', 'All'));
+   }
+ },
+ toggle: function(b) {
+   powertop.baseall();
+   if (b == 'all') {
+      for (var c in powertop.blocks) {
+        powertop.crm(c, 'hide');
+      }
+   } else {
+      powertop.crm(b, 'hide');
+   }
+   powertop.cadd(b + '_button', 'pressed');
+ },
+ baseall: function() {
+   for (var b in powertop.blocks) {
+     powertop.cadd(b, 'hide');
+     powertop.crm(b + '_button', 'pressed');
+   }
+   powertop.cadd('all', 'hide');
+   powertop.crm('all_button', 'pressed');
+ },
+ onload: function() {
+   powertop.setupbuttons();
+   powertop.toggle('summary');
+ }
 }
 
-function toggleTuning() {
-               $('#system table').toggleClass('hide', true);
-               $('#system h2').toggleClass('hide', true);
-               $('#summary table').toggleClass('hide', true);
-               $('#summary h2').toggleClass('hide', true);
-               $('#summary p').toggleClass('hide', true);
-               $('#cpuidle table').toggleClass('hide', true);
-               $('#cpuidle h2').toggleClass('hide', true);
-               $('#cpufreq table').toggleClass('hide', true);
-               $('#cpufreq h2').toggleClass('hide', true);
-               $('#software table').toggleClass('hide', true);
-               $('#software h2').toggleClass('hide', true);
-               $('#device table').toggleClass('hide', true);
-               $('#device h2').toggleClass('hide', true);
-               $('#device p').toggleClass('hide', true);
-               $('#tuning table').toggleClass('hide', false);
-               $('#tuning h2').toggleClass('hide', false);
-               $('#top .SystemButton').toggleClass('pressed', false);
-               $('#top .SummaryButton').toggleClass('pressed', false);
-               $('#top .CpuidleButton').toggleClass('pressed', false);
-               $('#top .CpufreqButton').toggleClass('pressed', false);
-               $('#top .SoftwareButton').toggleClass('pressed', false);
-               $('#top .DeviceButton').toggleClass('pressed', false);
-               $('#top .TuningButton').toggleClass('pressed', true);
-               $('#top .AllButton').toggleClass('pressed', false);
-}
-function toggleAll() {
-               $('#system table').toggleClass('hide', false);
-               $('#system h2').toggleClass('hide', false);
-               $('#summary table').toggleClass('hide', false);
-               $('#summary h2').toggleClass('hide', false);
-               $('#summary p').toggleClass('hide', false);
-               $('#cpuidle table').toggleClass('hide', false);
-               $('#cpuidle h2').toggleClass('hide', false);
-               $('#cpufreq table').toggleClass('hide', false);
-               $('#cpufreq h2').toggleClass('hide', false);
-               $('#software table').toggleClass('hide', false);
-               $('#software h2').toggleClass('hide', false);
-               $('#device table').toggleClass('hide', false);
-               $('#device h2').toggleClass('hide', false);
-               $('#device p').toggleClass('hide', false);
-               $('#tuning table').toggleClass('hide', false);
-               $('#tuning h2').toggleClass('hide', false);
-               $('#top .SystemButton').toggleClass('pressed', false);
-               $('#top .SummaryButton').toggleClass('pressed', false);
-               $('#top .CpuidleButton').toggleClass('pressed', false);
-               $('#top .CpufreqButton').toggleClass('pressed', false);
-               $('#top .SoftwareButton').toggleClass('pressed', false);
-               $('#top .DeviceButton').toggleClass('pressed', false);
-               $('#top .TuningButton').toggleClass('pressed', false);
-               $('#top .AllButton').toggleClass('pressed', true);
-}
 </script>
-<style type=\"text/css\">
+<style type='text/css'>
 table
 {
        background-color: #F8F8F8;
@@ -454,11 +260,7 @@ body {
        padding: 0;             /* Amount of negative space around the
                                    inside of the body */
 }
-#top h1 {
-       margin: 0;
-       padding: 0;
-}
-#top h1 a {
+#top {
        background-color: #ccc;
        border-bottom: 1px solid #666;
        color: #222;
@@ -483,72 +285,26 @@ body {
        line-height: 28px;
        border-width:0px 8px 0px 8px;
 }
-#top div.SystemButton {
-       position: absolute;
-       top: 7px;
-       left: 6px;
-}
-#top div.SummaryButton {
-       position: absolute;
-       top: 7px;
-       left: 160px;
-}
-#top div.CpuidleButton {
-       position: absolute;
-       top: 7px;
-       left: 320px;
-}
-#top div.CpufreqButton {
-       position: absolute;
-       top: 7px;
-       left: 480px;
-}
-#top div.SoftwareButton {
-       position: absolute;
-       top: 7px;
-       left: 640px;
-}
-#top div.DeviceButton {
-       position: absolute;
-       top: 7px;
-       left: 800px;
-}
-#top div.TuningButton {
-       position: absolute;
-       top: 7px;
-       left: 960px;
-}
-#top div.AllButton {
-       position: absolute;
-       top: 7px;
-       left: 1120px;
+#top div.nav_button {
+ display: inline;
+ cursor: pointer;
+ padding: 0.3em 0.5em;
+ margin: 0 0.2em;
 }
+
 div.pressed {
        background-color: #000000;
        border: 1px solid #000000;
        color: #000000;
-       display: block;
-       border-width:0px 8px 0px 8px;
-       -webkit-border-top-left-radius: 8px;
-       -webkit-border-top-right-radius: 8px;
-       -webkit-border-bottom-left-radius: 8px;
-       -webkit-border-bottom-right-radius: 8px;
-}
-table.hide {
-       display: none;
+       border-radius: 8px;
 }
-h2.hide {
-       display: none;
-}
-p.hide {
-       display: none
+div.hide {
+ display: none;
 }
 </style>
 </head>
 
-<body>
-
+<body onload='powertop.onload();'>
 <div id='top'>
-<h1><a href='#top'>&nbsp;</a></h1>
 </div>
 
index 322ad4c..d81a2a9 100644 (file)
@@ -579,7 +579,7 @@ void perf_process_bundle::handle_trace_point(void *trace, int cpu, uint64_t time
        }
        else if (strcmp(event->name, "cpu_idle") == 0) {
                ret = pevent_get_field_val(NULL, event, "state", &rec, &val, 0);
-               if (val == 4294967295)
+               if (val == (unsigned int)-1)
                        consume_blame(cpu);
                else
                        set_wakeup_pending(cpu);
@@ -852,13 +852,13 @@ void process_update_display(void)
                char usage[20];
                char events[20];
                char descr[128];
-               format_watts(all_power[i]->Witts(), power, 10);
 
+               format_watts(all_power[i]->Witts(), power, 10);
                if (!show_power)
                        strcpy(power, "          ");
                sprintf(name, "%s", all_power[i]->type());
-               while (mbstowcs(NULL,name,0) < 14) strcat(name, " ");
 
+               align_string(name, 14, 20);
 
                if (all_power[i]->events() == 0 && all_power[i]->usage() == 0 && all_power[i]->Witts() == 0)
                        break;
@@ -870,14 +870,16 @@ void process_update_display(void)
                        else
                                sprintf(usage, "%5i%s", (int)all_power[i]->usage(), all_power[i]->usage_units());
                }
-               while (mbstowcs(NULL,usage,0) < 14) strcat(usage, " ");
+
+               align_string(usage, 14, 20);
+
                sprintf(events, "%5.1f", all_power[i]->events());
                if (!all_power[i]->show_events())
                        events[0] = 0;
                else if (all_power[i]->events() <= 0.3)
                        sprintf(events, "%5.2f", all_power[i]->events());
 
-               while (strlen(events) < 12) strcat(events, " ");
+               align_string(events, 12, 20);
                wprintw(win, "%s  %s %s %s %s\n", power, usage, events, name, pretty_print(all_power[i]->description(), descr, 128));
        }
 }
index 3164b31..3d36112 100644 (file)
@@ -25,6 +25,7 @@
 
 #include "tuning.h"
 #include "tunable.h"
+#include <sys/types.h>
 #include <unistd.h>
 #include <stdio.h>
 #include <stdlib.h>
 #include <utility>
 #include <iostream>
 #include <fstream>
-#include <unistd.h>
-#include <dirent.h>
 #include <sys/socket.h>
 #include <errno.h>
-#include <sys/types.h>
-#include <dirent.h>
 #include <linux/types.h>
 #include <net/if.h>
 #include <linux/sockios.h>
@@ -146,7 +143,10 @@ const char *ethernet_tunable::toggle_script(void)
 
 void ethtunable_callback(const char *d_name)
 {
-       class ethernet_tunable *eth = new(std::nothrow) class ethernet_tunable(d_name);
+       class ethernet_tunable *eth;
+       if (strcmp(d_name, "lo") == 0)
+               return;
+       eth = new(std::nothrow) class ethernet_tunable(d_name);
        if (eth)
                all_tunables.push_back(eth);
 }
index 08d8251..3d13cc3 100644 (file)
@@ -141,11 +141,15 @@ void tuning_window::repaint(void)
 void tuning_window::cursor_enter(void)
 {
        class tunable *tun;
-
+       const char *toggle_script;
        tun = all_tunables[cursor_pos];
        if (!tun)
                return;
+       /** device will change its state so need to store toggle script before
+        * we toggle()*/
+       toggle_script = tun->toggle_script();
        tun->toggle();
+       ui_notify_user(">> %s\n", toggle_script);
 }
 
 static bool tunables_sort(class tunable * i, class tunable * j)
@@ -273,3 +277,11 @@ void clear_tuning()
        }
        all_untunables.clear();
 }
+
+void auto_toggle_tuning()
+{
+       for (unsigned int i = 0; i < all_tunables.size(); i++) {
+               if (all_tunables[i]->good_bad() == TUNE_BAD)
+                       all_tunables[i]->toggle();
+       }
+}
index 7c4921f..f70001b 100644 (file)
@@ -29,7 +29,5 @@ extern void initialize_tuning(void);
 extern void tuning_update_display(void);
 extern void report_show_tunables(void);
 extern void clear_tuning(void);
-
-
-
+extern void auto_toggle_tuning(void);
 #endif
index 74bbacf..27a6dca 100644 (file)
@@ -31,9 +31,6 @@
 #include <utility>
 #include <iostream>
 #include <fstream>
-#include <unistd.h>
-#include <sys/types.h>
-#include <dirent.h>
 
 #include "../lib.h"
 
@@ -116,40 +113,25 @@ const char *usb_tunable::toggle_script(void)
        return toggle_good;
 }
 
-void add_usb_tunables(void)
+static void add_usb_callback(const char *d_name)
 {
-       struct dirent *entry;
-       DIR *dir;
+       class usb_tunable *usb;
        char filename[4096];
 
-       dir = opendir("/sys/bus/usb/devices/");
-       if (!dir)
+       sprintf(filename, "/sys/bus/usb/devices/%s/power/control", d_name);
+       if (access(filename, R_OK) != 0)
                return;
-       while (1) {
-               class usb_tunable *usb;
-
-               entry = readdir(dir);
-
-               if (!entry)
-                       break;
-               if (entry->d_name[0] == '.')
-                       continue;
-
-               sprintf(filename, "/sys/bus/usb/devices/%s/power/control", entry->d_name);
-
-               if (access(filename, R_OK) != 0)
-                       continue;
-
-               sprintf(filename, "/sys/bus/usb/devices/%s/power/active_duration", entry->d_name);
-               if (access(filename, R_OK)!=0)
-                       continue;
 
-               sprintf(filename, "/sys/bus/usb/devices/%s", entry->d_name);
-
-               usb = new class usb_tunable(filename, entry->d_name);
+       sprintf(filename, "/sys/bus/usb/devices/%s/power/active_duration", d_name);
+       if (access(filename, R_OK)!=0)
+               return;
 
-               all_tunables.push_back(usb);
+       sprintf(filename, "/sys/bus/usb/devices/%s", d_name);
+       usb = new class usb_tunable(filename, d_name);
+       all_tunables.push_back(usb);
+}
 
-       }
-       closedir(dir);
+void add_usb_tunables(void)
+{
+       process_directory("/sys/bus/usb/devices/", add_usb_callback);
 }
index e0dfc2d..a7b87ef 100644 (file)
@@ -1,9 +1,8 @@
-# Makefile.in generated by automake 1.11.6 from Makefile.am.
+# Makefile.in generated by automake 1.13.4 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software
-# Foundation, Inc.
+# Copyright (C) 1994-2013 Free Software Foundation, Inc.
+
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
 @SET_MAKE@
 
 VPATH = @srcdir@
-am__make_dryrun = \
-  { \
-    am__dry=no; \
+am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__make_running_with_option = \
+  case $${target_option-} in \
+      ?) ;; \
+      *) echo "am__make_running_with_option: internal error: invalid" \
+              "target option '$${target_option-}' specified" >&2; \
+         exit 1;; \
+  esac; \
+  has_opt=no; \
+  sane_makeflags=$$MAKEFLAGS; \
+  if $(am__is_gnu_make); then \
+    sane_makeflags=$$MFLAGS; \
+  else \
     case $$MAKEFLAGS in \
       *\\[\ \  ]*) \
-        echo 'am--echo: ; @echo "AM"  OK' | $(MAKE) -f - 2>/dev/null \
-          | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
-      *) \
-        for am__flg in $$MAKEFLAGS; do \
-          case $$am__flg in \
-            *=*|--*) ;; \
-            *n*) am__dry=yes; break;; \
-          esac; \
-        done;; \
+        bs=\\; \
+        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+          | sed "s/$$bs$$bs[$$bs $$bs  ]*//g"`;; \
+    esac; \
+  fi; \
+  skip_next=no; \
+  strip_trailopt () \
+  { \
+    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+  }; \
+  for flg in $$sane_makeflags; do \
+    test $$skip_next = yes && { skip_next=no; continue; }; \
+    case $$flg in \
+      *=*|--*) continue;; \
+        -*I) strip_trailopt 'I'; skip_next=yes;; \
+      -*I?*) strip_trailopt 'I';; \
+        -*O) strip_trailopt 'O'; skip_next=yes;; \
+      -*O?*) strip_trailopt 'O';; \
+        -*l) strip_trailopt 'l'; skip_next=yes;; \
+      -*l?*) strip_trailopt 'l';; \
+      -[dEDm]) skip_next=yes;; \
+      -[JT]) skip_next=yes;; \
+    esac; \
+    case $$flg in \
+      *$$target_option*) has_opt=yes; break;; \
     esac; \
-    test $$am__dry = yes; \
-  }
+  done; \
+  test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
 pkgdatadir = $(datadir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
 pkglibdir = $(libdir)/@PACKAGE@
@@ -52,7 +79,8 @@ POST_UNINSTALL = :
 build_triplet = @build@
 host_triplet = @host@
 subdir = traceevent
-DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
+       $(top_srcdir)/depcomp
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/m4/gettext.m4 \
        $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
@@ -76,6 +104,19 @@ libtraceevnet_la_OBJECTS = $(am_libtraceevnet_la_OBJECTS)
 AM_V_lt = $(am__v_lt_@AM_V@)
 am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
 am__v_lt_0 = --silent
+am__v_lt_1 = 
+AM_V_P = $(am__v_P_@AM_V@)
+am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_@AM_V@)
+am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
+am__v_GEN_0 = @echo "  GEN     " $@;
+am__v_GEN_1 = 
+AM_V_at = $(am__v_at_@AM_V@)
+am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 = 
 DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)
 depcomp = $(SHELL) $(top_srcdir)/depcomp
 am__depfiles_maybe = depfiles
@@ -88,20 +129,16 @@ LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
        $(AM_CFLAGS) $(CFLAGS)
 AM_V_CC = $(am__v_CC_@AM_V@)
 am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@)
-am__v_CC_0 = @echo "  CC    " $@;
-AM_V_at = $(am__v_at_@AM_V@)
-am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
-am__v_at_0 = @
+am__v_CC_0 = @echo "  CC      " $@;
+am__v_CC_1 = 
 CCLD = $(CC)
 LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
        $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
        $(AM_LDFLAGS) $(LDFLAGS) -o $@
 AM_V_CCLD = $(am__v_CCLD_@AM_V@)
 am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@)
-am__v_CCLD_0 = @echo "  CCLD  " $@;
-AM_V_GEN = $(am__v_GEN_@AM_V@)
-am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
-am__v_GEN_0 = @echo "  GEN   " $@;
+am__v_CCLD_0 = @echo "  CCLD    " $@;
+am__v_CCLD_1 = 
 SOURCES = $(libtraceevnet_la_SOURCES)
 DIST_SOURCES = $(libtraceevnet_la_SOURCES)
 am__can_run_installinfo = \
@@ -109,6 +146,23 @@ am__can_run_installinfo = \
     n|no|NO) false;; \
     *) (install-info --version) >/dev/null 2>&1;; \
   esac
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+# Read a list of newline-separated strings from the standard input,
+# and print each of them once, without duplicates.  Input order is
+# *not* preserved.
+am__uniquify_input = $(AWK) '\
+  BEGIN { nonempty = 0; } \
+  { items[$$0] = 1; nonempty = 1; } \
+  END { if (nonempty) { for (i in items) print i; }; } \
+'
+# Make sure the list of sources is unique.  This is necessary because,
+# e.g., the same source file might be shared among _SOURCES variables
+# for different programs/libraries.
+am__define_uniq_tagged_files = \
+  list='$(am__tagged_files)'; \
+  unique=`for i in $$list; do \
+    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+  done | $(am__uniquify_input)`
 ETAGS = etags
 CTAGS = ctags
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
@@ -302,12 +356,15 @@ $(am__aclocal_m4_deps):
 
 clean-noinstLTLIBRARIES:
        -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES)
-       @list='$(noinst_LTLIBRARIES)'; for p in $$list; do \
-         dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
-         test "$$dir" != "$$p" || dir=.; \
-         echo "rm -f \"$${dir}/so_locations\""; \
-         rm -f "$${dir}/so_locations"; \
-       done
+       @list='$(noinst_LTLIBRARIES)'; \
+       locs=`for p in $$list; do echo $$p; done | \
+             sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \
+             sort -u`; \
+       test -z "$$locs" || { \
+         echo rm -f $${locs}; \
+         rm -f $${locs}; \
+       }
+
 libtraceevnet.la: $(libtraceevnet_la_OBJECTS) $(libtraceevnet_la_DEPENDENCIES) $(EXTRA_libtraceevnet_la_DEPENDENCIES) 
        $(AM_V_CCLD)$(LINK)  $(libtraceevnet_la_OBJECTS) $(libtraceevnet_la_LIBADD) $(LIBS)
 
@@ -349,26 +406,15 @@ mostlyclean-libtool:
 clean-libtool:
        -rm -rf .libs _libs
 
-ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
-       list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
-       unique=`for i in $$list; do \
-           if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-         done | \
-         $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-             END { if (nonempty) { for (i in files) print i; }; }'`; \
-       mkid -fID $$unique
-tags: TAGS
-
-TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-               $(TAGS_FILES) $(LISP)
+ID: $(am__tagged_files)
+       $(am__define_uniq_tagged_files); mkid -fID $$unique
+tags: tags-am
+TAGS: tags
+
+tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
        set x; \
        here=`pwd`; \
-       list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-       unique=`for i in $$list; do \
-           if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-         done | \
-         $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-             END { if (nonempty) { for (i in files) print i; }; }'`; \
+       $(am__define_uniq_tagged_files); \
        shift; \
        if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
          test -n "$$unique" || unique=$$empty_fix; \
@@ -380,15 +426,11 @@ TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
              $$unique; \
          fi; \
        fi
-ctags: CTAGS
-CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-               $(TAGS_FILES) $(LISP)
-       list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-       unique=`for i in $$list; do \
-           if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-         done | \
-         $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-             END { if (nonempty) { for (i in files) print i; }; }'`; \
+ctags: ctags-am
+
+CTAGS: ctags
+ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+       $(am__define_uniq_tagged_files); \
        test -z "$(CTAGS_ARGS)$$unique" \
          || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
             $$unique
@@ -397,6 +439,21 @@ GTAGS:
        here=`$(am__cd) $(top_builddir) && pwd` \
          && $(am__cd) $(top_srcdir) \
          && gtags -i $(GTAGS_ARGS) "$$here"
+cscopelist: cscopelist-am
+
+cscopelist-am: $(am__tagged_files)
+       list='$(am__tagged_files)'; \
+       case "$(srcdir)" in \
+         [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+         *) sdir=$(subdir)/$(srcdir) ;; \
+       esac; \
+       for i in $$list; do \
+         if test -f "$$i"; then \
+           echo "$(subdir)/$$i"; \
+         else \
+           echo "$$sdir/$$i"; \
+         fi; \
+       done >> $(top_builddir)/cscope.files
 
 distclean-tags:
        -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
@@ -538,18 +595,19 @@ uninstall-am:
 
 .MAKE: install-am install-strip
 
-.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
-       clean-libtool clean-noinstLTLIBRARIES ctags distclean \
-       distclean-compile distclean-generic distclean-libtool \
-       distclean-tags distdir dvi dvi-am html html-am info info-am \
-       install install-am install-data install-data-am install-dvi \
-       install-dvi-am install-exec install-exec-am install-html \
-       install-html-am install-info install-info-am install-man \
-       install-pdf install-pdf-am install-ps install-ps-am \
-       install-strip installcheck installcheck-am installdirs \
-       maintainer-clean maintainer-clean-generic mostlyclean \
-       mostlyclean-compile mostlyclean-generic mostlyclean-libtool \
-       pdf pdf-am ps ps-am tags uninstall uninstall-am
+.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \
+       clean-libtool clean-noinstLTLIBRARIES cscopelist-am ctags \
+       ctags-am distclean distclean-compile distclean-generic \
+       distclean-libtool distclean-tags distdir dvi dvi-am html \
+       html-am info info-am install install-am install-data \
+       install-data-am install-dvi install-dvi-am install-exec \
+       install-exec-am install-html install-html-am install-info \
+       install-info-am install-man install-pdf install-pdf-am \
+       install-ps install-ps-am install-strip installcheck \
+       installcheck-am installdirs maintainer-clean \
+       maintainer-clean-generic mostlyclean mostlyclean-compile \
+       mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
+       tags tags-am uninstall uninstall-am
 
 
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
index aa16443..d1c2a6a 100644 (file)
@@ -13,8 +13,7 @@
  * GNU Lesser General Public License for more details.
  *
  * You should have received a copy of the GNU Lesser General Public
- * License along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ * License along with this program; if not,  see <http://www.gnu.org/licenses>
  *
  * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  *
  *  Frederic Weisbecker gave his permission to relicense the code to
  *  the Lesser General Public License.
  */
-#define _GNU_SOURCE
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
 #include <stdarg.h>
 #include <ctype.h>
 #include <errno.h>
+#include <stdint.h>
+#include <limits.h>
 
 #include "event-parse.h"
 #include "event-utils.h"
@@ -117,14 +117,7 @@ void breakpoint(void)
 
 struct print_arg *alloc_arg(void)
 {
-       struct print_arg *arg;
-
-       arg = malloc_or_die(sizeof(*arg));
-       if (!arg)
-               return NULL;
-       memset(arg, 0, sizeof(*arg));
-
-       return arg;
+       return calloc(1, sizeof(struct print_arg));
 }
 
 struct cmdline {
@@ -158,7 +151,9 @@ static int cmdline_init(struct pevent *pevent)
        struct cmdline *cmdlines;
        int i;
 
-       cmdlines = malloc_or_die(sizeof(*cmdlines) * pevent->cmdline_count);
+       cmdlines = malloc(sizeof(*cmdlines) * pevent->cmdline_count);
+       if (!cmdlines)
+               return -1;
 
        i = 0;
        while (cmdlist) {
@@ -178,7 +173,7 @@ static int cmdline_init(struct pevent *pevent)
        return 0;
 }
 
-static char *find_cmdline(struct pevent *pevent, int pid)
+static const char *find_cmdline(struct pevent *pevent, int pid)
 {
        const struct cmdline *comm;
        struct cmdline key;
@@ -186,8 +181,8 @@ static char *find_cmdline(struct pevent *pevent, int pid)
        if (!pid)
                return "<idle>";
 
-       if (!pevent->cmdlines)
-               cmdline_init(pevent);
+       if (!pevent->cmdlines && cmdline_init(pevent))
+               return "<not enough memory for cmdlines!>";
 
        key.pid = pid;
 
@@ -215,8 +210,8 @@ int pevent_pid_is_registered(struct pevent *pevent, int pid)
        if (!pid)
                return 1;
 
-       if (!pevent->cmdlines)
-               cmdline_init(pevent);
+       if (!pevent->cmdlines && cmdline_init(pevent))
+               return 0;
 
        key.pid = pid;
 
@@ -258,10 +253,14 @@ static int add_new_comm(struct pevent *pevent, const char *comm, int pid)
                return -1;
        }
 
-       cmdlines[pevent->cmdline_count].pid = pid;
        cmdlines[pevent->cmdline_count].comm = strdup(comm);
-       if (!cmdlines[pevent->cmdline_count].comm)
-               die("malloc comm");
+       if (!cmdlines[pevent->cmdline_count].comm) {
+               free(cmdlines);
+               errno = ENOMEM;
+               return -1;
+       }
+
+       cmdlines[pevent->cmdline_count].pid = pid;
                
        if (cmdlines[pevent->cmdline_count].comm)
                pevent->cmdline_count++;
@@ -288,10 +287,15 @@ int pevent_register_comm(struct pevent *pevent, const char *comm, int pid)
        if (pevent->cmdlines)
                return add_new_comm(pevent, comm, pid);
 
-       item = malloc_or_die(sizeof(*item));
+       item = malloc(sizeof(*item));
+       if (!item)
+               return -1;
+
        item->comm = strdup(comm);
-       if (!item->comm)
-               die("malloc comm");
+       if (!item->comm) {
+               free(item);
+               return -1;
+       }
        item->pid = pid;
        item->next = pevent->cmdlist;
 
@@ -355,7 +359,10 @@ static int func_map_init(struct pevent *pevent)
        struct func_map *func_map;
        int i;
 
-       func_map = malloc_or_die(sizeof(*func_map) * (pevent->func_count + 1));
+       func_map = malloc(sizeof(*func_map) * (pevent->func_count + 1));
+       if (!func_map)
+               return -1;
+
        funclist = pevent->funclist;
 
        i = 0;
@@ -455,25 +462,36 @@ pevent_find_function_address(struct pevent *pevent, unsigned long long addr)
 int pevent_register_function(struct pevent *pevent, char *func,
                             unsigned long long addr, char *mod)
 {
-       struct func_list *item;
+       struct func_list *item = malloc(sizeof(*item));
 
-       item = malloc_or_die(sizeof(*item));
+       if (!item)
+               return -1;
 
        item->next = pevent->funclist;
        item->func = strdup(func);
-       if (mod)
+       if (!item->func)
+               goto out_free;
+
+       if (mod) {
                item->mod = strdup(mod);
-       else
+               if (!item->mod)
+                       goto out_free_func;
+       } else
                item->mod = NULL;
        item->addr = addr;
 
-       if (!item->func || (mod && !item->mod))
-               die("malloc func");
-
        pevent->funclist = item;
        pevent->func_count++;
 
        return 0;
+
+out_free_func:
+       free(item->func);
+       item->func = NULL;
+out_free:
+       free(item);
+       errno = ENOMEM;
+       return -1;
 }
 
 /**
@@ -524,14 +542,16 @@ static int printk_cmp(const void *a, const void *b)
        return 0;
 }
 
-static void printk_map_init(struct pevent *pevent)
+static int printk_map_init(struct pevent *pevent)
 {
        struct printk_list *printklist;
        struct printk_list *item;
        struct printk_map *printk_map;
        int i;
 
-       printk_map = malloc_or_die(sizeof(*printk_map) * (pevent->printk_count + 1));
+       printk_map = malloc(sizeof(*printk_map) * (pevent->printk_count + 1));
+       if (!printk_map)
+               return -1;
 
        printklist = pevent->printklist;
 
@@ -549,6 +569,8 @@ static void printk_map_init(struct pevent *pevent)
 
        pevent->printk_map = printk_map;
        pevent->printklist = NULL;
+
+       return 0;
 }
 
 static struct printk_map *
@@ -557,8 +579,8 @@ find_printk(struct pevent *pevent, unsigned long long addr)
        struct printk_map *printk;
        struct printk_map key;
 
-       if (!pevent->printk_map)
-               printk_map_init(pevent);
+       if (!pevent->printk_map && printk_map_init(pevent))
+               return NULL;
 
        key.addr = addr;
 
@@ -580,21 +602,27 @@ find_printk(struct pevent *pevent, unsigned long long addr)
 int pevent_register_print_string(struct pevent *pevent, char *fmt,
                                 unsigned long long addr)
 {
-       struct printk_list *item;
+       struct printk_list *item = malloc(sizeof(*item));
 
-       item = malloc_or_die(sizeof(*item));
+       if (!item)
+               return -1;
 
        item->next = pevent->printklist;
-       item->printk = strdup(fmt);
        item->addr = addr;
 
+       item->printk = strdup(fmt);
        if (!item->printk)
-               die("malloc fmt");
+               goto out_free;
 
        pevent->printklist = item;
        pevent->printk_count++;
 
        return 0;
+
+out_free:
+       free(item);
+       errno = ENOMEM;
+       return -1;
 }
 
 /**
@@ -619,24 +647,18 @@ void pevent_print_printk(struct pevent *pevent)
 
 static struct event_format *alloc_event(void)
 {
-       struct event_format *event;
-
-       event = malloc(sizeof(*event));
-       if (!event)
-               return NULL;
-       memset(event, 0, sizeof(*event));
-
-       return event;
+       return calloc(1, sizeof(struct event_format));
 }
 
-static void add_event(struct pevent *pevent, struct event_format *event)
+static int add_event(struct pevent *pevent, struct event_format *event)
 {
        int i;
+       struct event_format **events = realloc(pevent->events, sizeof(event) *
+                                              (pevent->nr_events + 1));
+       if (!events)
+               return -1;
 
-       pevent->events = realloc(pevent->events, sizeof(event) *
-                                (pevent->nr_events + 1));
-       if (!pevent->events)
-               die("Can not allocate events");
+       pevent->events = events;
 
        for (i = 0; i < pevent->nr_events; i++) {
                if (pevent->events[i]->id > event->id)
@@ -651,6 +673,8 @@ static void add_event(struct pevent *pevent, struct event_format *event)
        pevent->nr_events++;
 
        event->pevent = pevent;
+
+       return 0;
 }
 
 static int event_item_type(enum event_type type)
@@ -827,9 +851,9 @@ static enum event_type __read_token(char **tok)
        switch (type) {
        case EVENT_NEWLINE:
        case EVENT_DELIM:
-               *tok = malloc_or_die(2);
-               (*tok)[0] = ch;
-               (*tok)[1] = 0;
+               if (asprintf(tok, "%c", ch) < 0)
+                       return EVENT_ERROR;
+
                return type;
 
        case EVENT_OP:
@@ -1199,6 +1223,34 @@ static int field_is_long(struct format_field *field)
        return 0;
 }
 
+static unsigned int type_size(const char *name)
+{
+       /* This covers all FIELD_IS_STRING types. */
+       static struct {
+               const char *type;
+               unsigned int size;
+       } table[] = {
+               { "u8",   1 },
+               { "u16",  2 },
+               { "u32",  4 },
+               { "u64",  8 },
+               { "s8",   1 },
+               { "s16",  2 },
+               { "s32",  4 },
+               { "s64",  8 },
+               { "char", 1 },
+               { },
+       };
+       int i;
+
+       for (i = 0; table[i].type; i++) {
+               if (!strcmp(table[i].type, name))
+                       return table[i].size;
+       }
+
+       return 0;
+}
+
 static int event_read_fields(struct event_format *event, struct format_field **fields)
 {
        struct format_field *field = NULL;
@@ -1208,6 +1260,8 @@ static int event_read_fields(struct event_format *event, struct format_field **f
        int count = 0;
 
        do {
+               unsigned int size_dynamic = 0;
+
                type = read_token(&token);
                if (type == EVENT_NEWLINE) {
                        free_token(token);
@@ -1240,8 +1294,10 @@ static int event_read_fields(struct event_format *event, struct format_field **f
 
                last_token = token;
 
-               field = malloc_or_die(sizeof(*field));
-               memset(field, 0, sizeof(*field));
+               field = calloc(1, sizeof(*field));
+               if (!field)
+                       goto fail;
+
                field->event = event;
 
                /* read the rest of the type */
@@ -1282,7 +1338,7 @@ static int event_read_fields(struct event_format *event, struct format_field **f
                }
 
                if (!field->type) {
-                       die("no type found");
+                       do_warning("%s: no type found", __func__);
                        goto fail;
                }
                field->name = last_token;
@@ -1329,7 +1385,7 @@ static int event_read_fields(struct event_format *event, struct format_field **f
                                free_token(token);
                                type = read_token(&token);
                                if (type == EVENT_NONE) {
-                                       die("failed to find token");
+                                       do_warning("failed to find token");
                                        goto fail;
                                }
                        }
@@ -1364,6 +1420,7 @@ static int event_read_fields(struct event_format *event, struct format_field **f
                                field->type = new_type;
                                strcat(field->type, " ");
                                strcat(field->type, field->name);
+                               size_dynamic = type_size(field->name);
                                free_token(field->name);
                                strcat(field->type, brackets);
                                field->name = token;
@@ -1436,7 +1493,8 @@ static int event_read_fields(struct event_format *event, struct format_field **f
                        if (read_expect_type(EVENT_ITEM, &token))
                                goto fail;
 
-                       /* add signed type */
+                       if (strtoul(token, NULL, 0))
+                               field->flags |= FIELD_IS_SIGNED;
 
                        free_token(token);
                        if (read_expected(EVENT_OP, ";") < 0)
@@ -1451,10 +1509,14 @@ static int event_read_fields(struct event_format *event, struct format_field **f
                if (field->flags & FIELD_IS_ARRAY) {
                        if (field->arraylen)
                                field->elementsize = field->size / field->arraylen;
+                       else if (field->flags & FIELD_IS_DYNAMIC)
+                               field->elementsize = size_dynamic;
                        else if (field->flags & FIELD_IS_STRING)
                                field->elementsize = 1;
-                       else
-                               field->elementsize = event->pevent->long_size;
+                       else if (field->flags & FIELD_IS_LONG)
+                               field->elementsize = event->pevent ?
+                                                    event->pevent->long_size :
+                                                    sizeof(long);
                } else
                        field->elementsize = field->size;
 
@@ -1538,6 +1600,14 @@ process_cond(struct event_format *event, struct print_arg *top, char **tok)
        left = alloc_arg();
        right = alloc_arg();
 
+       if (!arg || !left || !right) {
+               do_warning("%s: not enough memory!", __func__);
+               /* arg will be freed at out_free */
+               free_arg(left);
+               free_arg(right);
+               goto out_free;
+       }
+
        arg->type = PRINT_OP;
        arg->op.left = left;
        arg->op.right = right;
@@ -1580,6 +1650,12 @@ process_array(struct event_format *event, struct print_arg *top, char **tok)
        char *token = NULL;
 
        arg = alloc_arg();
+       if (!arg) {
+               do_warning("%s: not enough memory!", __func__);
+               /* '*tok' is set to top->op.op.  No need to free. */
+               *tok = NULL;
+               return EVENT_ERROR;
+       }
 
        *tok = NULL;
        type = process_arg(event, arg, &token);
@@ -1595,8 +1671,7 @@ process_array(struct event_format *event, struct print_arg *top, char **tok)
        return type;
 
 out_free:
-       free_token(*tok);
-       *tok = NULL;
+       free_token(token);
        free_arg(arg);
        return EVENT_ERROR;
 }
@@ -1682,7 +1757,7 @@ process_op(struct event_format *event, struct print_arg *arg, char **tok)
        if (arg->type == PRINT_OP && !arg->op.left) {
                /* handle single op */
                if (token[1]) {
-                       die("bad op token %s", token);
+                       do_warning("bad op token %s", token);
                        goto out_free;
                }
                switch (token[0]) {
@@ -1699,10 +1774,16 @@ process_op(struct event_format *event, struct print_arg *arg, char **tok)
 
                /* make an empty left */
                left = alloc_arg();
+               if (!left)
+                       goto out_warn_free;
+
                left->type = PRINT_NULL;
                arg->op.left = left;
 
                right = alloc_arg();
+               if (!right)
+                       goto out_warn_free;
+
                arg->op.right = right;
 
                /* do not free the token, it belongs to an op */
@@ -1712,6 +1793,9 @@ process_op(struct event_format *event, struct print_arg *arg, char **tok)
        } else if (strcmp(token, "?") == 0) {
 
                left = alloc_arg();
+               if (!left)
+                       goto out_warn_free;
+
                /* copy the top arg to the left */
                *left = *arg;
 
@@ -1720,6 +1804,7 @@ process_op(struct event_format *event, struct print_arg *arg, char **tok)
                arg->op.left = left;
                arg->op.prio = 0;
 
+               /* it will set arg->op.right */
                type = process_cond(event, arg, tok);
 
        } else if (strcmp(token, ">>") == 0 ||
@@ -1735,10 +1820,14 @@ process_op(struct event_format *event, struct print_arg *arg, char **tok)
                   strcmp(token, "/") == 0 ||
                   strcmp(token, "<") == 0 ||
                   strcmp(token, ">") == 0 ||
+                  strcmp(token, "<=") == 0 ||
+                  strcmp(token, ">=") == 0 ||
                   strcmp(token, "==") == 0 ||
                   strcmp(token, "!=") == 0) {
 
                left = alloc_arg();
+               if (!left)
+                       goto out_warn_free;
 
                /* copy the top arg to the left */
                *left = *arg;
@@ -1746,6 +1835,7 @@ process_op(struct event_format *event, struct print_arg *arg, char **tok)
                arg->type = PRINT_OP;
                arg->op.op = token;
                arg->op.left = left;
+               arg->op.right = NULL;
 
                if (set_op_prio(arg) == -1) {
                        event->flags |= EVENT_FL_FAILED;
@@ -1762,12 +1852,14 @@ process_op(struct event_format *event, struct print_arg *arg, char **tok)
                    type == EVENT_DELIM && (strcmp(token, ")") == 0)) {
                        char *new_atom;
 
-                       if (left->type != PRINT_ATOM)
-                               die("bad pointer type");
+                       if (left->type != PRINT_ATOM) {
+                               do_warning("bad pointer type");
+                               goto out_free;
+                       }
                        new_atom = realloc(left->atom.atom,
                                            strlen(left->atom.atom) + 3);
                        if (!new_atom)
-                               goto out_free;
+                               goto out_warn_free;
 
                        left->atom.atom = new_atom;
                        strcat(left->atom.atom, " *");
@@ -1779,12 +1871,18 @@ process_op(struct event_format *event, struct print_arg *arg, char **tok)
                }
 
                right = alloc_arg();
+               if (!right)
+                       goto out_warn_free;
+
                type = process_arg_token(event, right, tok, type);
                arg->op.right = right;
 
        } else if (strcmp(token, "[") == 0) {
 
                left = alloc_arg();
+               if (!left)
+                       goto out_warn_free;
+
                *left = *arg;
 
                arg->type = PRINT_OP;
@@ -1793,6 +1891,7 @@ process_op(struct event_format *event, struct print_arg *arg, char **tok)
 
                arg->op.prio = 0;
 
+               /* it will set arg->op.right */
                type = process_array(event, arg, tok);
 
        } else {
@@ -1816,14 +1915,16 @@ process_op(struct event_format *event, struct print_arg *arg, char **tok)
 
        return type;
 
- out_free:
+out_warn_free:
+       do_warning("%s: not enough memory!", __func__);
+out_free:
        free_token(token);
        *tok = NULL;
        return EVENT_ERROR;
 }
 
 static enum event_type
-process_entry(struct event_format *event __unused, struct print_arg *arg,
+process_entry(struct event_format *event __maybe_unused, struct print_arg *arg,
              char **tok)
 {
        enum event_type type;
@@ -1880,7 +1981,11 @@ eval_type_str(unsigned long long val, const char *type, int pointer)
                        return val;
                }
 
-               ref = malloc_or_die(len);
+               ref = malloc(len);
+               if (!ref) {
+                       do_warning("%s: not enough memory!", __func__);
+                       return val;
+               }
                memcpy(ref, type, len);
 
                /* chop off the " *" */
@@ -1957,8 +2062,10 @@ eval_type_str(unsigned long long val, const char *type, int pointer)
 static unsigned long long
 eval_type(unsigned long long val, struct print_arg *arg, int pointer)
 {
-       if (arg->type != PRINT_TYPE)
-               die("expected type argument");
+       if (arg->type != PRINT_TYPE) {
+               do_warning("expected type argument");
+               return 0;
+       }
 
        return eval_type_str(val, arg->typecast.type, pointer);
 }
@@ -2143,7 +2250,7 @@ static char *arg_eval (struct print_arg *arg)
        case PRINT_STRING:
        case PRINT_BSTRING:
        default:
-               die("invalid eval type %d", arg->type);
+               do_warning("invalid eval type %d", arg->type);
                break;
        }
 
@@ -2166,6 +2273,8 @@ process_fields(struct event_format *event, struct print_flag_sym **list, char **
                        break;
 
                arg = alloc_arg();
+               if (!arg)
+                       goto out_free;
 
                free_token(token);
                type = process_arg(event, arg, &token);
@@ -2179,30 +2288,33 @@ process_fields(struct event_format *event, struct print_flag_sym **list, char **
                if (test_type_token(type, token, EVENT_DELIM, ","))
                        goto out_free;
 
-               field = malloc_or_die(sizeof(*field));
-               memset(field, 0, sizeof(*field));
+               field = calloc(1, sizeof(*field));
+               if (!field)
+                       goto out_free;
 
                value = arg_eval(arg);
                if (value == NULL)
-                       goto out_free;
+                       goto out_free_field;
                field->value = strdup(value);
                if (field->value == NULL)
-                       goto out_free;
+                       goto out_free_field;
 
                free_arg(arg);
                arg = alloc_arg();
+               if (!arg)
+                       goto out_free;
 
                free_token(token);
                type = process_arg(event, arg, &token);
                if (test_type_token(type, token, EVENT_OP, "}"))
-                       goto out_free;
+                       goto out_free_field;
 
                value = arg_eval(arg);
                if (value == NULL)
-                       goto out_free;
+                       goto out_free_field;
                field->str = strdup(value);
                if (field->str == NULL)
-                       goto out_free;
+                       goto out_free_field;
                free_arg(arg);
                arg = NULL;
 
@@ -2216,6 +2328,8 @@ process_fields(struct event_format *event, struct print_flag_sym **list, char **
        *tok = token;
        return type;
 
+out_free_field:
+       free_flag_sym(field);
 out_free:
        free_arg(arg);
        free_token(token);
@@ -2235,6 +2349,10 @@ process_flags(struct event_format *event, struct print_arg *arg, char **tok)
        arg->type = PRINT_FLAGS;
 
        field = alloc_arg();
+       if (!field) {
+               do_warning("%s: not enough memory!", __func__);
+               goto out_free;
+       }
 
        type = process_arg(event, field, &token);
 
@@ -2243,7 +2361,7 @@ process_flags(struct event_format *event, struct print_arg *arg, char **tok)
                type = process_op(event, field, &token);
 
        if (test_type_token(type, token, EVENT_DELIM, ","))
-               goto out_free;
+               goto out_free_field;
        free_token(token);
 
        arg->flags.field = field;
@@ -2265,7 +2383,9 @@ process_flags(struct event_format *event, struct print_arg *arg, char **tok)
        type = read_token_item(tok);
        return type;
 
- out_free:
+out_free_field:
+       free_arg(field);
+out_free:
        free_token(token);
        *tok = NULL;
        return EVENT_ERROR;
@@ -2282,10 +2402,14 @@ process_symbols(struct event_format *event, struct print_arg *arg, char **tok)
        arg->type = PRINT_SYMBOL;
 
        field = alloc_arg();
+       if (!field) {
+               do_warning("%s: not enough memory!", __func__);
+               goto out_free;
+       }
 
        type = process_arg(event, field, &token);
        if (test_type_token(type, token, EVENT_DELIM, ","))
-               goto out_free;
+               goto out_free_field;
 
        arg->symbol.field = field;
 
@@ -2297,7 +2421,9 @@ process_symbols(struct event_format *event, struct print_arg *arg, char **tok)
        type = read_token_item(tok);
        return type;
 
- out_free:
+out_free_field:
+       free_arg(field);
+out_free:
        free_token(token);
        *tok = NULL;
        return EVENT_ERROR;
@@ -2314,6 +2440,11 @@ process_hex(struct event_format *event, struct print_arg *arg, char **tok)
        arg->type = PRINT_HEX;
 
        field = alloc_arg();
+       if (!field) {
+               do_warning("%s: not enough memory!", __func__);
+               goto out_free;
+       }
+
        type = process_arg(event, field, &token);
 
        if (test_type_token(type, token, EVENT_DELIM, ","))
@@ -2324,6 +2455,12 @@ process_hex(struct event_format *event, struct print_arg *arg, char **tok)
        free_token(token);
 
        field = alloc_arg();
+       if (!field) {
+               do_warning("%s: not enough memory!", __func__);
+               *tok = NULL;
+               return EVENT_ERROR;
+       }
+
        type = process_arg(event, field, &token);
 
        if (test_type_token(type, token, EVENT_DELIM, ")"))
@@ -2381,6 +2518,12 @@ process_dynamic_array(struct event_format *event, struct print_arg *arg, char **
 
        free_token(token);
        arg = alloc_arg();
+       if (!arg) {
+               do_warning("%s: not enough memory!", __func__);
+               *tok = NULL;
+               return EVENT_ERROR;
+       }
+
        type = process_arg(event, arg, &token);
        if (type == EVENT_ERROR)
                goto out_free_arg;
@@ -2434,10 +2577,16 @@ process_paren(struct event_format *event, struct print_arg *arg, char **tok)
                /* make this a typecast and contine */
 
                /* prevous must be an atom */
-               if (arg->type != PRINT_ATOM)
-                       die("previous needed to be PRINT_ATOM");
+               if (arg->type != PRINT_ATOM) {
+                       do_warning("previous needed to be PRINT_ATOM");
+                       goto out_free;
+               }
 
                item_arg = alloc_arg();
+               if (!item_arg) {
+                       do_warning("%s: not enough memory!", __func__);
+                       goto out_free;
+               }
 
                arg->type = PRINT_TYPE;
                arg->typecast.type = arg->atom.atom;
@@ -2457,7 +2606,8 @@ process_paren(struct event_format *event, struct print_arg *arg, char **tok)
 
 
 static enum event_type
-process_str(struct event_format *event __unused, struct print_arg *arg, char **tok)
+process_str(struct event_format *event __maybe_unused, struct print_arg *arg,
+           char **tok)
 {
        enum event_type type;
        char *token;
@@ -2489,6 +2639,9 @@ find_func_handler(struct pevent *pevent, char *func_name)
 {
        struct pevent_function_handler *func;
 
+       if (!pevent)
+               return NULL;
+
        for (func = pevent->func_handlers; func; func = func->next) {
                if (strcmp(func->name, func_name) == 0)
                        break;
@@ -2521,7 +2674,7 @@ process_func_handler(struct event_format *event, struct pevent_function_handler
        struct print_arg *farg;
        enum event_type type;
        char *token;
-       char *test;
+       const char *test;
        int i;
 
        arg->type = PRINT_FUNC;
@@ -2532,6 +2685,11 @@ process_func_handler(struct event_format *event, struct pevent_function_handler
        next_arg = &(arg->func.args);
        for (i = 0; i < func->nr_args; i++) {
                farg = alloc_arg();
+               if (!farg) {
+                       do_warning("%s: not enough memory!", __func__);
+                       return EVENT_ERROR;
+               }
+
                type = process_arg(event, farg, &token);
                if (i < (func->nr_args - 1))
                        test = ",";
@@ -2676,7 +2834,8 @@ process_arg_token(struct event_format *event, struct print_arg *arg,
 
        case EVENT_ERROR ... EVENT_NEWLINE:
        default:
-               die("unexpected type %d", type);
+               do_warning("unexpected type %d", type);
+               return EVENT_ERROR;
        }
        *tok = token;
 
@@ -2697,6 +2856,10 @@ static int event_read_print_args(struct event_format *event, struct print_arg **
                }
 
                arg = alloc_arg();
+               if (!arg) {
+                       do_warning("%s: not enough memory!", __func__);
+                       return -1;
+               }
 
                type = process_arg(event, arg, &token);
 
@@ -2768,10 +2931,8 @@ static int event_read_print(struct event_format *event)
        if (type == EVENT_DQUOTE) {
                char *cat;
 
-               cat = malloc_or_die(strlen(event->print_fmt.format) +
-                                   strlen(token) + 1);
-               strcpy(cat, event->print_fmt.format);
-               strcat(cat, token);
+               if (asprintf(&cat, "%s%s", event->print_fmt.format, token) < 0)
+                       goto fail;
                free_token(token);
                free_token(event->print_fmt.format);
                event->print_fmt.format = NULL;
@@ -2925,8 +3086,10 @@ static int get_common_info(struct pevent *pevent,
         * All events should have the same common elements.
         * Pick any event to find where the type is;
         */
-       if (!pevent->events)
-               die("no event_list!");
+       if (!pevent->events) {
+               do_warning("no event_list!");
+               return -1;
+       }
 
        event = pevent->events[0];
        field = pevent_find_common_field(event, type);
@@ -3084,7 +3247,8 @@ eval_num_arg(void *data, int size, struct event_format *event, struct print_arg
                if (!arg->field.field) {
                        arg->field.field = pevent_find_any_field(event, arg->field.name);
                        if (!arg->field.field)
-                               die("field %s not found", arg->field.name);
+                               goto out_warning_field;
+                       
                }
                /* must be a number */
                val = pevent_read_number(pevent, data + arg->field.field->offset,
@@ -3145,8 +3309,10 @@ eval_num_arg(void *data, int size, struct event_format *event, struct print_arg
                                if (!larg->field.field) {
                                        larg->field.field =
                                                pevent_find_any_field(event, larg->field.name);
-                                       if (!larg->field.field)
-                                               die("field %s not found", larg->field.name);
+                                       if (!larg->field.field) {
+                                               arg = larg;
+                                               goto out_warning_field;
+                                       }
                                }
                                field_size = larg->field.field->elementsize;
                                offset = larg->field.field->offset +
@@ -3182,7 +3348,7 @@ eval_num_arg(void *data, int size, struct event_format *event, struct print_arg
                                val = left != right;
                                break;
                        default:
-                               die("unknown op '%s'", arg->op.op);
+                               goto out_warning_op;
                        }
                        break;
                case '~':
@@ -3212,7 +3378,7 @@ eval_num_arg(void *data, int size, struct event_format *event, struct print_arg
                                val = left <= right;
                                break;
                        default:
-                               die("unknown op '%s'", arg->op.op);
+                               goto out_warning_op;
                        }
                        break;
                case '>':
@@ -3227,12 +3393,13 @@ eval_num_arg(void *data, int size, struct event_format *event, struct print_arg
                                val = left >= right;
                                break;
                        default:
-                               die("unknown op '%s'", arg->op.op);
+                               goto out_warning_op;
                        }
                        break;
                case '=':
                        if (arg->op.op[1] != '=')
-                               die("unknown op '%s'", arg->op.op);
+                               goto out_warning_op;
+
                        val = left == right;
                        break;
                case '-':
@@ -3248,13 +3415,21 @@ eval_num_arg(void *data, int size, struct event_format *event, struct print_arg
                        val = left * right;
                        break;
                default:
-                       die("unknown op '%s'", arg->op.op);
+                       goto out_warning_op;
                }
                break;
        default: /* not sure what to do there */
                return 0;
        }
        return val;
+
+out_warning_op:
+       do_warning("%s: unknown op '%s'", __func__, arg->op.op);
+       return 0;
+
+out_warning_field:
+       do_warning("%s: field %s not found", __func__, arg->field.name);
+       return 0;
 }
 
 struct flag {
@@ -3331,8 +3506,10 @@ static void print_str_arg(struct trace_seq *s, void *data, int size,
                field = arg->field.field;
                if (!field) {
                        field = pevent_find_any_field(event, arg->field.name);
-                       if (!field)
-                               die("field %s not found", arg->field.name);
+                       if (!field) {
+                               str = arg->field.name;
+                               goto out_warning_field;
+                       }
                        arg->field.field = field;
                }
                /* Zero sized fields, mean the rest of the data */
@@ -3349,7 +3526,11 @@ static void print_str_arg(struct trace_seq *s, void *data, int size,
                        trace_seq_printf(s, "%lx", addr);
                        break;
                }
-               str = malloc_or_die(len + 1);
+               str = malloc(len + 1);
+               if (!str) {
+                       do_warning("%s: not enough memory!", __func__);
+                       return;
+               }
                memcpy(str, data + field->offset, len);
                str[len] = 0;
                print_str_to_seq(s, format, len_arg, str);
@@ -3389,7 +3570,7 @@ static void print_str_arg(struct trace_seq *s, void *data, int size,
                        str = arg->hex.field->field.name;
                        field = pevent_find_any_field(event, str);
                        if (!field)
-                               die("field %s not found", str);
+                               goto out_warning_field;
                        arg->hex.field->field.field = field;
                }
                hex = data + field->offset;
@@ -3441,6 +3622,11 @@ static void print_str_arg(struct trace_seq *s, void *data, int size,
                /* well... */
                break;
        }
+
+       return;
+
+out_warning_field:
+       do_warning("%s: field %s not found", __func__, arg->field.name);
 }
 
 static unsigned long long
@@ -3467,7 +3653,11 @@ process_defined_func(struct trace_seq *s, void *data, int size,
        farg = arg->func.args;
        param = func_handle->params;
 
-       args = malloc_or_die(sizeof(*args) * func_handle->nr_args);
+       ret = ULLONG_MAX;
+       args = malloc(sizeof(*args) * func_handle->nr_args);
+       if (!args)
+               goto out;
+
        for (i = 0; i < func_handle->nr_args; i++) {
                switch (param->type) {
                case PEVENT_FUNC_ARG_INT:
@@ -3479,13 +3669,19 @@ process_defined_func(struct trace_seq *s, void *data, int size,
                        trace_seq_init(&str);
                        print_str_arg(&str, data, size, event, "%s", -1, farg);
                        trace_seq_terminate(&str);
-                       string = malloc_or_die(sizeof(*string));
+                       string = malloc(sizeof(*string));
+                       if (!string) {
+                               do_warning("%s(%d): malloc str", __func__, __LINE__);
+                               goto out_free;
+                       }
                        string->next = strings;
                        string->str = strdup(str.buffer);
-                       if (!string->str)
-                               die("malloc str");
-
-                       args[i] = (unsigned long long)string->str;
+                       if (!string->str) {
+                               free(string);
+                               do_warning("%s(%d): malloc str", __func__, __LINE__);
+                               goto out_free;
+                       }
+                       args[i] = (uintptr_t)string->str;
                        strings = string;
                        trace_seq_destroy(&str);
                        break;
@@ -3494,14 +3690,15 @@ process_defined_func(struct trace_seq *s, void *data, int size,
                         * Something went totally wrong, this is not
                         * an input error, something in this code broke.
                         */
-                       die("Unexpected end of arguments\n");
-                       break;
+                       do_warning("Unexpected end of arguments\n");
+                       goto out_free;
                }
                farg = farg->next;
                param = param->next;
        }
 
        ret = (*func_handle->func)(s, args);
+out_free:
        free(args);
        while (strings) {
                string = strings;
@@ -3515,6 +3712,18 @@ process_defined_func(struct trace_seq *s, void *data, int size,
        return ret;
 }
 
+static void free_args(struct print_arg *args)
+{
+       struct print_arg *next;
+
+       while (args) {
+               next = args->next;
+
+               free_arg(args);
+               args = next;
+       }
+}
+
 static struct print_arg *make_bprint_args(char *fmt, void *data, int size, struct event_format *event)
 {
        struct pevent *pevent = event->pevent;
@@ -3530,11 +3739,15 @@ static struct print_arg *make_bprint_args(char *fmt, void *data, int size, struc
 
        if (!field) {
                field = pevent_find_field(event, "buf");
-               if (!field)
-                       die("can't find buffer field for binary printk");
+               if (!field) {
+                       do_warning("can't find buffer field for binary printk");
+                       return NULL;
+               }
                ip_field = pevent_find_field(event, "ip");
-               if (!ip_field)
-                       die("can't find ip field for binary printk");
+               if (!ip_field) {
+                       do_warning("can't find ip field for binary printk");
+                       return NULL;
+               }
                pevent->bprint_buf_field = field;
                pevent->bprint_ip_field = ip_field;
        }
@@ -3545,13 +3758,18 @@ static struct print_arg *make_bprint_args(char *fmt, void *data, int size, struc
         * The first arg is the IP pointer.
         */
        args = alloc_arg();
+       if (!args) {
+               do_warning("%s(%d): not enough memory!", __func__, __LINE__);
+               return NULL;
+       }
        arg = args;
        arg->next = NULL;
        next = &arg->next;
 
        arg->type = PRINT_ATOM;
-       arg->atom.atom = malloc_or_die(32);
-       sprintf(arg->atom.atom, "%lld", ip);
+               
+       if (asprintf(&arg->atom.atom, "%lld", ip) < 0)
+               goto out_free;
 
        /* skip the first "%pf : " */
        for (ptr = fmt + 6, bptr = data + field->offset;
@@ -3606,10 +3824,17 @@ static struct print_arg *make_bprint_args(char *fmt, void *data, int size, struc
                                val = pevent_read_number(pevent, bptr, vsize);
                                bptr += vsize;
                                arg = alloc_arg();
+                               if (!arg) {
+                                       do_warning("%s(%d): not enough memory!",
+                                                  __func__, __LINE__);
+                                       goto out_free;
+                               }
                                arg->next = NULL;
                                arg->type = PRINT_ATOM;
-                               arg->atom.atom = malloc_or_die(32);
-                               sprintf(arg->atom.atom, "%lld", val);
+                               if (asprintf(&arg->atom.atom, "%lld", val) < 0) {
+                                       free(arg);
+                                       goto out_free;
+                               }
                                *next = arg;
                                next = &arg->next;
                                /*
@@ -3622,11 +3847,16 @@ static struct print_arg *make_bprint_args(char *fmt, void *data, int size, struc
                                break;
                        case 's':
                                arg = alloc_arg();
+                               if (!arg) {
+                                       do_warning("%s(%d): not enough memory!",
+                                                  __func__, __LINE__);
+                                       goto out_free;
+                               }
                                arg->next = NULL;
                                arg->type = PRINT_BSTRING;
                                arg->string.string = strdup(bptr);
                                if (!arg->string.string)
-                                       break;
+                                       goto out_free;
                                bptr += strlen(bptr) + 1;
                                *next = arg;
                                next = &arg->next;
@@ -3637,22 +3867,15 @@ static struct print_arg *make_bprint_args(char *fmt, void *data, int size, struc
        }
 
        return args;
-}
-
-static void free_args(struct print_arg *args)
-{
-       struct print_arg *next;
-
-       while (args) {
-               next = args->next;
 
-               free_arg(args);
-               args = next;
-       }
+out_free:
+       free_args(args);
+       return NULL;
 }
 
 static char *
-get_bprint_format(void *data, int size __unused, struct event_format *event)
+get_bprint_format(void *data, int size __maybe_unused,
+                 struct event_format *event)
 {
        struct pevent *pevent = event->pevent;
        unsigned long long addr;
@@ -3665,8 +3888,10 @@ get_bprint_format(void *data, int size __unused, struct event_format *event)
 
        if (!field) {
                field = pevent_find_field(event, "fmt");
-               if (!field)
-                       die("can't find format field for binary printk");
+               if (!field) {
+                       do_warning("can't find format field for binary printk");
+                       return NULL;
+               }
                pevent->bprint_fmt_field = field;
        }
 
@@ -3674,9 +3899,8 @@ get_bprint_format(void *data, int size __unused, struct event_format *event)
 
        printk = find_printk(pevent, addr);
        if (!printk) {
-               format = malloc_or_die(45);
-               sprintf(format, "%%pf : (NO FORMAT FOUND at %llx)\n",
-                       addr);
+               if (asprintf(&format, "%%pf : (NO FORMAT FOUND at %llx)\n", addr) < 0)
+                       return NULL;
                return format;
        }
 
@@ -3684,8 +3908,8 @@ get_bprint_format(void *data, int size __unused, struct event_format *event)
        /* Remove any quotes. */
        if (*p == '"')
                p++;
-       format = malloc_or_die(strlen(p) + 10);
-       sprintf(format, "%s : %s", "%pf", p);
+       if (asprintf(&format, "%s : %s", "%pf", p) < 0)
+               return NULL;
        /* remove ending quotes and new line since we will add one too */
        p = format + strlen(format) - 1;
        if (*p == '"')
@@ -3702,7 +3926,7 @@ static void print_mac_arg(struct trace_seq *s, int mac, void *data, int size,
                          struct event_format *event, struct print_arg *arg)
 {
        unsigned char *buf;
-       char *fmt = "%.2x:%.2x:%.2x:%.2x:%.2x:%.2x";
+       const char *fmt = "%.2x:%.2x:%.2x:%.2x:%.2x:%.2x";
 
        if (arg->type == PRINT_FUNC) {
                process_defined_func(s, data, size, event, arg);
@@ -3720,8 +3944,11 @@ static void print_mac_arg(struct trace_seq *s, int mac, void *data, int size,
        if (!arg->field.field) {
                arg->field.field =
                        pevent_find_any_field(event, arg->field.name);
-               if (!arg->field.field)
-                       die("field %s not found", arg->field.name);
+               if (!arg->field.field) {
+                       do_warning("%s: field %s not found",
+                                  __func__, arg->field.name);
+                       return;
+               }
        }
        if (arg->field.field->size != 6) {
                trace_seq_printf(s, "INVALIDMAC");
@@ -3741,7 +3968,8 @@ static int is_printable_array(char *p, unsigned int len)
        return 1;
 }
 
-static void print_event_fields(struct trace_seq *s, void *data, int size,
+static void print_event_fields(struct trace_seq *s, void *data,
+                              int size __maybe_unused,
                               struct event_format *event)
 {
        struct format_field *field;
@@ -3888,8 +4116,11 @@ static void pretty_print(struct trace_seq *s, void *data, int size, struct event
                                goto cont_process;
                        case '*':
                                /* The argument is the length. */
-                               if (!arg)
-                                       die("no argument match");
+                               if (!arg) {
+                                       do_warning("no argument match");
+                                       event->flags |= EVENT_FL_FAILED;
+                                       goto out_failed;
+                               }
                                len_arg = eval_num_arg(data, size, event, arg);
                                len_as_arg = 1;
                                arg = arg->next;
@@ -3922,15 +4153,21 @@ static void pretty_print(struct trace_seq *s, void *data, int size, struct event
                        case 'x':
                        case 'X':
                        case 'u':
-                               if (!arg)
-                                       die("no argument match");
+                               if (!arg) {
+                                       do_warning("no argument match");
+                                       event->flags |= EVENT_FL_FAILED;
+                                       goto out_failed;
+                               }
 
                                len = ((unsigned long)ptr + 1) -
                                        (unsigned long)saveptr;
 
                                /* should never happen */
-                               if (len > 31)
-                                       die("bad format!");
+                               if (len > 31) {
+                                       do_warning("bad format!");
+                                       event->flags |= EVENT_FL_FAILED;
+                                       len = 31;
+                               }
 
                                memcpy(format, saveptr, len);
                                format[len] = 0;
@@ -3994,19 +4231,26 @@ static void pretty_print(struct trace_seq *s, void *data, int size, struct event
                                                trace_seq_printf(s, format, (long long)val);
                                        break;
                                default:
-                                       die("bad count (%d)", ls);
+                                       do_warning("bad count (%d)", ls);
+                                       event->flags |= EVENT_FL_FAILED;
                                }
                                break;
                        case 's':
-                               if (!arg)
-                                       die("no matching argument");
+                               if (!arg) {
+                                       do_warning("no matching argument");
+                                       event->flags |= EVENT_FL_FAILED;
+                                       goto out_failed;
+                               }
 
                                len = ((unsigned long)ptr + 1) -
                                        (unsigned long)saveptr;
 
                                /* should never happen */
-                               if (len > 31)
-                                       die("bad format!");
+                               if (len > 31) {
+                                       do_warning("bad format!");
+                                       event->flags |= EVENT_FL_FAILED;
+                                       len = 31;
+                               }
 
                                memcpy(format, saveptr, len);
                                format[len] = 0;
@@ -4024,6 +4268,11 @@ static void pretty_print(struct trace_seq *s, void *data, int size, struct event
                        trace_seq_putc(s, *ptr);
        }
 
+       if (event->flags & EVENT_FL_FAILED) {
+out_failed:
+               trace_seq_printf(s, "[FAILED TO PARSE]");
+       }
+
        if (args) {
                free_args(args);
                free(bprint_fmt);
@@ -4197,7 +4446,7 @@ void pevent_event_info(struct trace_seq *s, struct event_format *event,
 void pevent_print_event(struct pevent *pevent, struct trace_seq *s,
                        struct pevent_record *record)
 {
-       static char *spaces = "                    "; /* 20 spaces */
+       static const char *spaces = "                    "; /* 20 spaces */
        struct event_format *event;
        unsigned long secs;
        unsigned long usecs;
@@ -4356,7 +4605,10 @@ get_event_fields(const char *type, const char *name,
        struct format_field *field;
        int i = 0;
 
-       fields = malloc_or_die(sizeof(*fields) * (count + 1));
+       fields = malloc(sizeof(*fields) * (count + 1));
+       if (!fields)
+               return NULL;
+
        for (field = list; field; field = field->next) {
                fields[i++] = field;
                if (i == count + 1) {
@@ -4672,8 +4924,7 @@ static int find_event_handle(struct pevent *pevent, struct event_format *event)
 }
 
 /**
- * pevent_parse_event - parse the event format
- * @pevent: the handle to the pevent
+ * __pevent_parse_format - parse the event format
  * @buf: the buffer storing the event format string
  * @size: the size of @buf
  * @sys: the system the event belongs to
@@ -4685,28 +4936,27 @@ static int find_event_handle(struct pevent *pevent, struct event_format *event)
  *
  * /sys/kernel/debug/tracing/events/.../.../format
  */
-int pevent_parse_event(struct pevent *pevent,
-                      const char *buf, unsigned long size,
-                      const char *sys)
+enum pevent_errno __pevent_parse_format(struct event_format **eventp,
+                                       struct pevent *pevent, const char *buf,
+                                       unsigned long size, const char *sys)
 {
        struct event_format *event;
        int ret;
 
        init_input_buf(buf, size);
 
-       event = alloc_event();
+       *eventp = event = alloc_event();
        if (!event)
-               return -ENOMEM;
+               return PEVENT_ERRNO__MEM_ALLOC_FAILED;
 
        event->name = event_read_name();
        if (!event->name) {
                /* Bad event? */
-               free(event);
-               return -1;
+               ret = PEVENT_ERRNO__MEM_ALLOC_FAILED;
+               goto event_alloc_failed;
        }
 
        if (strcmp(sys, "ftrace") == 0) {
-
                event->flags |= EVENT_FL_ISFTRACE;
 
                if (strcmp(event->name, "bprint") == 0)
@@ -4714,73 +4964,190 @@ int pevent_parse_event(struct pevent *pevent,
        }
                
        event->id = event_read_id();
-       if (event->id < 0)
-               die("failed to read event id");
+       if (event->id < 0) {
+               ret = PEVENT_ERRNO__READ_ID_FAILED;
+               /*
+                * This isn't an allocation error actually.
+                * But as the ID is critical, just bail out.
+                */
+               goto event_alloc_failed;
+       }
 
        event->system = strdup(sys);
-       if (!event->system)
-               die("failed to allocate system");
+       if (!event->system) {
+               ret = PEVENT_ERRNO__MEM_ALLOC_FAILED;
+               goto event_alloc_failed;
+       }
 
        /* Add pevent to event so that it can be referenced */
        event->pevent = pevent;
 
        ret = event_read_format(event);
        if (ret < 0) {
-               do_warning("failed to read event format for %s", event->name);
-               goto event_failed;
+               ret = PEVENT_ERRNO__READ_FORMAT_FAILED;
+               goto event_parse_failed;
        }
 
        /*
         * If the event has an override, don't print warnings if the event
         * print format fails to parse.
         */
-       show_warning = 0;
+       if (pevent && find_event_handle(pevent, event))
+               show_warning = 0;
 
        ret = event_read_print(event);
-       if (ret < 0) {
-               do_warning("failed to read event print fmt for %s",
-                          event->name);
-               show_warning = 1;
-               goto event_failed;
-       }
        show_warning = 1;
 
-       add_event(pevent, event);
+       if (ret < 0) {
+               ret = PEVENT_ERRNO__READ_PRINT_FAILED;
+               goto event_parse_failed;
+       }
 
        if (!ret && (event->flags & EVENT_FL_ISFTRACE)) {
                struct format_field *field;
                struct print_arg *arg, **list;
 
                /* old ftrace had no args */
-
                list = &event->print_fmt.args;
                for (field = event->format.fields; field; field = field->next) {
                        arg = alloc_arg();
-                       *list = arg;
-                       list = &arg->next;
+                       if (!arg) {
+                               event->flags |= EVENT_FL_FAILED;
+                               return PEVENT_ERRNO__OLD_FTRACE_ARG_FAILED;
+                       }
                        arg->type = PRINT_FIELD;
                        arg->field.name = strdup(field->name);
                        if (!arg->field.name) {
-                               do_warning("failed to allocate field name");
                                event->flags |= EVENT_FL_FAILED;
-                               return -1;
+                               free_arg(arg);
+                               return PEVENT_ERRNO__OLD_FTRACE_ARG_FAILED;
                        }
                        arg->field.field = field;
+                       *list = arg;
+                       list = &arg->next;
                }
                return 0;
        }
 
+       return 0;
+
+ event_parse_failed:
+       event->flags |= EVENT_FL_FAILED;
+       return ret;
+
+ event_alloc_failed:
+       free(event->system);
+       free(event->name);
+       free(event);
+       *eventp = NULL;
+       return ret;
+}
+
+/**
+ * pevent_parse_format - parse the event format
+ * @buf: the buffer storing the event format string
+ * @size: the size of @buf
+ * @sys: the system the event belongs to
+ *
+ * This parses the event format and creates an event structure
+ * to quickly parse raw data for a given event.
+ *
+ * These files currently come from:
+ *
+ * /sys/kernel/debug/tracing/events/.../.../format
+ */
+enum pevent_errno pevent_parse_format(struct event_format **eventp, const char *buf,
+                                     unsigned long size, const char *sys)
+{
+       return __pevent_parse_format(eventp, NULL, buf, size, sys);
+}
+
+/**
+ * pevent_parse_event - parse the event format
+ * @pevent: the handle to the pevent
+ * @buf: the buffer storing the event format string
+ * @size: the size of @buf
+ * @sys: the system the event belongs to
+ *
+ * This parses the event format and creates an event structure
+ * to quickly parse raw data for a given event.
+ *
+ * These files currently come from:
+ *
+ * /sys/kernel/debug/tracing/events/.../.../format
+ */
+enum pevent_errno pevent_parse_event(struct pevent *pevent, const char *buf,
+                                    unsigned long size, const char *sys)
+{
+       struct event_format *event = NULL;
+       int ret = __pevent_parse_format(&event, pevent, buf, size, sys);
+
+       if (event == NULL)
+               return ret;
+
+       if (add_event(pevent, event)) {
+               ret = PEVENT_ERRNO__MEM_ALLOC_FAILED;
+               goto event_add_failed;
+       }
+
 #define PRINT_ARGS 0
        if (PRINT_ARGS && event->print_fmt.args)
                print_args(event->print_fmt.args);
 
        return 0;
 
- event_failed:
-       event->flags |= EVENT_FL_FAILED;
-       /* still add it even if it failed */
-       add_event(pevent, event);
-       return -1;
+event_add_failed:
+       pevent_free_format(event);
+       return ret;
+}
+
+#undef _PE
+#define _PE(code, str) str
+static const char * const pevent_error_str[] = {
+       PEVENT_ERRORS
+};
+#undef _PE
+
+int pevent_strerror(struct pevent *pevent __maybe_unused,
+                   enum pevent_errno errnum, char *buf, size_t buflen)
+{
+       int idx;
+       const char *msg;
+
+       if (errnum >= 0) {
+               msg = strerror_r(errnum, buf, buflen);
+               if (msg != buf) {
+                       size_t len = strlen(msg);
+                       memcpy(buf, msg, min(buflen - 1, len));
+                       *(buf + min(buflen - 1, len)) = '\0';
+               }
+               return 0;
+       }
+
+       if (errnum <= __PEVENT_ERRNO__START ||
+           errnum >= __PEVENT_ERRNO__END)
+               return -1;
+
+       idx = errnum - __PEVENT_ERRNO__START - 1;
+       msg = pevent_error_str[idx];
+
+       switch (errnum) {
+       case PEVENT_ERRNO__MEM_ALLOC_FAILED:
+       case PEVENT_ERRNO__PARSE_EVENT_FAILED:
+       case PEVENT_ERRNO__READ_ID_FAILED:
+       case PEVENT_ERRNO__READ_FORMAT_FAILED:
+       case PEVENT_ERRNO__READ_PRINT_FAILED:
+       case PEVENT_ERRNO__OLD_FTRACE_ARG_FAILED:
+       case PEVENT_ERRNO__INVALID_ARG_TYPE:
+               snprintf(buf, buflen, "%s", msg);
+               break;
+
+       default:
+               /* cannot reach here */
+               break;
+       }
+
+       return 0;
 }
 
 int get_field_val(struct trace_seq *s, struct format_field *field,
@@ -4999,6 +5366,7 @@ int pevent_register_print_function(struct pevent *pevent,
        struct pevent_func_params *param;
        enum pevent_func_arg_type type;
        va_list ap;
+       int ret;
 
        func_handle = find_func_handler(pevent, name);
        if (func_handle) {
@@ -5011,14 +5379,20 @@ int pevent_register_print_function(struct pevent *pevent,
                remove_func_handler(pevent, name);
        }
 
-       func_handle = malloc_or_die(sizeof(*func_handle));
-       memset(func_handle, 0, sizeof(*func_handle));
+       func_handle = calloc(1, sizeof(*func_handle));
+       if (!func_handle) {
+               do_warning("Failed to allocate function handler");
+               return PEVENT_ERRNO__MEM_ALLOC_FAILED;
+       }
 
        func_handle->ret_type = ret_type;
        func_handle->name = strdup(name);
        func_handle->func = func;
-       if (!func_handle->name)
-               die("Failed to allocate function name");
+       if (!func_handle->name) {
+               do_warning("Failed to allocate function name");
+               free(func_handle);
+               return PEVENT_ERRNO__MEM_ALLOC_FAILED;
+       }
 
        next_param = &(func_handle->params);
        va_start(ap, name);
@@ -5027,12 +5401,18 @@ int pevent_register_print_function(struct pevent *pevent,
                if (type == PEVENT_FUNC_ARG_VOID)
                        break;
 
-               if (type < 0 || type >= PEVENT_FUNC_ARG_MAX_TYPES) {
-                       warning("Invalid argument type %d", type);
+               if (type >= PEVENT_FUNC_ARG_MAX_TYPES) {
+                       do_warning("Invalid argument type %d", type);
+                       ret = PEVENT_ERRNO__INVALID_ARG_TYPE;
                        goto out_free;
                }
 
-               param = malloc_or_die(sizeof(*param));
+               param = malloc(sizeof(*param));
+               if (!param) {
+                       do_warning("Failed to allocate function param");
+                       ret = PEVENT_ERRNO__MEM_ALLOC_FAILED;
+                       goto out_free;
+               }
                param->type = type;
                param->next = NULL;
 
@@ -5050,7 +5430,7 @@ int pevent_register_print_function(struct pevent *pevent,
  out_free:
        va_end(ap);
        free_func_handle(func_handle);
-       return -1;
+       return ret;
 }
 
 /**
@@ -5070,10 +5450,9 @@ int pevent_register_print_function(struct pevent *pevent,
  * If @id is >= 0, then it is used to find the event.
  * else @sys_name and @event_name are used.
  */
-int pevent_register_event_handler(struct pevent *pevent,
-                                 int id, char *sys_name, char *event_name,
-                                 pevent_event_handler_func func,
-                                 void *context)
+int pevent_register_event_handler(struct pevent *pevent, int id,
+                                 const char *sys_name, const char *event_name,
+                                 pevent_event_handler_func func, void *context)
 {
        struct event_format *event;
        struct event_handler *handle;
@@ -5102,8 +5481,12 @@ int pevent_register_event_handler(struct pevent *pevent,
 
  not_found:
        /* Save for later use. */
-       handle = malloc_or_die(sizeof(*handle));
-       memset(handle, 0, sizeof(*handle));
+       handle = calloc(1, sizeof(*handle));
+       if (!handle) {
+               do_warning("Failed to allocate event handler");
+               return PEVENT_ERRNO__MEM_ALLOC_FAILED;
+       }
+
        handle->id = id;
        if (event_name)
                handle->event_name = strdup(event_name);
@@ -5112,7 +5495,11 @@ int pevent_register_event_handler(struct pevent *pevent,
 
        if ((event_name && !handle->event_name) ||
            (sys_name && !handle->sys_name)) {
-               die("Failed to allocate event/sys name");
+               do_warning("Failed to allocate event/sys name");
+               free((void *)handle->event_name);
+               free((void *)handle->sys_name);
+               free(handle);
+               return PEVENT_ERRNO__MEM_ALLOC_FAILED;
        }
 
        handle->func = func;
@@ -5128,13 +5515,10 @@ int pevent_register_event_handler(struct pevent *pevent,
  */
 struct pevent *pevent_alloc(void)
 {
-       struct pevent *pevent;
+       struct pevent *pevent = calloc(1, sizeof(*pevent));
 
-       pevent = malloc(sizeof(*pevent));
-       if (!pevent)
-               return NULL;
-       memset(pevent, 0, sizeof(*pevent));
-       pevent->ref_count = 1;
+       if (pevent)
+               pevent->ref_count = 1;
 
        return pevent;
 }
@@ -5163,7 +5547,7 @@ static void free_formats(struct format *format)
        free_format_fields(format->fields);
 }
 
-static void free_event(struct event_format *event)
+void pevent_free_format(struct event_format *event)
 {
        free(event->name);
        free(event->system);
@@ -5214,7 +5598,7 @@ void pevent_free(struct pevent *pevent)
        }
 
        if (pevent->func_map) {
-               for (i = 0; i < pevent->func_count; i++) {
+               for (i = 0; i < (int)pevent->func_count; i++) {
                        free(pevent->func_map[i].func);
                        free(pevent->func_map[i].mod);
                }
@@ -5236,7 +5620,7 @@ void pevent_free(struct pevent *pevent)
        }
 
        if (pevent->printk_map) {
-               for (i = 0; i < pevent->printk_count; i++)
+               for (i = 0; i < (int)pevent->printk_count; i++)
                        free(pevent->printk_map[i].printk);
                free(pevent->printk_map);
        }
@@ -5249,7 +5633,7 @@ void pevent_free(struct pevent *pevent)
        }
 
        for (i = 0; i < pevent->nr_events; i++)
-               free_event(pevent->events[i]);
+               pevent_free_format(pevent->events[i]);
 
        while (pevent->handlers) {
                handle = pevent->handlers;
index 1a486ae..c37b202 100644 (file)
@@ -13,8 +13,7 @@
  * GNU Lesser General Public License for more details.
  *
  * You should have received a copy of the GNU Lesser General Public
- * License along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ * License along with this program; if not,  see <http://www.gnu.org/licenses>
  *
  * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  */
@@ -24,8 +23,8 @@
 #include <stdarg.h>
 #include <regex.h>
 
-#ifndef __unused
-#define __unused __attribute__ ((unused))
+#ifndef __maybe_unused
+#define __maybe_unused __attribute__((unused))
 #endif
 
 /* ----------------------- trace_seq ----------------------- */
@@ -49,7 +48,7 @@ struct pevent_record {
        int                     cpu;
        int                     ref_count;
        int                     locked;         /* Do not free, even if ref_count is zero */
-       void                    *p_private;
+       void                    *priv;
 #if DEBUG_RECORD
        struct pevent_record    *prev;
        struct pevent_record    *next;
@@ -70,6 +69,7 @@ struct trace_seq {
 };
 
 void trace_seq_init(struct trace_seq *s);
+void trace_seq_reset(struct trace_seq *s);
 void trace_seq_destroy(struct trace_seq *s);
 
 extern int trace_seq_printf(struct trace_seq *s, const char *fmt, ...)
@@ -106,7 +106,7 @@ struct plugin_option {
        char                            *plugin_alias;
        char                            *description;
        char                            *value;
-       void                            *p_private;
+       void                            *priv;
        int                             set;
 };
 
@@ -345,6 +345,35 @@ enum pevent_flag {
        PEVENT_NSEC_OUTPUT              = 1,    /* output in NSECS */
 };
 
+#define PEVENT_ERRORS                                                        \
+       _PE(MEM_ALLOC_FAILED,   "failed to allocate memory"),                 \
+       _PE(PARSE_EVENT_FAILED, "failed to parse event"),                     \
+       _PE(READ_ID_FAILED,     "failed to read event id"),                   \
+       _PE(READ_FORMAT_FAILED, "failed to read event format"),               \
+       _PE(READ_PRINT_FAILED,  "failed to read event print fmt"),            \
+       _PE(OLD_FTRACE_ARG_FAILED,"failed to allocate field name for ftrace"),\
+       _PE(INVALID_ARG_TYPE,   "invalid argument type")
+
+#undef _PE
+#define _PE(__code, __str) PEVENT_ERRNO__ ## __code
+enum pevent_errno {
+       PEVENT_ERRNO__SUCCESS                   = 0,
+
+       /*
+        * Choose an arbitrary negative big number not to clash with standard
+        * errno since SUS requires the errno has distinct positive values.
+        * See 'Issue 6' in the link below.
+        *
+        * http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/errno.h.html
+        */
+       __PEVENT_ERRNO__START                   = -100000,
+
+       PEVENT_ERRORS,
+
+       __PEVENT_ERRNO__END,
+};
+#undef _PE
+
 struct cmdline;
 struct cmdline_list;
 struct func_map;
@@ -371,6 +400,7 @@ struct pevent {
 
        int cpus;
        int long_size;
+       int page_size;
 
        struct cmdline *cmdlines;
        struct cmdline_list *cmdlist;
@@ -509,8 +539,11 @@ void pevent_print_event(struct pevent *pevent, struct trace_seq *s,
 int pevent_parse_header_page(struct pevent *pevent, char *buf, unsigned long size,
                             int long_size);
 
-int pevent_parse_event(struct pevent *pevent, const char *buf,
-                      unsigned long size, const char *sys);
+enum pevent_errno pevent_parse_event(struct pevent *pevent, const char *buf,
+                                    unsigned long size, const char *sys);
+enum pevent_errno pevent_parse_format(struct event_format **eventp, const char *buf,
+                                     unsigned long size, const char *sys);
+void pevent_free_format(struct event_format *event);
 
 void *pevent_get_field_raw(struct trace_seq *s, struct event_format *event,
                           const char *name, struct pevent_record *record,
@@ -530,7 +563,8 @@ int pevent_print_num_field(struct trace_seq *s, const char *fmt,
                           struct event_format *event, const char *name,
                           struct pevent_record *record, int err);
 
-int pevent_register_event_handler(struct pevent *pevent, int id, char *sys_name, char *event_name,
+int pevent_register_event_handler(struct pevent *pevent, int id,
+                                 const char *sys_name, const char *event_name,
                                  pevent_event_handler_func func, void *context);
 int pevent_register_print_function(struct pevent *pevent,
                                   pevent_func_handler func,
@@ -561,6 +595,8 @@ int pevent_data_pid(struct pevent *pevent, struct pevent_record *rec);
 const char *pevent_data_comm_from_pid(struct pevent *pevent, int pid);
 void pevent_event_info(struct trace_seq *s, struct event_format *event,
                       struct pevent_record *record);
+int pevent_strerror(struct pevent *pevent, enum pevent_errno errnum,
+                   char *buf, size_t buflen);
 
 struct event_format **pevent_list_events(struct pevent *pevent, enum event_sort_type);
 struct format_field **pevent_event_common_fields(struct event_format *event);
@@ -586,6 +622,16 @@ static inline void pevent_set_long_size(struct pevent *pevent, int long_size)
        pevent->long_size = long_size;
 }
 
+static inline int pevent_get_page_size(struct pevent *pevent)
+{
+       return pevent->page_size;
+}
+
+static inline void pevent_set_page_size(struct pevent *pevent, int _page_size)
+{
+       pevent->page_size = _page_size;
+}
+
 static inline int pevent_is_file_bigendian(struct pevent *pevent)
 {
        return pevent->file_bigendian;
index 0829638..e76c9ac 100644 (file)
@@ -13,8 +13,7 @@
  * GNU Lesser General Public License for more details.
  *
  * You should have received a copy of the GNU Lesser General Public
- * License along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ * License along with this program; if not,  see <http://www.gnu.org/licenses>
  *
  * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  */
@@ -39,6 +38,12 @@ void __vdie(const char *fmt, ...);
 void __vwarning(const char *fmt, ...);
 void __vpr_stat(const char *fmt, ...);
 
+#define min(x, y) ({                           \
+       typeof(x) _min1 = (x);                  \
+       typeof(y) _min2 = (y);                  \
+       (void) (&_min1 == &_min2);              \
+       _min1 < _min2 ? _min1 : _min2; })
+
 static inline char *strim(char *string)
 {
        char *ret;
index ad17855..2500e75 100644 (file)
@@ -13,8 +13,7 @@
  * GNU Lesser General Public License for more details.
  *
  * You should have received a copy of the GNU Lesser General Public
- * License along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ * License along with this program; if not,  see <http://www.gnu.org/licenses>
  *
  * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  */
@@ -209,7 +208,16 @@ static void free_arg(struct filter_arg *arg)
        switch (arg->type) {
        case FILTER_ARG_NONE:
        case FILTER_ARG_BOOLEAN:
+               break;
+
        case FILTER_ARG_NUM:
+               free_arg(arg->num.left);
+               free_arg(arg->num.right);
+               break;
+
+       case FILTER_ARG_EXP:
+               free_arg(arg->exp.left);
+               free_arg(arg->exp.right);
                break;
 
        case FILTER_ARG_STR:
@@ -218,6 +226,12 @@ static void free_arg(struct filter_arg *arg)
                free(arg->str.buffer);
                break;
 
+       case FILTER_ARG_VALUE:
+               if (arg->value.type == FILTER_STRING ||
+                   arg->value.type == FILTER_CHAR)
+                       free(arg->value.str);
+               break;
+
        case FILTER_ARG_OP:
                free_arg(arg->op.left);
                free_arg(arg->op.right);
index f023a13..bba701c 100644 (file)
@@ -1,3 +1,22 @@
+/*
+ * Copyright (C) 2010 Red Hat Inc, Steven Rostedt <srostedt@redhat.com>
+ *
+ * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation;
+ * version 2.1 of the License (not later!)
+ *
+ * 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 Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this program; if not,  see <http://www.gnu.org/licenses>
+ *
+ * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ */
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
index b1ccc92..d7f2e68 100644 (file)
@@ -13,8 +13,7 @@
  * GNU Lesser General Public License for more details.
  *
  * You should have received a copy of the GNU Lesser General Public
- * License along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ * License along with this program; if not,  see <http://www.gnu.org/licenses>
  *
  * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  */
@@ -50,6 +49,19 @@ void trace_seq_init(struct trace_seq *s)
 }
 
 /**
+ * trace_seq_reset - re-initialize the trace_seq structure
+ * @s: a pointer to the trace_seq structure to reset
+ */
+void trace_seq_reset(struct trace_seq *s)
+{
+       if (!s)
+               return;
+       TRACE_SEQ_CHECK(s);
+       s->len = 0;
+       s->readpos = 0;
+}
+
+/**
  * trace_seq_destroy - free up memory of a trace_seq
  * @s: a pointer to the trace_seq to free the buffer
  *