Message ID | 20250225095210.25910-1-brgl@bgdev.pl |
---|---|
State | New |
Headers | show |
Series | [v2] gpiolib: use the required minimum set of headers | expand |
On Fri, Feb 28, 2025 at 05:50:19PM +0000, David Laight wrote: > On Thu, 27 Feb 2025 11:22:41 +0200 > Andy Shevchenko <andy.shevchenko@gmail.com> wrote: ... > > > A 'fun' activity is to pick a random file add "#define _IOW xxx" at the > > > top and see where ioctl.h is is first included from. > > > (I've not got a build machine up at the moment.) > > > > > > Then start fixing that include sequence. > > > Moving a few headers around is otherwise pretty pointless. > > > > Have you tried to help with reviewing this? > > > > https://lwn.net/ml/linux-kernel/YdIfz+LMewetSaEB@gmail.com/ > > > > Not seriously, though maybe I remember it. > > 'dayjobs' makefile first deletes all the SUFFIX and builtin rules. > Then it copies lots of headers from all over everywhere into a (fairly > flat) obj/include tree to reduce the number of -Ipath to a minimum. > A 'create' dependency is added to all the main targets to ensure the > headers get copied (the .d files pick up updates). > > It then generates explicit rules for each .o against its .c file. > > Definitely speeds things up because make is no longer searching > directories for all sorts of files that might be needed - but never are. > > (I've not dug through the bowels of the kernel makefile, but probably > have the skills to do so!) > > But that is all different from solving the 'all the header files always > get included' issue. How? That gigantic series makes the headers cleaner in a sense to avoid "include everything" thingy.
diff --git a/include/linux/gpio/consumer.h b/include/linux/gpio/consumer.h index 0b2b56199c36..824a1717e6d2 100644 --- a/include/linux/gpio/consumer.h +++ b/include/linux/gpio/consumer.h @@ -3,10 +3,7 @@ #define __LINUX_GPIO_CONSUMER_H #include <linux/bits.h> -#include <linux/bug.h> #include <linux/err.h> -#include <linux/errno.h> -#include <linux/kernel.h> #include <linux/types.h> struct acpi_device; @@ -185,6 +182,9 @@ struct gpio_desc *devm_fwnode_gpiod_get_index(struct device *dev, #else /* CONFIG_GPIOLIB */ +#include <linux/bug.h> +#include <linux/kernel.h> + static inline int gpiod_count(struct device *dev, const char *con_id) { return 0; @@ -549,6 +549,9 @@ struct gpio_desc *devm_fwnode_gpiod_get_index(struct device *dev, int gpiod_enable_hw_timestamp_ns(struct gpio_desc *desc, unsigned long flags); int gpiod_disable_hw_timestamp_ns(struct gpio_desc *desc, unsigned long flags); #else + +#include <linux/bug.h> + static inline int gpiod_enable_hw_timestamp_ns(struct gpio_desc *desc, unsigned long flags) {