Re: [PATCH] fix: macros to detect existance of unlocked_ioctl and compat_ioctl

From: Andreas Dilger
Date: Wed Jan 12 2005 - 17:24:51 EST


On Jan 12, 2005 13:29 -0800, Greg KH wrote:
> On Wed, Jan 12, 2005 at 10:36:06PM +0200, Michael S. Tsirkin wrote:
> > To make life bearable for out-of kernel modules, the following patch
> > adds 2 macros so that existance of unlocked_ioctl and compat_ioctl
> > can be easily detected.
> >
> > Signed-off-by: Michael S. Tsirkin <mst@xxxxxxxxxxxxxx>
> >
> > diff -puN include/linux/fs.h~ioctl-rework include/linux/fs.h
> > --- 25/include/linux/fs.h~ioctl-rework Thu Dec 16 15:48:31 2004
> > +++ 25-akpm/include/linux/fs.h Thu Dec 16 15:48:31 2004
> > @@ -907,6 +907,12 @@ typedef struct {
> >
> > typedef int (*read_actor_t)(read_descriptor_t *, struct page *, unsigned long, unsigned long);
> >
> > +/* These macros are for out of kernel modules to test that
> > + * the kernel supports the unlocked_ioctl and compat_ioctl
> > + * fields in struct file_operations. */
> > +#define HAVE_COMPAT_IOCTL 1
> > +#define HAVE_UNLOCKED_IOCTL 1
>
> No, we do not do that in the kernel today, and I'm pretty sure we don't
> want to start doing it (it would get _huge_ very quickly...)
>
> Please don't apply this. Remember, out-of-the-tree modules are on their
> own.

Gee, thanks. It's not like some out-of-tree code doesn't _want_ to go
into the core kernel, but usually the time between some code being
developed and when it is included is lengthy (i.e. "this feature won't
be accepted until lots of people use it").

You can't claim that this has never been done (e.g. KERNEL_HAS_O_DIRECT,
KERNEL_HAS_DIRECT_FILEIO in 2.4 kernels). For code that needs to handle
multiple kernel versions this makes life far easier and doesn't actually
hurt anything. It used to be that you could use LINUX_VERSION_CODE for
this kind of check, but that breaks down quickly with vendor kernels and
the long development cycle.

Cheers, Andreas
--
Andreas Dilger
http://sourceforge.net/projects/ext2resize/
http://members.shaw.ca/adilger/ http://members.shaw.ca/golinux/

Attachment: pgp00000.pgp
Description: PGP signature