Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Browse files
Browse the repository at this point in the history
Import the core parts of the DTrace patch. This is a modified and upd…
…ated version of what was submited by Theo before: <http://mail-archives.apache.org/mod_mbox/httpd-dev/200805.mbox/%3C6AFBCFE8-4CCA-4A02-8A43-F9170689695D@omniti.com%3E> Note, this does not hook it up into the build system at this time, because the original patch was a little too creative there. Submitted By: Theo Schlossnagle <jesus omniti.com> git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@723565 13f79535-47bb-0310-9956-ffa450edef68
- Loading branch information
Paul Querna
committed
Dec 5, 2008
1 parent
e987e86
commit 42591f0
Showing
8 changed files
with
342 additions
and
9 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,102 @@ | ||
#pragma D depends_on provider io | ||
typedef struct request_rec { | ||
uintptr_t pool; | ||
uintptr_t connection; | ||
uintptr_t server; | ||
uintptr_t next; | ||
uintptr_t prev; | ||
uintptr_t main; | ||
char *the_request; | ||
int assbackwards; | ||
int proxyreq; | ||
int header_only; | ||
char *protocol; | ||
int proto_num; | ||
char *hostname; | ||
int64_t request_time; | ||
char *status_line; | ||
int status; | ||
const char *method; | ||
int method_number; | ||
int64_t allowed; | ||
uintptr_t allowed_xmethods; | ||
uintptr_t allowed_methods; | ||
offset_t sent_bodyct; | ||
offset_t bytes_sent; | ||
int64_t mtime; | ||
int chunked; | ||
char *range; | ||
offset_t clength; | ||
offset_t remaining; | ||
offset_t read_length; | ||
int read_body; | ||
int read_chunked; | ||
unsigned expecting_100; | ||
uintptr_t headers_in; | ||
uintptr_t headers_out; | ||
uintptr_t err_headers_out; | ||
uintptr_t subprocess_env; | ||
uintptr_t notes; | ||
char *content_type; /* Break these out --- we dispatch on 'em */ | ||
char *handler; /* What we *really* dispatch on */ | ||
char *content_encoding; | ||
uintptr_t content_languages; | ||
char *vlist_validator; | ||
char *user; | ||
char *ap_auth_type; | ||
int no_cache; | ||
int no_local_copy; | ||
char *unparsed_uri; | ||
char *uri; | ||
char *filename; | ||
char *canonical_filename; | ||
char *path_info; | ||
char *args; | ||
/* finfo */ | ||
uintptr_t finfo_pool; | ||
int32_t finfo_valid; | ||
int32_t finfo_protection; | ||
int32_t finfo_filetype; | ||
int finfo_user; | ||
int finfo_group; | ||
uint64_t finfo_inode; | ||
uint64_t finfo_device; | ||
int32_t finfo_nlink; | ||
offset_t finfo_size; | ||
offset_t finfo_csize; | ||
int64_t finfo_atime; | ||
int64_t finfo_mtime; | ||
int64_t finfo_ctime; | ||
char *finfo_fname; | ||
char *finfo_name; | ||
uintptr_t finfo_ffilehand; | ||
/* parsed_uri */ | ||
char *uri_scheme; | ||
char *uri_hostinfo; | ||
char *uri_user; | ||
char *uri_password; | ||
char *uri_hostname; | ||
char *uri_port_str; | ||
char *uri_path; | ||
char *uri_query; | ||
char *uri_fragment; | ||
uintptr_t uri_hostent; | ||
uint16_t uri_port; | ||
unsigned uri_is_initialized:1; | ||
unsigned uri_dns_looked_up:1; | ||
unsigned uri_dns_resolved:1; | ||
|
||
/* back to request_rec */ | ||
int used_path_info; | ||
uintptr_t per_dir_config; | ||
uintptr_t request_config; | ||
uintptr_t htaccess; | ||
uintptr_t output_filters; | ||
uintptr_t input_filters; | ||
uintptr_t proto_output_filters; | ||
uintptr_t proto_input_filters; | ||
int eos_sent; | ||
uintptr_t kept_body; | ||
uintptr_t invoke_mtx; | ||
} request_rec; | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,172 @@ | ||
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 rewrite__log(uintptr_t, int, int, char *, char *); | ||
probe proxy__run(uintptr_t); | ||
probe proxy__run__finished(uintptr_t); | ||
|
||
/* Implicit, APR hooks */ | ||
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 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 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 fixups__entry(); | ||
probe fixups__dispatch__invoke(char *); | ||
probe fixups__dispatch__complete(char *, uint32_t); | ||
probe fixups__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); | ||
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 insert_filter__entry(); | ||
probe insert_filter__dispatch__invoke(char *); | ||
probe insert_filter__dispatch__complete(char *, uint32_t); | ||
probe insert_filter__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 pre_connection__entry(); | ||
probe pre_connection__dispatch__invoke(char *); | ||
probe pre_connection__dispatch__complete(char *, uint32_t); | ||
probe pre_connection__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 create_request__entry(); | ||
probe create_request__dispatch__invoke(char *); | ||
probe create_request__dispatch__complete(char *, uint32_t); | ||
probe create_request__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 pre_config__entry(); | ||
probe pre_config__dispatch__invoke(char *); | ||
probe pre_config__dispatch__complete(char *, uint32_t); | ||
probe pre_config__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 post_config__entry(); | ||
probe post_config__dispatch__invoke(char *); | ||
probe post_config__dispatch__complete(char *, uint32_t); | ||
probe post_config__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 child_init__entry(); | ||
probe child_init__dispatch__invoke(char *); | ||
probe child_init__dispatch__complete(char *, uint32_t); | ||
probe child_init__return(uint32_t); | ||
probe handler__entry(); | ||
probe handler__dispatch__invoke(char *); | ||
probe handler__dispatch__complete(char *, uint32_t); | ||
probe handler__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 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 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 pre_mpm__entry(); | ||
probe pre_mpm__dispatch__invoke(char *); | ||
probe pre_mpm__dispatch__complete(char *, uint32_t); | ||
probe pre_mpm__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 http_scheme__entry(); | ||
probe http_scheme__dispatch__invoke(char *); | ||
probe http_scheme__dispatch__complete(char *, uint32_t); | ||
probe http_scheme__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 log_transaction__entry(); | ||
probe log_transaction__dispatch__invoke(char *); | ||
probe log_transaction__dispatch__complete(char *, uint32_t); | ||
probe log_transaction__return(uint32_t); | ||
probe monitor__entry(); | ||
probe monitor__dispatch__invoke(char *); | ||
probe monitor__dispatch__complete(char *, uint32_t); | ||
probe monitor__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 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 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); | ||
|
||
/* Implicit, APR hooks for proxy */ | ||
probe scheme_handler__entry(); | ||
probe scheme_handler__dispatch__invoke(char *); | ||
probe scheme_handler__dispatch__complete(char *, uint32_t); | ||
probe scheme_handler__return(uint32_t); | ||
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 pre_request__entry(); | ||
probe pre_request__dispatch__invoke(char *); | ||
probe pre_request__dispatch__complete(char *, uint32_t); | ||
probe pre_request__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); | ||
|
||
/* Implicit, APR hooks for dav */ | ||
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 find_liveprop__entry(); | ||
probe find_liveprop__dispatch__invoke(char *); | ||
probe find_liveprop__dispatch__complete(char *, uint32_t); | ||
probe find_liveprop__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); | ||
}; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.