Commit 531125e4 authored by Ken Brown's avatar Ken Brown
Browse files

Enable CPU profiling on Cygwin

* src/syssignal.h [CYGWIN] (PROFILER_CPU_SUPPORT): Revert previous
change that undefined this.
(SIGEV_SIGNAL): Ensure that this is defined as a macro.
* src/profiler.c [CYGWIN] (timer_getoverrun): Define as a macro on
  Cygwin.
parent dc30fb92
...@@ -217,6 +217,12 @@ static EMACS_INT current_sampling_interval; ...@@ -217,6 +217,12 @@ static EMACS_INT current_sampling_interval;
/* Signal handler for sampling profiler. */ /* Signal handler for sampling profiler. */
/* timer_getoverrun is not implemented on Cygwin, but the following
seems to be good enough for profiling. */
#ifdef CYGWIN
#define timer_getoverrun(x) 0
#endif
static void static void
handle_profiler_signal (int signal) handle_profiler_signal (int signal)
{ {
......
...@@ -32,13 +32,17 @@ extern void unblock_tty_out_signal (sigset_t const *); ...@@ -32,13 +32,17 @@ extern void unblock_tty_out_signal (sigset_t const *);
#define FORWARD_SIGNAL_TO_MAIN_THREAD #define FORWARD_SIGNAL_TO_MAIN_THREAD
#endif #endif
/* On Cygwin as of 2015-06-22 SIGEV_SIGNAL is defined as an enum
constant but not as a macro. */
#if defined CYGWIN && !defined SIGEV_SIGNAL
#define SIGEV_SIGNAL SIGEV_SIGNAL
#endif
#if defined HAVE_TIMER_SETTIME && defined SIGEV_SIGNAL #if defined HAVE_TIMER_SETTIME && defined SIGEV_SIGNAL
# define HAVE_ITIMERSPEC # define HAVE_ITIMERSPEC
#endif #endif
/* On Cygwin, setitimer does not support ITIMER_PROF, so we can't #if (defined SIGPROF && !defined PROFILING \
support CPU profiling. */
#if (defined SIGPROF && !defined PROFILING && !defined CYGWIN \
&& (defined HAVE_SETITIMER || defined HAVE_ITIMERSPEC)) && (defined HAVE_SETITIMER || defined HAVE_ITIMERSPEC))
# define PROFILER_CPU_SUPPORT # define PROFILER_CPU_SUPPORT
#endif #endif
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment