taking backports out of compat-*.h (was: [PATCH 02/18] compat: backport dev_level_ratelimited())

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Wed, 2013-04-10 at 19:15 +0200, Johannes Berg wrote:

> > Sure, lets what's the idea or do you want to do that on another thread?

Let me give it a different subject :-)

> It's kinda half-baked and I'm not completely sure it's a good idea
> (because we may have to follow header file renames, though they happen
> rarely), but I was basically thinking this:
> 
> Say there's
> 
> void my_foo_function(struct foo *f);
> 
> that we want to backport. Let's also say it's defined in <linux/foo.h>,
> and that it was usually present starting from kernel 3.0, but for now
> let's assume the "foo" subsystem always existed (i.e. <linux/foo.h>)
> 
> Typically, we'd therefore add it to <linux/compat-3.0.h> and declare it
> there, maybe with the LINUX_BACKPORT() wrapper, and then define it in
> compat/compat-3.0.c.
> 
> What I'm thinking is that we should maybe declare it in compat in
> include/linux/foo.h instead, maybe like this:
> 
> #ifndef __BACKPORT_FOO
> #define __BACKPORT_FOO
> #include_next <linux/foo.h>
> 
> #if LINUX_VERSION < 3.0
> #define my_foo_function LINUX_BACKPORT(my_foo_function)
> 
> void my_foo_function(struct foo *f);
> #endif
> 
> #endif /* __BACKPORT_FOO */
> 
> 
> 
> I'm a bit undecided. On the one hand I think it's nice that we can spot
> in one place what's backported where in all the
> include/linux/compat-xyz.h files, but on the other hand it's kinda
> becoming a messy jumble of features across different subsystems, and
> hard to determine what you have already and might need for a given
> header file?

In addition to what I said, I just realized that we should probably do
this, and do it consistently even for old things. That way, we can get
rid of all the pr_fmt patches.

The reason for the pr_fmt patches is that typically, a source file would
have

#define pr_fmt(fmt)           KBUILD_MODNAME ": " fmt
#include <whatever, including somehow getting printk.h>

Now that we force them to include compat-2.6.h at the very beginning of
the file, printk.h already gets included in some way through
compat-2.6.h (there are of course MANY MANY paths to it.)

To avoid redefine warnings, we thus patch everything to be

#undef pr_fmt
#define pr_fmt
...

which of course works, but it's pretty ugly (we have >1000 patchlines
for this!)


If we were able to get rid of compat-2.6.h and put all the backports
into their appropriate headers (linux/foo.h) we could only force an
include of compat_autoconf.h (which doesn't include printk.h of course)
and then we'd be able to get rid of all these patches.

johannes

--
To unsubscribe from this list: send the line "unsubscribe backports" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html




[Index of Archives]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Security]     [Bugtraq]     [Linux]     [Linux OMAP]     [Linux MIPS]     [ECOS]     [Asterisk Internet PBX]     [Linux API]

  Powered by Linux