Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 972526a4 authored by Gustavo Padovan's avatar Gustavo Padovan Committed by Sumit Semwal
Browse files

dma-buf/sync_file: add sync_file_get_fence()



Creates a function that given an sync file descriptor returns a
fence containing all fences in the sync_file.

v2: Comments by Daniel Vetter
	- Adapt to new version of fence_collection_init()
	- Hold a reference for the fence we return

v3:
	- Adapt to use fput() directly
	- rename to sync_file_get_fence() as we always return one fence

v4: Adapt to use fence_array

v5: set fence through fence_get()

Signed-off-by: default avatarGustavo Padovan <gustavo.padovan@collabora.co.uk>
Reviewed-by: default avatarChris Wilson <chris@chris-wilson.co.uk>
Acked-by: default avatarChristian König <christian.koenig@amd.com>
Signed-off-by: default avatarSumit Semwal <sumit.semwal@linaro.org>
parent a02b9dc9
Loading
Loading
Loading
Loading
+23 −0
Original line number Diff line number Diff line
@@ -116,6 +116,29 @@ static struct sync_file *sync_file_fdget(int fd)
	return NULL;
}

/**
 * sync_file_get_fence - get the fence related to the sync_file fd
 * @fd:		sync_file fd to get the fence from
 *
 * Ensures @fd references a valid sync_file and returns a fence that
 * represents all fence in the sync_file. On error NULL is returned.
 */
struct fence *sync_file_get_fence(int fd)
{
	struct sync_file *sync_file;
	struct fence *fence;

	sync_file = sync_file_fdget(fd);
	if (!sync_file)
		return NULL;

	fence = fence_get(sync_file->fence);
	fput(sync_file->file);

	return fence;
}
EXPORT_SYMBOL(sync_file_get_fence);

static int sync_file_set_fence(struct sync_file *sync_file,
			       struct fence **fences, int num_fences)
{
+1 −0
Original line number Diff line number Diff line
@@ -46,5 +46,6 @@ struct sync_file {
};

struct sync_file *sync_file_create(struct fence *fence);
struct fence *sync_file_get_fence(int fd);

#endif /* _LINUX_SYNC_H */