I've just been looking through the remaining cruft in the serial
drivers, and have come across this silly thing:
TIOCGICOUNT exports a structure to userspace called
struct serial_icounter_struct.
However, sh, sh64 and xtensa do this:
include/asm-sh/ioctls.h:#define TIOCGICOUNT _IOR('T', 93, struct async_icount) /* 0x545D */ /* read serial port inline interrupt counts */
include/asm-sh64/ioctls.h:#define TIOCGICOUNT 0x802c545d /* _IOR('T', 93, struct async_icount) 0x545D */ /* read serial port inline interrupt counts */
include/asm-xtensa/ioctls.h:#define TIOCGICOUNT _IOR('T', 93, struct async_icount) /* read serial port inline interrupt counts */
What's more is that no driver actually exports async_icount, and
async_icount is a kernel internal structure which does _not_ form
part of the public API, and modifications to this will result in
unexpected breakage on these platforms.
100% for trying to clean up the tty ioctl definitions. 0% for
using the wrong structures. As such, these _require_ fixing.
Please document that your TIOCGICOUNT is broken and remove the
dependence on the async_icount structure. Thanks.
--
Russell King
Linux kernel 2.6 ARM Linux - http://www.arm.linux.org.uk/
maintainer of: 2.6 Serial core
Ping?
On Sat, Jan 21, 2006 at 06:57:12PM +0000, Russell King wrote:
> I've just been looking through the remaining cruft in the serial
> drivers, and have come across this silly thing:
>
> TIOCGICOUNT exports a structure to userspace called
> struct serial_icounter_struct.
>
> However, sh, sh64 and xtensa do this:
>
> include/asm-sh/ioctls.h:#define TIOCGICOUNT _IOR('T', 93, struct async_icount) /* 0x545D */ /* read serial port inline interrupt counts */
> include/asm-sh64/ioctls.h:#define TIOCGICOUNT 0x802c545d /* _IOR('T', 93, struct async_icount) 0x545D */ /* read serial port inline interrupt counts */
> include/asm-xtensa/ioctls.h:#define TIOCGICOUNT _IOR('T', 93, struct async_icount) /* read serial port inline interrupt counts */
>
> What's more is that no driver actually exports async_icount, and
> async_icount is a kernel internal structure which does _not_ form
> part of the public API, and modifications to this will result in
> unexpected breakage on these platforms.
>
> 100% for trying to clean up the tty ioctl definitions. 0% for
> using the wrong structures. As such, these _require_ fixing.
>
> Please document that your TIOCGICOUNT is broken and remove the
> dependence on the async_icount structure. Thanks.
>
> --
> Russell King
> Linux kernel 2.6 ARM Linux - http://www.arm.linux.org.uk/
> maintainer of: 2.6 Serial core
> -
> To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
> the body of a message to [email protected]
> More majordomo info at http://vger.kernel.org/majordomo-info.html
> Please read the FAQ at http://www.tux.org/lkml/
--
Russell King
Linux kernel 2.6 ARM Linux - http://www.arm.linux.org.uk/
maintainer of: 2.6 Serial core
On Thu, Feb 02, 2006 at 10:27:08AM +0000, Russell King wrote:
> Ping?
>
Fixed for sh/sh64 in current git, though I forgot to CC you on it.
Thanks for catching this.