* Re: [PATCH] ioctl entries for joystick in compat_ioctl.h [not found] <20030912112557.C10099@raphnet.net> @ 2003-09-12 18:41 ` Pavel Machek 2003-09-12 20:01 ` Vojtech Pavlik 0 siblings, 1 reply; 5+ messages in thread From: Pavel Machek @ 2003-09-12 18:41 UTC (permalink / raw) To: Raphael Assenat; +Cc: vojtech, kernel list Hi! > I wanted to use a joystick on my sparc64 workstation, and discovered that the > joystick driver uses simple ioclt that are safe to pass from 32bit user space > to 64bit kernel space. My patch adds the necessary entries in compat_ioctl.h. > > There is only one missing ioctl in the patch. The ioctl is defined like this: > #define JSIOCGNAME(len) _IOC(_IOC_READ, 'j', 0x13, len) > so the command does not have a fixed value. I dont know how to handle this one, > but it is only used to get the joystick name, all the applications I tried work > well even if this ioctl fails. Well, whoever invented that JSIOCGNAME should be shot. That is not single ioctl, its 2^14 of them! Testing for CONFIG_INPUT_JOYDEV_MODULE looks like bad idea. AFAIR CONFIG_INPUT_JOYDEV_MODULE implies CONFIG_INPUT_JOYDEV. But this would mean that you can not insert joydev module into kernel compiled with JOYDEV=n. Perhaps it better to just simply kill the ifdef? Vojtech, this fill be needed on x86-64, too. Can you take care of it? Pavel > I have tested this patch with snes9x and jstest.c without any problems. > > Regards, > Raphael Assenat > > --- linux-2.6.0-test4/fs/compat_ioctl.c Fri Aug 22 20:00:50 2003 > +++ linux-2.6.0-test4-raph/fs/compat_ioctl.c Sun Sep 7 19:03:52 2003 > @@ -65,6 +65,7 @@ > #include <linux/ctype.h> > #include <linux/ioctl32.h> > #include <linux/ncp_fs.h> > +#include <linux/joystick.h> > > #include <net/sock.h> /* siocdevprivate_ioctl */ > #include <net/bluetooth/bluetooth.h> > --- linux-2.6.0-test4/include/linux/compat_ioctl.h Fri Aug 22 20:01:27 > 2003 > +++ linux-2.6.0-test4-raph/include/linux/compat_ioctl.h Sun Sep 7 20:07:57 > 2003 > @@ -680,3 +680,16 @@ > COMPATIBLE_IOCTL(NBD_PRINT_DEBUG) > COMPATIBLE_IOCTL(NBD_SET_SIZE_BLOCKS) > COMPATIBLE_IOCTL(NBD_DISCONNECT) > + > +/* little j */ > +#if defined(CONFIG_INPUT_JOYDEV)||defined(CONFIG_INPUT_JOYDEV_MODULE) > +COMPATIBLE_IOCTL(JSIOCGVERSION) > +COMPATIBLE_IOCTL(JSIOCGAXES) > +COMPATIBLE_IOCTL(JSIOCGBUTTONS) > +COMPATIBLE_IOCTL(JSIOCSCORR) > +COMPATIBLE_IOCTL(JSIOCGCORR) > +COMPATIBLE_IOCTL(JSIOCSAXMAP) > +COMPATIBLE_IOCTL(JSIOCGAXMAP) > +COMPATIBLE_IOCTL(JSIOCSBTNMAP) > +COMPATIBLE_IOCTL(JSIOCGBTNMAP) > +#endif -- When do you have a heart between your knees? [Johanka's followup: and *two* hearts?] ^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH] ioctl entries for joystick in compat_ioctl.h 2003-09-12 18:41 ` [PATCH] ioctl entries for joystick in compat_ioctl.h Pavel Machek @ 2003-09-12 20:01 ` Vojtech Pavlik 2003-09-12 21:13 ` Pavel Machek 2004-12-08 19:25 ` Jeremy Fitzhardinge 0 siblings, 2 replies; 5+ messages in thread From: Vojtech Pavlik @ 2003-09-12 20:01 UTC (permalink / raw) To: Pavel Machek; +Cc: Raphael Assenat, kernel list On Fri, Sep 12, 2003 at 08:41:45PM +0200, Pavel Machek wrote: > Hi! > > > I wanted to use a joystick on my sparc64 workstation, and discovered that the > > joystick driver uses simple ioclt that are safe to pass from 32bit user space > > to 64bit kernel space. My patch adds the necessary entries in compat_ioctl.h. > > > > There is only one missing ioctl in the patch. The ioctl is defined like this: > > #define JSIOCGNAME(len) _IOC(_IOC_READ, 'j', 0x13, len) > > so the command does not have a fixed value. I dont know how to handle this one, > > but it is only used to get the joystick name, all the applications I tried work > > well even if this ioctl fails. > > Well, whoever invented that JSIOCGNAME should be shot. That is not > single ioctl, its 2^14 of them! Well, who could ever have known that this will be a problem in 1998? It's not the only ioctl done this way. > Testing for CONFIG_INPUT_JOYDEV_MODULE looks like bad idea. AFAIR > CONFIG_INPUT_JOYDEV_MODULE implies CONFIG_INPUT_JOYDEV. But this would > mean that you can not insert joydev module into kernel compiled with > JOYDEV=n. Perhaps it better to just simply kill the ifdef? > > Vojtech, this fill be needed on x86-64, too. Can you take care of it? Yes, I will. > > I have tested this patch with snes9x and jstest.c without any problems. > > > > Regards, > > Raphael Assenat > > > > --- linux-2.6.0-test4/fs/compat_ioctl.c Fri Aug 22 20:00:50 2003 > > +++ linux-2.6.0-test4-raph/fs/compat_ioctl.c Sun Sep 7 19:03:52 2003 > > @@ -65,6 +65,7 @@ > > #include <linux/ctype.h> > > #include <linux/ioctl32.h> > > #include <linux/ncp_fs.h> > > +#include <linux/joystick.h> > > > > #include <net/sock.h> /* siocdevprivate_ioctl */ > > #include <net/bluetooth/bluetooth.h> > > --- linux-2.6.0-test4/include/linux/compat_ioctl.h Fri Aug 22 20:01:27 > > 2003 > > +++ linux-2.6.0-test4-raph/include/linux/compat_ioctl.h Sun Sep 7 20:07:57 > > 2003 > > @@ -680,3 +680,16 @@ > > COMPATIBLE_IOCTL(NBD_PRINT_DEBUG) > > COMPATIBLE_IOCTL(NBD_SET_SIZE_BLOCKS) > > COMPATIBLE_IOCTL(NBD_DISCONNECT) > > + > > +/* little j */ > > +#if defined(CONFIG_INPUT_JOYDEV)||defined(CONFIG_INPUT_JOYDEV_MODULE) > > +COMPATIBLE_IOCTL(JSIOCGVERSION) > > +COMPATIBLE_IOCTL(JSIOCGAXES) > > +COMPATIBLE_IOCTL(JSIOCGBUTTONS) > > +COMPATIBLE_IOCTL(JSIOCSCORR) > > +COMPATIBLE_IOCTL(JSIOCGCORR) > > +COMPATIBLE_IOCTL(JSIOCSAXMAP) > > +COMPATIBLE_IOCTL(JSIOCGAXMAP) > > +COMPATIBLE_IOCTL(JSIOCSBTNMAP) > > +COMPATIBLE_IOCTL(JSIOCGBTNMAP) > > +#endif > > -- > When do you have a heart between your knees? > [Johanka's followup: and *two* hearts?] -- Vojtech Pavlik SuSE Labs, SuSE CR ^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH] ioctl entries for joystick in compat_ioctl.h 2003-09-12 20:01 ` Vojtech Pavlik @ 2003-09-12 21:13 ` Pavel Machek 2003-09-13 7:13 ` Vojtech Pavlik 2004-12-08 19:25 ` Jeremy Fitzhardinge 1 sibling, 1 reply; 5+ messages in thread From: Pavel Machek @ 2003-09-12 21:13 UTC (permalink / raw) To: Vojtech Pavlik; +Cc: Raphael Assenat, kernel list Hi! > > > I wanted to use a joystick on my sparc64 workstation, and discovered that the > > > joystick driver uses simple ioclt that are safe to pass from 32bit user space > > > to 64bit kernel space. My patch adds the necessary entries in compat_ioctl.h. > > > > > > There is only one missing ioctl in the patch. The ioctl is defined like this: > > > #define JSIOCGNAME(len) _IOC(_IOC_READ, 'j', 0x13, len) > > > so the command does not have a fixed value. I dont know how to handle this one, > > > but it is only used to get the joystick name, all the applications I tried work > > > well even if this ioctl fails. > > > > Well, whoever invented that JSIOCGNAME should be shot. That is not > > single ioctl, its 2^14 of them! > > Well, who could ever have known that this will be a problem in 1998? > It's not the only ioctl done this way. So it was you? :-) I believe ultrasparcs were around in '98. Anyway, what are other ioctls doing this? They look pretty problematic from compat_ioctl perspective. We could do better by pushing compat handler down to the drivers for ugly cases like this... Pavel -- When do you have a heart between your knees? [Johanka's followup: and *two* hearts?] ^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH] ioctl entries for joystick in compat_ioctl.h 2003-09-12 21:13 ` Pavel Machek @ 2003-09-13 7:13 ` Vojtech Pavlik 0 siblings, 0 replies; 5+ messages in thread From: Vojtech Pavlik @ 2003-09-13 7:13 UTC (permalink / raw) To: Pavel Machek; +Cc: Vojtech Pavlik, Raphael Assenat, kernel list On Fri, Sep 12, 2003 at 11:13:06PM +0200, Pavel Machek wrote: > > > > I wanted to use a joystick on my sparc64 workstation, and discovered that the > > > > joystick driver uses simple ioclt that are safe to pass from 32bit user space > > > > to 64bit kernel space. My patch adds the necessary entries in compat_ioctl.h. > > > > > > > > There is only one missing ioctl in the patch. The ioctl is defined like this: > > > > #define JSIOCGNAME(len) _IOC(_IOC_READ, 'j', 0x13, len) > > > > so the command does not have a fixed value. I dont know how to handle this one, > > > > but it is only used to get the joystick name, all the applications I tried work > > > > well even if this ioctl fails. > > > > > > Well, whoever invented that JSIOCGNAME should be shot. That is not > > > single ioctl, its 2^14 of them! > > > > Well, who could ever have known that this will be a problem in 1998? > > It's not the only ioctl done this way. > > So it was you? :-) Yes. :) > I believe ultrasparcs were around in '98. Anyway, what are other > ioctls doing this? They look pretty problematic from compat_ioctl > perspective. I don't remember - I know I just copied the concept from elsewhere. I'm sure you'll be able to grep for it. > We could do better by pushing compat handler down to the drivers for > ugly cases like this... -- Vojtech Pavlik SuSE Labs, SuSE CR ^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH] ioctl entries for joystick in compat_ioctl.h 2003-09-12 20:01 ` Vojtech Pavlik 2003-09-12 21:13 ` Pavel Machek @ 2004-12-08 19:25 ` Jeremy Fitzhardinge 1 sibling, 0 replies; 5+ messages in thread From: Jeremy Fitzhardinge @ 2004-12-08 19:25 UTC (permalink / raw) To: Vojtech Pavlik; +Cc: Pavel Machek, Raphael Assenat, linux-kernel On Fri, 2003-09-12 at 22:01 +0200, Vojtech Pavlik wrote: > On Fri, Sep 12, 2003 at 08:41:45PM +0200, Pavel Machek wrote: > > Hi! > > Raphael Assenat <raph@raphnet.net> wrote: > > > I wanted to use a joystick on my sparc64 workstation, and discovered that the > > > joystick driver uses simple ioclt that are safe to pass from 32bit user space > > > to 64bit kernel space. My patch adds the necessary entries in compat_ioctl.h. > > > > > > There is only one missing ioctl in the patch. The ioctl is defined like this: > > > #define JSIOCGNAME(len) _IOC(_IOC_READ, 'j', 0x13, len) > > > so the command does not have a fixed value. I dont know how to handle this one, > > > but it is only used to get the joystick name, all the applications I tried work > > > well even if this ioctl fails. [...] > > Vojtech, this fill be needed on x86-64, too. Can you take care of it? > > I have tested this patch with snes9x and jstest.c without any problems. > > > > Regards, > > Raphael Assenat > > > > --- linux-2.6.0-test4/fs/compat_ioctl.c Fri Aug 22 20:00:50 2003 > > +++ linux-2.6.0-test4-raph/fs/compat_ioctl.c Sun Sep 7 19:03:52 2003 > > @@ -65,6 +65,7 @@ > > #include <linux/ctype.h> > > #include <linux/ioctl32.h> > > #include <linux/ncp_fs.h> > > +#include <linux/joystick.h> > > > > #include <net/sock.h> /* siocdevprivate_ioctl */ > > #include <net/bluetooth/bluetooth.h> > > --- linux-2.6.0-test4/include/linux/compat_ioctl.h Fri Aug 22 20:01:27 > > 2003 > > +++ linux-2.6.0-test4-raph/include/linux/compat_ioctl.h Sun Sep 7 20:07:57 > > 2003 > > @@ -680,3 +680,16 @@ > > COMPATIBLE_IOCTL(NBD_PRINT_DEBUG) > > COMPATIBLE_IOCTL(NBD_SET_SIZE_BLOCKS) > > COMPATIBLE_IOCTL(NBD_DISCONNECT) > > + > > +/* little j */ > > +#if defined(CONFIG_INPUT_JOYDEV)||defined(CONFIG_INPUT_JOYDEV_MODULE) > > +COMPATIBLE_IOCTL(JSIOCGVERSION) > > +COMPATIBLE_IOCTL(JSIOCGAXES) > > +COMPATIBLE_IOCTL(JSIOCGBUTTONS) > > +COMPATIBLE_IOCTL(JSIOCSCORR) > > +COMPATIBLE_IOCTL(JSIOCGCORR) > > +COMPATIBLE_IOCTL(JSIOCSAXMAP) > > +COMPATIBLE_IOCTL(JSIOCGAXMAP) > > +COMPATIBLE_IOCTL(JSIOCSBTNMAP) > > +COMPATIBLE_IOCTL(JSIOCGBTNMAP) > > +#endif I notice that this patch does not appear in current kernels, and the joystick doesn't work for 32-bit apps on x86-64. Did this patch ever make it into the kernel? Or some replacement? If not, what's the problem? Thanks, J ^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2004-12-08 19:27 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
[not found] <20030912112557.C10099@raphnet.net>
2003-09-12 18:41 ` [PATCH] ioctl entries for joystick in compat_ioctl.h Pavel Machek
2003-09-12 20:01 ` Vojtech Pavlik
2003-09-12 21:13 ` Pavel Machek
2003-09-13 7:13 ` Vojtech Pavlik
2004-12-08 19:25 ` Jeremy Fitzhardinge
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox