[posted this query on [email protected] earlier]
Hello,
Do kernel modules need to be aware that they are running in a 64-bit
kernel or a 32-bit kernel?
I guess yes, especially interacting with 32-bit userspace programs.
For e.g. if a 32-bit program (running on a 64-bit kernel) passes a
pointer to the kernel module (via an ioctl), how does the kernel/module
know that its a 32-bit address? the sizeof(pointer) changes in
kernel/userspace in this case. So in the ioctl handler the kernel
modules does how many bytes of copy_from_use() to get the ioctl args?
How should be the modules be written so they work both on 32/64-bit
kernel AND can interact with both 32/64-bit userspace programs in
a 64-bit kernel??
Any links, pointers to relevant HOWTO/docs/source will be very useful.
Thanks,
A.
ps: Please Cc: me the reply. I am not on this mailing list.
__________________________________________________
Do you Yahoo!?
Yahoo! Mail Plus - Powerful. Affordable. Sign up now.
http://mailplus.yahoo.com
devnetfs <[email protected]> writes:
> Do kernel modules need to be aware that they are running in a 64-bit
> kernel or a 32-bit kernel?
Yes, if they want to support 32bit programs in a 64bit kernel they
usually need ioctl translation and sometimes syscall translation
(if they have own ioctls or syscalls)
> How should be the modules be written so they work both on 32/64-bit
> kernel AND can interact with both 32/64-bit userspace programs in
> a 64-bit kernel??
http://www.firstfloor.org/~andi/writing-ioctl32
-Andi