devres: Pass unique name of the resource to devm_add_action()
Pass the unique name of the resource to devm_add_action(), so it will be easier to debug managed resources. Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com> Link: https://lore.kernel.org/r/20230224200745.17324-1-andriy.shevchenko@linux.intel.com Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
295209ca7b
commit
0433686c60
@ -722,20 +722,21 @@ static void devm_action_release(struct device *dev, void *res)
|
||||
}
|
||||
|
||||
/**
|
||||
* devm_add_action() - add a custom action to list of managed resources
|
||||
* __devm_add_action() - add a custom action to list of managed resources
|
||||
* @dev: Device that owns the action
|
||||
* @action: Function that should be called
|
||||
* @data: Pointer to data passed to @action implementation
|
||||
* @name: Name of the resource (for debugging purposes)
|
||||
*
|
||||
* This adds a custom action to the list of managed resources so that
|
||||
* it gets executed as part of standard resource unwinding.
|
||||
*/
|
||||
int devm_add_action(struct device *dev, void (*action)(void *), void *data)
|
||||
int __devm_add_action(struct device *dev, void (*action)(void *), void *data, const char *name)
|
||||
{
|
||||
struct action_devres *devres;
|
||||
|
||||
devres = devres_alloc(devm_action_release,
|
||||
sizeof(struct action_devres), GFP_KERNEL);
|
||||
devres = __devres_alloc_node(devm_action_release, sizeof(struct action_devres),
|
||||
GFP_KERNEL, NUMA_NO_NODE, name);
|
||||
if (!devres)
|
||||
return -ENOMEM;
|
||||
|
||||
@ -745,7 +746,7 @@ int devm_add_action(struct device *dev, void (*action)(void *), void *data)
|
||||
devres_add(dev, devres);
|
||||
return 0;
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(devm_add_action);
|
||||
EXPORT_SYMBOL_GPL(__devm_add_action);
|
||||
|
||||
/**
|
||||
* devm_remove_action() - removes previously added custom action
|
||||
|
@ -243,10 +243,13 @@ void __iomem *devm_of_iomap(struct device *dev,
|
||||
resource_size_t *size);
|
||||
|
||||
/* allows to add/remove a custom action to devres stack */
|
||||
int devm_add_action(struct device *dev, void (*action)(void *), void *data);
|
||||
void devm_remove_action(struct device *dev, void (*action)(void *), void *data);
|
||||
void devm_release_action(struct device *dev, void (*action)(void *), void *data);
|
||||
|
||||
int __devm_add_action(struct device *dev, void (*action)(void *), void *data, const char *name);
|
||||
#define devm_add_action(release, action, data) \
|
||||
__devm_add_action(release, action, data, #action)
|
||||
|
||||
static inline int devm_add_action_or_reset(struct device *dev,
|
||||
void (*action)(void *), void *data)
|
||||
{
|
||||
|
Loading…
Reference in New Issue
Block a user