Date: Sun, 30 Jun 2002 00:56:49 -0700 (PDT) From: Luigi Rizzo <luigi@FreeBSD.org> To: cvs-committers@FreeBSD.org, cvs-all@FreeBSD.org Subject: cvs commit: src/sys/i386/isa clock.c src/sys/i386/include param.h src/sys/conf options.i386 Message-ID: <200206300756.g5U7unht089253@freefall.freebsd.org>
next in thread | raw e-mail | index | archive | help
luigi 2002/06/30 00:56:49 PDT
Modified files: (Branch: RELENG_4)
sys/i386/isa clock.c
sys/i386/include param.h
sys/conf options.i386
Log:
Add one function and one macro to timestamp events in the kernel using
the TSC register and which are just too conveninent not to have them around.
The macro (defined in sys/i386/include/param.h) is called
TSTMP(class:4, unit:4, event:8, par:16)
which in turn calls _TSTMP(arg) (function defined in sys/i386/isa/clock.c)
which stores a pair of u_int32_t values <timestamp, arg> in a circular
buffer exported to userland as the sysctl variable debug.timestamp
The content of the buffer can be printed with something like
sysctl -b debug.timestamp | hexdump -e '"%15u %15u\n"'
This functionality must be enabled with "options KERN_TIMESTAMP", otherwise
both the macro and the function are redefined as empty blocks.
This code is i586+ specific, but it does not make any attempt to grab
locks, identify which CPU it is running on, etc. etc. -- it is a debugging
tool, and a very very simple and low level one, so you are supposed to
know how to use it if you do not want to get random numbers out of it.
I am committing this to RELENG_4 only because on -current parts of
the kernel might run concurrently, so the use of a single unprotected
static variable as the index of the next entry in the buffer might
lead to inconsistent results. Plus, there might be similar stuff
in -current already.
If someone feels like porting this code to -current, it might be
a good idea to keep separate per-cpu buffers to avoid the cost
of protecting against concurrent accesses.
Revision Changes Path
1.132.2.16 +1 -0 src/sys/conf/options.i386
1.54.2.7 +36 -1 src/sys/i386/include/param.h
1.149.2.5 +20 -0 src/sys/i386/isa/clock.c
To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe cvs-all" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200206300756.g5U7unht089253>
