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()
555 struct fw_address_handler *handler = container_of(kref, struct fw_address_handler, kref); in complete_address_handler() local
557 complete(&handler->done); in complete_address_handler()
560 static void get_address_handler(struct fw_address_handler *handler) in get_address_handler() argument
562 kref_get(&handler->kref); in get_address_handler()
565 static int put_address_handler(struct fw_address_handler *handler) in put_address_handler() argument
567 return kref_put(&handler->kref, complete_address_handler); in put_address_handler()
590 int fw_core_add_address_handler(struct fw_address_handler *handler, in fw_core_add_address_handler() argument
599 handler->length & 3 || in fw_core_add_address_handler()
600 handler->length == 0) in fw_core_add_address_handler()
605 handler->offset = region->start; in fw_core_add_address_handler()
606 while (handler->offset + handler->length <= region->end) { in fw_core_add_address_handler()
607 if (is_in_fcp_region(handler->offset, handler->length)) in fw_core_add_address_handler()
612 handler->offset, handler->length); in fw_core_add_address_handler()
614 handler->offset += other->length; in fw_core_add_address_handler()
616 init_completion(&handler->done); in fw_core_add_address_handler()
617 kref_init(&handler->kref); in fw_core_add_address_handler()
618 list_add_tail_rcu(&handler->link, &address_handler_list); in fw_core_add_address_handler()
637 void fw_core_remove_address_handler(struct fw_address_handler *handler) in fw_core_remove_address_handler() argument
640 list_del_rcu(&handler->link); in fw_core_remove_address_handler()
644 if (!put_address_handler(handler)) in fw_core_remove_address_handler()
645 wait_for_completion(&handler->done); in fw_core_remove_address_handler()
926 struct fw_address_handler *handler; in handle_exclusive_region_request() local
936 handler = lookup_enclosing_address_handler(&address_handler_list, offset, in handle_exclusive_region_request()
938 if (handler) in handle_exclusive_region_request()
939 get_address_handler(handler); in handle_exclusive_region_request()
942 if (!handler) { in handle_exclusive_region_request()
948 handler->address_callback(card, request, tcode, destination, source, p->generation, offset, in handle_exclusive_region_request()
949 request->data, request->length, handler->callback_data); in handle_exclusive_region_request()
950 put_address_handler(handler); in handle_exclusive_region_request()
962 struct fw_address_handler *handler, **handlers; in handle_fcp_region_request() local
988 list_for_each_entry_rcu(handler, &address_handler_list, link) { in handle_fcp_region_request()
989 if (is_enclosing_handler(handler, offset, request->length)) { in handle_fcp_region_request()
1016 get_address_handler(handler); in handle_fcp_region_request()
1017 handlers[count++] = handler; in handle_fcp_region_request()
1023 handler = handlers[i]; in handle_fcp_region_request()
1024 handler->address_callback(card, request, tcode, destination, source, in handle_fcp_region_request()
1026 request->length, handler->callback_data); in handle_fcp_region_request()
1027 put_address_handler(handler); in handle_fcp_region_request()