Thread (24 messages) 24 messages, 6 authors, 2024-12-05

Re: [PATCH v2 00/32] driver core: Constify API device_find_child() and adapt for various existing usages

From: Zijun Hu <hidden>
Date: 2024-12-04 12:27:06
Also in: arm-scmi, dri-devel, linux-block, linux-cxl, linux-efi, linux-gpio, linux-hwmon, linux-media, linux-mediatek, linux-pwm, linux-remoteproc, linux-scsi, linux-serial, linux-sound, linux-usb, lkml, nvdimm, sparclinux

On 2024/12/3 23:34, James Bottomley wrote:
quoted
quoted
This also enables an incremental migration.
change the API prototype from:
device_find_child(..., void *data_0, int (*match)(struct device *dev,
void *data));

to:
device_find_child(..., const void *data_0, int (*match)(struct device
*dev, const void *data));

For @data_0,  void * -> const void * is okay.
but for @match, the problem is function pointer type incompatibility.

there are two solutions base on discussions.

1) squashing likewise Greg mentioned.
   Do all of the "prep work" first, and then
   do the const change at the very end, all at once.

2)  as changing platform_driver's remove() prototype.
Commit: e70140ba0d2b ("Get rid of 'remove_new' relic from platform
driver struct")

 introduce extra device_find_child_new() which is constified  -> use
*_new() replace ALL device_find_child() instances one by one -> 
remove device_find_child() -> rename *_new() to device_find_child()
once.
Why bother with the last step, which churns the entire code base again?
keep the good API name device_find_child().
Why not call the new function device_find_child_const() and simply keep
it (it's descriptive of its function).  That way you can have a patch
series without merging and at the end simply remove the old function.
device_find_child is a good name for the API, 'find' already means const.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help