Index: cpukit/sapi/src/profilingreportxml.c
===================================================================
--- cpukit/sapi/src/profilingreportxml.c	(revision 7c0bd74c87b141454ae17ee1cfeeba42dc4b0df2)
+++ cpukit/sapi/src/profilingreportxml.c	(revision 8365ad1347abe67ce28f650775a14152bd127b8d)
@@ -50,4 +50,9 @@
 }
 
+static uint64_t arithmetic_mean(uint64_t total, uint64_t count)
+{
+  return count != 0 ? total / count : 0;
+}
+
 static void report_per_cpu(context *ctx, const rtems_profiling_per_cpu *per_cpu)
 {
@@ -76,6 +81,10 @@
   rv = (*printf_func)(
     printf_arg,
-    "<ThreadDispatchDisabledCount>%" PRIu64 "</ThreadDispatchDisabledCount>\n",
-    per_cpu->thread_dispatch_disabled_count
+    "<MeanThreadDispatchDisabledTime unit=\"ns\">%" PRIu64
+      "</MeanThreadDispatchDisabledTime>\n",
+    arithmetic_mean(
+      per_cpu->total_thread_dispatch_disabled_time,
+      per_cpu->thread_dispatch_disabled_count
+    )
   );
   update_retval(ctx, rv);
@@ -93,4 +102,20 @@
   rv = (*printf_func)(
     printf_arg,
+    "<ThreadDispatchDisabledCount>%" PRIu64 "</ThreadDispatchDisabledCount>\n",
+    per_cpu->thread_dispatch_disabled_count
+  );
+  update_retval(ctx, rv);
+
+  indent(ctx, 2);
+  rv = (*printf_func)(
+    printf_arg,
+    "<MaxInterruptDelay unit=\"ns\">%" PRIu32 "</MaxInterruptDelay>\n",
+    per_cpu->max_interrupt_delay
+  );
+  update_retval(ctx, rv);
+
+  indent(ctx, 2);
+  rv = (*printf_func)(
+    printf_arg,
     "<MaxInterruptTime unit=\"ns\">%" PRIu32
       "</MaxInterruptTime>\n",
@@ -102,6 +127,18 @@
   rv = (*printf_func)(
     printf_arg,
-    "<MaxInterruptDelay unit=\"ns\">%" PRIu32 "</MaxInterruptDelay>\n",
-    per_cpu->max_interrupt_delay
+    "<MeanInterruptTime unit=\"ns\">%" PRIu64
+      "</MeanInterruptTime>\n",
+    arithmetic_mean(
+      per_cpu->total_interrupt_time,
+      per_cpu->interrupt_count
+    )
+  );
+  update_retval(ctx, rv);
+
+  indent(ctx, 2);
+  rv = (*printf_func)(
+    printf_arg,
+    "<TotalInterruptTime unit=\"ns\">%" PRIu64 "</TotalInterruptTime>\n",
+    per_cpu->total_interrupt_time
   );
   update_retval(ctx, rv);
@@ -112,12 +149,4 @@
     "<InterruptCount>%" PRIu64 "</InterruptCount>\n",
     per_cpu->interrupt_count
-  );
-  update_retval(ctx, rv);
-
-  indent(ctx, 2);
-  rv = (*printf_func)(
-    printf_arg,
-    "<TotalInterruptTime unit=\"ns\">%" PRIu64 "</TotalInterruptTime>\n",
-    per_cpu->total_interrupt_time
   );
   update_retval(ctx, rv);
@@ -165,22 +194,46 @@
   rv = (*printf_func)(
     printf_arg,
+    "<MeanAcquireTime unit=\"ns\">%" PRIu64
+      "</MeanAcquireTime>\n",
+    arithmetic_mean(
+      smp_lock->total_acquire_time,
+      smp_lock->usage_count
+    )
+  );
+  update_retval(ctx, rv);
+
+  indent(ctx, 2);
+  rv = (*printf_func)(
+    printf_arg,
+    "<MeanSectionTime unit=\"ns\">%" PRIu64
+      "</MeanSectionTime>\n",
+    arithmetic_mean(
+      smp_lock->total_section_time,
+      smp_lock->usage_count
+    )
+  );
+  update_retval(ctx, rv);
+
+  indent(ctx, 2);
+  rv = (*printf_func)(
+    printf_arg,
+    "<TotalAcquireTime unit=\"ns\">%" PRIu64 "</TotalAcquireTime>\n",
+    smp_lock->total_acquire_time
+  );
+  update_retval(ctx, rv);
+
+  indent(ctx, 2);
+  rv = (*printf_func)(
+    printf_arg,
+    "<TotalSectionTime unit=\"ns\">%" PRIu64 "</TotalSectionTime>\n",
+    smp_lock->total_section_time
+  );
+  update_retval(ctx, rv);
+
+  indent(ctx, 2);
+  rv = (*printf_func)(
+    printf_arg,
     "<UsageCount>%" PRIu64 "</UsageCount>\n",
     smp_lock->usage_count
-  );
-  update_retval(ctx, rv);
-
-  indent(ctx, 2);
-  rv = (*printf_func)(
-    printf_arg,
-    "<TotalAcquireTime unit=\"ns\">%" PRIu64 "</TotalAcquireTime>\n",
-    smp_lock->total_acquire_time
-  );
-  update_retval(ctx, rv);
-
-  indent(ctx, 2);
-  rv = (*printf_func)(
-    printf_arg,
-    "<TotalSectionTime unit=\"ns\">%" PRIu64 "</TotalSectionTime>\n",
-    smp_lock->total_section_time
   );
   update_retval(ctx, rv);
