From ace9429bb58fd418f0c81d4c2835699bddf6bde6 Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Thu, 11 Apr 2024 10:27:49 +0200 Subject: Adding upstream version 6.6.15. Signed-off-by: Daniel Baumann --- drivers/dma-buf/sync_debug.h | 72 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 72 insertions(+) create mode 100644 drivers/dma-buf/sync_debug.h (limited to 'drivers/dma-buf/sync_debug.h') diff --git a/drivers/dma-buf/sync_debug.h b/drivers/dma-buf/sync_debug.h new file mode 100644 index 0000000000..6176e52ba2 --- /dev/null +++ b/drivers/dma-buf/sync_debug.h @@ -0,0 +1,72 @@ +/* + * Sync File validation framework and debug infomation + * + * 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_H +#define _LINUX_SYNC_H + +#include +#include +#include +#include + +#include +#include + +/** + * struct sync_timeline - sync object + * @kref: reference count on fence. + * @name: name of the sync_timeline. Useful for debugging + * @lock: lock protecting @pt_list and @value + * @pt_tree: rbtree of active (unsignaled/errored) sync_pts + * @pt_list: list of active (unsignaled/errored) sync_pts + * @sync_timeline_list: membership in global sync_timeline_list + */ +struct sync_timeline { + struct kref kref; + char name[32]; + + /* protected by lock */ + u64 context; + int value; + + struct rb_root pt_tree; + struct list_head pt_list; + spinlock_t lock; + + struct list_head sync_timeline_list; +}; + +static inline struct sync_timeline *dma_fence_parent(struct dma_fence *fence) +{ + return container_of(fence->lock, struct sync_timeline, lock); +} + +/** + * struct sync_pt - sync_pt object + * @base: base fence object + * @link: link on the sync timeline's list + * @node: node in the sync timeline's tree + */ +struct sync_pt { + struct dma_fence base; + struct list_head link; + struct rb_node node; +}; + +extern const struct file_operations sw_sync_debugfs_fops; + +void sync_timeline_debug_add(struct sync_timeline *obj); +void sync_timeline_debug_remove(struct sync_timeline *obj); +void sync_file_debug_add(struct sync_file *fence); +void sync_file_debug_remove(struct sync_file *fence); + +#endif /* _LINUX_SYNC_H */ -- cgit v1.2.3