From mboxrd@z Thu Jan 1 00:00:00 1970 From: Andreas Schwab Subject: Re: [PATCH] mod/file2alias: make modalias generation safe for cross compiling Date: Mon, 25 Jun 2012 23:43:15 +0200 Message-ID: References: <20120615201021.GB14544@kroah.com> <20120615231220.GC8205@kroah.com> <87lijns84s.fsf@nemi.mork.no> <87fw9urqau.fsf@nemi.mork.no> Mime-Version: 1.0 Content-Type: text/plain Return-path: In-Reply-To: (Geert Uytterhoeven's message of "Mon, 25 Jun 2012 22:32:53 +0200 (CEST)") Sender: linux-usb-owner-u79uwXL29TY76Z2rM5mHXA@public.gmane.org To: Geert Uytterhoeven Cc: =?utf-8?Q?Bj=C3=B8rn?= Mork , Greg Kroah-Hartman , USB list , linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, Linux-Next , linux-kbuild , Linux/m68k List-Id: linux-m68k@vger.kernel.org Geert Uytterhoeven writes: > Hi Andreas, > > On Mon, 25 Jun 2012, Andreas Schwab wrote: >> --- /dev/null >> +++ b/scripts/mod/devicetable-offsets.c >> @@ -0,0 +1,171 @@ >> +#include >> +#include >> + >> +#define DEVID(devid) DEFINE(SIZE_##devid, sizeof(struct devid)) >> +#define DEVID_FIELD(devid, field) \ >> + DEFINE(OFF_##devid##_##field, offsetof(struct devid, field)) >> + >> +int main(void) >> +{ >> + DEVID(usb_device_id); >> + DEVID_FIELD(usb_device_id, match_flags); >> + DEVID_FIELD(usb_device_id, idVendor); >> + DEVID_FIELD(usb_device_id, idProduct); >> + DEVID_FIELD(usb_device_id, bcdDevice_lo); >> + DEVID_FIELD(usb_device_id, bcdDevice_hi); >> + DEVID_FIELD(usb_device_id, bDeviceClass); >> + DEVID_FIELD(usb_device_id, bDeviceSubClass); >> + DEVID_FIELD(usb_device_id, bDeviceProtocol); >> + DEVID_FIELD(usb_device_id, bInterfaceClass); >> + DEVID_FIELD(usb_device_id, bInterfaceSubClass); >> + DEVID_FIELD(usb_device_id, bInterfaceProtocol); > > These are all duplicates of the structures in . > Can't you get rid of the duplication by putting e.g. the following > in : > > DEVID_START(usb_device_id); > DEVID_FIELD(usb_device_id, __u16, match_flags); > DEVID_FIELD(usb_device_id, __u16, idVendor); > DEVID_FIELD(usb_device_id, __u16, idProduct); > DEVID_FIELD(usb_device_id, __u16, bcdDevice_lo); > DEVID_FIELD(usb_device_id, __u16, bcdDevice_hi); > DEVID_FIELD(usb_device_id, __u8, bDeviceClass); > DEVID_FIELD(usb_device_id, __u8, bDeviceSubClass); > DEVID_FIELD(usb_device_id, __u8, bDeviceProtocol); > DEVID_FIELD(usb_device_id, __u8, bInterfaceClass); > DEVID_FIELD(usb_device_id, __u8, bInterfaceSubClass); > DEVID_FIELD(usb_device_id, __u8, bInterfaceProtocol); > DEVID_END(); > > and redefining the DEVID_*() macros depending on > 1. __KERNEL__, to generate the C struct definitions for kernel builds, > 2. first inclusion by devicetable-offsets.c, also to generate C struct > definitions, > 3. second inclusion by devicetable-offsets.c, to generate the sizes and > offset definitions for modalias? That requires some reorganisation of the struct pnp_card_device_id which has a somewhat complicated structure (which also accounts for the ugliest part of the patch). Andreas. -- Andreas Schwab, schwab-Td1EMuHUCqxL1ZNQvxDV9g@public.gmane.org GPG Key fingerprint = 58CA 54C7 6D53 942B 1756 01D3 44D5 214B 8276 4ED5 "And now for something completely different." -- To unsubscribe from this list: send the line "unsubscribe linux-usb" in the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org More majordomo info at http://vger.kernel.org/majordomo-info.html