Lines Matching refs:syncobj
167 struct sim_syncobj *syncobj = calloc(1, sizeof(*syncobj));
168 if (!syncobj)
171 mtx_init(&syncobj->mutex, mtx_plain);
172 syncobj->pending_fd = -1;
202 (const void *)(uintptr_t)syncobj_handle, syncobj);
212 struct sim_syncobj *syncobj = NULL;
219 syncobj = entry->data;
226 if (syncobj) {
227 if (syncobj->pending_fd >= 0)
228 close(syncobj->pending_fd);
229 mtx_destroy(&syncobj->mutex);
230 free(syncobj);
255 sim_syncobj_set_point_locked(struct sim_syncobj *syncobj, uint64_t point)
257 syncobj->point = point;
259 if (syncobj->pending_fd >= 0) {
260 close(syncobj->pending_fd);
261 syncobj->pending_fd = -1;
262 syncobj->pending_point = point;
267 sim_syncobj_update_point_locked(struct sim_syncobj *syncobj, int poll_timeout)
269 if (syncobj->pending_fd >= 0) {
271 if (syncobj->pending_cpu) {
275 result = sim_syncobj_poll(syncobj->pending_fd, poll_timeout);
282 result = sim_syncobj_poll(syncobj->pending_fd, poll_timeout);
285 result = sim_syncobj_poll(syncobj->pending_fd, poll_timeout);
288 close(syncobj->pending_fd);
289 syncobj->pending_fd = -1;
290 syncobj->point = syncobj->pending_point;
298 struct sim_syncobj *syncobj = NULL;
304 syncobj = entry->data;
307 return syncobj;
313 struct sim_syncobj *syncobj = sim_syncobj_lookup(gpu, syncobj_handle);
314 if (!syncobj)
317 mtx_lock(&syncobj->mutex);
318 sim_syncobj_set_point_locked(syncobj, 0);
319 mtx_unlock(&syncobj->mutex);
329 struct sim_syncobj *syncobj = sim_syncobj_lookup(gpu, syncobj_handle);
330 if (!syncobj)
333 mtx_lock(&syncobj->mutex);
334 sim_syncobj_update_point_locked(syncobj, 0);
335 *point = syncobj->point;
336 mtx_unlock(&syncobj->mutex);
346 struct sim_syncobj *syncobj = sim_syncobj_lookup(gpu, syncobj_handle);
347 if (!syncobj)
350 mtx_lock(&syncobj->mutex);
351 sim_syncobj_set_point_locked(syncobj, point);
352 mtx_unlock(&syncobj->mutex);
364 struct sim_syncobj *syncobj = sim_syncobj_lookup(gpu, syncobj_handle);
365 if (!syncobj)
374 mtx_lock(&syncobj->mutex);
376 if (syncobj->pending_fd >= 0) {
377 mtx_unlock(&syncobj->mutex);
384 if (syncobj->point >= point)
387 syncobj->pending_fd = pending_fd;
388 syncobj->pending_point = point;
389 syncobj->pending_cpu = cpu;
391 mtx_unlock(&syncobj->mutex);
421 struct sim_syncobj *syncobj =
423 if (!syncobj)
426 mtx_lock(&syncobj->mutex);
428 if (syncobj->point < point)
429 sim_syncobj_update_point_locked(syncobj, poll_timeout);
431 if (syncobj->point < point) {
433 syncobj->pending_fd < 0) {
434 mtx_unlock(&syncobj->mutex);
438 mtx_unlock(&syncobj->mutex);
442 mtx_unlock(&syncobj->mutex);
456 struct sim_syncobj *syncobj = sim_syncobj_lookup(gpu, syncobj_handle);
457 if (!syncobj)
461 mtx_lock(&syncobj->mutex);
462 if (syncobj->pending_fd >= 0)
463 fd = dup(syncobj->pending_fd);
466 mtx_unlock(&syncobj->mutex);
474 struct sim_syncobj *syncobj = sim_syncobj_lookup(gpu, syncobj_handle);
475 if (!syncobj)