linux/include/linux/sync_file.h
<<
>>
Prefs
   1/*
   2 * include/linux/sync_file.h
   3 *
   4 * Copyright (C) 2012 Google, Inc.
   5 *
   6 * This program is distributed in the hope that it will be useful,
   7 * but WITHOUT ANY WARRANTY; without even the implied warranty of
   8 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
   9 * GNU General Public License for more details.
  10 *
  11 */
  12
  13#ifndef _LINUX_SYNC_FILE_H
  14#define _LINUX_SYNC_FILE_H
  15
  16#include <linux/types.h>
  17#include <linux/ktime.h>
  18#include <linux/list.h>
  19#include <linux/spinlock.h>
  20#include <linux/dma-fence.h>
  21#include <linux/dma-fence-array.h>
  22
  23/**
  24 * struct sync_file - sync file to export to the userspace
  25 * @file:               file representing this fence
  26 * @sync_file_list:     membership in global file list
  27 * @wq:                 wait queue for fence signaling
  28 * @fence:              fence with the fences in the sync_file
  29 * @cb:                 fence callback information
  30 */
  31struct sync_file {
  32        struct file             *file;
  33        /**
  34         * @user_name:
  35         *
  36         * Name of the sync file provided by userspace, for merged fences.
  37         * Otherwise generated through driver callbacks (in which case the
  38         * entire array is 0).
  39         */
  40        char                    user_name[32];
  41#ifdef CONFIG_DEBUG_FS
  42        struct list_head        sync_file_list;
  43#endif
  44
  45        wait_queue_head_t       wq;
  46        unsigned long           flags;
  47
  48        struct dma_fence        *fence;
  49        struct dma_fence_cb cb;
  50};
  51
  52#define POLL_ENABLED 0
  53
  54struct sync_file *sync_file_create(struct dma_fence *fence);
  55struct dma_fence *sync_file_get_fence(int fd);
  56char *sync_file_get_name(struct sync_file *sync_file, char *buf, int len);
  57
  58#endif /* _LINUX_SYNC_H */
  59