Lines Matching refs:handler
502 struct fw_address_handler *handler; in lookup_overlapping_address_handler() local
504 list_for_each_entry_rcu(handler, list, link) { in lookup_overlapping_address_handler()
505 if (handler->offset < offset + length && in lookup_overlapping_address_handler()
506 offset < handler->offset + handler->length) in lookup_overlapping_address_handler()
507 return handler; in lookup_overlapping_address_handler()
513 static bool is_enclosing_handler(struct fw_address_handler *handler, in is_enclosing_handler() argument
516 return handler->offset <= offset && in is_enclosing_handler()
517 offset + length <= handler->offset + handler->length; in is_enclosing_handler()
523 struct fw_address_handler *handler; in lookup_enclosing_address_handler() local
525 list_for_each_entry_rcu(handler, list, link) { in lookup_enclosing_address_handler()
526 if (is_enclosing_handler(handler, offset, length)) in lookup_enclosing_address_handler()
527 return handler; in lookup_enclosing_address_handler()
572 int fw_core_add_address_handler(struct fw_address_handler *handler, in fw_core_add_address_handler() argument
581 handler->length & 3 || in fw_core_add_address_handler()
582 handler->length == 0) in fw_core_add_address_handler()
587 handler->offset = region->start; in fw_core_add_address_handler()
588 while (handler->offset + handler->length <= region->end) { in fw_core_add_address_handler()
589 if (is_in_fcp_region(handler->offset, handler->length)) in fw_core_add_address_handler()
594 handler->offset, handler->length); in fw_core_add_address_handler()
596 handler->offset += other->length; in fw_core_add_address_handler()
598 list_add_tail_rcu(&handler->link, &address_handler_list); in fw_core_add_address_handler()
617 void fw_core_remove_address_handler(struct fw_address_handler *handler) in fw_core_remove_address_handler() argument
620 list_del_rcu(&handler->link); in fw_core_remove_address_handler()
903 struct fw_address_handler *handler; in handle_exclusive_region_request() local
913 handler = lookup_enclosing_address_handler(&address_handler_list, offset, in handle_exclusive_region_request()
915 if (handler) in handle_exclusive_region_request()
916 handler->address_callback(card, request, tcode, destination, source, in handle_exclusive_region_request()
918 request->length, handler->callback_data); in handle_exclusive_region_request()
921 if (!handler) in handle_exclusive_region_request()
930 struct fw_address_handler *handler; in handle_fcp_region_request() local
953 list_for_each_entry_rcu(handler, &address_handler_list, link) { in handle_fcp_region_request()
954 if (is_enclosing_handler(handler, offset, request->length)) in handle_fcp_region_request()
955 handler->address_callback(card, request, tcode, destination, source, in handle_fcp_region_request()
957 request->length, handler->callback_data); in handle_fcp_region_request()