#include <operf_process_info.h>

Public Member Functions | |
| operf_process_info (pid_t tgid, const char *appname, bool app_arg_is_fullname, bool is_valid) | |
| ~operf_process_info (void) | |
| bool | is_valid (void) |
| bool | is_forked (void) |
| void | process_new_mapping (struct operf_mmap *mapping) |
| void | process_hypervisor_mapping (u64 ip) |
| Hypervisor samples cannot be attributed to any real binary, so we synthesize an operf_mmap object with the name of "[hypervisor_bucket]". | |
| void | process_deferred_mappings (std::string app_shortname) |
| void | connect_forked_process_to_parent (operf_process_info *parent) |
| void | copy_new_parent_mapping (struct operf_mmap *mapping) |
| void | add_forked_pid_association (operf_process_info *forked_pid) |
| void | copy_mappings_to_forked_process (operf_process_info *forked_pid) |
| void | disassociate_from_parent (char *appname) |
| void | remove_forked_process (pid_t forked_pid) |
| std::string | get_app_name (void) |
| void | add_deferred_mapping (struct operf_mmap *mapping) |
| struct operf_mmap * | find_mapping_for_sample (u64 sample_addr) |
| bool | is_appname_valid (void) |
| operf_process_info::operf_process_info | ( | pid_t | tgid, | |
| const char * | appname, | |||
| bool | app_arg_is_fullname, | |||
| bool | is_valid | |||
| ) |
References op_basename().
| operf_process_info::~operf_process_info | ( | void | ) |
| void operf_process_info::add_deferred_mapping | ( | struct operf_mmap * | mapping | ) | [inline] |
References operf_mmap::start_addr.
Referenced by process_hypervisor_mapping().
| void operf_process_info::add_forked_pid_association | ( | operf_process_info * | forked_pid | ) | [inline] |
| void operf_process_info::connect_forked_process_to_parent | ( | operf_process_info * | parent | ) |
References copy_mappings_to_forked_process(), get_app_name(), is_appname_valid(), is_valid(), and op_basename().
| void operf_process_info::copy_mappings_to_forked_process | ( | operf_process_info * | forked_pid | ) |
References process_new_mapping().
Referenced by connect_forked_process_to_parent().
| void operf_process_info::copy_new_parent_mapping | ( | struct operf_mmap * | mapping | ) | [inline] |
References operf_mmap::start_addr.
Referenced by process_new_mapping().
| void operf_process_info::disassociate_from_parent | ( | char * | appname | ) |
References pid, process_new_mapping(), and remove_forked_process().
| struct operf_mmap * operf_process_info::find_mapping_for_sample | ( | u64 | sample_addr | ) | [read] |
| std::string operf_process_info::get_app_name | ( | void | ) | [inline] |
Referenced by connect_forked_process_to_parent().
| bool operf_process_info::is_appname_valid | ( | void | ) | [inline] |
Referenced by connect_forked_process_to_parent().
| bool operf_process_info::is_forked | ( | void | ) | [inline] |
| bool operf_process_info::is_valid | ( | void | ) | [inline] |
Referenced by connect_forked_process_to_parent().
| void operf_process_info::process_deferred_mappings | ( | std::string | app_shortname | ) |
| void operf_process_info::process_hypervisor_mapping | ( | u64 | ip | ) |
Hypervisor samples cannot be attributed to any real binary, so we synthesize an operf_mmap object with the name of "[hypervisor_bucket]".
We mark this mmaping as "is_anon" so that hypervisor samples are handled in the same way as anon samples (and vdso, heap, and stack) -- i.e., a sample file is created with the following pieces of information in its name:
The address range part is problematic for hypervisor samples, since we don't know the range of sample addresses until we process all the samples. This is why we need to adjust the hypervisor_mmaping when we detect an ip that's outside of the current address range. This is also why we defer processing hypervisor samples the first time through the processing of sample data. See operf_utils::__handle_sample_event for details relating to how we defer processing of such samples.
References add_deferred_mapping(), cverb, operf_mmap::end_addr, operf_mmap::filename, operf_mmap::is_anon_mapping, operf_mmap::is_hypervisor, operf_mmap::pgoff, process_new_mapping(), operf_mmap::start_addr, and vmisc.
| void operf_process_info::process_new_mapping | ( | struct operf_mmap * | mapping | ) |
References copy_new_parent_mapping(), cverb, operf_mmap::filename, operf_mmap::is_anon_mapping, operf_mmap::start_addr, and vmisc.
Referenced by copy_mappings_to_forked_process(), disassociate_from_parent(), and process_hypervisor_mapping().
| void operf_process_info::remove_forked_process | ( | pid_t | forked_pid | ) |
Referenced by disassociate_from_parent().
1.6.1