#include "freedreno_drmif.h"
#include "freedreno_priv.h"
-pthread_mutex_t table_lock = PTHREAD_MUTEX_INITIALIZER;
+simple_mtx_t table_lock = _SIMPLE_MTX_INITIALIZER_NP;
void bo_del(struct fd_bo *bo);
/* set buffer name, and add to table, call w/ table_lock held: */
if (ret)
return NULL;
- pthread_mutex_lock(&table_lock);
+ simple_mtx_lock(&table_lock);
bo = bo_from_handle(dev, size, handle);
- pthread_mutex_unlock(&table_lock);
+ simple_mtx_unlock(&table_lock);
VG_BO_ALLOC(bo);
{
struct fd_bo *bo = NULL;
- pthread_mutex_lock(&table_lock);
+ simple_mtx_lock(&table_lock);
bo = lookup_bo(dev->handle_table, handle);
if (bo)
VG_BO_ALLOC(bo);
out_unlock:
- pthread_mutex_unlock(&table_lock);
+ simple_mtx_unlock(&table_lock);
return bo;
}
uint32_t handle;
struct fd_bo *bo;
- pthread_mutex_lock(&table_lock);
+ simple_mtx_lock(&table_lock);
ret = drmPrimeFDToHandle(dev->fd, fd, &handle);
if (ret) {
- pthread_mutex_unlock(&table_lock);
+ simple_mtx_unlock(&table_lock);
return NULL;
}
VG_BO_ALLOC(bo);
out_unlock:
- pthread_mutex_unlock(&table_lock);
+ simple_mtx_unlock(&table_lock);
return bo;
}
};
struct fd_bo *bo;
- pthread_mutex_lock(&table_lock);
+ simple_mtx_lock(&table_lock);
/* check name table first, to see if bo is already open: */
bo = lookup_bo(dev->name_table, name);
}
out_unlock:
- pthread_mutex_unlock(&table_lock);
+ simple_mtx_unlock(&table_lock);
return bo;
}
if (!atomic_dec_and_test(&bo->refcnt))
return;
- pthread_mutex_lock(&table_lock);
+ simple_mtx_lock(&table_lock);
if ((bo->bo_reuse == BO_CACHE) && (fd_bo_cache_free(&dev->bo_cache, bo) == 0))
goto out;
bo_del(bo);
out:
- pthread_mutex_unlock(&table_lock);
+ simple_mtx_unlock(&table_lock);
}
/* Called under table_lock */
return ret;
}
- pthread_mutex_lock(&table_lock);
+ simple_mtx_lock(&table_lock);
set_name(bo, req.name);
- pthread_mutex_unlock(&table_lock);
+ simple_mtx_unlock(&table_lock);
bo->bo_reuse = NO_CACHE;
}
#include "freedreno_priv.h"
void bo_del(struct fd_bo *bo);
-extern pthread_mutex_t table_lock;
+extern simple_mtx_t table_lock;
static void
add_bucket(struct fd_bo_cache *cache, int size)
* NOTE that intel takes ALLOC_FOR_RENDER bo's from the list tail
* (MRU, since likely to be in GPU cache), rather than head (LRU)..
*/
- pthread_mutex_lock(&table_lock);
+ simple_mtx_lock(&table_lock);
if (!list_is_empty(&bucket->list)) {
bo = LIST_ENTRY(struct fd_bo, bucket->list.next, list);
/* TODO check for compatible flags? */
bo = NULL;
}
}
- pthread_mutex_unlock(&table_lock);
+ simple_mtx_unlock(&table_lock);
return bo;
}
VG_BO_OBTAIN(bo);
if (bo->funcs->madvise(bo, true) <= 0) {
/* we've lost the backing pages, delete and try again: */
- pthread_mutex_lock(&table_lock);
+ simple_mtx_lock(&table_lock);
bo_del(bo);
- pthread_mutex_unlock(&table_lock);
+ simple_mtx_unlock(&table_lock);
goto retry;
}
p_atomic_set(&bo->refcnt, 1);
#include "freedreno_drmif.h"
#include "freedreno_priv.h"
-static pthread_mutex_t table_lock = PTHREAD_MUTEX_INITIALIZER;
+static simple_mtx_t table_lock = _SIMPLE_MTX_INITIALIZER_NP;
struct fd_device * kgsl_device_new(int fd);
struct fd_device * msm_device_new(int fd);
{
if (!atomic_dec_and_test(&dev->refcnt))
return;
- pthread_mutex_lock(&table_lock);
+ simple_mtx_lock(&table_lock);
fd_device_del_impl(dev);
- pthread_mutex_unlock(&table_lock);
+ simple_mtx_unlock(&table_lock);
}
int fd_device_fd(struct fd_device *dev)