diff options
| author | Ken Brown | 2015-06-22 17:38:35 -0400 |
|---|---|---|
| committer | Ken Brown | 2015-06-22 17:38:35 -0400 |
| commit | 531125e4c024ca12701608c4516cb9cf993cfad2 (patch) | |
| tree | c477e5b6b4a9e1e429f9f2bdf0a2d0f8f8a3144b | |
| parent | dc30fb9247d5d9d98ae1c3501d3ffa90e2001a46 (diff) | |
| download | emacs-531125e4c024ca12701608c4516cb9cf993cfad2.tar.gz emacs-531125e4c024ca12701608c4516cb9cf993cfad2.zip | |
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.
| -rw-r--r-- | src/profiler.c | 6 | ||||
| -rw-r--r-- | src/syssignal.h | 10 |
2 files changed, 13 insertions, 3 deletions
diff --git a/src/profiler.c b/src/profiler.c index 185382c5bd8..d4c98a82657 100644 --- a/src/profiler.c +++ b/src/profiler.c | |||
| @@ -217,6 +217,12 @@ static EMACS_INT current_sampling_interval; | |||
| 217 | 217 | ||
| 218 | /* Signal handler for sampling profiler. */ | 218 | /* Signal handler for sampling profiler. */ |
| 219 | 219 | ||
| 220 | /* timer_getoverrun is not implemented on Cygwin, but the following | ||
| 221 | seems to be good enough for profiling. */ | ||
| 222 | #ifdef CYGWIN | ||
| 223 | #define timer_getoverrun(x) 0 | ||
| 224 | #endif | ||
| 225 | |||
| 220 | static void | 226 | static void |
| 221 | handle_profiler_signal (int signal) | 227 | handle_profiler_signal (int signal) |
| 222 | { | 228 | { |
diff --git a/src/syssignal.h b/src/syssignal.h index 28824003c5d..5c14479ccad 100644 --- a/src/syssignal.h +++ b/src/syssignal.h | |||
| @@ -32,13 +32,17 @@ extern void unblock_tty_out_signal (sigset_t const *); | |||
| 32 | #define FORWARD_SIGNAL_TO_MAIN_THREAD | 32 | #define FORWARD_SIGNAL_TO_MAIN_THREAD |
| 33 | #endif | 33 | #endif |
| 34 | 34 | ||
| 35 | /* On Cygwin as of 2015-06-22 SIGEV_SIGNAL is defined as an enum | ||
| 36 | constant but not as a macro. */ | ||
| 37 | #if defined CYGWIN && !defined SIGEV_SIGNAL | ||
| 38 | #define SIGEV_SIGNAL SIGEV_SIGNAL | ||
| 39 | #endif | ||
| 40 | |||
| 35 | #if defined HAVE_TIMER_SETTIME && defined SIGEV_SIGNAL | 41 | #if defined HAVE_TIMER_SETTIME && defined SIGEV_SIGNAL |
| 36 | # define HAVE_ITIMERSPEC | 42 | # define HAVE_ITIMERSPEC |
| 37 | #endif | 43 | #endif |
| 38 | 44 | ||
| 39 | /* On Cygwin, setitimer does not support ITIMER_PROF, so we can't | 45 | #if (defined SIGPROF && !defined PROFILING \ |
| 40 | support CPU profiling. */ | ||
| 41 | #if (defined SIGPROF && !defined PROFILING && !defined CYGWIN \ | ||
| 42 | && (defined HAVE_SETITIMER || defined HAVE_ITIMERSPEC)) | 46 | && (defined HAVE_SETITIMER || defined HAVE_ITIMERSPEC)) |
| 43 | # define PROFILER_CPU_SUPPORT | 47 | # define PROFILER_CPU_SUPPORT |
| 44 | #endif | 48 | #endif |