linux-headers (unknown)

(root)/
include/
linux/
sync_file.h
       1  /* SPDX-License-Identifier: GPL-1.0+ WITH Linux-syscall-note */
       2  /*
       3   * Copyright (C) 2012 Google, Inc.
       4   *
       5   * This program is distributed in the hope that it will be useful,
       6   * but WITHOUT ANY WARRANTY; without even the implied warranty of
       7   * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
       8   * GNU General Public License for more details.
       9   *
      10   */
      11  
      12  #ifndef _LINUX_SYNC_H
      13  #define _LINUX_SYNC_H
      14  
      15  #include <linux/ioctl.h>
      16  #include <linux/types.h>
      17  
      18  /**
      19   * struct sync_merge_data - SYNC_IOC_MERGE: merge two fences
      20   * @name:	name of new fence
      21   * @fd2:	file descriptor of second fence
      22   * @fence:	returns the fd of the new fence to userspace
      23   * @flags:	merge_data flags
      24   * @pad:	padding for 64-bit alignment, should always be zero
      25   *
      26   * Creates a new fence containing copies of the sync_pts in both
      27   * the calling fd and sync_merge_data.fd2.  Returns the new fence's
      28   * fd in sync_merge_data.fence
      29   */
      30  struct sync_merge_data {
      31  	char	name[32];
      32  	__s32	fd2;
      33  	__s32	fence;
      34  	__u32	flags;
      35  	__u32	pad;
      36  };
      37  
      38  /**
      39   * struct sync_fence_info - detailed fence information
      40   * @obj_name:		name of parent sync_timeline
      41   * @driver_name:	name of driver implementing the parent
      42   * @status:		status of the fence 0:active 1:signaled <0:error
      43   * @flags:		fence_info flags
      44   * @timestamp_ns:	timestamp of status change in nanoseconds
      45   */
      46  struct sync_fence_info {
      47  	char	obj_name[32];
      48  	char	driver_name[32];
      49  	__s32	status;
      50  	__u32	flags;
      51  	__u64	timestamp_ns;
      52  };
      53  
      54  /**
      55   * struct sync_file_info - SYNC_IOC_FILE_INFO: get detailed information on a sync_file
      56   * @name:	name of fence
      57   * @status:	status of fence. 1: signaled 0:active <0:error
      58   * @flags:	sync_file_info flags
      59   * @num_fences	number of fences in the sync_file
      60   * @pad:	padding for 64-bit alignment, should always be zero
      61   * @sync_fence_info: pointer to array of struct &sync_fence_info with all
      62   *		 fences in the sync_file
      63   *
      64   * Takes a struct sync_file_info. If num_fences is 0, the field is updated
      65   * with the actual number of fences. If num_fences is > 0, the system will
      66   * use the pointer provided on sync_fence_info to return up to num_fences of
      67   * struct sync_fence_info, with detailed fence information.
      68   */
      69  struct sync_file_info {
      70  	char	name[32];
      71  	__s32	status;
      72  	__u32	flags;
      73  	__u32	num_fences;
      74  	__u32	pad;
      75  
      76  	__u64	sync_fence_info;
      77  };
      78  
      79  #define SYNC_IOC_MAGIC		'>'
      80  
      81  /*
      82   * Opcodes  0, 1 and 2 were burned during a API change to avoid users of the
      83   * old API to get weird errors when trying to handling sync_files. The API
      84   * change happened during the de-stage of the Sync Framework when there was
      85   * no upstream users available.
      86   */
      87  
      88  #define SYNC_IOC_MERGE		_IOWR(SYNC_IOC_MAGIC, 3, struct sync_merge_data)
      89  #define SYNC_IOC_FILE_INFO	_IOWR(SYNC_IOC_MAGIC, 4, struct sync_file_info)
      90  
      91  #endif /* _LINUX_SYNC_H */