diff options
Diffstat (limited to 'gdbsupport')
-rw-r--r-- | gdbsupport/event-loop.cc | 3 | ||||
-rw-r--r-- | gdbsupport/parallel-for.h | 10 | ||||
-rw-r--r-- | gdbsupport/poison.h | 2 | ||||
-rw-r--r-- | gdbsupport/print-utils.cc | 6 | ||||
-rw-r--r-- | gdbsupport/run-time-clock.cc | 21 | ||||
-rw-r--r-- | gdbsupport/run-time-clock.h | 11 |
6 files changed, 39 insertions, 14 deletions
diff --git a/gdbsupport/event-loop.cc b/gdbsupport/event-loop.cc index c080490..e7b21e7 100644 --- a/gdbsupport/event-loop.cc +++ b/gdbsupport/event-loop.cc @@ -827,7 +827,8 @@ update_wait_timeout (void) /* Update the timeout for select/ poll. */ #ifdef HAVE_POLL if (use_poll) - gdb_notifier.poll_timeout = timeout.tv_sec * 1000; + gdb_notifier.poll_timeout = (timeout.tv_sec * 1000 + + (timeout.tv_usec + 1000 - 1) / 1000); else #endif /* HAVE_POLL */ { diff --git a/gdbsupport/parallel-for.h b/gdbsupport/parallel-for.h index c485c36..b74c806 100644 --- a/gdbsupport/parallel-for.h +++ b/gdbsupport/parallel-for.h @@ -40,10 +40,9 @@ namespace gdb at least N elements processed per thread. Setting N to 0 is not allowed. */ -template<class RandomIt, class RangeFunction> +template<std::size_t n, class RandomIt, class RangeFunction> void -parallel_for_each (unsigned n, RandomIt first, RandomIt last, - RangeFunction callback) +parallel_for_each (RandomIt first, RandomIt last, RangeFunction callback) { /* If enabled, print debug info about how the work is distributed across the threads. */ @@ -73,7 +72,7 @@ parallel_for_each (unsigned n, RandomIt first, RandomIt last, if (parallel_for_each_debug) { debug_printf (_("Parallel for: n_elements: %zu\n"), n_elements); - debug_printf (_("Parallel for: minimum elements per thread: %u\n"), n); + debug_printf (_("Parallel for: minimum elements per thread: %zu\n"), n); debug_printf (_("Parallel for: elts_per_thread: %zu\n"), elts_per_thread); } @@ -141,8 +140,7 @@ parallel_for_each (unsigned n, RandomIt first, RandomIt last, template<class RandomIt, class RangeFunction> void -sequential_for_each (unsigned n, RandomIt first, RandomIt last, - RangeFunction callback) +sequential_for_each (RandomIt first, RandomIt last, RangeFunction callback) { callback (first, last); } diff --git a/gdbsupport/poison.h b/gdbsupport/poison.h index 791a18f..a91ee5d 100644 --- a/gdbsupport/poison.h +++ b/gdbsupport/poison.h @@ -183,7 +183,7 @@ xnewvar (size_t s) { static_assert (IsMallocable<T>::value, "Trying to use XNEWVAR with a \ non-POD data type."); - return XNEWVAR (T, s);; + return XNEWVAR (T, s); } #undef XNEWVAR diff --git a/gdbsupport/print-utils.cc b/gdbsupport/print-utils.cc index a798713..8514720 100644 --- a/gdbsupport/print-utils.cc +++ b/gdbsupport/print-utils.cc @@ -304,8 +304,7 @@ core_addr_to_string (const CORE_ADDR addr) { char *str = get_print_cell (); - strcpy (str, "0x"); - strcat (str, phex (addr)); + xsnprintf (str, PRINT_CELL_SIZE, "0x%s", phex (addr)); return str; } @@ -316,8 +315,7 @@ core_addr_to_string_nz (const CORE_ADDR addr) { char *str = get_print_cell (); - strcpy (str, "0x"); - strcat (str, phex_nz (addr)); + xsnprintf (str, PRINT_CELL_SIZE, "0x%s", phex_nz (addr)); return str; } diff --git a/gdbsupport/run-time-clock.cc b/gdbsupport/run-time-clock.cc index 621ba77..cda60b0 100644 --- a/gdbsupport/run-time-clock.cc +++ b/gdbsupport/run-time-clock.cc @@ -37,12 +37,33 @@ timeval_to_microseconds (struct timeval *tv) } #endif +/* See run-time-clock.h. */ + +bool +get_run_time_thread_scope_available () +{ +#if defined HAVE_GETRUSAGE && defined RUSAGE_THREAD + return true; +#else + return false; +#endif +} + void get_run_time (user_cpu_time_clock::time_point &user, system_cpu_time_clock::time_point &system, run_time_scope scope) noexcept { #ifdef HAVE_GETRUSAGE + + /* If we can't provide thread scope run time usage, fallback to + process scope. This will at least be right if GDB is built + without threading support in the first place (or is set to use + zero worker threads). */ +# ifndef RUSAGE_THREAD +# define RUSAGE_THREAD RUSAGE_SELF +# endif + struct rusage rusage; int who; diff --git a/gdbsupport/run-time-clock.h b/gdbsupport/run-time-clock.h index a985dbb..2743514 100644 --- a/gdbsupport/run-time-clock.h +++ b/gdbsupport/run-time-clock.h @@ -64,13 +64,20 @@ enum class run_time_scope supported. If not supported, then the combined user+kernel time is returned in USER and SYSTEM is set to zero. - SCOPE indicates whether to return the run time for the whole process or - just for the calling thread. */ + SCOPE indicates whether to return the run time for the whole + process or just for the calling thread. If the latter isn't + supported, then returns the run time for the whole process even if + run_time_scope::thread is requested. */ void get_run_time (user_cpu_time_clock::time_point &user, system_cpu_time_clock::time_point &system, run_time_scope scope) noexcept; +/* Returns true if is it possible for get_run_time above to return the + run time for just the calling thread. */ + +bool get_run_time_thread_scope_available (); + /* Count the total amount of time spent executing in userspace+kernel mode. */ |