|  | /* | 
|  | * include/linux/sync_file.h | 
|  | * | 
|  | * Copyright (C) 2012 Google, Inc. | 
|  | * | 
|  | * This program is distributed in the hope that it will be useful, | 
|  | * but WITHOUT ANY WARRANTY; without even the implied warranty of | 
|  | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | 
|  | * GNU General Public License for more details. | 
|  | * | 
|  | */ | 
|  |  | 
|  | #ifndef _LINUX_SYNC_FILE_H | 
|  | #define _LINUX_SYNC_FILE_H | 
|  |  | 
|  | #include <linux/types.h> | 
|  | #include <linux/ktime.h> | 
|  | #include <linux/list.h> | 
|  | #include <linux/spinlock.h> | 
|  | #include <linux/dma-fence.h> | 
|  | #include <linux/dma-fence-array.h> | 
|  |  | 
|  | /** | 
|  | * struct sync_file - sync file to export to the userspace | 
|  | * @file:		file representing this fence | 
|  | * @sync_file_list:	membership in global file list | 
|  | * @wq:			wait queue for fence signaling | 
|  | * @flags:		flags for the sync_file | 
|  | * @fence:		fence with the fences in the sync_file | 
|  | * @cb:			fence callback information | 
|  | * | 
|  | * flags: | 
|  | * POLL_ENABLED: whether userspace is currently poll()'ing or not | 
|  | */ | 
|  | struct sync_file { | 
|  | struct file		*file; | 
|  | /** | 
|  | * @user_name: | 
|  | * | 
|  | * Name of the sync file provided by userspace, for merged fences. | 
|  | * Otherwise generated through driver callbacks (in which case the | 
|  | * entire array is 0). | 
|  | */ | 
|  | char			user_name[32]; | 
|  | #ifdef CONFIG_DEBUG_FS | 
|  | struct list_head	sync_file_list; | 
|  | #endif | 
|  |  | 
|  | wait_queue_head_t	wq; | 
|  | unsigned long		flags; | 
|  |  | 
|  | struct dma_fence	*fence; | 
|  | struct dma_fence_cb cb; | 
|  | }; | 
|  |  | 
|  | #define POLL_ENABLED 0 | 
|  |  | 
|  | struct sync_file *sync_file_create(struct dma_fence *fence); | 
|  | struct dma_fence *sync_file_get_fence(int fd); | 
|  | char *sync_file_get_name(struct sync_file *sync_file, char *buf, int len); | 
|  |  | 
|  | #endif /* _LINUX_SYNC_H */ |