reservation: add support for fences to enable cross-device synchronisation
Signed-off-by: Maarten Lankhorst <maarten.lankhorst@canonical.com> Acked-by: Sumit Semwal <sumit.semwal@linaro.org> Acked-by: Daniel Vetter <daniel@ffwll.ch> Reviewed-by: Rob Clark <robdclark@gmail.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
0f0d8406fb
commit
0ba6b8fb91
1 changed files with 19 additions and 1 deletions
|
@ -6,7 +6,7 @@
|
|||
* Copyright (C) 2012 Texas Instruments
|
||||
*
|
||||
* Authors:
|
||||
* Rob Clark <rob.clark@linaro.org>
|
||||
* Rob Clark <robdclark@gmail.com>
|
||||
* Maarten Lankhorst <maarten.lankhorst@canonical.com>
|
||||
* Thomas Hellstrom <thellstrom-at-vmware-dot-com>
|
||||
*
|
||||
|
@ -40,22 +40,40 @@
|
|||
#define _LINUX_RESERVATION_H
|
||||
|
||||
#include <linux/ww_mutex.h>
|
||||
#include <linux/fence.h>
|
||||
#include <linux/slab.h>
|
||||
|
||||
extern struct ww_class reservation_ww_class;
|
||||
|
||||
struct reservation_object {
|
||||
struct ww_mutex lock;
|
||||
|
||||
struct fence *fence_excl;
|
||||
struct fence **fence_shared;
|
||||
u32 fence_shared_count, fence_shared_max;
|
||||
};
|
||||
|
||||
static inline void
|
||||
reservation_object_init(struct reservation_object *obj)
|
||||
{
|
||||
ww_mutex_init(&obj->lock, &reservation_ww_class);
|
||||
|
||||
obj->fence_shared_count = obj->fence_shared_max = 0;
|
||||
obj->fence_shared = NULL;
|
||||
obj->fence_excl = NULL;
|
||||
}
|
||||
|
||||
static inline void
|
||||
reservation_object_fini(struct reservation_object *obj)
|
||||
{
|
||||
int i;
|
||||
|
||||
if (obj->fence_excl)
|
||||
fence_put(obj->fence_excl);
|
||||
for (i = 0; i < obj->fence_shared_count; ++i)
|
||||
fence_put(obj->fence_shared[i]);
|
||||
kfree(obj->fence_shared);
|
||||
|
||||
ww_mutex_destroy(&obj->lock);
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue