xref: /aosp_15_r20/external/mesa3d/include/drm-uapi/sync_file.h (revision 6104692788411f58d303aa86923a9ff6ecaded22)
1*61046927SAndroid Build Coastguard Worker /* SPDX-License-Identifier: GPL-1.0+ WITH Linux-syscall-note */
2*61046927SAndroid Build Coastguard Worker /*
3*61046927SAndroid Build Coastguard Worker  * Copyright (C) 2012 Google, Inc.
4*61046927SAndroid Build Coastguard Worker  *
5*61046927SAndroid Build Coastguard Worker  * This program is distributed in the hope that it will be useful,
6*61046927SAndroid Build Coastguard Worker  * but WITHOUT ANY WARRANTY; without even the implied warranty of
7*61046927SAndroid Build Coastguard Worker  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
8*61046927SAndroid Build Coastguard Worker  * GNU General Public License for more details.
9*61046927SAndroid Build Coastguard Worker  *
10*61046927SAndroid Build Coastguard Worker  */
11*61046927SAndroid Build Coastguard Worker 
12*61046927SAndroid Build Coastguard Worker #ifndef _UAPI_LINUX_SYNC_H
13*61046927SAndroid Build Coastguard Worker #define _UAPI_LINUX_SYNC_H
14*61046927SAndroid Build Coastguard Worker 
15*61046927SAndroid Build Coastguard Worker #if defined(__linux__)
16*61046927SAndroid Build Coastguard Worker 
17*61046927SAndroid Build Coastguard Worker #include <linux/ioctl.h>
18*61046927SAndroid Build Coastguard Worker #include <linux/types.h>
19*61046927SAndroid Build Coastguard Worker 
20*61046927SAndroid Build Coastguard Worker #else /* One of the BSDs */
21*61046927SAndroid Build Coastguard Worker 
22*61046927SAndroid Build Coastguard Worker #include <stdint.h>
23*61046927SAndroid Build Coastguard Worker #include <sys/types.h>
24*61046927SAndroid Build Coastguard Worker #include <sys/ioccom.h>
25*61046927SAndroid Build Coastguard Worker 
26*61046927SAndroid Build Coastguard Worker typedef int8_t   __s8;
27*61046927SAndroid Build Coastguard Worker typedef uint8_t  __u8;
28*61046927SAndroid Build Coastguard Worker typedef int16_t  __s16;
29*61046927SAndroid Build Coastguard Worker typedef uint16_t __u16;
30*61046927SAndroid Build Coastguard Worker typedef int32_t  __s32;
31*61046927SAndroid Build Coastguard Worker typedef uint32_t __u32;
32*61046927SAndroid Build Coastguard Worker typedef int64_t  __s64;
33*61046927SAndroid Build Coastguard Worker typedef uint64_t __u64;
34*61046927SAndroid Build Coastguard Worker 
35*61046927SAndroid Build Coastguard Worker #endif
36*61046927SAndroid Build Coastguard Worker 
37*61046927SAndroid Build Coastguard Worker /**
38*61046927SAndroid Build Coastguard Worker  * struct sync_merge_data - data passed to merge ioctl
39*61046927SAndroid Build Coastguard Worker  * @name:	name of new fence
40*61046927SAndroid Build Coastguard Worker  * @fd2:	file descriptor of second fence
41*61046927SAndroid Build Coastguard Worker  * @fence:	returns the fd of the new fence to userspace
42*61046927SAndroid Build Coastguard Worker  * @flags:	merge_data flags
43*61046927SAndroid Build Coastguard Worker  * @pad:	padding for 64-bit alignment, should always be zero
44*61046927SAndroid Build Coastguard Worker  */
45*61046927SAndroid Build Coastguard Worker struct sync_merge_data {
46*61046927SAndroid Build Coastguard Worker 	char	name[32];
47*61046927SAndroid Build Coastguard Worker 	__s32	fd2;
48*61046927SAndroid Build Coastguard Worker 	__s32	fence;
49*61046927SAndroid Build Coastguard Worker 	__u32	flags;
50*61046927SAndroid Build Coastguard Worker 	__u32	pad;
51*61046927SAndroid Build Coastguard Worker };
52*61046927SAndroid Build Coastguard Worker 
53*61046927SAndroid Build Coastguard Worker /**
54*61046927SAndroid Build Coastguard Worker  * struct sync_fence_info - detailed fence information
55*61046927SAndroid Build Coastguard Worker  * @obj_name:		name of parent sync_timeline
56*61046927SAndroid Build Coastguard Worker * @driver_name:	name of driver implementing the parent
57*61046927SAndroid Build Coastguard Worker * @status:		status of the fence 0:active 1:signaled <0:error
58*61046927SAndroid Build Coastguard Worker  * @flags:		fence_info flags
59*61046927SAndroid Build Coastguard Worker  * @timestamp_ns:	timestamp of status change in nanoseconds
60*61046927SAndroid Build Coastguard Worker  */
61*61046927SAndroid Build Coastguard Worker struct sync_fence_info {
62*61046927SAndroid Build Coastguard Worker 	char	obj_name[32];
63*61046927SAndroid Build Coastguard Worker 	char	driver_name[32];
64*61046927SAndroid Build Coastguard Worker 	__s32	status;
65*61046927SAndroid Build Coastguard Worker 	__u32	flags;
66*61046927SAndroid Build Coastguard Worker 	__u64	timestamp_ns;
67*61046927SAndroid Build Coastguard Worker };
68*61046927SAndroid Build Coastguard Worker 
69*61046927SAndroid Build Coastguard Worker /**
70*61046927SAndroid Build Coastguard Worker  * struct sync_file_info - data returned from fence info ioctl
71*61046927SAndroid Build Coastguard Worker  * @name:	name of fence
72*61046927SAndroid Build Coastguard Worker  * @status:	status of fence. 1: signaled 0:active <0:error
73*61046927SAndroid Build Coastguard Worker  * @flags:	sync_file_info flags
74*61046927SAndroid Build Coastguard Worker  * @num_fences	number of fences in the sync_file
75*61046927SAndroid Build Coastguard Worker  * @pad:	padding for 64-bit alignment, should always be zero
76*61046927SAndroid Build Coastguard Worker  * @sync_fence_info: pointer to array of structs sync_fence_info with all
77*61046927SAndroid Build Coastguard Worker  *		 fences in the sync_file
78*61046927SAndroid Build Coastguard Worker  */
79*61046927SAndroid Build Coastguard Worker struct sync_file_info {
80*61046927SAndroid Build Coastguard Worker 	char	name[32];
81*61046927SAndroid Build Coastguard Worker 	__s32	status;
82*61046927SAndroid Build Coastguard Worker 	__u32	flags;
83*61046927SAndroid Build Coastguard Worker 	__u32	num_fences;
84*61046927SAndroid Build Coastguard Worker 	__u32	pad;
85*61046927SAndroid Build Coastguard Worker 
86*61046927SAndroid Build Coastguard Worker 	__u64	sync_fence_info;
87*61046927SAndroid Build Coastguard Worker };
88*61046927SAndroid Build Coastguard Worker 
89*61046927SAndroid Build Coastguard Worker #define SYNC_IOC_MAGIC		'>'
90*61046927SAndroid Build Coastguard Worker 
91*61046927SAndroid Build Coastguard Worker /**
92*61046927SAndroid Build Coastguard Worker  * Opcodes  0, 1 and 2 were burned during a API change to avoid users of the
93*61046927SAndroid Build Coastguard Worker  * old API to get weird errors when trying to handling sync_files. The API
94*61046927SAndroid Build Coastguard Worker  * change happened during the de-stage of the Sync Framework when there was
95*61046927SAndroid Build Coastguard Worker  * no upstream users available.
96*61046927SAndroid Build Coastguard Worker  */
97*61046927SAndroid Build Coastguard Worker 
98*61046927SAndroid Build Coastguard Worker /**
99*61046927SAndroid Build Coastguard Worker  * DOC: SYNC_IOC_MERGE - merge two fences
100*61046927SAndroid Build Coastguard Worker  *
101*61046927SAndroid Build Coastguard Worker  * Takes a struct sync_merge_data.  Creates a new fence containing copies of
102*61046927SAndroid Build Coastguard Worker  * the sync_pts in both the calling fd and sync_merge_data.fd2.  Returns the
103*61046927SAndroid Build Coastguard Worker  * new fence's fd in sync_merge_data.fence
104*61046927SAndroid Build Coastguard Worker  */
105*61046927SAndroid Build Coastguard Worker #define SYNC_IOC_MERGE		_IOWR(SYNC_IOC_MAGIC, 3, struct sync_merge_data)
106*61046927SAndroid Build Coastguard Worker 
107*61046927SAndroid Build Coastguard Worker /**
108*61046927SAndroid Build Coastguard Worker  * DOC: SYNC_IOC_FILE_INFO - get detailed information on a sync_file
109*61046927SAndroid Build Coastguard Worker  *
110*61046927SAndroid Build Coastguard Worker  * Takes a struct sync_file_info. If num_fences is 0, the field is updated
111*61046927SAndroid Build Coastguard Worker  * with the actual number of fences. If num_fences is > 0, the system will
112*61046927SAndroid Build Coastguard Worker  * use the pointer provided on sync_fence_info to return up to num_fences of
113*61046927SAndroid Build Coastguard Worker  * struct sync_fence_info, with detailed fence information.
114*61046927SAndroid Build Coastguard Worker  */
115*61046927SAndroid Build Coastguard Worker #define SYNC_IOC_FILE_INFO	_IOWR(SYNC_IOC_MAGIC, 4, struct sync_file_info)
116*61046927SAndroid Build Coastguard Worker 
117*61046927SAndroid Build Coastguard Worker #endif /* _UAPI_LINUX_SYNC_H */
118