Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 9 Sep 2007 22:50:25 +0200
From:      Martin Tournoij <carpetsmoker@xs4all.nl>
To:        freebsd-questions@freebsd.org
Subject:   Getting the CPU frequency in C
Message-ID:  <20070909205025.GA40102@glitch.rwxrwxrwx.net>

next in thread | raw e-mail | index | archive | help
I'm trying to get the CPU frequency in C:

#include <unistd.h>
#include <time.h>
#include <ctype.h>
#include <sys/sysctl.h>
#include <stdio.h>
#include <sys/time.h>

int main()
{
    int mib[2];
    size_t size;
    struct clockinfo clockrate;

    mib[0] = CTL_KERN;
    mib[1] = KERN_CLOCKRATE;
    size = sizeof clockrate;
    sysctl(mib, 2, &clockrate, &size, NULL, 0);

    fprintf(stdout, "hz: %i\n", clockrate.hz);
    fprintf(stdout, "tick: %i\n", clockrate.tick);
    fprintf(stdout, "spare: %i\n", clockrate.spare);
    fprintf(stdout, "stathz: %i\n", clockrate.stathz);
    fprintf(stdout, "profhz: %i\n", clockrate.profhz);

    return 0;
}

I tried to run this on two machines (one machine with hw.clockrate: 1378 and
the other 797) and it outputs the same on both:
hz: 1000
tick: 1000
spare: 0
stathz: 133
profhz: 666

The profhz value suggest the devil is at work :D although it's probably a some
stupid mistake on my part :/ Can anyone help?

Thanks,
Martin Tournoij



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20070909205025.GA40102>