Re: [PATCH v2 01/14] device property: Add cleanup.h based fwnode_handle_put() scope based cleanup.

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Mon, 12 Feb 2024 12:58:03 +0000
Sakari Ailus <sakari.ailus@xxxxxxxxxxxxxxx> wrote:

> On Mon, Feb 12, 2024 at 02:46:49PM +0200, Andy Shevchenko wrote:
> > On Mon, Feb 12, 2024 at 12:36:46PM +0000, Sakari Ailus wrote:  
> > > On Mon, Feb 12, 2024 at 11:42:06AM +0000, Jonathan Cameron wrote:  
> > 
> > ...
> >   
> > > Hmm. In that case I'd rather make fwnode_handle_put() and similar trivial
> > > functions macros.  
> > 
> > This will kill the type-checking opportunity, so I'm against this move.  
> 
> Then it could be made static inline and moved to the header. I suppose for
> modern compilers there should be no difference in between the two
> optimisation-wise.
> 

Sure - will be a bit fiddly as this is only worth doing if we drop
the internal check that buried several macros deep.

1. rename existing fwnode_handle_put() to __fwnode_handle_put()
2. Make __fwnode_handle_put() call a new set of macros
#define fwnode_has_op_nocheck(fwnode, op) \
	(fwnode)->ops && (fwnode)->ops->op

#define fwnode_call_void_op_nocheck(fwnode, op, .... \
	do {
		if (fwnode_had_op_nocheck(fwnode, op)) \
			(fwnode)->ops->op(fwnode, ## __VA_ARGS__);
	} while (false);

3. Add new
static inline fwnode_handle_put(struct fwnode_handle *fwnode)
{
	if (!IS_ERR_OR_NULL(fwnode))
		__fwnode_handle_put(fwnode);
}

Or something like that.

I'm fine with doing that if conclusion is the complexity of the change
is worth it.

Jonathan




[Index of Archives]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Input]     [Linux Kernel]     [Linux SCSI]     [X.org]

  Powered by Linux