CodingStyle "Chapter 12: Macros, Enums and RTL" highly recommends to use functions instead of macros were possible. This ensures type safety and prevents shadowing of other variables.
Signed-off-by: Sven Eckelmann sven@narfation.org --- bat_sysfs.c | 14 +++++++++++--- 1 files changed, 11 insertions(+), 3 deletions(-)
diff --git a/bat_sysfs.c b/bat_sysfs.c index df8a283..63738ec 100644 --- a/bat_sysfs.c +++ b/bat_sysfs.c @@ -28,9 +28,17 @@ #include "gateway_client.h" #include "vis.h"
-#define to_dev(obj) container_of(obj, struct device, kobj) -#define kobj_to_netdev(obj) to_net_dev(to_dev(obj->parent)) -#define kobj_to_batpriv(obj) netdev_priv(kobj_to_netdev(obj)) +static struct net_device *kobj_to_netdev(struct kobject *obj) +{ + struct device *dev = container_of(obj->parent, struct device, kobj); + return to_net_dev(dev); +} + +static struct bat_priv *kobj_to_batpriv(struct kobject *obj) +{ + struct net_device *net_dev = kobj_to_netdev(obj); + return netdev_priv(net_dev); +}
/* Use this, if you have customized show and store functions */ #define BAT_ATTR(_name, _mode, _show, _store) \