提交 5e28e009 编写于 作者: M Mauro Carvalho Chehab

V4L/DVB (7558): videobuf: Improve command output for debug purposes

Signed-off-by: NMauro Carvalho Chehab <mchehab@infradead.org>
上级 e9e6040d
...@@ -1632,6 +1632,7 @@ static int ivtv_v4l2_do_ioctl(struct inode *inode, struct file *filp, ...@@ -1632,6 +1632,7 @@ static int ivtv_v4l2_do_ioctl(struct inode *inode, struct file *filp,
if (ivtv_debug & IVTV_DBGFLG_IOCTL) { if (ivtv_debug & IVTV_DBGFLG_IOCTL) {
printk(KERN_INFO "ivtv%d ioctl: ", itv->num); printk(KERN_INFO "ivtv%d ioctl: ", itv->num);
v4l_printk_ioctl(cmd); v4l_printk_ioctl(cmd);
printk("\n");
} }
return ivtv_debug_ioctls(filp, cmd, arg); return ivtv_debug_ioctls(filp, cmd, arg);
...@@ -1675,6 +1676,7 @@ static int ivtv_v4l2_do_ioctl(struct inode *inode, struct file *filp, ...@@ -1675,6 +1676,7 @@ static int ivtv_v4l2_do_ioctl(struct inode *inode, struct file *filp,
if (ivtv_debug & IVTV_DBGFLG_IOCTL) { if (ivtv_debug & IVTV_DBGFLG_IOCTL) {
printk(KERN_INFO "ivtv%d ioctl: ", itv->num); printk(KERN_INFO "ivtv%d ioctl: ", itv->num);
v4l_printk_ioctl(cmd); v4l_printk_ioctl(cmd);
printk("\n");
} }
return ivtv_v4l2_ioctls(itv, filp, cmd, arg); return ivtv_v4l2_ioctls(itv, filp, cmd, arg);
...@@ -1688,6 +1690,7 @@ static int ivtv_v4l2_do_ioctl(struct inode *inode, struct file *filp, ...@@ -1688,6 +1690,7 @@ static int ivtv_v4l2_do_ioctl(struct inode *inode, struct file *filp,
if (ivtv_debug & IVTV_DBGFLG_IOCTL) { if (ivtv_debug & IVTV_DBGFLG_IOCTL) {
printk(KERN_INFO "ivtv%d ioctl: ", itv->num); printk(KERN_INFO "ivtv%d ioctl: ", itv->num);
v4l_printk_ioctl(cmd); v4l_printk_ioctl(cmd);
printk("\n");
} }
return ivtv_control_ioctls(itv, cmd, arg); return ivtv_control_ioctls(itv, cmd, arg);
......
...@@ -351,8 +351,10 @@ int pwc_video_do_ioctl(struct inode *inode, struct file *file, ...@@ -351,8 +351,10 @@ int pwc_video_do_ioctl(struct inode *inode, struct file *file,
return -EFAULT; return -EFAULT;
#ifdef CONFIG_USB_PWC_DEBUG #ifdef CONFIG_USB_PWC_DEBUG
if (PWC_DEBUG_LEVEL_IOCTL & pwc_trace) if (PWC_DEBUG_LEVEL_IOCTL & pwc_trace) {
v4l_printk_ioctl(cmd); v4l_printk_ioctl(cmd);
printk("\n");
}
#endif #endif
......
...@@ -18,9 +18,9 @@ ...@@ -18,9 +18,9 @@
#define dbgarg(cmd, fmt, arg...) \ #define dbgarg(cmd, fmt, arg...) \
if (vfd->debug & V4L2_DEBUG_IOCTL_ARG) { \ if (vfd->debug & V4L2_DEBUG_IOCTL_ARG) { \
printk (KERN_DEBUG "%s: ", vfd->name); \ printk(KERN_DEBUG "%s: ", vfd->name); \
v4l_printk_ioctl(cmd); \ v4l_printk_ioctl(cmd); \
printk (KERN_DEBUG "%s: " fmt, vfd->name, ## arg); \ printk(" " fmt, ## arg); \
} }
#define dbgarg2(fmt, arg...) \ #define dbgarg2(fmt, arg...) \
...@@ -378,38 +378,45 @@ static const char *v4l2_int_ioctls[] = { ...@@ -378,38 +378,45 @@ static const char *v4l2_int_ioctls[] = {
external ioctl messages as well as internal V4L ioctl */ external ioctl messages as well as internal V4L ioctl */
void v4l_printk_ioctl(unsigned int cmd) void v4l_printk_ioctl(unsigned int cmd)
{ {
char *dir; char *dir, *type;
switch (_IOC_DIR(cmd)) {
case _IOC_NONE: dir = "--"; break;
case _IOC_READ: dir = "r-"; break;
case _IOC_WRITE: dir = "-w"; break;
case _IOC_READ | _IOC_WRITE: dir = "rw"; break;
default: dir = "*ERR*"; break;
}
switch (_IOC_TYPE(cmd)) { switch (_IOC_TYPE(cmd)) {
case 'd': case 'd':
printk("v4l2_int ioctl %s, dir=%s (0x%08x)\n", if (_IOC_NR(cmd) >= V4L2_INT_IOCTLS) {
(_IOC_NR(cmd) < V4L2_INT_IOCTLS) ? type = "v4l2_int";
v4l2_int_ioctls[_IOC_NR(cmd)] : "UNKNOWN", dir, cmd); break;
break; }
printk("%s", v4l2_int_ioctls[_IOC_NR(cmd)]);
return;
#ifdef CONFIG_VIDEO_V4L1_COMPAT #ifdef CONFIG_VIDEO_V4L1_COMPAT
case 'v': case 'v':
printk("v4l1 ioctl %s, dir=%s (0x%08x)\n", if (_IOC_NR(cmd) >= V4L1_IOCTLS) {
(_IOC_NR(cmd) < V4L1_IOCTLS) ? type = "v4l1";
v4l1_ioctls[_IOC_NR(cmd)] : "UNKNOWN", dir, cmd); break;
break; }
printk("%s", v4l1_ioctls[_IOC_NR(cmd)]);
return;
#endif #endif
case 'V': case 'V':
printk("v4l2 ioctl %s, dir=%s (0x%08x)\n", if (_IOC_NR(cmd) >= V4L2_IOCTLS) {
(_IOC_NR(cmd) < V4L2_IOCTLS) ? type = "v4l2";
v4l2_ioctls[_IOC_NR(cmd)] : "UNKNOWN", dir, cmd); break;
break; }
printk("%s", v4l2_ioctls[_IOC_NR(cmd)]);
return;
default: default:
printk("unknown ioctl '%c', dir=%s, #%d (0x%08x)\n", type = "unknown";
_IOC_TYPE(cmd), dir, _IOC_NR(cmd), cmd); }
switch (_IOC_DIR(cmd)) {
case _IOC_NONE: dir = "--"; break;
case _IOC_READ: dir = "r-"; break;
case _IOC_WRITE: dir = "-w"; break;
case _IOC_READ | _IOC_WRITE: dir = "rw"; break;
default: dir = "*ERR*"; break;
} }
printk("%s ioctl '%c', dir=%s, #%d (0x%08x)",
type, _IOC_TYPE(cmd), dir, _IOC_NR(cmd), cmd);
} }
EXPORT_SYMBOL(v4l_printk_ioctl); EXPORT_SYMBOL(v4l_printk_ioctl);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册