Improve diagnostics of profiler-cpu-start

* src/profiler.c (setup_cpu_timer): Change return type to 'int';
return -1 if the sampling interval is invalid.
(Fprofiler_cpu_start): Improve error message if 'setup_cpu_timer'
fails.  (Bug#20843)
This commit is contained in:
Ken Brown 2015-06-22 15:26:44 -04:00
parent 567bf811dc
commit dc30fb9247

View file

@ -250,7 +250,7 @@ deliver_profiler_signal (int signal)
deliver_process_signal (signal, handle_profiler_signal);
}
static enum profiler_cpu_running
static int
setup_cpu_timer (Lisp_Object sampling_interval)
{
struct sigaction action;
@ -263,7 +263,7 @@ setup_cpu_timer (Lisp_Object sampling_interval)
? ((EMACS_INT) TYPE_MAXIMUM (time_t) * billion
+ (billion - 1))
: EMACS_INT_MAX)))
return NOT_RUNNING;
return -1;
current_sampling_interval = XINT (sampling_interval);
interval = make_timespec (current_sampling_interval / billion,
@ -336,9 +336,18 @@ See also `profiler-log-size' and `profiler-max-stack-depth'. */)
profiler_max_stack_depth);
}
profiler_cpu_running = setup_cpu_timer (sampling_interval);
if (! profiler_cpu_running)
error ("Invalid sampling interval");
int status = setup_cpu_timer (sampling_interval);
if (status == -1)
{
profiler_cpu_running = NOT_RUNNING;
error ("Invalid sampling interval");
}
else
{
profiler_cpu_running = status;
if (! profiler_cpu_running)
error ("Unable to start profiler timer");
}
return Qt;
}