brintos

brintos / linux-shallow public Read only

0
0
Text · 1.9 KiB · a1bdd62 Raw
75 lines · c
1/*2 * Sync File validation framework and debug infomation3 *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 of8 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the9 * GNU General Public License for more details.10 *11 */12 13#ifndef _LINUX_SYNC_H14#define _LINUX_SYNC_H15 16#include <linux/list.h>17#include <linux/rbtree.h>18#include <linux/spinlock.h>19#include <linux/dma-fence.h>20 21#include <linux/sync_file.h>22#include <uapi/linux/sync_file.h>23 24/**25 * struct sync_timeline - sync object26 * @kref:		reference count on fence.27 * @name:		name of the sync_timeline. Useful for debugging28 * @lock:		lock protecting @pt_list and @value29 * @pt_tree:		rbtree of active (unsignaled/errored) sync_pts30 * @pt_list:		list of active (unsignaled/errored) sync_pts31 * @sync_timeline_list:	membership in global sync_timeline_list32 */33struct sync_timeline {34	struct kref		kref;35	char			name[32];36 37	/* protected by lock */38	u64			context;39	int			value;40 41	struct rb_root		pt_tree;42	struct list_head	pt_list;43	spinlock_t		lock;44 45	struct list_head	sync_timeline_list;46};47 48static inline struct sync_timeline *dma_fence_parent(struct dma_fence *fence)49{50	return container_of(fence->lock, struct sync_timeline, lock);51}52 53/**54 * struct sync_pt - sync_pt object55 * @base: base fence object56 * @link: link on the sync timeline's list57 * @node: node in the sync timeline's tree58 * @deadline: the earliest fence deadline hint59 */60struct sync_pt {61	struct dma_fence base;62	struct list_head link;63	struct rb_node node;64	ktime_t deadline;65};66 67extern const struct file_operations sw_sync_debugfs_fops;68 69void sync_timeline_debug_add(struct sync_timeline *obj);70void sync_timeline_debug_remove(struct sync_timeline *obj);71void sync_file_debug_add(struct sync_file *fence);72void sync_file_debug_remove(struct sync_file *fence);73 74#endif /* _LINUX_SYNC_H */75