blob: a9488d2f153acd6ef6b4d09b35096a43f6954347 [file] [log] [blame]
# Copyright 2019 syzkaller project authors. All rights reserved.
# Use of this source code is governed by Apache 2 LICENSE that can be found in the LICENSE file.
include <uapi/asm/ioctl.h>
include <uapi/linux/hiddev.h>
resource fd_hiddev[fd]
syz_open_dev$hiddev(dev ptr[in, string["/dev/usb/hiddev#"]], id intptr, flags flags[open_flags]) fd_hiddev
read$hiddev(fd fd_hiddev, data buffer[out], len bytesize[data])
# https://elixir.bootlin.com/linux/v5.1.7/source/include/uapi/linux/hiddev.h#L155
ioctl$HIDIOCGVERSION(fd fd_hiddev, cmd const[HIDIOCGVERSION], arg ptr[out, int32])
ioctl$HIDIOCAPPLICATION(fd fd_hiddev, cmd const[HIDIOCAPPLICATION], arg int32)
ioctl$HIDIOCGDEVINFO(fd fd_hiddev, cmd const[HIDIOCGDEVINFO], arg buffer[out])
ioctl$HIDIOCGSTRING(fd fd_hiddev, cmd const[HIDIOCGSTRING], arg ptr[inout, hiddev_ioctl_string_arg])
ioctl$HIDIOCINITREPORT(fd fd_hiddev, cmd const[HIDIOCINITREPORT], arg const[0])
ioctl$HIDIOCGNAME(fd fd_hiddev, cmd const[HIDIOCGNAME64], arg ptr[out, array[int8, 64]])
ioctl$HIDIOCGREPORT(fd fd_hiddev, cmd const[HIDIOCGREPORT], arg ptr[in, hiddev_report_info])
ioctl$HIDIOCSREPORT(fd fd_hiddev, cmd const[HIDIOCSREPORT], arg ptr[in, hiddev_report_info])
ioctl$HIDIOCGREPORTINFO(fd fd_hiddev, cmd const[HIDIOCGREPORTINFO], arg ptr[inout, hiddev_report_info])
ioctl$HIDIOCGFIELDINFO(fd fd_hiddev, cmd const[HIDIOCGFIELDINFO], arg ptr[inout, hiddev_field_info])
ioctl$HIDIOCGUSAGE(fd fd_hiddev, cmd const[HIDIOCGUSAGE], arg ptr[inout, hiddev_usage_ref])
ioctl$HIDIOCSUSAGE(fd fd_hiddev, cmd const[HIDIOCSUSAGE], arg ptr[in, hiddev_usage_ref])
ioctl$HIDIOCGUCODE(fd fd_hiddev, cmd const[HIDIOCGUCODE], arg ptr[inout, hiddev_usage_ref])
ioctl$HIDIOCGFLAG(fd fd_hiddev, cmd const[HIDIOCGFLAG], arg ptr[out, int32])
ioctl$HIDIOCSFLAG(fd fd_hiddev, cmd const[HIDIOCSFLAG], arg ptr[in, flags[hiddev_flags, int32]])
ioctl$HIDIOCGCOLLECTIONINDEX(fd fd_hiddev, cmd const[HIDIOCGCOLLECTIONINDEX], arg ptr[in, hiddev_usage_ref])
ioctl$HIDIOCGCOLLECTIONINFO(fd fd_hiddev, cmd const[HIDIOCGCOLLECTIONINFO], arg ptr[inout, hiddev_collection_info])
ioctl$HIDIOCGPHYS(fd fd_hiddev, cmd const[HIDIOCGPHYS64], arg ptr[out, array[int8, 64]])
ioctl$HIDIOCGUSAGES(fd fd_hiddev, cmd const[HIDIOCGUSAGES], arg ptr[inout, hiddev_usage_ref_multi])
ioctl$HIDIOCSUSAGES(fd fd_hiddev, cmd const[HIDIOCSUSAGES], arg ptr[in, hiddev_usage_ref_multi])
hiddev_ioctl_string_arg {
idx len[data, int32]
data array[int8]
}
hiddev_report_info {
report_type int32[HID_REPORT_TYPE_MIN:HID_REPORT_TYPE_MAX]
report_id flags[hid_report_ids, int32]
num_fields int32
}
hiddev_field_info {
report_type int32[HID_REPORT_TYPE_MIN:HID_REPORT_TYPE_MAX]
report_id flags[hid_report_ids, int32]
field_index int32
maxusage int32
flags int32
physical int32
logical int32
application int32
logical_minimum int32
logical_maximum int32
physical_minimum int32
physical_maximum int32
unit_exponent int32
unit int32
}
hiddev_collection_info {
index int32
type int32
usage int32
level int32
}
hiddev_usage_ref {
report_type int32[HID_REPORT_TYPE_MIN:HID_REPORT_TYPE_MAX]
report_id flags[hid_report_ids, int32]
field_index int32
usage_index int32
usage_code int32
value int32
}
hiddev_usage_ref_multi {
uref hiddev_usage_ref
num_values int32[0:HID_MAX_MULTI_USAGES]
values array[int32, HID_MAX_MULTI_USAGES]
}
hiddev_flags = HIDDEV_FLAG_UREF, HIDDEV_FLAG_REPORT, HIDDEV_FLAGS
hid_report_ids = 1, 2, 3, HID_REPORT_ID_UNKNOWN, HID_REPORT_ID_FIRST, HID_REPORT_ID_NEXT
define HIDIOCGNAME64 HIDIOCGNAME(64)
define HIDIOCGPHYS64 HIDIOCGPHYS(64)