timing inb & outb instructions on parallel port

I think that you, as a drivers developers, maybe can help me with this:

How do the inb & outb instructions delay works on the parallel port?
I've read in many places that they almost always take about 1 microsecond to
execute.
Is this delay valid for any following instruction, or just for another
consecutive inb or outb on parallel?

The strange thing is that if I measure just 1 instruction, I get about 200
ns.
If I measure 2 consecutive instruccions, I get 1300 ns
If I measure 3 consecutive instruccions, I get 2400 ns
If I measure 4 consecutive instruccions, I get 3500 ns
And so on...

So, to me, the 1.1 us delay seems to be valid , but just for consecutive
calls, not for just one!
Then I would be able to execute some other instruction during that 1 us of
each hardware delay!
Can anyone confirm this behaviour?

the (real time) code draft would be:

ini_time = get_time();
inb(0,0x378);
inb(0,0x378);
inb(0,0x378);
end_time = get_time();
delay = end_time - ini_time;

Thanks a lot in advance.
Raul Herrera

Received on 2006-10-30Z12:00:39