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]

Reply via email to