Hi All,
include/linux/usb/composite.h contains:
/* messaging utils */
#define DBG(d, fmt, args...) \
dev_dbg(&(d)->gadget->dev , fmt , ## args)
#define VDBG(d, fmt, args...) \
dev_vdbg(&(d)->gadget->dev , fmt , ## args)
#define ERROR(d, fmt, args...) \
dev_err(&(d)->gadget->dev , fmt , ## args)
#define WARNING(d, fmt, args...) \
dev_warn(&(d)->gadget->dev , fmt , ## args)
#define INFO(d, fmt, args...) \
dev_info(&(d)->gadget->dev , fmt , ## args)
Gadget functions do use these, but not consistently:
=> DBG() vs dev_dbg():
$ git grep DBG\( drivers/usb/gadget/function | grep -v VDBG | grep -v LDBG | wc
138 871 11619
$ git grep dev_dbg\( drivers/usb/gadget/function | grep -v "##args" | wc
33 151 2831
=> VDBG() vs dev_vdbg():
git grep VDBG\( drivers/usb/gadget/function | grep -v "#define" | wc
49 269 3954
$ git grep dev_vdbg\( drivers/usb/gadget/function | wc
2 4 135
=> ERROR() vs dev_err():
$ git grep ERROR\( drivers/usb/gadget/function | grep -v LERROR | wc
72 508 6560
$ git grep dev_err\( drivers/usb/gadget/function | grep -v "##args" | wc
65 309 5527
=> WARNING() vs dev_warn():
$ git grep WARNING\( drivers/usb/gadget/function | wc
4 28 383
$ git grep dev_warn\( drivers/usb/gadget/function | grep -v "##args" | wc
3 6 169
=> INFO() vs dev_info():
$ git grep INFO\( drivers/usb/gadget/function | grep -v LINFO | grep -v u_ether
| wc
14 64 1167
$ git grep dev_info\( drivers/usb/gadget/function | grep -v "##args" | wc
0 0 0
Questions:
1) Should we make them use the messaging utils consitently?
2) How consistent should we become, given that some functions in the relevant
files, for example u_audio_start_capture(), sometimes (but not always) have:
struct usb_gadget *gadget = audio_dev->gadget;
struct device *dev = &gadget->dev;
and then they use dev_dbg(dev, ....);
If we were to use DBG(audio_dev, ....); instead, then we effectively get
dev_dbg(&audio_dev->gadget->dev, ....); after macro expansion, which means two
pointer dereferences and taking an address of the result (I'm wondering how
smart the compiler can get if such a pattern repeats several times in a
function).
3) Maybe the amount of various messages is too large in the first place
and should be reduced before any unifications?
Regards,
Andrzej