Beispiel #1
0
static int
ioctl_decode_command_number(struct tcb *tcp)
{
	const unsigned int code = tcp->u_arg[1];

	switch (_IOC_TYPE(code)) {
		case 'E':
			return evdev_decode_number(code);
		case 'H':
			return hiddev_decode_number(code);
		case 'M':
			if (_IOC_DIR(code) == _IOC_WRITE) {
				tprintf("MIXER_WRITE(%u)", _IOC_NR(code));
				return 1;
			} else if (_IOC_DIR(code) == _IOC_READ) {
				tprintf("MIXER_READ(%u)", _IOC_NR(code));
				return 1;
			}
			return 0;
		case 'U':
			if (_IOC_DIR(code) == _IOC_READ && _IOC_NR(code) == 0x2c) {
				tprintf("UI_GET_SYSNAME(%u)", _IOC_SIZE(code));
				return 1;
			}
			return 0;
		case 'j':
			if (_IOC_DIR(code) == _IOC_READ && _IOC_NR(code) == 0x13) {
				tprintf("JSIOCGNAME(%u)", _IOC_SIZE(code));
				return 1;
			}
			return 0;
		case 'k':
			if (_IOC_DIR(code) == _IOC_WRITE && _IOC_NR(code) == 0) {
				tprintf("SPI_IOC_MESSAGE(%u)", _IOC_SIZE(code));
				return 1;
			}
			return 0;
		default:
			return 0;
	}
}
Beispiel #2
0
int
ioctl_decode_command_number(unsigned int arg)
{
	switch (_IOC_TYPE(arg)) {
		case 'E':
			return evdev_decode_number(arg);
		case 'H':
			return hiddev_decode_number(arg);
		case 'M':
			if (_IOC_DIR(arg) == _IOC_WRITE) {
				tprintf("MIXER_WRITE(%u)", _IOC_NR(arg));
				return 1;
			} else if (_IOC_DIR(arg) == _IOC_READ) {
				tprintf("MIXER_READ(%u)", _IOC_NR(arg));
				return 1;
			}
			return 0;
		case 'U':
			if (_IOC_DIR(arg) == _IOC_READ && _IOC_NR(arg) == 0x2c) {
				tprintf("UI_GET_SYSNAME(%u)", _IOC_SIZE(arg));
				return 1;
			}
			return 0;
		case 'j':
			if (_IOC_DIR(arg) == _IOC_READ && _IOC_NR(arg) == 0x13) {
				tprintf("JSIOCGNAME(%u)", _IOC_SIZE(arg));
				return 1;
			}
			return 0;
		case 'k':
			if (_IOC_DIR(arg) == _IOC_WRITE && _IOC_NR(arg) == 0) {
				tprintf("SPI_IOC_MESSAGE(%u)", _IOC_SIZE(arg));
				return 1;
			}
			return 0;
		default:
			return 0;
	}
}