int ioctl_decode(struct tcb *tcp, long code, long arg) { switch ((code >> 8) & 0xff) { #if defined(ALPHA) || defined(POWERPC) case 'f': case 't': case 'T': #else /* !ALPHA */ case 0x54: #endif /* !ALPHA */ return term_ioctl(tcp, code, arg); case 0x89: return sock_ioctl(tcp, code, arg); case 'p': return rtc_ioctl(tcp, code, arg); case 0x03: case 0x12: return block_ioctl(tcp, code, arg); case 0x22: return scsi_ioctl(tcp, code, arg); case 'L': return loop_ioctl(tcp, code, arg); case 'M': return mtd_ioctl(tcp, code, arg); default: break; } return 0; }
static int ioctl_decode(struct tcb *tcp) { const unsigned int code = tcp->u_arg[1]; const long arg = tcp->u_arg[2]; switch (_IOC_TYPE(code)) { #if defined(ALPHA) || defined(POWERPC) case 'f': case 't': case 'T': #else /* !ALPHA */ case 0x54: #endif /* !ALPHA */ return term_ioctl(tcp, code, arg); case 0x89: return sock_ioctl(tcp, code, arg); case 'p': return rtc_ioctl(tcp, code, arg); case 0x03: case 0x12: case 'X': return block_ioctl(tcp, code, arg); #ifdef HAVE_SCSI_SG_H case 0x22: return scsi_ioctl(tcp, code, arg); #endif case 'L': return loop_ioctl(tcp, code, arg); case 'M': return mtd_ioctl(tcp, code, arg); case 'o': case 'O': return ubi_ioctl(tcp, code, arg); case 'V': return v4l2_ioctl(tcp, code, arg); case '=': return ptp_ioctl(tcp, code, arg); #ifdef HAVE_LINUX_INPUT_H case 'E': return evdev_ioctl(tcp, code, arg); #endif default: break; } return 0; }
static int ioctl_decode(struct tcb *tcp) { const unsigned int code = tcp->u_arg[1]; const kernel_ulong_t arg = tcp->u_arg[2]; switch (_IOC_TYPE(code)) { #if defined(ALPHA) || defined(POWERPC) case 'f': { int ret = file_ioctl(tcp, code, arg); if (ret != RVAL_DECODED) return ret; } case 't': case 'T': return term_ioctl(tcp, code, arg); #else /* !ALPHA */ case 'f': return file_ioctl(tcp, code, arg); case 0x54: #endif /* !ALPHA */ return term_ioctl(tcp, code, arg); case 0x89: return sock_ioctl(tcp, code, arg); case 'p': return rtc_ioctl(tcp, code, arg); case 0x03: return hdio_ioctl(tcp, code, arg); case 0x12: return block_ioctl(tcp, code, arg); case 'X': return fs_x_ioctl(tcp, code, arg); case 0x22: return scsi_ioctl(tcp, code, arg); case 'L': return loop_ioctl(tcp, code, arg); case 'M': return mtd_ioctl(tcp, code, arg); case 'o': case 'O': return ubi_ioctl(tcp, code, arg); case 'V': return v4l2_ioctl(tcp, code, arg); case '=': return ptp_ioctl(tcp, code, arg); #ifdef HAVE_LINUX_INPUT_H case 'E': return evdev_ioctl(tcp, code, arg); #endif #ifdef HAVE_LINUX_USERFAULTFD_H case 0xaa: return uffdio_ioctl(tcp, code, arg); #endif #ifdef HAVE_LINUX_BTRFS_H case 0x94: return btrfs_ioctl(tcp, code, arg); #endif #ifdef HAVE_LINUX_DM_IOCTL_H case 0xfd: return dm_ioctl(tcp, code, arg); #endif default: break; } return 0; }