.TH "__gnu_profile" 3cxx "Sun Feb 7 2021" "libstdc++" \" -*- nroff -*- .ad l .nh .SH NAME __gnu_profile \- GNU profile code for public use\&. .SH SYNOPSIS .br .PP .SS "Classes" .in +1c .ti -1c .RI "class \fB__container_size_info\fP" .br .RI "A container size instrumentation line in the object table\&. " .ti -1c .RI "class \fB__container_size_stack_info\fP" .br .RI "A container size instrumentation line in the stack table\&. " .ti -1c .RI "class \fB__hashfunc_info\fP" .br .RI "A hash performance instrumentation line in the object table\&. " .ti -1c .RI "class \fB__hashfunc_stack_info\fP" .br .RI "A hash performance instrumentation line in the stack table\&. " .ti -1c .RI "class \fB__list2vector_info\fP" .br .RI "A list-to-vector instrumentation line in the object table\&. " .ti -1c .RI "class \fB__map2umap_info\fP" .br .RI "A map-to-unordered_map instrumentation line in the object table\&. " .ti -1c .RI "class \fB__map2umap_stack_info\fP" .br .RI "A map-to-unordered_map instrumentation line in the stack table\&. " .ti -1c .RI "class \fB__object_info_base\fP" .br .RI "Base class for a line in the object table\&. " .ti -1c .RI "struct \fB__reentrance_guard\fP" .br .RI "Reentrance guard\&. " .ti -1c .RI "class \fB__stack_hash\fP" .br .RI "Hash function for summary trace using call stack as index\&. " .ti -1c .RI "class \fB__trace_base\fP" .br .RI "Base class for all trace producers\&. " .ti -1c .RI "class \fB__trace_container_size\fP" .br .RI "Container size instrumentation trace producer\&. " .ti -1c .RI "class \fB__trace_hash_func\fP" .br .RI "Hash performance instrumentation producer\&. " .ti -1c .RI "class \fB__trace_hashtable_size\fP" .br .RI "Hashtable size instrumentation trace producer\&. " .ti -1c .RI "class \fB__trace_map2umap\fP" .br .RI "Map-to-unordered_map instrumentation producer\&. " .ti -1c .RI "class \fB__trace_vector_size\fP" .br .RI "Hashtable size instrumentation trace producer\&. " .ti -1c .RI "class \fB__trace_vector_to_list\fP" .br .RI "Vector-to-list instrumentation producer\&. " .ti -1c .RI "class \fB__vector2list_info\fP" .br .RI "A vector-to-list instrumentation line in the object table\&. " .ti -1c .RI "class \fB__vector2list_stack_info\fP" .br .RI "A vector-to-list instrumentation line in the stack table\&. " .ti -1c .RI "struct \fB__warning_data\fP" .br .RI "Representation of a warning\&. " .in -1c .SS "Typedefs" .in +1c .ti -1c .RI "typedef std::::vector< __cost_factor * > \fB__cost_factor_vector\fP" .br .ti -1c .RI "typedef std::::unordered_map< \fBstd::string\fP, \fBstd::string\fP > \fB__env_t\fP" .br .RI "Internal environment\&. Values can be set one of two ways: 1\&. In config file 'var = value'\&. The default config file path is libstdcxx-profile\&.conf\&. 2\&. By setting process environment variables\&. For instance, in a Bash shell you can set the unit cost of iterating through a map like this: export __map_iterate_cost_factor=5\&.0\&. If a value is set both in the input file and through an environment variable, the environment value takes precedence\&. " .ti -1c .RI "typedef void * \fB__instruction_address_t\fP" .br .ti -1c .RI "typedef std::::vector< __instruction_address_t > \fB__stack_npt\fP" .br .ti -1c .RI "typedef __stack_npt * \fB__stack_t\fP" .br .ti -1c .RI "typedef std::::vector< \fB__warning_data\fP > \fB__warning_vector_t\fP" .br .in -1c .SS "Enumerations" .in +1c .ti -1c .RI "enum \fB__state_type\fP { \fB__ON\fP, \fB__OFF\fP, \fB__INVALID\fP }" .br .in -1c .SS "Functions" .in +1c .ti -1c .RI "std::size_t \fB__env_to_size_t\fP (const char *__env_var, std::size_t __default_value)" .br .ti -1c .RI "template _Function \fB__for_each\fP (_InputIterator __first, _InputIterator __last, _Function __f)" .br .ti -1c .RI "__cost_factor_vector *& \fB__get___cost_factors\fP ()" .br .ti -1c .RI "\fB__env_t\fP & \fB__get___env\fP ()" .br .ti -1c .RI "__gnu_cxx::__mutex & \fB__get___global_mutex\fP ()" .br .RI "Master lock\&. " .ti -1c .RI "__cost_factor & \fB__get___list_iterate_cost_factor\fP ()" .br .ti -1c .RI "__cost_factor & \fB__get___list_resize_cost_factor\fP ()" .br .ti -1c .RI "__cost_factor & \fB__get___list_shift_cost_factor\fP ()" .br .ti -1c .RI "__cost_factor & \fB__get___map_erase_cost_factor\fP ()" .br .ti -1c .RI "__cost_factor & \fB__get___map_find_cost_factor\fP ()" .br .ti -1c .RI "__cost_factor & \fB__get___map_insert_cost_factor\fP ()" .br .ti -1c .RI "__cost_factor & \fB__get___map_iterate_cost_factor\fP ()" .br .ti -1c .RI "__cost_factor & \fB__get___umap_erase_cost_factor\fP ()" .br .ti -1c .RI "__cost_factor & \fB__get___umap_find_cost_factor\fP ()" .br .ti -1c .RI "__cost_factor & \fB__get___umap_insert_cost_factor\fP ()" .br .ti -1c .RI "__cost_factor & \fB__get___umap_iterate_cost_factor\fP ()" .br .ti -1c .RI "__cost_factor & \fB__get___vector_iterate_cost_factor\fP ()" .br .ti -1c .RI "__cost_factor & \fB__get___vector_resize_cost_factor\fP ()" .br .ti -1c .RI "__cost_factor & \fB__get___vector_shift_cost_factor\fP ()" .br .ti -1c .RI "\fB__trace_hash_func\fP *& \fB__get__S_hash_func\fP ()" .br .ti -1c .RI "\fB__trace_hashtable_size\fP *& \fB__get__S_hashtable_size\fP ()" .br .ti -1c .RI "__trace_list_to_slist *& \fB__get__S_list_to_slist\fP ()" .br .ti -1c .RI "__trace_list_to_vector *& \fB__get__S_list_to_vector\fP ()" .br .ti -1c .RI "\fB__trace_map2umap\fP *& \fB__get__S_map2umap\fP ()" .br .ti -1c .RI "std::size_t & \fB__get__S_max_mem\fP ()" .br .ti -1c .RI "std::size_t & \fB__get__S_max_stack_depth\fP ()" .br .ti -1c .RI "std::size_t & \fB__get__S_max_warn_count\fP ()" .br .ti -1c .RI "const char *& \fB__get__S_trace_file_name\fP ()" .br .ti -1c .RI "\fB__trace_vector_size\fP *& \fB__get__S_vector_size\fP ()" .br .ti -1c .RI "\fB__trace_vector_to_list\fP *& \fB__get__S_vector_to_list\fP ()" .br .ti -1c .RI "__stack_t \fB__get_stack\fP ()" .br .ti -1c .RI "template void \fB__insert_top_n\fP (_Container &__output, const typename _Container::value_type &__value, typename _Container::size_type __n)" .br .ti -1c .RI "bool \fB__is_invalid\fP ()" .br .ti -1c .RI "bool \fB__is_off\fP ()" .br .ti -1c .RI "bool \fB__is_on\fP ()" .br .ti -1c .RI "int \fB__log2\fP (std::size_t __size)" .br .ti -1c .RI "int \fB__log_magnitude\fP (float __f)" .br .ti -1c .RI "float \fB__map_erase_cost\fP (std::size_t __size)" .br .ti -1c .RI "float \fB__map_find_cost\fP (std::size_t __size)" .br .ti -1c .RI "float \fB__map_insert_cost\fP (std::size_t __size)" .br .ti -1c .RI "std::size_t \fB__max_mem\fP ()" .br .ti -1c .RI "FILE * \fB__open_output_file\fP (const char *__extension)" .br .ti -1c .RI "bool \fB__profcxx_init\fP ()" .br .RI "This function must be called by each instrumentation point\&. " .ti -1c .RI "void \fB__profcxx_init_unconditional\fP ()" .br .ti -1c .RI "void \fB__read_cost_factors\fP ()" .br .ti -1c .RI "template _ForwardIterator \fB__remove\fP (_ForwardIterator __first, _ForwardIterator __last, const _Tp &__value)" .br .ti -1c .RI "void \fB__report\fP ()" .br .RI "Final report method, registered with \fBatexit\fP\&. " .ti -1c .RI "void \fB__report_and_free\fP ()" .br .ti -1c .RI "void \fB__set_cost_factors\fP ()" .br .ti -1c .RI "void \fB__set_max_mem\fP ()" .br .ti -1c .RI "void \fB__set_max_stack_trace_depth\fP ()" .br .ti -1c .RI "void \fB__set_max_warn_count\fP ()" .br .ti -1c .RI "void \fB__set_trace_path\fP ()" .br .ti -1c .RI "std::size_t \fB__size\fP (__stack_t __stack)" .br .ti -1c .RI "std::size_t \fB__stack_max_depth\fP ()" .br .ti -1c .RI "template void \fB__top_n\fP (const _Container &__input, _Container &__output, typename _Container::size_type __n)" .br .ti -1c .RI "\fB__hashfunc_info\fP * \fB__trace_hash_func_construct\fP ()" .br .ti -1c .RI "void \fB__trace_hash_func_destruct\fP (\fB__hashfunc_info\fP *, std::size_t, std::size_t, std::size_t)" .br .ti -1c .RI "void \fB__trace_hash_func_free\fP ()" .br .ti -1c .RI "void \fB__trace_hash_func_init\fP ()" .br .ti -1c .RI "void \fB__trace_hash_func_report\fP (FILE *__f, __warning_vector_t &__warnings)" .br .ti -1c .RI "\fB__container_size_info\fP * \fB__trace_hashtable_size_construct\fP (std::size_t)" .br .ti -1c .RI "void \fB__trace_hashtable_size_destruct\fP (\fB__container_size_info\fP *, std::size_t, std::size_t)" .br .ti -1c .RI "void \fB__trace_hashtable_size_free\fP ()" .br .ti -1c .RI "void \fB__trace_hashtable_size_init\fP ()" .br .ti -1c .RI "void \fB__trace_hashtable_size_report\fP (FILE *__f, __warning_vector_t &__warnings)" .br .ti -1c .RI "void \fB__trace_hashtable_size_resize\fP (\fB__container_size_info\fP *, std::size_t, std::size_t)" .br .ti -1c .RI "__list2slist_info * \fB__trace_list_to_slist_construct\fP ()" .br .ti -1c .RI "void \fB__trace_list_to_slist_destruct\fP (__list2slist_info *)" .br .ti -1c .RI "void \fB__trace_list_to_slist_free\fP ()" .br .ti -1c .RI "void \fB__trace_list_to_slist_init\fP ()" .br .ti -1c .RI "void \fB__trace_list_to_slist_operation\fP (__list2slist_info *)" .br .ti -1c .RI "void \fB__trace_list_to_slist_report\fP (FILE *__f, __warning_vector_t &__warnings)" .br .ti -1c .RI "void \fB__trace_list_to_slist_rewind\fP (__list2slist_info *)" .br .ti -1c .RI "\fB__list2vector_info\fP * \fB__trace_list_to_vector_construct\fP ()" .br .ti -1c .RI "void \fB__trace_list_to_vector_destruct\fP (\fB__list2vector_info\fP *)" .br .ti -1c .RI "void \fB__trace_list_to_vector_free\fP ()" .br .ti -1c .RI "void \fB__trace_list_to_vector_init\fP ()" .br .ti -1c .RI "void \fB__trace_list_to_vector_insert\fP (\fB__list2vector_info\fP *, std::size_t, std::size_t)" .br .ti -1c .RI "void \fB__trace_list_to_vector_invalid_operator\fP (\fB__list2vector_info\fP *)" .br .ti -1c .RI "void \fB__trace_list_to_vector_iterate\fP (\fB__list2vector_info\fP *, int)" .br .ti -1c .RI "void \fB__trace_list_to_vector_report\fP (FILE *__f, __warning_vector_t &__warnings)" .br .ti -1c .RI "void \fB__trace_list_to_vector_resize\fP (\fB__list2vector_info\fP *, std::size_t, std::size_t)" .br .ti -1c .RI "\fB__map2umap_info\fP * \fB__trace_map_to_unordered_map_construct\fP ()" .br .ti -1c .RI "void \fB__trace_map_to_unordered_map_destruct\fP (\fB__map2umap_info\fP *)" .br .ti -1c .RI "void \fB__trace_map_to_unordered_map_erase\fP (\fB__map2umap_info\fP *, std::size_t, std::size_t)" .br .ti -1c .RI "void \fB__trace_map_to_unordered_map_find\fP (\fB__map2umap_info\fP *, std::size_t)" .br .ti -1c .RI "void \fB__trace_map_to_unordered_map_free\fP ()" .br .ti -1c .RI "void \fB__trace_map_to_unordered_map_init\fP ()" .br .ti -1c .RI "void \fB__trace_map_to_unordered_map_insert\fP (\fB__map2umap_info\fP *, std::size_t, std::size_t)" .br .ti -1c .RI "void \fB__trace_map_to_unordered_map_invalidate\fP (\fB__map2umap_info\fP *)" .br .ti -1c .RI "void \fB__trace_map_to_unordered_map_iterate\fP (\fB__map2umap_info\fP *, std::size_t)" .br .ti -1c .RI "void \fB__trace_map_to_unordered_map_iterate\fP (\fB__map2umap_info\fP *__info, int)" .br .ti -1c .RI "void \fB__trace_map_to_unordered_map_report\fP (FILE *__f, __warning_vector_t &__warnings)" .br .ti -1c .RI "template void \fB__trace_report\fP (\fB__trace_base\fP< __object_info, __stack_info > *__cont, FILE *__f, __warning_vector_t &__warnings)" .br .ti -1c .RI "\fB__container_size_info\fP * \fB__trace_vector_size_construct\fP (std::size_t)" .br .ti -1c .RI "void \fB__trace_vector_size_destruct\fP (\fB__container_size_info\fP *, std::size_t, std::size_t)" .br .ti -1c .RI "void \fB__trace_vector_size_free\fP ()" .br .ti -1c .RI "void \fB__trace_vector_size_init\fP ()" .br .ti -1c .RI "void \fB__trace_vector_size_report\fP (FILE *, __warning_vector_t &)" .br .ti -1c .RI "void \fB__trace_vector_size_resize\fP (\fB__container_size_info\fP *, std::size_t, std::size_t)" .br .ti -1c .RI "\fB__vector2list_info\fP * \fB__trace_vector_to_list_construct\fP ()" .br .ti -1c .RI "void \fB__trace_vector_to_list_destruct\fP (\fB__vector2list_info\fP *)" .br .ti -1c .RI "void \fB__trace_vector_to_list_free\fP ()" .br .ti -1c .RI "void \fB__trace_vector_to_list_init\fP ()" .br .ti -1c .RI "void \fB__trace_vector_to_list_insert\fP (\fB__vector2list_info\fP *, std::size_t, std::size_t)" .br .ti -1c .RI "void \fB__trace_vector_to_list_invalid_operator\fP (\fB__vector2list_info\fP *)" .br .ti -1c .RI "void \fB__trace_vector_to_list_iterate\fP (\fB__vector2list_info\fP *, int)" .br .ti -1c .RI "void \fB__trace_vector_to_list_report\fP (FILE *, __warning_vector_t &)" .br .ti -1c .RI "void \fB__trace_vector_to_list_resize\fP (\fB__vector2list_info\fP *, std::size_t, std::size_t)" .br .ti -1c .RI "bool \fB__turn\fP (__state_type __s)" .br .ti -1c .RI "bool \fB__turn_off\fP ()" .br .ti -1c .RI "bool \fB__turn_on\fP ()" .br .ti -1c .RI "void \fB__write\fP (FILE *__f, __stack_t __stack)" .br .ti -1c .RI "void \fB__write_cost_factors\fP ()" .br .ti -1c .RI "\fB_GLIBCXX_PROFILE_DEFINE_DATA\fP (__state_type, __state, __INVALID)" .br .in -1c .SH "Detailed Description" .PP GNU profile code for public use\&. .SH "Typedef Documentation" .PP .SS "typedef std:: ::\fBunordered_map\fP<\fBstd::string\fP, \fBstd::string\fP> \fB__gnu_profile::__env_t\fP" .PP Internal environment\&. Values can be set one of two ways: 1\&. In config file 'var = value'\&. The default config file path is libstdcxx-profile\&.conf\&. 2\&. By setting process environment variables\&. For instance, in a Bash shell you can set the unit cost of iterating through a map like this: export __map_iterate_cost_factor=5\&.0\&. If a value is set both in the input file and through an environment variable, the environment value takes precedence\&. .PP Definition at line 65 of file profiler_trace\&.h\&. .SH "Function Documentation" .PP .SS "__gnu_cxx::__mutex& __gnu_profile::__get___global_mutex ()\fC [inline]\fP" .PP Master lock\&. .PP Definition at line 70 of file profiler_trace\&.h\&. .SS "bool __gnu_profile::__profcxx_init ()\fC [inline]\fP" .PP This function must be called by each instrumentation point\&. The common path is inlined fully\&. .PP Definition at line 653 of file profiler_trace\&.h\&. .SS "void __gnu_profile::__report ()\fC [inline]\fP" .PP Final report method, registered with \fBatexit\fP\&. This can also be called directly by user code, including signal handlers\&. It is protected against deadlocks by the reentrance guard in profiler\&.h\&. However, when called from a signal handler that triggers while within __gnu_profile (under the guarded zone), no output will be produced\&. .PP Definition at line 448 of file profiler_trace\&.h\&. .SH "Author" .PP Generated automatically by Doxygen for libstdc++ from the source code\&.