Lines Matching refs:waiter
1040 static inline bool is_waiting(struct omap_gem_sync_waiter *waiter) in is_waiting() argument
1042 struct omap_gem_object *omap_obj = waiter->omap_obj; in is_waiting()
1043 if ((waiter->op & OMAP_GEM_READ) && in is_waiting()
1044 (omap_obj->sync->write_complete < waiter->write_target)) in is_waiting()
1046 if ((waiter->op & OMAP_GEM_WRITE) && in is_waiting()
1047 (omap_obj->sync->read_complete < waiter->read_target)) in is_waiting()
1062 struct omap_gem_sync_waiter *waiter, *n; in sync_op_update() local
1063 list_for_each_entry_safe(waiter, n, &waiters, list) { in sync_op_update()
1064 if (!is_waiting(waiter)) { in sync_op_update()
1065 list_del(&waiter->list); in sync_op_update()
1066 SYNC("notify: %p", waiter); in sync_op_update()
1067 waiter->notify(waiter->arg); in sync_op_update()
1068 kfree(waiter); in sync_op_update()
1148 struct omap_gem_sync_waiter *waiter = in omap_gem_op_sync() local
1149 kzalloc(sizeof(*waiter), GFP_KERNEL); in omap_gem_op_sync()
1151 if (!waiter) in omap_gem_op_sync()
1154 waiter->omap_obj = omap_obj; in omap_gem_op_sync()
1155 waiter->op = op; in omap_gem_op_sync()
1156 waiter->read_target = omap_obj->sync->read_pending; in omap_gem_op_sync()
1157 waiter->write_target = omap_obj->sync->write_pending; in omap_gem_op_sync()
1158 waiter->notify = sync_notify; in omap_gem_op_sync()
1159 waiter->arg = &waiter_task; in omap_gem_op_sync()
1162 if (is_waiting(waiter)) { in omap_gem_op_sync()
1163 SYNC("waited: %p", waiter); in omap_gem_op_sync()
1164 list_add_tail(&waiter->list, &waiters); in omap_gem_op_sync()
1170 SYNC("interrupted: %p", waiter); in omap_gem_op_sync()
1172 list_del(&waiter->list); in omap_gem_op_sync()
1176 waiter = NULL; in omap_gem_op_sync()
1180 kfree(waiter); in omap_gem_op_sync()
1199 struct omap_gem_sync_waiter *waiter = in omap_gem_op_async() local
1200 kzalloc(sizeof(*waiter), GFP_ATOMIC); in omap_gem_op_async()
1202 if (!waiter) in omap_gem_op_async()
1205 waiter->omap_obj = omap_obj; in omap_gem_op_async()
1206 waiter->op = op; in omap_gem_op_async()
1207 waiter->read_target = omap_obj->sync->read_pending; in omap_gem_op_async()
1208 waiter->write_target = omap_obj->sync->write_pending; in omap_gem_op_async()
1209 waiter->notify = fxn; in omap_gem_op_async()
1210 waiter->arg = arg; in omap_gem_op_async()
1213 if (is_waiting(waiter)) { in omap_gem_op_async()
1214 SYNC("waited: %p", waiter); in omap_gem_op_async()
1215 list_add_tail(&waiter->list, &waiters); in omap_gem_op_async()
1222 kfree(waiter); in omap_gem_op_async()