Lines Matching refs:waiter

1042 static inline bool is_waiting(struct omap_gem_sync_waiter *waiter)  in is_waiting()  argument
1044 struct omap_gem_object *omap_obj = waiter->omap_obj; in is_waiting()
1045 if ((waiter->op & OMAP_GEM_READ) && in is_waiting()
1046 (omap_obj->sync->write_complete < waiter->write_target)) in is_waiting()
1048 if ((waiter->op & OMAP_GEM_WRITE) && in is_waiting()
1049 (omap_obj->sync->read_complete < waiter->read_target)) in is_waiting()
1064 struct omap_gem_sync_waiter *waiter, *n; in sync_op_update() local
1065 list_for_each_entry_safe(waiter, n, &waiters, list) { in sync_op_update()
1066 if (!is_waiting(waiter)) { in sync_op_update()
1067 list_del(&waiter->list); in sync_op_update()
1068 SYNC("notify: %p", waiter); in sync_op_update()
1069 waiter->notify(waiter->arg); in sync_op_update()
1070 kfree(waiter); in sync_op_update()
1150 struct omap_gem_sync_waiter *waiter = in omap_gem_op_sync() local
1151 kzalloc(sizeof(*waiter), GFP_KERNEL); in omap_gem_op_sync()
1153 if (!waiter) in omap_gem_op_sync()
1156 waiter->omap_obj = omap_obj; in omap_gem_op_sync()
1157 waiter->op = op; in omap_gem_op_sync()
1158 waiter->read_target = omap_obj->sync->read_pending; in omap_gem_op_sync()
1159 waiter->write_target = omap_obj->sync->write_pending; in omap_gem_op_sync()
1160 waiter->notify = sync_notify; in omap_gem_op_sync()
1161 waiter->arg = &waiter_task; in omap_gem_op_sync()
1164 if (is_waiting(waiter)) { in omap_gem_op_sync()
1165 SYNC("waited: %p", waiter); in omap_gem_op_sync()
1166 list_add_tail(&waiter->list, &waiters); in omap_gem_op_sync()
1172 SYNC("interrupted: %p", waiter); in omap_gem_op_sync()
1174 list_del(&waiter->list); in omap_gem_op_sync()
1178 waiter = NULL; in omap_gem_op_sync()
1182 kfree(waiter); in omap_gem_op_sync()
1201 struct omap_gem_sync_waiter *waiter = in omap_gem_op_async() local
1202 kzalloc(sizeof(*waiter), GFP_ATOMIC); in omap_gem_op_async()
1204 if (!waiter) in omap_gem_op_async()
1207 waiter->omap_obj = omap_obj; in omap_gem_op_async()
1208 waiter->op = op; in omap_gem_op_async()
1209 waiter->read_target = omap_obj->sync->read_pending; in omap_gem_op_async()
1210 waiter->write_target = omap_obj->sync->write_pending; in omap_gem_op_async()
1211 waiter->notify = fxn; in omap_gem_op_async()
1212 waiter->arg = arg; in omap_gem_op_async()
1215 if (is_waiting(waiter)) { in omap_gem_op_async()
1216 SYNC("waited: %p", waiter); in omap_gem_op_async()
1217 list_add_tail(&waiter->list, &waiters); in omap_gem_op_async()
1224 kfree(waiter); in omap_gem_op_async()