From owner-freebsd-questions@FreeBSD.ORG Sun Sep 9 20:58:05 2007 Return-Path: Delivered-To: freebsd-questions@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 795E216A505 for ; Sun, 9 Sep 2007 20:58:05 +0000 (UTC) (envelope-from erikt@midgard.homeip.net) Received: from ch-smtp02.sth.basefarm.net (ch-smtp02.sth.basefarm.net [80.76.149.213]) by mx1.freebsd.org (Postfix) with ESMTP id 2048613C46E for ; Sun, 9 Sep 2007 20:58:05 +0000 (UTC) (envelope-from erikt@midgard.homeip.net) Received: from c83-253-31-60.bredband.comhem.se ([83.253.31.60]:50256 helo=falcon.midgard.homeip.net) by ch-smtp02.sth.basefarm.net with esmtp (Exim 4.66) (envelope-from ) id 1IUTr2-0004Qa-6i for freebsd-questions@freebsd.org; Sun, 09 Sep 2007 22:58:04 +0200 Received: (qmail 80094 invoked from network); 9 Sep 2007 22:57:59 +0200 Received: from owl.midgard.homeip.net (10.1.5.7) by falcon.midgard.homeip.net with ESMTP; 9 Sep 2007 22:57:59 +0200 Received: (qmail 35596 invoked by uid 1001); 9 Sep 2007 22:57:59 +0200 Date: Sun, 9 Sep 2007 22:57:59 +0200 From: Erik Trulsson To: freebsd-questions@freebsd.org Message-ID: <20070909205759.GA35519@owl.midgard.homeip.net> Mail-Followup-To: freebsd-questions@freebsd.org References: <20070909205025.GA40102@glitch.rwxrwxrwx.net> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20070909205025.GA40102@glitch.rwxrwxrwx.net> User-Agent: Mutt/1.5.16 (2007-06-09) X-Originating-IP: 83.253.31.60 X-Scan-Result: No virus found in message 1IUTr2-0004Qa-6i. X-Scan-Signature: ch-smtp02.sth.basefarm.net 1IUTr2-0004Qa-6i 16bfb500a760aa317242e5405531defd Subject: Re: Getting the CPU frequency in C X-BeenThere: freebsd-questions@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: User questions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 09 Sep 2007 20:58:05 -0000 On Sun, Sep 09, 2007 at 10:50:25PM +0200, Martin Tournoij wrote: > I'm trying to get the CPU frequency in C: > > #include > #include > #include > #include > #include > #include > > 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? None of the kern.clockrate entries has any particular relationship with the CPU clock frequency, so it is not unexpected that you would get the same output from both machines. I think looking at hw.clockrate is the most portable you can get. If your CPU is using Cool'n'Quiet or the Intel equivalent you can also look at dev.cpu.N.freq for the current frequency. -- Erik Trulsson ertr1013@student.uu.se