Thread (26 messages) 26 messages, 9 authors, 2023-01-11

Re: [PATCH 3/5] driver core: make struct device_type.uevent() take a const *

From: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Date: 2022-11-23 17:02:01
Also in: alsa-devel, linux-acpi, linux-block, linux-devicetree, linux-i2c, linux-i3c, linux-media, linux-serial, linux-usb, lkml, platform-driver-x86

On Wed, Nov 23, 2022 at 12:25:32PM -0400, Jason Gunthorpe wrote:
On Wed, Nov 23, 2022 at 04:37:59PM +0100, Greg Kroah-Hartman wrote:
quoted
static inline struct device *__kobj_to_dev(struct kobject *kobj)
{
        return container_of(kobj, struct device, kobj);
}

static inline const struct device *__kobj_to_dev_const(const struct kobject *kobj)
{
        return container_of(kobj, const struct device, kobj);
}

/*
 * container_of() will happily take a const * and spit back a non-const * as it
 * is just doing pointer math.  But we want to be a bit more careful in the
 * driver code, so manually force any const * of a kobject to also be a const *
 * to a device.
 */
#define kobj_to_dev(kobj)                                       \
        _Generic((kobj),                                        \
                 const struct kobject *: __kobj_to_dev_const,   \
                 struct kobject *: __kobj_to_dev)(kobj)


Want me to do the same thing here as well?
It would be nice to have a shared macro code gen all of the above
instead of copy and pasting it. Then maybe other cases beyond struct
device could adopt const too..
I think I tried to create such a beast, but failed, so ended up
open-coding it in a few places in the USB headers already.  I can try it
again, but the redirection gets tricky (defines creating defines...)

thanks,

greg k-h
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help