diff options
Diffstat (limited to 'include/linux/sync_file.h')
-rw-r--r-- | include/linux/sync_file.h | 62 |
1 files changed, 62 insertions, 0 deletions
diff --git a/include/linux/sync_file.h b/include/linux/sync_file.h new file mode 100644 index 000000000..790ca0212 --- /dev/null +++ b/include/linux/sync_file.h @@ -0,0 +1,62 @@ +/* + * 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 */ |