On Tue, Jul 13, 2021 at 12:37:46PM +0200, Greg Kroah-Hartman wrote:
On Tue, Jul 13, 2021 at 11:45:41AM +0300, Andy Shevchenko wrote:
kernel.h is being used as a dump for all kinds of stuff for a long time. Here is the attempt cleaning it up by splitting out container_of() and typeof_memeber() macros.
That feels messy, why?
Because the headers in the kernel are messy.
Reading one .h file for these common macros/defines is fine, why are container_of and typeof somehow deserving of their own .h files?
It's explained here. There are tons of drivers that includes kernel.h for only a few or even solely for container_of() macro.
What speedups are you seeing by splitting this up?
C preprocessing.
At the same time convert users in the header and other folders to use it. Though for time being include new header back to kernel.h to avoid twisted indirected includes for existing users.
Note, there are _a lot_ of headers and modules that include kernel.h solely for one of these macros and this allows to unburden compiler for the twisted inclusion paths and to make new code cleaner in the future.
Signed-off-by: Andy Shevchenko andriy.shevchenko@linux.intel.com
include/kunit/test.h | 14 ++++++++++++-- include/linux/container_of.h | 37 ++++++++++++++++++++++++++++++++++++ include/linux/kernel.h | 31 +----------------------------- include/linux/kobject.h | 14 +++++++-------
Why are all of these changes needed to kobject.h for this one change? This diff:
--- a/include/linux/kobject.h +++ b/include/linux/kobject.h @@ -15,18 +15,18 @@ #ifndef _KOBJECT_H_ #define _KOBJECT_H_ -#include <linux/types.h> -#include <linux/list.h> -#include <linux/sysfs.h> +#include <linux/atomic.h> #include <linux/compiler.h> -#include <linux/spinlock.h> +#include <linux/container_of.h> +#include <linux/list.h> #include <linux/kref.h> #include <linux/kobject_ns.h> -#include <linux/kernel.h> #include <linux/wait.h> -#include <linux/atomic.h> -#include <linux/workqueue.h> +#include <linux/spinlock.h> +#include <linux/sysfs.h> +#include <linux/types.h> #include <linux/uidgid.h> +#include <linux/workqueue.h>
Is a lot more changes than the "split the macros out" deserves.
Please make this a separate change, remember to only do one thing at a time (this patch is at least 2 changes...)
so NAK, this change isn't ok as-is.
Fair enough. I will remove these conversions from the patch in v2.
Thanks for review!