.TH "__gnu_profile" 3cxx "Mon May 22 2017" "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 "__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 .ti -1c .RI "\fB_GLIBCXX_PROFILE_DEFINE_DATA\fP (\fB__trace_hash_func\fP *, _S_hash_func, 0)" .br .ti -1c .RI "\fB_GLIBCXX_PROFILE_DEFINE_DATA\fP (\fB__trace_hashtable_size\fP *, _S_hashtable_size, 0)" .br .ti -1c .RI "\fB_GLIBCXX_PROFILE_DEFINE_DATA\fP (\fB__trace_map2umap\fP *, _S_map2umap, 0)" .br .ti -1c .RI "\fB_GLIBCXX_PROFILE_DEFINE_DATA\fP (\fB__trace_vector_size\fP *, _S_vector_size, 0)" .br .ti -1c .RI "\fB_GLIBCXX_PROFILE_DEFINE_DATA\fP (\fB__trace_vector_to_list\fP *, _S_vector_to_list, 0)" .br .ti -1c .RI "\fB_GLIBCXX_PROFILE_DEFINE_DATA\fP (__trace_list_to_slist *, _S_list_to_slist, 0)" .br .ti -1c .RI "\fB_GLIBCXX_PROFILE_DEFINE_DATA\fP (__trace_list_to_vector *, _S_list_to_vector, 0)" .br .ti -1c .RI "\fB_GLIBCXX_PROFILE_DEFINE_DATA\fP (__cost_factor, __vector_shift_cost_factor, {'__vector_shift_cost_factor', 1\&.0})" .br .ti -1c .RI "\fB_GLIBCXX_PROFILE_DEFINE_DATA\fP (__cost_factor, __vector_iterate_cost_factor, {'__vector_iterate_cost_factor', 1\&.0})" .br .ti -1c .RI "\fB_GLIBCXX_PROFILE_DEFINE_DATA\fP (__cost_factor, __vector_resize_cost_factor, {'__vector_resize_cost_factor', 1\&.0})" .br .ti -1c .RI "\fB_GLIBCXX_PROFILE_DEFINE_DATA\fP (__cost_factor, __list_shift_cost_factor, {'__list_shift_cost_factor', 0\&.0})" .br .ti -1c .RI "\fB_GLIBCXX_PROFILE_DEFINE_DATA\fP (__cost_factor, __list_iterate_cost_factor, {'__list_iterate_cost_factor', 10\&.0})" .br .ti -1c .RI "\fB_GLIBCXX_PROFILE_DEFINE_DATA\fP (__cost_factor, __list_resize_cost_factor, {'__list_resize_cost_factor', 0\&.0})" .br .ti -1c .RI "\fB_GLIBCXX_PROFILE_DEFINE_DATA\fP (__cost_factor, __map_insert_cost_factor, {'__map_insert_cost_factor', 1\&.5})" .br .ti -1c .RI "\fB_GLIBCXX_PROFILE_DEFINE_DATA\fP (__cost_factor, __map_erase_cost_factor, {'__map_erase_cost_factor', 1\&.5})" .br .ti -1c .RI "\fB_GLIBCXX_PROFILE_DEFINE_DATA\fP (__cost_factor, __map_find_cost_factor, {'__map_find_cost_factor', 1})" .br .ti -1c .RI "\fB_GLIBCXX_PROFILE_DEFINE_DATA\fP (__cost_factor, __map_iterate_cost_factor, {'__map_iterate_cost_factor', 2\&.3})" .br .ti -1c .RI "\fB_GLIBCXX_PROFILE_DEFINE_DATA\fP (__cost_factor, __umap_insert_cost_factor, {'__umap_insert_cost_factor', 12\&.0})" .br .ti -1c .RI "\fB_GLIBCXX_PROFILE_DEFINE_DATA\fP (__cost_factor, __umap_erase_cost_factor, {'__umap_erase_cost_factor', 12\&.0})" .br .ti -1c .RI "\fB_GLIBCXX_PROFILE_DEFINE_DATA\fP (__cost_factor, __umap_find_cost_factor, {'__umap_find_cost_factor', 10\&.0})" .br .ti -1c .RI "\fB_GLIBCXX_PROFILE_DEFINE_DATA\fP (__cost_factor, __umap_iterate_cost_factor, {'__umap_iterate_cost_factor', 1\&.7})" .br .ti -1c .RI "\fB_GLIBCXX_PROFILE_DEFINE_DATA\fP (__cost_factor_vector *, __cost_factors, 0)" .br .ti -1c .RI "\fB_GLIBCXX_PROFILE_DEFINE_DATA\fP (const char *, _S_trace_file_name, _GLIBCXX_PROFILE_TRACE_PATH_ROOT)" .br .ti -1c .RI "\fB_GLIBCXX_PROFILE_DEFINE_DATA\fP (std::size_t, _S_max_warn_count, _GLIBCXX_PROFILE_MAX_WARN_COUNT)" .br .ti -1c .RI "\fB_GLIBCXX_PROFILE_DEFINE_DATA\fP (std::size_t, _S_max_stack_depth, _GLIBCXX_PROFILE_MAX_STACK_DEPTH)" .br .ti -1c .RI "\fB_GLIBCXX_PROFILE_DEFINE_DATA\fP (std::size_t, _S_max_mem, _GLIBCXX_PROFILE_MEM_PER_DIAGNOSTIC)" .br .ti -1c .RI "\fB_GLIBCXX_PROFILE_DEFINE_UNINIT_DATA\fP (\fB__env_t\fP, __env)" .br .ti -1c .RI "\fB_GLIBCXX_PROFILE_DEFINE_UNINIT_DATA\fP (__gnu_cxx::__mutex, __global_mutex)" .br .RI "Master lock\&. " .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 "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\&. .SS "__gnu_profile::_GLIBCXX_PROFILE_DEFINE_UNINIT_DATA (__gnu_cxx::__mutex, __global_mutex)" .PP Master lock\&. .SH "Author" .PP Generated automatically by Doxygen for libstdc++ from the source code\&.