Lines Matching refs:event
275 struct gameport_event *event = NULL; in gameport_get_event() local
281 event = list_first_entry(&gameport_event_list, in gameport_get_event()
283 list_del_init(&event->node); in gameport_get_event()
287 return event; in gameport_get_event()
290 static void gameport_free_event(struct gameport_event *event) in gameport_free_event() argument
292 module_put(event->owner); in gameport_free_event()
293 kfree(event); in gameport_free_event()
296 static void gameport_remove_duplicate_events(struct gameport_event *event) in gameport_remove_duplicate_events() argument
304 if (event->object == e->object) { in gameport_remove_duplicate_events()
310 if (event->type != e->type) in gameport_remove_duplicate_events()
324 struct gameport_event *event; in gameport_handle_events() local
334 if ((event = gameport_get_event())) { in gameport_handle_events()
336 switch (event->type) { in gameport_handle_events()
339 gameport_add_port(event->object); in gameport_handle_events()
343 gameport_attach_driver(event->object); in gameport_handle_events()
347 gameport_remove_duplicate_events(event); in gameport_handle_events()
348 gameport_free_event(event); in gameport_handle_events()
360 struct gameport_event *event; in gameport_queue_event() local
372 list_for_each_entry_reverse(event, &gameport_event_list, node) { in gameport_queue_event()
373 if (event->object == object) { in gameport_queue_event()
374 if (event->type == event_type) in gameport_queue_event()
380 event = kmalloc(sizeof(struct gameport_event), GFP_ATOMIC); in gameport_queue_event()
381 if (!event) { in gameport_queue_event()
390 kfree(event); in gameport_queue_event()
395 event->type = event_type; in gameport_queue_event()
396 event->object = object; in gameport_queue_event()
397 event->owner = owner; in gameport_queue_event()
399 list_add_tail(&event->node, &gameport_event_list); in gameport_queue_event()
413 struct gameport_event *event, *next; in gameport_remove_pending_events() local
418 list_for_each_entry_safe(event, next, &gameport_event_list, node) { in gameport_remove_pending_events()
419 if (event->object == object) { in gameport_remove_pending_events()
420 list_del_init(&event->node); in gameport_remove_pending_events()
421 gameport_free_event(event); in gameport_remove_pending_events()
438 struct gameport_event *event; in gameport_get_pending_child() local
444 list_for_each_entry(event, &gameport_event_list, node) { in gameport_get_pending_child()
445 if (event->type == GAMEPORT_REGISTER_PORT) { in gameport_get_pending_child()
446 gameport = event->object; in gameport_get_pending_child()