Hi all,
I've got a digital IO card hanging off an ISA bus in PC/104 system. I'm
pushing data packets to it, usually 16-32 bytes per transfer, 100x per
second.
Apparently ISA bus clock is supposed to run at 8MHz and I expected to
achieve somewhat close-to-that performance with my driver. To test the
throughput I've got a simple loop in my kernel driver:
uint8_t data = 0;
while(loops--) {
outb(data, iobase);
data = ~data;
}
A frequency probe reveals that the port status is changing at roughly
250kHz (and other timing checks confirm it), which is far less than the
expected 8MHz.
I've got two questions:
1) Can I speed it up somehow?
2) Apparently it's quite a lot of time between calling outb() and its
return. Can the kernel do something else in the meantime, like
scheduling another process or handling interrupts, or is it blocked
waiting for the outb() return? I'm on a uniprocessor x86 system.
Any ideas or pointers?
Thanks
Michal
--
To unsubscribe from this list: send an email with
"unsubscribe kernelnewbies" to [email protected]
Please read the FAQ at http://kernelnewbies.org/FAQ