diff -r 7f99fdefa615 -r adc19edfa256 src/base/pollevent.cc --- a/src/base/pollevent.cc Fri Nov 02 13:12:59 2012 -0400 +++ b/src/base/pollevent.cc Fri Nov 02 13:12:59 2012 -0400 @@ -41,6 +41,7 @@ #include "base/misc.hh" #include "base/pollevent.hh" +#include "base/signal.hh" #include "base/types.hh" #include "sim/async.hh" #include "sim/core.hh" @@ -231,14 +232,14 @@ sigemptyset(&act.sa_mask); act.sa_flags = SA_RESTART; - if (sigaction(SIGIO, &act, &oldio) == -1) + if (sigaction(Signal::PollQueueIO, &act, &oldio) == -1) panic("could not do sigaction"); act.sa_handler = handleALRM; sigemptyset(&act.sa_mask); act.sa_flags = SA_RESTART; - if (sigaction(SIGALRM, &act, &oldalrm) == -1) + if (sigaction(Signal::PollQueueAlarm, &act, &oldalrm) == -1) panic("could not do sigaction"); alarm(1); @@ -249,17 +250,17 @@ void PollQueue::removeHandler() { - if (sigaction(SIGIO, &oldio, NULL) == -1) + if (sigaction(Signal::PollQueueIO, &oldio, NULL) == -1) panic("could not remove handler"); - if (sigaction(SIGIO, &oldalrm, NULL) == -1) + if (sigaction(Signal::PollQueueAlarm, &oldalrm, NULL) == -1) panic("could not remove handler"); } void PollQueue::handleIO(int sig) { - if (sig != SIGIO) + if (sig != Signal::PollQueueIO) panic("Wrong Handler"); async_event = true; diff -r 7f99fdefa615 -r adc19edfa256 src/base/signal.hh --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/base/signal.hh Fri Nov 02 13:12:59 2012 -0400 @@ -0,0 +1,86 @@ +/* + * Copyright (c) 2012 ARM Limited + * All rights reserved + * + * The license below extends only to copyright in the software and shall + * not be construed as granting a license to any other intellectual + * property including but not limited to intellectual property relating + * to a hardware implementation of the functionality of the software + * licensed hereunder. You may use the software subject to the license + * terms below provided that you ensure that this notice is replicated + * unmodified and in its entirety in all distributions of the software, + * modified or unmodified, in source code or in binary form. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer; + * redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution; + * neither the name of the copyright holders nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * Authors: Andreas Sandberg + */ + +#ifndef __BASE_SIGNALS_HH__ +#define __BASE_SIGNALS_HH__ + +#include + +/** + * POSIX signals used by gem5 + * + * This name space defines a set of constants listing signals used + * internally by gem5. + * + * @note Some of the signals listed in this file have a special + * meaning in the POSIX standard, which means that they are not + * configurable. + * + * @see initSignals(), and PollQueue + */ +namespace Signal { + +/** @{ */ +/** Print out cycle number on abort */ +static const int BaseAbort = SIGABRT; +/** We use SIGTRAP sometimes for debugging */ +static const int BaseDebugTrap = SIGTRAP; +/** Signal to trigger a dump and reset of intermediate statistics. */ +static const int BaseDumpResetStats = SIGUSR2; +/** Signal to trigger a dump of intermediate statistics. */ +static const int BaseDumpStats = SIGUSR1; +/** + * Floating point exceptions may happen on misspeculated paths, so + * ignore them. + */ +static const int BaseFPException = SIGFPE; +/** Exit cleanly on Interrupt (Ctrl-C) */ +static const int BaseInterrupt = SIGINT; +/** @} */ + +/** @{ */ +/** Alarm signal is used by the PollQueue. */ +static const int PollQueueAlarm = SIGALRM; +/** Signal used to trigger PollQueue event processing */ +static const int PollQueueIO = SIGIO; +/** @} */ + +} + +#endif diff -r 7f99fdefa615 -r adc19edfa256 src/sim/init.cc --- a/src/sim/init.cc Fri Nov 02 13:12:59 2012 -0400 +++ b/src/sim/init.cc Fri Nov 02 13:12:59 2012 -0400 @@ -55,6 +55,7 @@ #include "base/cprintf.hh" #include "base/misc.hh" +#include "base/signal.hh" #include "base/types.hh" #include "sim/async.hh" #include "sim/core.hh" @@ -102,22 +103,22 @@ { // Floating point exceptions may happen on misspeculated paths, so // ignore them - signal(SIGFPE, SIG_IGN); + signal(Signal::BaseFPException, SIG_IGN); // We use SIGTRAP sometimes for debugging - signal(SIGTRAP, SIG_IGN); + signal(Signal::BaseDebugTrap, SIG_IGN); // Dump intermediate stats - signal(SIGUSR1, dumpStatsHandler); + signal(Signal::BaseDumpStats, dumpStatsHandler); // Dump intermediate stats and reset them - signal(SIGUSR2, dumprstStatsHandler); + signal(Signal::BaseDumpResetStats, dumprstStatsHandler); // Exit cleanly on Interrupt (Ctrl-C) - signal(SIGINT, exitNowHandler); + signal(Signal::BaseInterrupt, exitNowHandler); // Print out cycle number on abort - signal(SIGABRT, abortHandler); + signal(Signal::BaseAbort, abortHandler); } // The python library is totally messed up with respect to constness,