diff -Naurp pcp-3.9.10-orig/qa/1009 pcp-3.9.10-test/qa/1009
--- pcp-3.9.10-orig/qa/1009	2014-09-05 14:18:40.000000000 +1000
+++ pcp-3.9.10-test/qa/1009	2014-11-24 15:46:11.407654741 +1100
@@ -6,6 +6,8 @@ seq=`basename $0`
 echo "QA output created by $seq"
 . ./common.qt
 
+rm -f $seq.full
+
 which pmdumptext >/dev/null 2>&1 || _notrun "pmdumptext not installed"
 
 status=1	# failure is the default!
@@ -15,13 +17,15 @@ trap "rm -f $tmp.*; exit \$status" 0 1 2
 pminfo proc.nprocs >/dev/null 2>&1 || _notrun "proc PMDA not installed"
 
 # see if unix domain sockets are available (permissions)
-unix_domain_sockets=false
-eval `pmconfig -L 2>/dev/null`
+eval `pmconfig -L -s unix_domain_sockets`
 target="-h localhost"
 $unix_domain_sockets && target="-h unix:"
+echo "unix_domain_sockets=$unix_domain_sockets" >>$seq.full
+echo "target=$target" >>$seq.full
 
 # real QA test starts here
 inst=`pminfo $target -F proc.psinfo.pid \
+      | tee -a $seq.full \
       | sed -n -e '/inst \[1 /{
 s/^[^"]*"//
 s/ .*//
diff -Naurp pcp-3.9.10-orig/qa/1023 pcp-3.9.10-test/qa/1023
--- pcp-3.9.10-orig/qa/1023	2014-09-05 14:18:41.000000000 +1000
+++ pcp-3.9.10-test/qa/1023	2014-11-24 15:45:21.991632014 +1100
@@ -16,7 +16,7 @@ pminfo proc.nprocs >/dev/null 2>&1 || _n
 
 # see if unix domain sockets are available (permissions)
 unix_domain_sockets=false
-eval `pmconfig -L 2>/dev/null`
+eval `pmconfig -L 2>/dev/null | grep unix_domain_sockets`
 target="-h localhost"
 $unix_domain_sockets && target="-h unix:"
 
diff -Naurp pcp-3.9.10-orig/qa/128 pcp-3.9.10-test/qa/128
--- pcp-3.9.10-orig/qa/128	2014-07-16 14:10:15.000000000 +1000
+++ pcp-3.9.10-test/qa/128	2014-11-24 15:39:08.708586141 +1100
@@ -26,6 +26,7 @@ get_pminfo()
     perl -e '
         open STATS, "pminfo -f '$1' |" || die "pminfo: $!";
         while (<STATS>) {
+            s/readdir\+/readdirplus/g;
             if (m/.*"(\S+)"] value (\d+)/) {
                 printf("'$2'_%s %d\n", $1, $2);
             }
diff -Naurp pcp-3.9.10-orig/qa/443 pcp-3.9.10-test/qa/443
--- pcp-3.9.10-orig/qa/443	2014-09-05 14:18:42.000000000 +1000
+++ pcp-3.9.10-test/qa/443	2014-11-24 15:54:08.839506849 +1100
@@ -13,8 +13,6 @@ echo "QA output created by $seq"
 . ./common.filter
 . ./common.check
 
-[ $PCP_VER -ge 3805 ] || _notrun "PCP version is too old"
-
 status=0	# success is the default!
 $sudo rm -rf $tmp.* $seq.full
 trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
diff -Naurp pcp-3.9.10-orig/qa/443.out pcp-3.9.10-test/qa/443.out
--- pcp-3.9.10-orig/qa/443.out	2014-09-05 14:18:42.000000000 +1000
+++ pcp-3.9.10-test/qa/443.out	2014-11-24 15:53:57.744504575 +1100
@@ -310,60 +310,61 @@ samples:   all
 
 --- highres events ---
 === -z src/eventrec/sample.event.highres_records ===
-Note: timezone set to local timezone of host "slick" from archive
+Note: timezone set to local timezone of host "smash" from archive
 
 archive:   src/eventrec
-host:      slick
-start:     Wed Sep  3 13:42:53 2014
-end:       Wed Sep  3 13:42:58 2014
+host:      smash
+start:     Thu Nov 13 12:00:50 2014
+end:       Thu Nov 13 12:00:55 2014
 samples:   all
-13:42:54.146  sample.event.highres_records[fungus]: 1 event records
-  13:42:44.146207109 --- event record [0] flags 0x1 (point) ---
+12:00:51.556  sample.event.highres_records[fungus]: 0 event records
+sample.event.highres_records[bogus]: 2 event records
+  12:00:51.555941984 --- event record [0] flags 0x1 (point) ---
+    sample.event.param_string "fetch #0"
+  12:00:51.555941984 --- event record [1] flags 0x1 (point) ---
+    sample.event.param_string "bingo!"
+12:00:52.555  sample.event.highres_records[fungus]: 1 event records
+  12:00:42.555871929 --- event record [0] flags 0x1 (point) ---
 sample.event.highres_records[bogus]: 1 event records
-  13:42:54.146208753 --- event record [0] flags 0x1 (point) ---
+  12:00:52.555874181 --- event record [0] flags 0x1 (point) ---
     sample.event.param_string "fetch #1"
-13:42:55.146  sample.event.highres_records[fungus]: 2 event records
-  13:42:45.146290917 --- event record [0] flags 0x1 (point) ---
+12:00:53.555  sample.event.highres_records[fungus]: 2 event records
+  12:00:43.555914894 --- event record [0] flags 0x1 (point) ---
     sample.event.type 1
-  13:42:46.146290917 --- event record [1] flags 0x1 (point) ---
+  12:00:44.555914894 --- event record [1] flags 0x1 (point) ---
     sample.event.type 2
     sample.event.param_64 -3
 sample.event.highres_records[bogus]: 1 event records
-  13:42:55.146293674 --- event record [0] flags 0x1 (point) ---
+  12:00:53.555920898 --- event record [0] flags 0x1 (point) ---
     sample.event.param_string "fetch #2"
-13:42:56.146  sample.event.highres_records[fungus]: 5 event records
-  13:42:46.146187279 --- event record [0] flags 0x1a (start,id,parent) ---
+12:00:54.555  sample.event.highres_records[fungus]: 5 event records
+  12:00:44.555893310 --- event record [0] flags 0x1a (start,id,parent) ---
     sample.event.type 4
     sample.event.param_u64 5
     sample.event.param_string "6"
-  13:42:47.146187279 --- event record [1] flags 0x1 (point) ---
+  12:00:45.555893310 --- event record [1] flags 0x1 (point) ---
     sample.event.type 7
     sample.event.param_double 8
     sample.event.param_double -9
-  13:42:48.146187279 --- event record [2] flags 0x4 (end) ---
+  12:00:46.555893310 --- event record [2] flags 0x4 (end) ---
     sample.event.type 10
     sample.event.param_u64 11
     sample.event.param_string "twelve"
     sample.event.param_string "thirteen"
     sample.event.param_32 -14
     sample.event.param_u32 15
-  13:42:49.146187279 --- event record [3] flags 0x80000000 (missed) ---
+  12:00:47.555893310 --- event record [3] flags 0x80000000 (missed) ---
     ==> 0 missed event records
-  13:42:50.146187279 --- event record [4] flags 0x1 (point) ---
+  12:00:48.555893310 --- event record [4] flags 0x1 (point) ---
     sample.event.type 16
     sample.event.param_float -17
     sample.event.param_aggregate [0103070f1f3f7fff]
 sample.event.highres_records[bogus]: 2 event records
-  13:42:56.146194604 --- event record [0] flags 0x1 (point) ---
+  12:00:54.555905229 --- event record [0] flags 0x1 (point) ---
     sample.event.param_string "fetch #3"
-  13:42:56.146194604 --- event record [1] flags 0x1 (point) ---
+  12:00:54.555905229 --- event record [1] flags 0x1 (point) ---
     sample.event.param_string "bingo!"
-13:42:57.146  sample.event.highres_records[fungus]: 0 event records
+12:00:55.555  sample.event.highres_records[fungus]: 0 event records
 sample.event.highres_records[bogus]: 1 event records
-  13:42:57.146218425 --- event record [0] flags 0x1 (point) ---
+  12:00:55.555886181 --- event record [0] flags 0x1 (point) ---
     sample.event.param_string "fetch #4"
-13:42:58.146  sample.event.highres_records[fungus]: 1 event records
-  13:42:48.146230678 --- event record [0] flags 0x1 (point) ---
-sample.event.highres_records[bogus]: 1 event records
-  13:42:58.146232332 --- event record [0] flags 0x1 (point) ---
-    sample.event.param_string "fetch #5"
diff -Naurp pcp-3.9.10-orig/qa/744 pcp-3.9.10-test/qa/744
--- pcp-3.9.10-orig/qa/744	2014-09-05 14:18:42.000000000 +1000
+++ pcp-3.9.10-test/qa/744	2014-11-24 15:42:39.837506007 +1100
@@ -32,6 +32,25 @@ _filter()
 pmns=$PCP_PMDAS_DIR/nvidia/root
 pmda=$PCP_PMDAS_DIR/nvidia/pmda_nvidia,nvidia_init
 
+if [ -f $PCP_PMDAS_DIR/nvidia/help.dir ]
+then
+    # ./Install already run, or QA stumbled past to run newhelp
+    :
+else
+    cd $PCP_PMDAS_DIR/nvidia
+    $sudo $PCP_BINADM_DIR/newhelp -n root help >$tmp.out 2>&1
+    if [ -f $PCP_PMDAS_DIR/nvidia/help.dir ]
+    then
+	:
+    else
+	cat $tmp.out
+	echo "Arrgh ... failed to create help.dir"
+	sts=1
+	exit
+    fi
+    cd $here
+fi
+
 # real QA test starts here
 echo
 echo "== Testing behaviour with no nvidia library available"
diff -Naurp pcp-3.9.10-orig/qa/745 pcp-3.9.10-test/qa/745
--- pcp-3.9.10-orig/qa/745	2014-09-05 14:18:42.000000000 +1000
+++ pcp-3.9.10-test/qa/745	2014-11-24 15:42:29.437621252 +1100
@@ -37,6 +37,25 @@ _filter()
 pmns=$PCP_PMDAS_DIR/nvidia/root
 pmda=$PCP_PMDAS_DIR/nvidia/pmda_nvidia.$DSO_SUFFIX,nvidia_init
 
+if [ -f $PCP_PMDAS_DIR/nvidia/help.dir ]
+then
+    # ./Install already run, or QA stumbled past to run newhelp
+    :
+else
+    cd $PCP_PMDAS_DIR/nvidia
+    sudo newhelp -n root help >$tmp.out 2>&1
+    if [ -f $PCP_PMDAS_DIR/nvidia/help.dir ]
+    then
+	:
+    else
+	cat $tmp.out
+	echo "Arrgh ... failed to create help.dir"
+	sts=1
+	exit
+    fi
+    cd $here
+fi
+
 # real QA test starts here
 echo
 echo "Testing behaviour with no nvidia library available"
diff -Naurp pcp-3.9.10-orig/qa/753 pcp-3.9.10-test/qa/753
--- pcp-3.9.10-orig/qa/753	2014-09-05 14:18:42.000000000 +1000
+++ pcp-3.9.10-test/qa/753	2014-11-24 15:47:03.622506904 +1100
@@ -54,8 +54,8 @@ End-of-File
     echo "--- $metric ---"
     echo "d=delta($metric)" >$tmp.config
     echo "r=rate($metric)" >>$tmp.config
-    pmval -t 0.25 -s 2 d | _filter $metric
-    pmval -t 0.25 -s 2 r | _filter $metric
+    pmval -t 0.5 -s 2 d | _filter $metric
+    pmval -t 0.5 -s 2 r | _filter $metric
 done
 
 # success, all done
diff -Naurp pcp-3.9.10-orig/qa/753.out pcp-3.9.10-test/qa/753.out
--- pcp-3.9.10-orig/qa/753.out	2014-09-05 14:18:42.000000000 +1000
+++ pcp-3.9.10-test/qa/753.out	2014-11-24 15:47:03.622506904 +1100
@@ -6,7 +6,7 @@ metric:    d
 semantics: instantaneous value
 units:     none
 samples:   2
-interval:  0.25 sec
+interval:  0.50 sec
 No values available
 
     bin-100     bin-200     bin-300     bin-400     bin-500     bin-600     bin-700     bin-800     bin-900 
@@ -16,7 +16,7 @@ metric:    r
 semantics: instantaneous value
 units:     / sec
 samples:   2
-interval:  0.25 sec
+interval:  0.50 sec
 No values available
 
               bin-100               bin-200               bin-300               bin-400               bin-500               bin-600               bin-700               bin-800               bin-900 
@@ -28,7 +28,7 @@ metric:    d
 semantics: instantaneous value
 units:     none
 samples:   2
-interval:  0.25 sec
+interval:  0.50 sec
 No values available
 
      1 minute      5 minute     15 minute 
@@ -38,7 +38,7 @@ metric:    r
 semantics: instantaneous value
 units:     / sec
 samples:   2
-interval:  0.25 sec
+interval:  0.50 sec
 No values available
 
              1 minute              5 minute             15 minute 
@@ -50,7 +50,7 @@ metric:    d
 semantics: instantaneous value
 units:     Kbyte
 samples:   2
-interval:  0.25 sec
+interval:  0.50 sec
 No values available
           0
 
@@ -58,7 +58,7 @@ metric:    r
 semantics: instantaneous value
 units:     Kbyte / sec
 samples:   2
-interval:  0.25 sec
+interval:  0.50 sec
 No values available
                0.0   
 
@@ -68,7 +68,7 @@ metric:    d
 semantics: instantaneous value
 units:     none
 samples:   2
-interval:  0.25 sec
+interval:  0.50 sec
 No values available
           0
 
@@ -76,7 +76,7 @@ metric:    r
 semantics: instantaneous value
 units:     / sec
 samples:   2
-interval:  0.25 sec
+interval:  0.50 sec
 No values available
                0.0   
 
@@ -97,7 +97,7 @@ metric:    d
 semantics: instantaneous value
 units:     Kbyte / sec
 samples:   2
-interval:  0.25 sec
+interval:  0.50 sec
 No values available
 abs(N) < 4096
 Semantic error: derived metric r: RATE(sample.kbyte_rate): Incorrect time dimension for operand
diff -Naurp pcp-3.9.10-orig/qa/common.avahi pcp-3.9.10-test/qa/common.avahi
--- pcp-3.9.10-orig/qa/common.avahi	2014-06-18 14:30:54.000000000 +1000
+++ pcp-3.9.10-test/qa/common.avahi	2014-11-24 15:39:36.740510227 +1100
@@ -35,9 +35,12 @@ avahi_service()
 avahi_verify()
 {
     echo "Verify $service avahi service advertising"
-    hostname=`hostname`
+    # strip any domain part ... e.g. if hostname is vm08.localdomain,
+    # avahi reports this as vm08.local
+    #
+    hostname=`hostname | sed -e 's/\..*//'`
     avahi-browse -rt -d local "_$service._tcp" | \
 	tee -a $seq.full | \
-	grep -m1 "hostname = .$hostname" | \
+	grep -m1 "hostname = .$hostname.local]" | \
 	sed -e "s/$hostname/HOSTNAME/g"
 }
diff -Naurp pcp-3.9.10-orig/qa/src/eventrec.0 pcp-3.9.10-test/qa/src/eventrec.0
--- pcp-3.9.10-orig/qa/src/eventrec.0	2014-09-05 14:18:44.000000000 +1000
+++ pcp-3.9.10-test/qa/src/eventrec.0	2014-11-24 17:31:52.661541210 +1100
@@ -1,29 +1,27 @@
-„P&yTŽ=;_slickEST-10„�TŽ=;_€y€yë€y
-slick~~2/home/nathans/git/nathans-pcp/qa/src/eventrec~~�$TŽ>;Š€‰ÿÿÿÿ.€ˆ@F@‹X`@‰ÿÿÿÿl@ˆvÀ@jÏ4	HTŽ>;€†fetch #3TŽ>;€†
-bingo!	TŽ4;	HTŽ>;€†fetch #3TŽ>;€†
-bingo!
- TŽ4¶ñ…
-0TŽ>¶÷ñ@†fetch #1	(TŽ>;0@†fetch #4	(TŽ4;)@@ƒ@†6TŽ5;)@@…@ @…À"TŽ6;)@
+„P&PTdÂ~ÞsmashEST-11„”TdÂ~Þ€P€Pë€Psmash.scott.net.au~,/source/git/nathans-pcp/qa/src/eventrec”äTdÃ{æ€‰ÿÿÿÿ.€ˆ8:@‹DF@‰ÿÿÿÿ\@ˆf°@•ú_	(TdÃ{?€†fetch #5		(TdÃ{?€†fetch #5
+
+XTdÃ!#`@†fetch #0TdÃ!#`@†
+bingo!	(TdÃ{¶@†fetch #4	(Td¹{³@@ƒ@†6Tdº{³@@…@ @…À"Td»{³@
 @ƒ@†
-twelve@†thirteen@€ÿÿÿò@�TŽ7;)€TŽ8;)@@„Áˆ@‡?ÿ	(TŽ>;0@†fetch #4$|TŽ?;·€‰ÿÿÿÿ.€ˆ8L@‹Vn@‰ÿÿÿÿz@ˆŒŽ@mÒ7	(TŽ?;*€†fetch #5	PTŽ5;(€TŽ6;(€€‚ÿÿÿÿÿÿÿý	(TŽ?;*€†fetch #5
-`TŽ5¸8å@TŽ6¸8å@@‚ÿÿÿÿÿÿÿý
-0TŽ?¸Cª@†fetch #2	HTŽ?;}@†fetch #6TŽ?;}@†
-bingo!		HTŽ?;}@†fetch #6TŽ?;}@†
-bingo!|<TŽ@;H€‰ÿÿÿÿ.€ˆ8‚@‹Œà@‰ÿÿÿÿö@ˆ@pÕ:	(TŽ@;€†fetch #7	(TŽ6:õ€€ƒ€†6TŽ7:õ€€…@ €…À"TŽ8:õ€
+twelveÿÿ@†thirteen@€ÿÿÿò@�Td¼{³€Td½{³@@„Áˆ@‡?ÿ	(TdÃ{¶@†fetch #4äTdÄ{•€‰ÿÿÿÿ.€ˆ8>@‹HP@‰ÿÿÿÿ\@ˆnp@˜ýb	(TdÄ{9€†fetch #7	Tdº{8	(TdÄ{9€†fetch #7
+ Tdº!!î¹
+0TdÄ!!÷…@†fetch #1	HTdÄ{l@†fetch #6TdÄ{l@†
+bingo!ng		HTdÄ{l@†fetch #6TdÄ{l@†
+bingo!ngŒTdÅ{Ù€‰ÿÿÿÿ.€ˆ@T@‹f~@‰ÿÿÿÿŠ@ˆ”š@›e	HTdÅ{>€†fetch #9TdÅ{>€†
+bingo!	PTd»{=€Td¼{=€€‚ÿÿÿÿÿÿÿý	HTdÅ{>€†fetch #9TdÅ{>€†
+bingo!
+`Td»!"–Ž@Td¼!"–Ž@@‚ÿÿÿÿÿÿÿý
+0TdÅ!"®@†fetch #2	(TdÅ{œ@†fetch #8	Td»{œ	(TdÅ{œ@†fetch #8Œ„TdÆ{É€‰ÿÿÿÿ.€ˆ9ƒ@‹Žâ@‰ÿÿÿÿø@ˆ@žh	,TdÆ{S€†
fetch #11dT	(Td¼{O€€ƒ€†6Td½{O€€…@ €…À"Td¾{O€
 €ƒ€†
-twelve€†thirteen€€ÿÿÿò€�TŽ9:õ€TŽ::õ€€„Áˆ€‡?ÿ	(TŽ@;€†fetch #7
-PTŽ6¶¤@@ƒ@†6@TŽ7¶¤@@…@ @…À"TŽ8¶¤@
+twelve€†thirteen€€ÿÿÿò€�Td¿{O€TdÀ{O€€„Áˆ€‡?ÿ	,TdÆ{S€†
fetch #11dT
+PTd¼!"B>@@ƒ@†6@Td½!"B>@@…@ @…À"Td¾!"B>@
 @ƒ@†
-twelve@†thirteen@€ÿÿÿò@�TŽ9¶¤€TŽ:¶¤@@„Áˆ@‡?ÿ
-XTŽ@¶À¬@†fetch #3TŽ@¶À¬@†
-bingo!	(TŽ@;@†fetch #8	TŽ6;	(TŽ@;@†fetch #8<,TŽA;�€‰ÿÿÿÿ.€ˆ@B@‹TV@‰ÿÿÿÿb@ˆm�@sØ=	HTŽA;	€†fetch #9TŽA;	€†
-bingo!		HTŽA;	€†fetch #9TŽA;	€†
-bingo!
+twelve@†thirteen@€ÿÿÿò@�Td¿!"B>€TdÀ!"B>@@„Áˆ@‡?ÿ
+XTdÆ!"pÍ@†fetch #3TdÆ!"pÍ@†
+bingo!	,TdÆ{�@†
fetch #10dT	PTd¼{Ž@Td½{Ž@@‚ÿÿÿÿÿÿÿý	,TdÆ{�@†
fetch #10dT„TdÇ{¥€‰ÿÿÿÿ.€ˆ9;@‹FH@‰ÿÿÿÿT@ˆg±@¡k	,TdÇ{K€†
fetch #13dT		,TdÇ{K€†
fetch #13dT
 
-0TŽA·¹@†fetch #4	,TŽA;3@†
fetch #10ŽT	PTŽ7;1@TŽ8;1@@‚ÿÿÿÿÿÿÿý	,TŽA;3@†
fetch #10ŽT,4TŽB;†€‰ÿÿÿÿ.€ˆ9?@‹JR@‰ÿÿÿÿ^@ˆq»@vÛ@	,TŽB;€†
fetch #11ŽT	TŽ8;	,TŽB;€†
fetch #11ŽT
- TŽ8·M–
-0TŽB·T@†fetch #5	LTŽB;B@†
fetch #12ŽTTŽB;B@†
-bingo!	(TŽ8;?@@ƒ@†6TŽ9;?@@…@ @…À"TŽ:;?@
+0TdÇ!"&e@†fetch #4	LTdÇ{{@†
fetch #12dTTdÇ{{@†
+bingo!	(Td½{x@@ƒ@†6Td¾{x@@…@ @…À"Td¿{x@
 @ƒ@†
-twelve@†thirteen@€ÿÿÿò@�TŽ;;?€TŽ<;?@@„Áˆ@‡?ÿ	LTŽB;B@†
fetch #12ŽTTŽB;B@†
-bingo!4
\ No newline at end of file
+twelveÿÿ@†thirteen@€ÿÿÿò@�TdÀ{x€TdÁ{x@@„Áˆ@‡?ÿ	LTdÇ{{@†
fetch #12dTTdÇ{{@†
+bingo!
\ No newline at end of file
diff -Naurp pcp-3.9.10-orig/qa/src/eventrec.index pcp-3.9.10-test/qa/src/eventrec.index
--- pcp-3.9.10-orig/qa/src/eventrec.index	2014-09-05 14:18:44.000000000 +1000
+++ pcp-3.9.10-test/qa/src/eventrec.index	2014-11-24 17:31:52.661541210 +1100
@@ -1 +1 @@
-„P&yTŽ=;_ÿÿÿþslickEST-10„TŽ=;_„„TŽ>;Š_TŽB;†

\ No newline at end of file
+„P&PTdÂ~ÞÿÿÿþsmashEST-11„TdÂ~Þ„„TdÃ{æ^TdÇ{¥

\ No newline at end of file
diff -Naurp pcp-3.9.10-orig/qa/src/eventrec.meta pcp-3.9.10-test/qa/src/eventrec.meta
--- pcp-3.9.10-orig/qa/src/eventrec.meta	2014-09-05 14:18:44.000000000 +1000
+++ pcp-3.9.10-test/qa/src/eventrec.meta	2014-11-24 17:31:52.661541210 +1100
@@ -1,8 +1,8 @@
-„P&yTŽ=;_ÿÿÿÿslickEST-10„:€€pmcd.pmlogger.host:*TŽ=;_€y30976*:€€pmcd.pmlogger.port:=€€pmcd.pmlogger.archive=H€‰	ÿÿÿÿ sampledso.event.no_indom_recordsHD€†ÿÿÿÿsampledso.event.param_stringD?€ˆ	€
-sampledso.event.records?9TŽ>;Š€
+„P&PTdÂ~ÞÿÿÿÿsmashEST-11„:€€pmcd.pmlogger.host:)TdÂ~Þ€P4688):€€pmcd.pmlogger.port:=€€pmcd.pmlogger.archive=H€‰	ÿÿÿÿ sampledso.event.no_indom_recordsHD€†ÿÿÿÿsampledso.event.param_stringD?€ˆ	€
+sampledso.event.records?9TdÃ{æ€
 fungusbogus9D@‹
 @
-sample.event.highres_recordsD9TŽ>;Š@
+sample.event.highres_recordsD9TdÃ{æ@
 fungusbogus9E@‰	ÿÿÿÿsample.event.no_indom_recordsEA@†ÿÿÿÿsample.event.param_stringA<@ˆ	@
-sample.event.records<9@ÿÿÿÿsample.event.type9>@ƒÿÿÿÿsample.event.param_u64>A@…ÿÿÿÿsample.event.param_doubleA=@€ÿÿÿÿsample.event.param_32=>@�ÿÿÿÿsample.event.param_u32>@@„ÿÿÿÿsample.event.param_float@D@‡ÿÿÿÿsample.event.param_aggregateD5@@
sample.colour5CTŽ>;Š@
+sample.event.records<9@ÿÿÿÿsample.event.type9>@ƒÿÿÿÿsample.event.param_u64>A@…ÿÿÿÿsample.event.param_doubleA=@€ÿÿÿÿsample.event.param_32=>@�ÿÿÿÿsample.event.param_u32>@@„ÿÿÿÿsample.event.param_float@D@‡ÿÿÿÿsample.event.param_aggregateD5@@
sample.colour5CTdÃ{æ@
 redgreenblueC<€ÿÿÿÿsampledso.event.type<@€‚ÿÿÿÿsampledso.event.param_64@A€ƒÿÿÿÿsampledso.event.param_u64AD€…ÿÿÿÿsampledso.event.param_doubleD@€€ÿÿÿÿsampledso.event.param_32@A€�ÿÿÿÿsampledso.event.param_u32AC€„ÿÿÿÿsampledso.event.param_floatCG€‡ÿÿÿÿsampledso.event.param_aggregateG=@‚ÿÿÿÿsample.event.param_64=
\ No newline at end of file
diff -Naurp pcp-3.9.10-orig/src/libpcp/src/endian.c pcp-3.9.10-test/src/libpcp/src/endian.c
--- pcp-3.9.10-orig/src/libpcp/src/endian.c	2014-09-05 14:18:45.000000000 +1000
+++ pcp-3.9.10-test/src/libpcp/src/endian.c	2014-11-24 15:53:57.744504575 +1100
@@ -93,8 +93,8 @@ htonEventArray(pmValueBlock * const vb, 
 		nparams = hrerp->er_nparams;
 	    hrerp->er_nparams = htonl(nparams);
 	    hrerp->er_flags = htonl(hrerp->er_flags);
-	    hrerp->er_timestamp.tv_sec = htonl(hrerp->er_timestamp.tv_sec);
-	    hrerp->er_timestamp.tv_nsec = htonl(hrerp->er_timestamp.tv_nsec);
+	    __htonll((char *)&hrerp->er_timestamp.tv_sec);
+	    __htonll((char *)&hrerp->er_timestamp.tv_nsec);
 	}
 	else {
 	    pmEventRecord *erp = (pmEventRecord *)base;
@@ -194,8 +194,8 @@ ntohEventArray(pmValueBlock * const vb, 
 	    pmHighResEventRecord *hrerp = (pmHighResEventRecord *)base;
 	    size = sizeof(hrerp->er_timestamp) + sizeof(hrerp->er_flags) +
 		    sizeof(hrerp->er_nparams);
-	    hrerp->er_timestamp.tv_sec = ntohl(hrerp->er_timestamp.tv_sec);
-	    hrerp->er_timestamp.tv_nsec = ntohl(hrerp->er_timestamp.tv_nsec);
+	    __ntohll((char *)&hrerp->er_timestamp.tv_sec);
+	    __ntohll((char *)&hrerp->er_timestamp.tv_nsec);
 	    nparams = hrerp->er_nparams = ntohl(hrerp->er_nparams);
 	    flags = hrerp->er_flags = ntohl(hrerp->er_flags);
 	}
diff -Naurp pcp-3.9.10-orig/src/pmdas/linux/help pcp-3.9.10-test/src/pmdas/linux/help
--- pcp-3.9.10-orig/src/pmdas/linux/help	2014-09-05 14:18:47.000000000 +1000
+++ pcp-3.9.10-test/src/pmdas/linux/help	2014-11-24 15:49:56.768567601 +1100
@@ -672,6 +672,7 @@ Count of huge TLB page buddy allocation 
 @ swap.used swap used metric from /proc/meminfo
 @ swap.free swap free metric from /proc/meminfo
 @ kernel.all.load 1, 5 and 15 minute load average
+@ kernel.all.nusers number of user sessions on system
 @ kernel.all.cpu.user total user CPU time from /proc/stat for all CPUs, including guest CPU time
 @ kernel.all.cpu.vuser total user CPU time from /proc/stat for all CPUs, excluding guest CPU time
 @ kernel.all.cpu.intr total interrupt CPU time from /proc/stat for all CPUs
@@ -694,7 +695,17 @@ Total CPU time when a CPU had a runnable
 (virtualisation layer) chose to run something else instead.
 @ kernel.all.cpu.guest total virtual guest CPU time for all CPUs
 Total CPU time spent running virtual guest operating systems.
-@ kernel.all.nusers number of user sessions on system
+@ kernel.pernode.cpu.user total user CPU time from /proc/stat for each node, including guest CPU time
+@ kernel.pernode.cpu.vuser total user CPU time from /proc/stat for each node, excluding guest CPU time
+@ kernel.pernode.cpu.intr total interrupt CPU time from /proc/stat for each node
+@ kernel.pernode.cpu.wait.total total wait CPU time from /proc/stat for each node
+@ kernel.pernode.cpu.nice total nice user CPU time from /proc/stat for each node
+@ kernel.pernode.cpu.sys total sys CPU time from /proc/stat for each node
+@ kernel.pernode.cpu.idle total idle CPU time from /proc/stat for each node
+@ kernel.pernode.cpu.irq.soft soft interrupt CPU time from /proc/stat for each node
+@ kernel.pernode.cpu.irq.hard hard interrupt CPU time from /proc/stat for each node
+@ kernel.pernode.cpu.steal total virtualisation CPU steal time for each node
+@ kernel.pernode.cpu.guest total virtual guest CPU time for each node
 
 @ hinv.ninterface number of active (up) network interfaces
 @ network.interface.in.bytes network recv read bytes from /proc/net/dev per network interface
diff -Naurp pcp-3.9.10-orig/src/pmdas/linux_proc/cgroups.c pcp-3.9.10-test/src/pmdas/linux_proc/cgroups.c
--- pcp-3.9.10-orig/src/pmdas/linux_proc/cgroups.c	2014-07-16 14:10:18.000000000 +1000
+++ pcp-3.9.10-test/src/pmdas/linux_proc/cgroups.c	2014-11-24 15:49:40.024506324 +1100
@@ -340,16 +340,14 @@ refresh_cgroup_subsys(pmInDom indom)
 	return;
 
     while (fgets(buf, sizeof(buf), fp) != NULL) {
-	unsigned int numcgroups, enabled;
+	unsigned int hierarchy, numcgroups, enabled, *data;
 	char name[MAXPATHLEN];
-	long hierarchy;
-	long *data;
 	int sts;
 
 	/* skip lines starting with hash (header) */
 	if (buf[0] == '#')
 	    continue;
-	if (sscanf(buf, "%s %ld %u %u", &name[0],
+	if (sscanf(buf, "%s %u %u %u", &name[0],
 			&hierarchy, &numcgroups, &enabled) != 4)
 	    continue;
 	sts = pmdaCacheLookupName(indom, name, NULL, (void **)&data);
@@ -360,12 +358,12 @@ refresh_cgroup_subsys(pmInDom indom)
 		 * hierarchy ... we cannot support more than one hierarchy
 		 * yet
 		 */
-		fprintf(stderr, "refresh_cgroup_subsys: \"%s\": entries for hierarchy %ld ignored (hierarchy %ld seen first)\n", name, hierarchy, *data);
+		fprintf(stderr, "refresh_cgroup_subsys: \"%s\": entries for hierarchy %u ignored (hierarchy %u seen first)\n", name, hierarchy, *data);
 	    }
 	    continue;
 	}
 	else if (sts != PMDA_CACHE_INACTIVE) {
-	    if ((data = (long *)malloc(sizeof(long))) == NULL) {
+	    if ((data = (unsigned int *)malloc(sizeof(unsigned int))) == NULL) {
 #if PCP_DEBUG
 		if (pmDebug & DBG_TRACE_APPL0)
 		    fprintf(stderr, "refresh_cgroup_subsys: \"%s\": malloc failed\n", name);
@@ -377,7 +375,7 @@ refresh_cgroup_subsys(pmInDom indom)
 	pmdaCacheStore(indom, PMDA_CACHE_ADD, name, (void *)data);
 #if PCP_DEBUG
 	if (pmDebug & DBG_TRACE_APPL0)
-	    fprintf(stderr, "refresh_cgroup_subsys: add \"%s\" [hierarchy %ld]\n", name, hierarchy);
+	    fprintf(stderr, "refresh_cgroup_subsys: add \"%s\" [hierarchy %u]\n", name, hierarchy);
 #endif
     }
     fclose(fp);
diff -Naurp pcp-3.9.10-orig/src/pmdas/papi/papi.c pcp-3.9.10-test/src/pmdas/papi/papi.c
--- pcp-3.9.10-orig/src/pmdas/papi/papi.c	2014-09-05 14:18:48.000000000 +1000
+++ pcp-3.9.10-test/src/pmdas/papi/papi.c	2014-11-24 15:44:16.174506870 +1100
@@ -57,6 +57,8 @@ static unsigned int number_of_active_cou
 static unsigned int size_of_active_counters;
 static unsigned int number_of_events;
 
+static char helppath[MAXPATHLEN];
+
 static void
 set_pmns_position(unsigned int i)
 {
@@ -1420,12 +1422,11 @@ papi_init(pmdaInterface *dp)
     int sts;
 
     if (isDSO) {
-	char     mypath[MAXPATHLEN];
 	int	sep = __pmPathSeparator();
 
-	snprintf(mypath, sizeof(mypath), "%s%c" "papi" "%c" "help",
+	snprintf(helppath, sizeof(helppath), "%s%c" "papi" "%c" "help",
 		 pmGetConfig("PCP_PMDAS_DIR"), sep, sep);
-	pmdaDSO(dp, PMDA_INTERFACE_6, "papi DSO", mypath);
+	pmdaDSO(dp, PMDA_INTERFACE_6, "papi DSO", helppath);
     }
 
     if (dp->status != 0)
@@ -1470,7 +1471,6 @@ main(int argc, char **argv)
 {
     int sep = __pmPathSeparator();
     pmdaInterface dispatch;
-    char helppath[MAXPATHLEN];
 
     isDSO = 0;
     __pmSetProgname(argv[0]);
