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.
This commit is contained in:
Ken Brown 2015-06-22 17:38:35 -04:00
parent dc30fb9247
commit 531125e4c0
2 changed files with 13 additions and 3 deletions

View file

@ -217,6 +217,12 @@ static EMACS_INT current_sampling_interval;
/* 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
handle_profiler_signal (int signal)
{

View file

@ -32,13 +32,17 @@ extern void unblock_tty_out_signal (sigset_t const *);
#define FORWARD_SIGNAL_TO_MAIN_THREAD
#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
# define HAVE_ITIMERSPEC
#endif
/* On Cygwin, setitimer does not support ITIMER_PROF, so we can't
support CPU profiling. */
#if (defined SIGPROF && !defined PROFILING && !defined CYGWIN \
#if (defined SIGPROF && !defined PROFILING \
&& (defined HAVE_SETITIMER || defined HAVE_ITIMERSPEC))
# define PROFILER_CPU_SUPPORT
#endif