__ppc_get_timebase(3) Library Functions Manual __ppc_get_timebase(3)

__ppc_get_timebase, __ppc_get_timebase_freq - Ermittelt den aktuellen Wert und die Frequenz des Zeitbasisregisters auf der Power-Architektur

Standard-C-Bibliothek (libc-lc)

ÜBERSICHT

#include <sys/platform/ppc.h>
uint64_t __ppc_get_timebase(void);
uint64_t __ppc_get_timebase_freq(void);

__ppc_get_timebase() liest den aktuellen Wert des Zeitbasisregisters und liefert seinen Wert, während __ppc_get_timebase_freq() die Frequenz zurückliefert, in der das Zeitbasisregister aktualisiert wird.

Das Zeitbasisregister ist ein von der Power-Architektur bereitgestelltes 64-bit-Register. Es speichert einen monoton erhöhten Wert, der in einer systemabhängigen Frequenz aktualisiert wird, die sich von der Prozessorfrequenz unterscheiden kann.

__ppc_get_timebase() liefert eine vorzeichenfreie 64-bit-Ganzzahl zurück, die den aktuellen Wert des Zeitbasisregisters wiedergibt.

__ppc_get_timebase_freq() liefert eine vorzeichenfreie 64-bit-Ganzzahl zurück, die die Frequenz wiedergibt, mit der das Zeitbasisregister aktualisiert wird.

GNU.

__ppc_get_timebase()
Glibc 2.16.
__ppc_get_timebase_freq()
Glibc 2.17.

Das folgende Programm wird die Zeit in Mikrosekunden berechnen, die zwischen zwei Aufrufen von __ppc_get_timebase() verbraucht wird.

#include <inttypes.h>
#include <stdint.h>
#include <stdio.h>
#include <stdlib.h>
#include <sys/platform/ppc.h>
/* Maximaler Wert des Zeitbasisregister: 2^60 - 1.
   Quelle: POWER ISA.  */
#define MAX_TB 0xFFFFFFFFFFFFFFF
int
main(void)
{
    uint64_t tb1, tb2, diff;
    uint64_t freq;
    freq = __ppc_get_timebase_freq();
    printf("Zeitbasisregisterfrequenz = %w64u Hz\n", freq);
    tb1 = __ppc_get_timebase();
    // Etwas erledigen …
    tb2 = __ppc_get_timebase();
    if (tb2 > tb1) {
        diff = tb2 - tb1;
    } else {
        /* Zeitbasisregister-Überlauf behandeln. */
        diff = (MAX_TB - tb2) + tb1;
    }
    printf("Abgelaufene Zeit = %1.2f usecs\n",
           (double) diff * 1000000 / freq);
    exit(EXIT_SUCCESS);
}

time(2), usleep(3)

ÜBERSETZUNG

Die deutsche Übersetzung dieser Handbuchseite wurde von Helge Kreutzmann <debian@helgefjell.de> erstellt.

Diese Übersetzung ist Freie Dokumentation; lesen Sie die GNU General Public License Version 3 oder neuer bezüglich der Copyright-Bedingungen. Es wird KEINE HAFTUNG übernommen.

Wenn Sie Fehler in der Übersetzung dieser Handbuchseite finden, schicken Sie bitte eine E-Mail an die Mailingliste der Übersetzer.

16. Februar 2026 Linux man-pages 6.18