>
> I've had similar problems measuring bandwidth. The greatest difficulty was the
> limited resoution of the available timers. It's a darn shame that a high
> resolution counter isn't available given all these fancy hardware. Milliseconds!
> Pah! You can do an awful lot in a millisecond. Ever since the Pentium was
> release there have been high resolution counters available - anyone written some
> code to access them ? - back then it was all restricted access only! Does Intel
> give a damn now ?
>
Here you go.
- Godmar
// ------------------------------------------------------------------------
// CycleCounter.java
package kaffeos.sys;
/**
* Give Java programs access to the cycle counter on Pentium PCs.
*/
public class CycleCounter
{
/**
* read the current cycle counter
*/
public static native long read();
}
/* ------------------------------------------------------------------------
CycleCounter.c
*/
/*
* Read the 64-bit timestamp counter (TSC) register.
* Works only on Pentium and higher processors,
* and in user mode only if the TSD bit in CR4 is not set.
*/
#if defined(i386)
#if HAVE_RDTSC
#define get_tsc() \
({ \
unsigned long low, high; \
asm volatile("rdtsc" : "=d" (high), "=a" (low)); \
((unsigned long long)high << 32) | low; \
})
#else
#define get_tsc() \
({ \
unsigned long low, high; \
asm volatile( \
".byte 0x0f; .byte 0x31" \
: "=d" (high), "=a" (low)); \
((unsigned long long)high << 32) | low; \
})
#endif
#else
#define get_tsc() 0
#endif
#include <jni.h>
jlong
Java_kaffeos_sys_CycleCounter_read(JNIEnv *env, jclass counterclass)
{
return (jlong)get_tsc();
}
~
----------------------------------------------------------------------
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]