Kernel 2.0.x dev drv help....

Rajiv K Singh (
Sun, 1 Sep 96 11:48:27 IST

Hi all,
I wish to look for solutions to a few problems that I face while
writing device drivers for my Data Acquisition System. I have a working
device driver already that handles the interrupts to receive a block
of data by simple __inb instructions. It sustains a few MB/s comfortably
but the choking point is that the device driver receives only 1KB transfer
requests 16 times from kernel when the user attempts to read 16KB from
the device file. The device file is char unbuffered file. Can one do
something such that the kernel passes the requests for larger chunks
to device driver?
Another problem is the one which is well discussed on linux-net but
I do not know what the solution is. Earlier while loading the device driver into
the kernel (1.3.20) one used receive a message that the version on symbols
of 1.3.20 do not match with that of device driver, effectively.
Then we used to rebuild the kernel without the version tag on symbols.
But with 2.0.0 this method does not work. First of all why shouldn't they#
match if they have been recompiled with the installed kernel. Also, one
receives an error while insmod the device driver - gcc2_compiled undefined.
Yes, it is gcc compiled and therefore, at best, this should be defined. How
to get around this problem?
I understand that the largest chunk of buffer that one can kmalloc is
128KB-32bytes or so. Is there a way around to have larger buffers or is there
any limit on how many such buffers one can allocate?
Is it possible to pass the address of a shared memory region that can be
locked in the memory (Solaris provides) and the device driver directly
writes into this region? Please allow me to query as to why the gcc allocates
different memory addresses for a shared mem region to two different programs
one linked with -lm and another without it.
Thanks a lot!

P.S. This is my third attempt to post this mail to the list. I do not get
any returned mail and it does not appear on the list!!