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 * @flags:              flags for the sync_file
  29 * @fence:              fence with the fences in the sync_file
  30 * @cb:                 fence callback information
  31 *
  32 * flags:
  33 * POLL_ENABLED: whether userspace is currently poll()'ing or not
  34 */
  35struct sync_file {
  36        struct file             *file;
  37        /**
  38         * @user_name:
  39         *
  40         * Name of the sync file provided by userspace, for merged fences.
  41         * Otherwise generated through driver callbacks (in which case the
  42         * entire array is 0).
  43         */
  44        char                    user_name[32];
  45#ifdef CONFIG_DEBUG_FS
  46        struct list_head        sync_file_list;
  47#endif
  48
  49        wait_queue_head_t       wq;
  50        unsigned long           flags;
  51
  52        struct dma_fence        *fence;
  53        struct dma_fence_cb cb;
  54};
  55
  56#define POLL_ENABLED 0
  57
  58struct sync_file *sync_file_create(struct dma_fence *fence);
  59struct dma_fence *sync_file_get_fence(int fd);
  60char *sync_file_get_name(struct sync_file *sync_file, char *buf, int len);
  61
  62#endif /* _LINUX_SYNC_H */
  63