provider ap {
  /* Explicit, core */
  probe internal__redirect(char *, char *);
  probe process__request__entry(uintptr_t, char *);
  probe process__request__return(uintptr_t, char *, uint32_t);
  probe read__request__entry(uintptr_t, uintptr_t);
  probe read__request__success(uintptr_t, char *, char *, char *, uint32_t);
  probe read__request__failure(uintptr_t);

  /* Explicit, modules */
  probe proxy__run(uintptr_t, uintptr_t, uintptr_t, char *, int);
  probe proxy__run__finished(uintptr_t, int, int);
  probe rewrite__log(uintptr_t, int, int, char *, char *);

  /* Implicit, APR hooks */
  probe access_checker__entry();
  probe access_checker__dispatch__invoke(char *);
  probe access_checker__dispatch__complete(char *, uint32_t);
  probe access_checker__return(uint32_t);
  probe auth_checker__entry();
  probe auth_checker__dispatch__invoke(char *);
  probe auth_checker__dispatch__complete(char *, uint32_t);
  probe auth_checker__return(uint32_t);
  probe check_config__entry();
  probe check_config__dispatch__invoke(char *);
  probe check_config__dispatch__complete(char *, uint32_t);
  probe check_config__return(uint32_t);
  probe check_user_id__entry();
  probe check_user_id__dispatch__invoke(char *);
  probe check_user_id__dispatch__complete(char *, uint32_t);
  probe check_user_id__return(uint32_t);
  probe child_init__entry();
  probe child_init__dispatch__invoke(char *);
  probe child_init__dispatch__complete(char *, uint32_t);
  probe child_init__return(uint32_t);
  probe create_connection__entry();
  probe create_connection__dispatch__invoke(char *);
  probe create_connection__dispatch__complete(char *, uint32_t);
  probe create_connection__return(uint32_t);
  probe create_request__entry();
  probe create_request__dispatch__invoke(char *);
  probe create_request__dispatch__complete(char *, uint32_t);
  probe create_request__return(uint32_t);
  probe default_port__entry();
  probe default_port__dispatch__invoke(char *);
  probe default_port__dispatch__complete(char *, uint32_t);
  probe default_port__return(uint32_t);
  probe drop_privileges__entry();
  probe drop_privileges__dispatch__invoke(char *);
  probe drop_privileges__dispatch__complete(char *, uint32_t);
  probe drop_privileges__return(uint32_t);
  probe error_log__entry();
  probe error_log__dispatch__invoke(char *);
  probe error_log__dispatch__complete(char *, uint32_t);
  probe error_log__return(uint32_t);
  probe fatal_exception__entry();
  probe fatal_exception__dispatch__invoke(char *);
  probe fatal_exception__dispatch__complete(char *, uint32_t);
  probe fatal_exception__return(uint32_t);
  probe fixups__entry();
  probe fixups__dispatch__invoke(char *);
  probe fixups__dispatch__complete(char *, uint32_t);
  probe fixups__return(uint32_t);
  probe get_mgmt_items__entry();
  probe get_mgmt_items__dispatch__invoke(char *);
  probe get_mgmt_items__dispatch__complete(char *, uint32_t);
  probe get_mgmt_items__return(uint32_t);
  probe get_suexec_identity__entry();
  probe get_suexec_identity__dispatch__invoke(char *);
  probe get_suexec_identity__dispatch__complete(char *, uint32_t);
  probe get_suexec_identity__return(uint32_t);
  probe handler__entry();
  probe handler__dispatch__invoke(char *);
  probe handler__dispatch__complete(char *, uint32_t);
  probe handler__return(uint32_t);
  probe header_parser__entry();
  probe header_parser__dispatch__invoke(char *);
  probe header_parser__dispatch__complete(char *, uint32_t);
  probe header_parser__return(uint32_t);
  probe http_scheme__entry();
  probe http_scheme__dispatch__invoke(char *);
  probe http_scheme__dispatch__complete(char *, uint32_t);
  probe http_scheme__return(uint32_t);
  probe insert_error_filter__entry();
  probe insert_error_filter__dispatch__invoke(char *);
  probe insert_error_filter__dispatch__complete(char *, uint32_t);
  probe insert_error_filter__return(uint32_t);
  probe insert_filter__entry();
  probe insert_filter__dispatch__invoke(char *);
  probe insert_filter__dispatch__complete(char *, uint32_t);
  probe insert_filter__return(uint32_t);
  probe log_transaction__entry();
  probe log_transaction__dispatch__invoke(char *);
  probe log_transaction__dispatch__complete(char *, uint32_t);
  probe log_transaction__return(uint32_t);
  probe map_to_storage__entry();
  probe map_to_storage__dispatch__invoke(char *);
  probe map_to_storage__dispatch__complete(char *, uint32_t);
  probe map_to_storage__return(uint32_t);
  probe monitor__entry();
  probe monitor__dispatch__invoke(char *);
  probe monitor__dispatch__complete(char *, uint32_t);
  probe monitor__return(uint32_t);
  probe mpm__entry();
  probe mpm__dispatch__invoke(char *);
  probe mpm__dispatch__complete(char *, uint32_t);
  probe mpm__return(uint32_t);
  probe mpm_get_name__entry();
  probe mpm_get_name__dispatch__invoke(char *);
  probe mpm_get_name__dispatch__complete(char *, uint32_t);
  probe mpm_get_name__return(uint32_t);
  probe mpm_note_child_killed__entry();
  probe mpm_note_child_killed__dispatch__invoke(char *);
  probe mpm_note_child_killed__dispatch__complete(char *, uint32_t);
  probe mpm_note_child_killed__return(uint32_t);
  probe mpm_register_timed_callback__entry();
  probe mpm_register_timed_callback__dispatch__invoke(char *);
  probe mpm_register_timed_callback__dispatch__complete(char *, uint32_t);
  probe mpm_register_timed_callback__return(uint32_t);
  probe mpm_query__entry();
  probe mpm_query__dispatch__invoke(char *);
  probe mpm_query__dispatch__complete(char *, uint32_t);
  probe mpm_query__return(uint32_t);
  probe open_logs__entry();
  probe open_logs__dispatch__invoke(char *);
  probe open_logs__dispatch__complete(char *, uint32_t);
  probe open_logs__return(uint32_t);
  probe optional_fn_retrieve__entry();
  probe optional_fn_retrieve__dispatch__invoke(char *);
  probe optional_fn_retrieve__dispatch__complete(char *, uint32_t);
  probe optional_fn_retrieve__return(uint32_t);
  probe post_config__entry();
  probe post_config__dispatch__invoke(char *);
  probe post_config__dispatch__complete(char *, uint32_t);
  probe post_config__return(uint32_t);
  probe post_read_request__entry();
  probe post_read_request__dispatch__invoke(char *);
  probe post_read_request__dispatch__complete(char *, uint32_t);
  probe post_read_request__return(uint32_t);
  probe pre_config__entry();
  probe pre_config__dispatch__invoke(char *);
  probe pre_config__dispatch__complete(char *, uint32_t);
  probe pre_config__return(uint32_t);
  probe pre_connection__entry();
  probe pre_connection__dispatch__invoke(char *);
  probe pre_connection__dispatch__complete(char *, uint32_t);
  probe pre_connection__return(uint32_t);
  probe pre_mpm__entry();
  probe pre_mpm__dispatch__invoke(char *);
  probe pre_mpm__dispatch__complete(char *, uint32_t);
  probe pre_mpm__return(uint32_t);
  probe process_connection__entry();
  probe process_connection__dispatch__invoke(char *);
  probe process_connection__dispatch__complete(char *, uint32_t);
  probe process_connection__return(uint32_t);
  probe quick_handler__entry();
  probe quick_handler__dispatch__invoke(char *);
  probe quick_handler__dispatch__complete(char *, uint32_t);
  probe quick_handler__return(uint32_t);
  probe test_config__entry();
  probe test_config__dispatch__invoke(char *);
  probe test_config__dispatch__complete(char *, uint32_t);
  probe test_config__return(uint32_t);
  probe translate_name__entry();
  probe translate_name__dispatch__invoke(char *);
  probe translate_name__dispatch__complete(char *, uint32_t);
  probe translate_name__return(uint32_t);
  probe type_checker__entry();
  probe type_checker__dispatch__invoke(char *);
  probe type_checker__dispatch__complete(char *, uint32_t);
  probe type_checker__return(uint32_t);

  /* Implicit, APR hooks for proxy */
  probe canon_handler__entry();
  probe canon_handler__dispatch__invoke(char *);
  probe canon_handler__dispatch__complete(char *, uint32_t);
  probe canon_handler__return(uint32_t);
  probe post_request__entry();
  probe post_request__dispatch__invoke(char *);
  probe post_request__dispatch__complete(char *, uint32_t);
  probe post_request__return(uint32_t);
  probe pre_request__entry();
  probe pre_request__dispatch__invoke(char *);
  probe pre_request__dispatch__complete(char *, uint32_t);
  probe pre_request__return(uint32_t);
  probe scheme_handler__entry();
  probe scheme_handler__dispatch__invoke(char *);
  probe scheme_handler__dispatch__complete(char *, uint32_t);
  probe scheme_handler__return(uint32_t);

  /* Implicit, APR hooks for dav */
  probe find_liveprop__entry();
  probe find_liveprop__dispatch__invoke(char *);
  probe find_liveprop__dispatch__complete(char *, uint32_t);
  probe find_liveprop__return(uint32_t);
  probe gather_propsets__entry();
  probe gather_propsets__dispatch__invoke(char *);
  probe gather_propsets__dispatch__complete(char *, uint32_t);
  probe gather_propsets__return(uint32_t);
  probe insert_all_liveprops__entry();
  probe insert_all_liveprops__dispatch__invoke(char *);
  probe insert_all_liveprops__dispatch__complete(char *, uint32_t);
  probe insert_all_liveprops__return(uint32_t);

  /* Implicit, APR hooks for watchdog */
  probe watchdog_exit__entry();
  probe watchdog_exit__dispatch__invoke(char *);
  probe watchdog_exit__dispatch__complete(char *, uint32_t);
  probe watchdog_exit__return(uint32_t);
  probe watchdog_init__entry();
  probe watchdog_init__dispatch__invoke(char *);
  probe watchdog_init__dispatch__complete(char *, uint32_t);
  probe watchdog_init__return(uint32_t);
  probe watchdog_need__entry();
  probe watchdog_need__dispatch__invoke(char *);
  probe watchdog_need__dispatch__complete(char *, uint32_t);
  probe watchdog_need__return(uint32_t);
  probe watchdog_step__entry();
  probe watchdog_step__dispatch__invoke(char *);
  probe watchdog_step__dispatch__complete(char *, uint32_t);
  probe watchdog_step__return(uint32_t);
};
