aboutsummaryrefslogtreecommitdiffstats
path: root/sys
diff options
context:
space:
mode:
authorDmitry Vyukov <dvyukov@google.com>2015-11-18 21:22:17 +0100
committerDmitry Vyukov <dvyukov@google.com>2015-11-18 21:22:17 +0100
commit495113290ed28d4debdecb5934a78d0beb722db7 (patch)
tree9661696bb419d22db4a3b8c1f16d95d32f9457aa /sys
parentbe856bc9e484b4ce3fac847b768fbdb95296f178 (diff)
basic support for dri/drm drivers
Diffstat (limited to 'sys')
-rw-r--r--sys/decl.go3
-rw-r--r--sys/sys.go11
-rw-r--r--sys/sys.txt79
3 files changed, 92 insertions, 1 deletions
diff --git a/sys/decl.go b/sys/decl.go
index c5107efe8..cf64a55d8 100644
--- a/sys/decl.go
+++ b/sys/decl.go
@@ -70,6 +70,7 @@ const (
FdInotify
FdFanotify
FdTty
+ FdDRI
IPCMsq
IPCSem
@@ -166,7 +167,7 @@ func (t ResourceType) Size() uintptr {
func (t ResourceType) SubKinds() []ResourceSubkind {
switch t.Kind {
case ResFD:
- return []ResourceSubkind{FdFile, FdSock, FdPipe, FdSignal, FdEvent, FdTimer, FdEpoll, FdDir, FdMq, FdInotify, FdFanotify, FdTty}
+ return []ResourceSubkind{FdFile, FdSock, FdPipe, FdSignal, FdEvent, FdTimer, FdEpoll, FdDir, FdMq, FdInotify, FdFanotify, FdTty, FdDRI}
case ResIPC:
return []ResourceSubkind{IPCMsq, IPCSem, IPCShm}
case ResIOCtx, ResKey, ResInotifyDesc, ResPid, ResUid, ResGid, ResTimerid:
diff --git a/sys/sys.go b/sys/sys.go
index e798c1a4b..6d9f2efbe 100644
--- a/sys/sys.go
+++ b/sys/sys.go
@@ -495,4 +495,15 @@ var Calls = []*Call{
&Call{ID: 490, Name: "ioctl$TIOCLINUX5", CallName: "ioctl", Args: []Type{ResourceType{TypeCommon: TypeCommon{TypeName: "fd", IsOptional: false}, Kind: ResFD, Subkind: FdTty}, ConstType{TypeCommon: TypeCommon{TypeName: "cmd", IsOptional: false}, TypeSize: 0, Val: uintptr(21532)}, PtrType{TypeCommon: TypeCommon{TypeName: "arg", IsOptional: false}, Type: StructType{TypeCommon: TypeCommon{TypeName: "loadlut", IsOptional: false}, Fields: []Type{ConstType{TypeCommon: TypeCommon{TypeName: "submode", IsOptional: false}, TypeSize: 1, Val: uintptr(5)}, IntType{TypeCommon: TypeCommon{TypeName: "pad", IsOptional: false}, TypeSize: 1}, IntType{TypeCommon: TypeCommon{TypeName: "pad", IsOptional: false}, TypeSize: 1}, IntType{TypeCommon: TypeCommon{TypeName: "pad", IsOptional: false}, TypeSize: 1}, IntType{TypeCommon: TypeCommon{TypeName: "tab0", IsOptional: false}, TypeSize: 8}, IntType{TypeCommon: TypeCommon{TypeName: "tab1", IsOptional: false}, TypeSize: 8}, IntType{TypeCommon: TypeCommon{TypeName: "tab2", IsOptional: false}, TypeSize: 8}, IntType{TypeCommon: TypeCommon{TypeName: "tab3", IsOptional: false}, TypeSize: 8}}}, Dir: DirIn}}},
&Call{ID: 491, Name: "ioctl$TIOCLINUX6", CallName: "ioctl", Args: []Type{ResourceType{TypeCommon: TypeCommon{TypeName: "fd", IsOptional: false}, Kind: ResFD, Subkind: FdTty}, ConstType{TypeCommon: TypeCommon{TypeName: "cmd", IsOptional: false}, TypeSize: 0, Val: uintptr(21532)}, PtrType{TypeCommon: TypeCommon{TypeName: "arg", IsOptional: false}, Type: StructType{TypeCommon: TypeCommon{TypeName: "tiocl_shift_state", IsOptional: false}, Fields: []Type{ConstType{TypeCommon: TypeCommon{TypeName: "subcode", IsOptional: false}, TypeSize: 1, Val: uintptr(6)}, IntType{TypeCommon: TypeCommon{TypeName: "shift", IsOptional: false}, TypeSize: 1}}}, Dir: DirIn}}},
&Call{ID: 492, Name: "ioctl$TIOCLINUX7", CallName: "ioctl", Args: []Type{ResourceType{TypeCommon: TypeCommon{TypeName: "fd", IsOptional: false}, Kind: ResFD, Subkind: FdTty}, ConstType{TypeCommon: TypeCommon{TypeName: "cmd", IsOptional: false}, TypeSize: 0, Val: uintptr(21532)}, PtrType{TypeCommon: TypeCommon{TypeName: "arg", IsOptional: false}, Type: StructType{TypeCommon: TypeCommon{TypeName: "tiocl_report_mouse", IsOptional: false}, Fields: []Type{ConstType{TypeCommon: TypeCommon{TypeName: "subcode", IsOptional: false}, TypeSize: 1, Val: uintptr(7)}, IntType{TypeCommon: TypeCommon{TypeName: "shift", IsOptional: false}, TypeSize: 1}}}, Dir: DirIn}}},
+ &Call{ID: 493, Name: "syz_dri_open", CallName: "syz_dri_open", Ret: ResourceType{TypeCommon: TypeCommon{TypeName: "ret", IsOptional: false}, Kind: ResFD, Subkind: FdDRI}, Args: []Type{IntType{TypeCommon: TypeCommon{TypeName: "card_id", IsOptional: false}, TypeSize: 8}, FlagsType{TypeCommon: TypeCommon{TypeName: "flags", IsOptional: false}, TypeSize: 0, Vals: []uintptr{0, 1, 2, 1024, 8192, 524288, 64, 16384, 65536, 128, 0, 262144, 256, 131072, 2048, 2097152, 1052672, 512}}}},
+ &Call{ID: 494, Name: "ioctl$DRM_IOCTL_VERSION", CallName: "ioctl", Args: []Type{ResourceType{TypeCommon: TypeCommon{TypeName: "fd", IsOptional: false}, Kind: ResFD, Subkind: FdDRI}, ConstType{TypeCommon: TypeCommon{TypeName: "cmd", IsOptional: false}, TypeSize: 0, Val: uintptr(3225445376)}, PtrType{TypeCommon: TypeCommon{TypeName: "arg", IsOptional: false}, Type: StructType{TypeCommon: TypeCommon{TypeName: "drm_version", IsOptional: false}, Fields: []Type{IntType{TypeCommon: TypeCommon{TypeName: "maj", IsOptional: false}, TypeSize: 4}, IntType{TypeCommon: TypeCommon{TypeName: "min", IsOptional: false}, TypeSize: 4}, IntType{TypeCommon: TypeCommon{TypeName: "patch", IsOptional: false}, TypeSize: 4}, LenType{TypeCommon: TypeCommon{TypeName: "namelen", IsOptional: false}, Buf: "name", TypeSize: 8}, PtrType{TypeCommon: TypeCommon{TypeName: "name", IsOptional: false}, Dir: DirOut, Type: BufferType{TypeCommon: TypeCommon{TypeName: "name", IsOptional: false}, Kind: BufferBlob}}, LenType{TypeCommon: TypeCommon{TypeName: "datelen", IsOptional: false}, Buf: "date", TypeSize: 8}, PtrType{TypeCommon: TypeCommon{TypeName: "date", IsOptional: false}, Dir: DirOut, Type: BufferType{TypeCommon: TypeCommon{TypeName: "date", IsOptional: false}, Kind: BufferBlob}}, LenType{TypeCommon: TypeCommon{TypeName: "desclen", IsOptional: false}, Buf: "desc", TypeSize: 8}, PtrType{TypeCommon: TypeCommon{TypeName: "desc", IsOptional: false}, Dir: DirOut, Type: BufferType{TypeCommon: TypeCommon{TypeName: "desc", IsOptional: false}, Kind: BufferBlob}}}}, Dir: DirIn}}},
+ &Call{ID: 495, Name: "ioctl$DRM_IOCTL_GET_UNIQUE", CallName: "ioctl", Args: []Type{ResourceType{TypeCommon: TypeCommon{TypeName: "fd", IsOptional: false}, Kind: ResFD, Subkind: FdDRI}, ConstType{TypeCommon: TypeCommon{TypeName: "cmd", IsOptional: false}, TypeSize: 0, Val: uintptr(3222299649)}, PtrType{TypeCommon: TypeCommon{TypeName: "arg", IsOptional: false}, Type: StructType{TypeCommon: TypeCommon{TypeName: "drm_unique", IsOptional: false}, Fields: []Type{LenType{TypeCommon: TypeCommon{TypeName: "len", IsOptional: false}, Buf: "uni", TypeSize: 8}, PtrType{TypeCommon: TypeCommon{TypeName: "uni", IsOptional: false}, Dir: DirOut, Type: BufferType{TypeCommon: TypeCommon{TypeName: "uni", IsOptional: false}, Kind: BufferBlob}}}}, Dir: DirIn}}},
+ &Call{ID: 496, Name: "ioctl$DRM_IOCTL_GET_MAGIC", CallName: "ioctl", Args: []Type{ResourceType{TypeCommon: TypeCommon{TypeName: "fd", IsOptional: false}, Kind: ResFD, Subkind: FdDRI}, ConstType{TypeCommon: TypeCommon{TypeName: "cmd", IsOptional: false}, TypeSize: 0, Val: uintptr(2147771394)}, PtrType{TypeCommon: TypeCommon{TypeName: "arg", IsOptional: false}, Type: IntType{TypeCommon: TypeCommon{TypeName: "", IsOptional: false}, TypeSize: 4}, Dir: DirIn}}},
+ &Call{ID: 497, Name: "ioctl$DRM_IOCTL_IRQ_BUSID", CallName: "ioctl", Args: []Type{ResourceType{TypeCommon: TypeCommon{TypeName: "fd", IsOptional: false}, Kind: ResFD, Subkind: FdDRI}, ConstType{TypeCommon: TypeCommon{TypeName: "cmd", IsOptional: false}, TypeSize: 0, Val: uintptr(3222299651)}, PtrType{TypeCommon: TypeCommon{TypeName: "arg", IsOptional: false}, Type: StructType{TypeCommon: TypeCommon{TypeName: "drm_irq_busid", IsOptional: false}, Fields: []Type{IntType{TypeCommon: TypeCommon{TypeName: "irq", IsOptional: false}, TypeSize: 4}, IntType{TypeCommon: TypeCommon{TypeName: "bus", IsOptional: false}, TypeSize: 4}, IntType{TypeCommon: TypeCommon{TypeName: "dev", IsOptional: false}, TypeSize: 4}, IntType{TypeCommon: TypeCommon{TypeName: "func", IsOptional: false}, TypeSize: 4}}}, Dir: DirIn}}},
+ &Call{ID: 498, Name: "ioctl$DRM_IOCTL_GET_MAP", CallName: "ioctl", Args: []Type{ResourceType{TypeCommon: TypeCommon{TypeName: "fd", IsOptional: false}, Kind: ResFD, Subkind: FdDRI}, ConstType{TypeCommon: TypeCommon{TypeName: "cmd", IsOptional: false}, TypeSize: 0, Val: uintptr(3223872516)}, PtrType{TypeCommon: TypeCommon{TypeName: "arg", IsOptional: false}, Type: StructType{TypeCommon: TypeCommon{TypeName: "drm_map", IsOptional: false}, Fields: []Type{IntType{TypeCommon: TypeCommon{TypeName: "off", IsOptional: false}, TypeSize: 8}, IntType{TypeCommon: TypeCommon{TypeName: "size", IsOptional: false}, TypeSize: 8}, FlagsType{TypeCommon: TypeCommon{TypeName: "type", IsOptional: false}, TypeSize: 4, Vals: []uintptr{0, 1, 2, 3, 4, 5}}, FlagsType{TypeCommon: TypeCommon{TypeName: "flags", IsOptional: false}, TypeSize: 4, Vals: []uintptr{1, 2, 4, 8, 16, 32, 64, 128}}, VmaType{TypeCommon: TypeCommon{TypeName: "handle", IsOptional: false}}, IntType{TypeCommon: TypeCommon{TypeName: "mtrr", IsOptional: false}, TypeSize: 4}}}, Dir: DirIn}}},
+ &Call{ID: 499, Name: "ioctl$DRM_IOCTL_GET_CLIENT", CallName: "ioctl", Args: []Type{ResourceType{TypeCommon: TypeCommon{TypeName: "fd", IsOptional: false}, Kind: ResFD, Subkind: FdDRI}, ConstType{TypeCommon: TypeCommon{TypeName: "cmd", IsOptional: false}, TypeSize: 0, Val: uintptr(3223872517)}, PtrType{TypeCommon: TypeCommon{TypeName: "arg", IsOptional: false}, Type: StructType{TypeCommon: TypeCommon{TypeName: "drm_client", IsOptional: false}, Fields: []Type{IntType{TypeCommon: TypeCommon{TypeName: "idx", IsOptional: false}, TypeSize: 4}, IntType{TypeCommon: TypeCommon{TypeName: "auth", IsOptional: false}, TypeSize: 4}, ResourceType{TypeCommon: TypeCommon{TypeName: "pid", IsOptional: false}, Kind: ResPid}, IntType{TypeCommon: TypeCommon{TypeName: "pid_pad", IsOptional: false}, TypeSize: 4}, ResourceType{TypeCommon: TypeCommon{TypeName: "uid", IsOptional: false}, Kind: ResUid}, IntType{TypeCommon: TypeCommon{TypeName: "uid_pad", IsOptional: false}, TypeSize: 4}, IntType{TypeCommon: TypeCommon{TypeName: "magic", IsOptional: false}, TypeSize: 8}, IntType{TypeCommon: TypeCommon{TypeName: "iocs", IsOptional: false}, TypeSize: 8}}}, Dir: DirIn}}},
+ &Call{ID: 500, Name: "ioctl$DRM_IOCTL_GET_STATS", CallName: "ioctl", Args: []Type{ResourceType{TypeCommon: TypeCommon{TypeName: "fd", IsOptional: false}, Kind: ResFD, Subkind: FdDRI}, ConstType{TypeCommon: TypeCommon{TypeName: "cmd", IsOptional: false}, TypeSize: 0, Val: uintptr(2163762182)}, PtrType{TypeCommon: TypeCommon{TypeName: "arg", IsOptional: false}, Dir: DirOut, Type: BufferType{TypeCommon: TypeCommon{TypeName: "arg", IsOptional: false}, Kind: BufferBlob}}}},
+ &Call{ID: 501, Name: "ioctl$DRM_IOCTL_GET_CAP", CallName: "ioctl", Args: []Type{ResourceType{TypeCommon: TypeCommon{TypeName: "fd", IsOptional: false}, Kind: ResFD, Subkind: FdDRI}, ConstType{TypeCommon: TypeCommon{TypeName: "cmd", IsOptional: false}, TypeSize: 0, Val: uintptr(3222299660)}, PtrType{TypeCommon: TypeCommon{TypeName: "arg", IsOptional: false}, Type: StructType{TypeCommon: TypeCommon{TypeName: "drm_get_cap", IsOptional: false}, Fields: []Type{IntType{TypeCommon: TypeCommon{TypeName: "cap", IsOptional: false}, TypeSize: 8}, IntType{TypeCommon: TypeCommon{TypeName: "val", IsOptional: false}, TypeSize: 8}}}, Dir: DirIn}}},
+ &Call{ID: 502, Name: "ioctl$DRM_IOCTL_SET_CLIENT_CAP", CallName: "ioctl", Args: []Type{ResourceType{TypeCommon: TypeCommon{TypeName: "fd", IsOptional: false}, Kind: ResFD, Subkind: FdDRI}, ConstType{TypeCommon: TypeCommon{TypeName: "cmd", IsOptional: false}, TypeSize: 0, Val: uintptr(1074816013)}, PtrType{TypeCommon: TypeCommon{TypeName: "arg", IsOptional: false}, Type: StructType{TypeCommon: TypeCommon{TypeName: "drm_get_cap", IsOptional: false}, Fields: []Type{IntType{TypeCommon: TypeCommon{TypeName: "cap", IsOptional: false}, TypeSize: 8}, IntType{TypeCommon: TypeCommon{TypeName: "val", IsOptional: false}, TypeSize: 8}}}, Dir: DirIn}}},
+ &Call{ID: 503, Name: "ioctl$DRM_IOCTL_SET_VERSION", CallName: "ioctl", Args: []Type{ResourceType{TypeCommon: TypeCommon{TypeName: "fd", IsOptional: false}, Kind: ResFD, Subkind: FdDRI}, ConstType{TypeCommon: TypeCommon{TypeName: "cmd", IsOptional: false}, TypeSize: 0, Val: uintptr(3222299655)}, PtrType{TypeCommon: TypeCommon{TypeName: "arg", IsOptional: false}, Type: StructType{TypeCommon: TypeCommon{TypeName: "drm_set_version", IsOptional: false}, Fields: []Type{IntType{TypeCommon: TypeCommon{TypeName: "di_maj", IsOptional: false}, TypeSize: 4}, IntType{TypeCommon: TypeCommon{TypeName: "di_min", IsOptional: false}, TypeSize: 4}, IntType{TypeCommon: TypeCommon{TypeName: "dd_maj", IsOptional: false}, TypeSize: 4}, IntType{TypeCommon: TypeCommon{TypeName: "dd_min", IsOptional: false}, TypeSize: 4}}}, Dir: DirIn}}},
}
diff --git a/sys/sys.txt b/sys/sys.txt
index 9ea481d93..6010c6c5f 100644
--- a/sys/sys.txt
+++ b/sys/sys.txt
@@ -78,6 +78,7 @@ include <netinet/in.h>
include <netinet/ip.h>
include <netinet/tcp.h>
include <netinet/udp.h>
+include <drm/drm.h>
@@ -2093,3 +2094,81 @@ tiocl_report_mouse {
subcode const[7, int8]
shift int8
}
+
+
+
+
+# DRI/DRM support
+
+syz_dri_open(card_id intptr, flags flags[open_flags]) fd[dri]
+ioctl$DRM_IOCTL_VERSION(fd fd[dri], cmd const[DRM_IOCTL_VERSION], arg ptr[in, drm_version])
+ioctl$DRM_IOCTL_GET_UNIQUE(fd fd[dri], cmd const[DRM_IOCTL_GET_UNIQUE], arg ptr[in, drm_unique])
+ioctl$DRM_IOCTL_GET_MAGIC(fd fd[dri], cmd const[DRM_IOCTL_GET_MAGIC], arg ptr[in, int32])
+ioctl$DRM_IOCTL_IRQ_BUSID(fd fd[dri], cmd const[DRM_IOCTL_IRQ_BUSID], arg ptr[in, drm_irq_busid])
+ioctl$DRM_IOCTL_GET_MAP(fd fd[dri], cmd const[DRM_IOCTL_GET_MAP], arg ptr[in, drm_map])
+ioctl$DRM_IOCTL_GET_CLIENT(fd fd[dri], cmd const[DRM_IOCTL_GET_CLIENT], arg ptr[in, drm_client])
+ioctl$DRM_IOCTL_GET_STATS(fd fd[dri], cmd const[DRM_IOCTL_GET_STATS], arg buffer[out])
+ioctl$DRM_IOCTL_GET_CAP(fd fd[dri], cmd const[DRM_IOCTL_GET_CAP], arg ptr[in, drm_get_cap])
+ioctl$DRM_IOCTL_SET_CLIENT_CAP(fd fd[dri], cmd const[DRM_IOCTL_SET_CLIENT_CAP], arg ptr[in, drm_get_cap])
+ioctl$DRM_IOCTL_SET_VERSION(fd fd[dri], cmd const[DRM_IOCTL_SET_VERSION], arg ptr[in, drm_set_version])
+
+drm_version {
+ maj int32
+ min int32
+ patch int32
+ namelen len[name, intptr]
+ name buffer[out]
+ datelen len[date, intptr]
+ date buffer[out]
+ desclen len[desc, intptr]
+ desc buffer[out]
+}
+
+drm_unique {
+ len len[uni, intptr]
+ uni buffer[out]
+}
+
+drm_irq_busid {
+ irq int32
+ bus int32
+ dev int32
+ func int32
+}
+
+drm_map {
+ off intptr
+ size intptr
+ type flags[drm_map_type, int32]
+ flags flags[drm_map_flags, int32]
+ handle vma
+ mtrr int32
+}
+
+drm_client {
+ idx int32
+ auth int32
+ pid pid
+# pid is declared is long
+ pid_pad int32
+ uid uid
+# uid is declared is long
+ uid_pad int32
+ magic intptr
+ iocs intptr
+}
+
+drm_get_cap {
+ cap int64
+ val int64
+}
+
+drm_set_version {
+ di_maj int32
+ di_min int32
+ dd_maj int32
+ dd_min int32
+}
+
+drm_map_type = _DRM_FRAME_BUFFER, _DRM_REGISTERS, _DRM_SHM, _DRM_AGP, _DRM_SCATTER_GATHER, _DRM_CONSISTENT
+drm_map_flags = _DRM_RESTRICTED, _DRM_READ_ONLY, _DRM_LOCKED, _DRM_KERNEL, _DRM_WRITE_COMBINING, _DRM_CONTAINS_LOCK, _DRM_REMOVABLE, _DRM_DRIVER