Lines Matching refs:handler
491 struct fw_address_handler *handler; in lookup_overlapping_address_handler() local
493 list_for_each_entry_rcu(handler, list, link) { in lookup_overlapping_address_handler()
494 if (handler->offset < offset + length && in lookup_overlapping_address_handler()
495 offset < handler->offset + handler->length) in lookup_overlapping_address_handler()
496 return handler; in lookup_overlapping_address_handler()
502 static bool is_enclosing_handler(struct fw_address_handler *handler, in is_enclosing_handler() argument
505 return handler->offset <= offset && in is_enclosing_handler()
506 offset + length <= handler->offset + handler->length; in is_enclosing_handler()
512 struct fw_address_handler *handler; in lookup_enclosing_address_handler() local
514 list_for_each_entry_rcu(handler, list, link) { in lookup_enclosing_address_handler()
515 if (is_enclosing_handler(handler, offset, length)) in lookup_enclosing_address_handler()
516 return handler; in lookup_enclosing_address_handler()
567 int fw_core_add_address_handler(struct fw_address_handler *handler, in fw_core_add_address_handler() argument
576 handler->length & 3 || in fw_core_add_address_handler()
577 handler->length == 0) in fw_core_add_address_handler()
582 handler->offset = region->start; in fw_core_add_address_handler()
583 while (handler->offset + handler->length <= region->end) { in fw_core_add_address_handler()
584 if (is_in_fcp_region(handler->offset, handler->length)) in fw_core_add_address_handler()
589 handler->offset, handler->length); in fw_core_add_address_handler()
591 handler->offset += other->length; in fw_core_add_address_handler()
593 list_add_tail_rcu(&handler->link, &address_handler_list); in fw_core_add_address_handler()
613 void fw_core_remove_address_handler(struct fw_address_handler *handler) in fw_core_remove_address_handler() argument
616 list_del_rcu(&handler->link); in fw_core_remove_address_handler()
843 struct fw_address_handler *handler; in handle_exclusive_region_request() local
853 handler = lookup_enclosing_address_handler(&address_handler_list, in handle_exclusive_region_request()
855 if (handler) in handle_exclusive_region_request()
856 handler->address_callback(card, request, in handle_exclusive_region_request()
860 handler->callback_data); in handle_exclusive_region_request()
863 if (!handler) in handle_exclusive_region_request()
872 struct fw_address_handler *handler; in handle_fcp_region_request() local
895 list_for_each_entry_rcu(handler, &address_handler_list, link) { in handle_fcp_region_request()
896 if (is_enclosing_handler(handler, offset, request->length)) in handle_fcp_region_request()
897 handler->address_callback(card, NULL, tcode, in handle_fcp_region_request()
902 handler->callback_data); in handle_fcp_region_request()