[PATCH] __ppc_get_timebase_freq.3: Document a glibc extension for Power

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Glibc 2.17 provides new function to read the frequency at which the Time
Base Register of Power processors is updated.

Signed-off-by: Tulio Magno Quites Machado Filho <tuliom@xxxxxxxxxxxxxxxxxx>
---
 man3/__ppc_get_timebase.3      | 66 ++++++++++++++++++++++++++++++++++++++----
 man3/__ppc_get_timebase_freq.3 |  1 +
 2 files changed, 61 insertions(+), 6 deletions(-)
 create mode 100644 man3/__ppc_get_timebase_freq.3

diff --git a/man3/__ppc_get_timebase.3 b/man3/__ppc_get_timebase.3
index 6af2d43..e691a5c 100644
--- a/man3/__ppc_get_timebase.3
+++ b/man3/__ppc_get_timebase.3
@@ -25,30 +25,84 @@
 .TH __PPC_GET_TIMEBASE 3 2012-08-13 "GNU C Library" "Linux Programmer's\
 Manual"
 .SH NAME
-__ppc_get_timebase \- get the current value of the Time Base Register on
-Power architecture
+__ppc_get_timebase, __ppc_get_timebase_freq \- get the current value
+ of the Time Base Register on Power architecture and its frequency.
 .SH SYNOPSIS
 .B #include <sys/platform/ppc.h>
 .sp
 .BI "uint64_t __ppc_get_timebase(void)"
+
+.BI "uint64_t __ppc_get_timebase_freq(void);"
 .SH DESCRIPTION
 .BR __ppc_get_timebase ()
-reads the current value of the Time Base Register and returns its value.
+reads the current value of the Time Base Register and returns its
+value, while
+.BR __ppc_get_timebase_freq ()
+returns the frequency in which the Time Base Register is updated.
+
 The Time Base Register is a 64-bit register provided by Power Architecture
 processors.
 It stores a monotonically incremented value that is updated at a
 system-dependent frequency that may be different from the processor
 frequency.
 .SH RETURN VALUE
-Returns a 64-bit unsigned integer that represents the current value of the
+.BR __ppc_get_timebase ()
+returns a 64-bit unsigned integer that represents the current value of the
 Time Base Register.
+
+.BR __ppc_get_timebase_freq ()
+returns a 64-bit unsigned integer that represents the frequency at
+which the Time Base Register is updated.
 .SH VERSIONS
 GNU C Library support for
 .\" commit d9dc34cd569bcfe714fe8c708e58c028106e8b2e
 .BR __ppc_get_timebase ()
-has been provided since version 2.16.
+has been provided since version 2.16 and
+.\" commit 8ad11b9a9cf1de82bd7771306b42070b91417c11
+.BR __ppc_get_timebase_freq ()
+has been available since version 2.17.
 .SH CONFORMING TO
-This function is a nonstandard GNU extension.
+Both functions are nonstandard GNU extensions.
+.SH EXAMPLE
+The following program will calculate the time, in microseconds, spent
+between two calls to __ppc_get_timebase ().
+.SS Program source
+\&
+.nf
+#include <inttypes.h>
+#include <stdint.h>
+#include <stdio.h>
+#include <sys/platform/ppc.h>
+
+/* Maximum value of the Time Base Register: 2^60 - 1.  Source: POWER ISA.  */
+#define MAX_TB 0xFFFFFFFFFFFFFFF
+
+int
+main ()
+{
+  uint64_t tb1, tb2, diff;
+
+  uint64_t freq = __ppc_get_timebase_freq ();
+  printf ("Time Base frequency = %"PRIu64" Hz\\n", freq);
+
+  tb1 = __ppc_get_timebase ();
+
+  // Do some stuff...
+
+  tb2 = __ppc_get_timebase ();
+
+  if (tb2 > tb1) {
+    diff = tb2 - tb1;
+  } else {
+    /* Treat Time Base Register overflow.  */
+    diff = (MAX_TB - tb2) + tb1;
+  }
+
+  printf ("Elapsed time  = %1.2f usecs\\n", (double) diff * 1000000 / freq );
+
+  return 0;
+}
+.fi
 .SH SEE ALSO
 .BR time (2),
 .BR usleep (3)
diff --git a/man3/__ppc_get_timebase_freq.3 b/man3/__ppc_get_timebase_freq.3
new file mode 100644
index 0000000..8599293
--- /dev/null
+++ b/man3/__ppc_get_timebase_freq.3
@@ -0,0 +1 @@
+.so man3/__ppc_get_timebase.3
-- 
2.1.0

--
To unsubscribe from this list: send the line "unsubscribe linux-man" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html




[Index of Archives]     [Kernel Documentation]     [Netdev]     [Linux Ethernet Bridging]     [Linux Wireless]     [Kernel Newbies]     [Security]     [Linux for Hams]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux RAID]     [Linux Admin]     [Samba]

  Powered by Linux