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>