From de79c9158eae1459970e0df6efc6a2b09d920f15 Mon Sep 17 00:00:00 2001 From: Jens Axboe Date: Mon, 4 Aug 2008 21:43:55 +0200 Subject: [PATCH] Add SIGILL signal handler If crc32c-intel is used and the opcode isn't supported by the CPU, we'll display a nice warning instead of just dying. Signed-off-by: Jens Axboe --- fio.c | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/fio.c b/fio.c index cedbfb0d..ee752e12 100644 --- a/fio.c +++ b/fio.c @@ -125,6 +125,17 @@ static void sig_int(int sig) } } +static void sig_ill(int sig) +{ + if (!threads) + return; + + log_err("fio: illegal instruction. your cpu does not support " + "the sse4.2 instruction for crc32c\n"); + terminate_threads(TERMINATE_ALL); + exit(4); +} + static void set_sig_handlers(void) { struct sigaction act; @@ -138,6 +149,11 @@ static void set_sig_handlers(void) act.sa_handler = sig_int; act.sa_flags = SA_RESTART; sigaction(SIGINT, &act, NULL); + + memset(&act, 0, sizeof(act)); + act.sa_handler = sig_ill; + act.sa_flags = SA_RESTART; + sigaction(SIGILL, &act, NULL); } /* -- 2.25.1