RE: [PATCH net-next 05/12] net: dsa: b53: Use a macro to define I/O operations
From: Florian Fainelli <f.fainelli@gmail.com>
Date: 2017-09-19 14:29:43
On September 19, 2017 7:19:35 AM PDT, Vivien Didelot [off-list ref] wrote:
Hi David, David Laight [off-list ref] writes:quoted
From: Florian Fainelliquoted
Sent: 18 September 2017 22:41 Instead of repeating the same pattern: acquire mutex, read/write,releasequoted
quoted
mutex, define a macro: b53_build_op() which takes the type(read|write), I/Oquoted
quoted
size, and value (scalar or pointer). This helps with fixing bugsthat couldquoted
quoted
exit (e.g: missing barrier, lock etc.).....quoted
+#define b53_build_op(type, op_size, val_type) \ +static inline int b53_##type##op_size(struct b53_device *dev, u8page, \quoted
quoted
+ u8 reg, val_type val) \ +{ \ + int ret; \ + \ + mutex_lock(&dev->reg_mutex); \ + ret = dev->ops->type##op_size(dev, page, reg, val); \ + mutex_unlock(&dev->reg_mutex); \ + \ + return ret; \ }Why separate the 'type' and 'op_size' arguments since they are always pasted together?For read/write48, the value type is u64.
The way I read David's comment is that instead of calling the macro with read, 48, just combine that in a single argument: read48. I don't have a preference about that and can respin eventually. -- Florian