USB: serial: add macro for console error reporting

Add macro which prints an error message only once if port is used a
console.

Reporting errors in a write path when port is used as a console could
otherwise result in an infinite loop.

Signed-off-by: Johan Hovold <jhovold@gmail.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
Johan Hovold 2012-02-06 19:22:19 +01:00 committed by Greg Kroah-Hartman
parent d35e70d50a
commit e688355bfe
1 changed files with 15 additions and 0 deletions

View File

@ -389,5 +389,20 @@ do { \
printk(KERN_DEBUG "%s: " format "\n", __FILE__, ##arg); \ printk(KERN_DEBUG "%s: " format "\n", __FILE__, ##arg); \
} while (0) } while (0)
/*
* Macro for reporting errors in write path to avoid inifinite loop
* when port is used as a console.
*/
#define dev_err_console(usport, fmt, ...) \
do { \
static bool __print_once; \
struct usb_serial_port *__port = (usport); \
\
if (!__port->port.console || !__print_once) { \
__print_once = true; \
dev_err(&__port->dev, fmt, ##__VA_ARGS__); \
} \
} while (0)
#endif /* __LINUX_USB_SERIAL_H */ #endif /* __LINUX_USB_SERIAL_H */