aboutsummaryrefslogtreecommitdiffstats
path: root/sys/linux/dev_sw_sync.txt
blob: 249a6c86a8308549f9d9af11ffa6c510b00f55f8 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
# Copyright 2022 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/linux/sync_file.h>
include <uapi/asm/ioctl.h>
include <uapi/linux/fcntl.h>

resource fd_sync_file[fd]
resource fd_sw_sync[fd]

openat$sw_sync_info(fd const[AT_FDCWD], file ptr[in, string["/sys/kernel/debug/sync/info"]], flags flags[open_flags], mode const[0]) fd
openat$sw_sync(fd const[AT_FDCWD], file ptr[in, string["/sys/kernel/debug/sync/sw_sync"]], flags flags[open_flags], mode const[0]) fd_sw_sync

ioctl$SW_SYNC_IOC_CREATE_FENCE(fd fd_sw_sync, cmd const[SW_SYNC_IOC_CREATE_FENCE], arg ptr[inout, sw_sync_create_fence_data])
ioctl$SW_SYNC_IOC_INC(fd fd_sw_sync, cmd const[SW_SYNC_IOC_INC], arg ptr[in, int32])

ioctl$SYNC_IOC_MERGE(fd fd_sync_file, cmd const[SYNC_IOC_MERGE], arg ptr[inout, sync_merge_data])
ioctl$SYNC_IOC_FILE_INFO(fd fd_sync_file, cmd const[SYNC_IOC_FILE_INFO], arg ptr[inout, sync_file_info])

define SW_SYNC_IOC_CREATE_FENCE	_IOWR('W', 0, struct{__u32 value; char name[32]; __s32 fence;})
define SW_SYNC_IOC_INC	_IOW('W', 1, __u32)

sw_sync_create_fence_data {
	value	int32	(in)
	name	array[int8, 32]	(in)
	fence	fd_sync_file	(out)
}

sync_merge_data {
	name	array[int8, 32]	(in)
	fd2	fd_sync_file	(in)
	fence	fd_sync_file	(out)
	flags	const[0, int32]
	pad	const[0, int32]
}

sync_file_info {
	name		array[int8, 32]	(out)
	status		int32	(out)
	flags		int32	(out)
	num_fences	len[sync_fence_info, int32]	(in)
	pad		const[0, int32]
	sync_fence_info	ptr64[out, array[sync_fence_info]]
}

sync_fence_info {
	name		array[int8, 32]
	driver_name	array[int8, 32]
	status		int32
	flags		int32
	timestamp_ns	int64
}