#include "etnaviv_priv.h"
#include "etnaviv_drmif.h"
-pthread_mutex_t etna_drm_table_lock = PTHREAD_MUTEX_INITIALIZER;
+simple_mtx_t etna_drm_table_lock = _SIMPLE_MTX_INITIALIZER_NP;
void _etna_bo_del(struct etna_bo *bo);
/* set buffer name, and add to table, call w/ etna_drm_table_lock held: */
if (ret)
return NULL;
- pthread_mutex_lock(&etna_drm_table_lock);
+ simple_mtx_lock(&etna_drm_table_lock);
bo = bo_from_handle(dev, size, req.handle, flags);
bo->reuse = 1;
- pthread_mutex_unlock(&etna_drm_table_lock);
+ simple_mtx_unlock(&etna_drm_table_lock);
VG_BO_ALLOC(bo);
.name = name,
};
- pthread_mutex_lock(&etna_drm_table_lock);
+ simple_mtx_lock(&etna_drm_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(&etna_drm_table_lock);
+ simple_mtx_unlock(&etna_drm_table_lock);
return bo;
}
* racing against etna_bo_del, which might invalidate the
* returned handle.
*/
- pthread_mutex_lock(&etna_drm_table_lock);
+ simple_mtx_lock(&etna_drm_table_lock);
ret = drmPrimeFDToHandle(dev->fd, fd, &handle);
if (ret) {
- pthread_mutex_unlock(&etna_drm_table_lock);
+ simple_mtx_unlock(&etna_drm_table_lock);
return NULL;
}
VG_BO_ALLOC(bo);
out_unlock:
- pthread_mutex_unlock(&etna_drm_table_lock);
+ simple_mtx_unlock(&etna_drm_table_lock);
return bo;
}
struct etna_device *dev = bo->dev;
- pthread_mutex_lock(&etna_drm_table_lock);
+ simple_mtx_lock(&etna_drm_table_lock);
/* Must test under table lock to avoid racing with the from_dmabuf/name
* paths, which rely on the BO refcount to be stable over the lookup, so
_etna_bo_del(bo);
etna_device_del_locked(dev);
out:
- pthread_mutex_unlock(&etna_drm_table_lock);
+ simple_mtx_unlock(&etna_drm_table_lock);
}
/* get the global flink/DRI2 buffer name */
return ret;
}
- pthread_mutex_lock(&etna_drm_table_lock);
+ simple_mtx_lock(&etna_drm_table_lock);
set_name(bo, req.name);
- pthread_mutex_unlock(&etna_drm_table_lock);
+ simple_mtx_unlock(&etna_drm_table_lock);
bo->reuse = 0;
}
#include "etnaviv_drmif.h"
#include "etnaviv_priv.h"
-static pthread_mutex_t idx_lock = PTHREAD_MUTEX_INITIALIZER;
+static simple_mtx_t idx_lock = _SIMPLE_MTX_INITIALIZER_NP;
static void *grow(void *ptr, uint32_t nr, uint32_t *max, uint32_t sz)
{
struct etna_cmd_stream_priv *priv = etna_cmd_stream_priv(stream);
uint32_t idx;
- pthread_mutex_lock(&idx_lock);
+ simple_mtx_lock(&idx_lock);
if (bo->current_stream == stream) {
idx = bo->idx;
bo->current_stream = stream;
bo->idx = idx;
}
- pthread_mutex_unlock(&idx_lock);
+ simple_mtx_unlock(&idx_lock);
if (flags & ETNA_RELOC_READ)
priv->submit.bos[idx].flags |= ETNA_SUBMIT_BO_READ;