Siegfried Schmidt wrote:
> Hi,
> I have written a device driver for an own PCI card reading bytes from a
> process signal frame.
> The driver is running quite well (2,4 GHz dual Core) reading one byte is done
> in about 4 microseconds.
> The problem is, that sometimes the read of one byte need up to 80
> microseconds.
> The driver uses ddi calls for reading registers on the PCI card.
> I have done some dtrace tests, but no results up to now.
> I want to switch on the trace by passing driver _entry probe and switch of
> passing the driver _return probe. I've checked the on-cpu, off-cpu,
> interupt-start, probes etc - but no result.
>
>
> Any ideas to catch the reason for the 80 microseconds-read are welcome!!
> (scheduling, timer, interrupts,...???)
> Any suggestions for helpful dtrace probes ?
Have you tried something like this:
fbt:mydriver:curiousfunction:entry{
self->follow = timestamp;
self->spec = speculation();
}
fbt:mydriver:curiousfunction:return
/self->spec/
{
if ((timestamp - self->follow) > 80) {
speculate(self->spec);
@longread = stack(10);
}
}
James C. McPherson
--
Senior Kernel Software Engineer, Solaris
Sun Microsystems
http://blogs.sun.com/jmcp http://www.jmcp.homeunix.com/blog
_______________________________________________
dtrace-discuss mailing list
[email protected]