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/kref.h>
  18#include <linux/ktime.h>
  19#include <linux/list.h>
  20#include <linux/spinlock.h>
  21#include <linux/fence.h>
  22
  23struct sync_file_cb {
  24        struct fence_cb cb;
  25        struct fence *fence;
  26        struct sync_file *sync_file;
  27};
  28
  29/**
  30 * struct sync_file - sync file to export to the userspace
  31 * @file:               file representing this fence
  32 * @kref:               reference count on fence.
  33 * @name:               name of sync_file.  Useful for debugging
  34 * @sync_file_list:     membership in global file list
  35 * @num_fences:         number of sync_pts in the fence
  36 * @wq:                 wait queue for fence signaling
  37 * @status:             0: signaled, >0:active, <0: error
  38 * @cbs:                sync_pts callback information
  39 */
  40struct sync_file {
  41        struct file             *file;
  42        struct kref             kref;
  43        char                    name[32];
  44#ifdef CONFIG_DEBUG_FS
  45        struct list_head        sync_file_list;
  46#endif
  47        int num_fences;
  48
  49        wait_queue_head_t       wq;
  50        atomic_t                status;
  51
  52        struct sync_file_cb     cbs[];
  53};
  54
  55struct sync_file *sync_file_create(struct fence *fence);
  56
  57#endif /* _LINUX_SYNC_H */
  58