--On Sunday, October 10, 2004 17:51:17 -0400 Sam Hartman <[EMAIL PROTECTED]>
wrote:

> The set of ioctls that are converted from 32-bit applications to a
> 64-bit kernel is statically specified in fs/compat_ioctl.c and
> arch/ppc64/kernel/ioctl32.c.
The ioctl_start array that is defined in ioctl32.c is not where
compat_sys_ioctl looks up the ioctl numbers.

init_sys32_ioctl() uses ioctl_start to initialize the hash table that
compat_sys_ioctl does use. At least in 2.6.8.1, the contents of the hash
table can be extended by calling the exported register_ioctl32_conversion()
function. 

The downside of the hash table approach is that ioctl number collisions now
cause problems*, and so if a CAPI_REGISTER or SNDCTL_COPR_LOAD conversion
function was ever written, it would conflict with our conversion function.

* Because ioctl is normally dispatched through the (struct file *)->f_op
structure, conflicting ioctl commands do not otherwise cause problems on
linux unless they are both applicable to some type of file. However,
compat_sys_ioctl dispatches to compatibility handlers by matching only the
cmd value.

Attachment: p7sHXxfA0PcNG.p7s
Description: S/MIME cryptographic signature

Reply via email to