diff options
author | Justin Dickow <jjdickow@gmail.com> | 2015-01-26 11:15:48 -0500 |
---|---|---|
committer | Justin Dickow <jjdickow@gmail.com> | 2015-01-26 11:15:48 -0500 |
commit | 46ed776c537131e72747538488b213cf45f23e22 (patch) | |
tree | 4cad1abf411addfd72ab591c93edeb5d225d9a39 /src/components/utils/src/signals_linux.cc | |
parent | a24079cb8de5563376dcf782cdb9fe3cae063841 (diff) | |
download | sdl_core-46ed776c537131e72747538488b213cf45f23e22.tar.gz |
Latest internal release - last bulk merge before pull request and gitflow!?
Smoke tested on Ubuntu 12.04
Signed-off-by: Justin Dickow <jjdickow@gmail.com>
Diffstat (limited to 'src/components/utils/src/signals_linux.cc')
-rw-r--r-- | src/components/utils/src/signals_linux.cc | 83 |
1 files changed, 37 insertions, 46 deletions
diff --git a/src/components/utils/src/signals_linux.cc b/src/components/utils/src/signals_linux.cc index 2e598d1b0f..3ded6a5877 100644 --- a/src/components/utils/src/signals_linux.cc +++ b/src/components/utils/src/signals_linux.cc @@ -1,63 +1,54 @@ /* - * Copyright (c) 2014, Ford Motor Company - * All rights reserved. - * - * 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 Ford Motor Company 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 HOLDER 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. - */ +* Copyright (c) 2014, Ford Motor Company +* All rights reserved. +* +* 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 Ford Motor Company 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 HOLDER 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. +*/ #include <csignal> #include <cstdlib> #include <stdint.h> -#include "utils/signals.h" - namespace utils { -bool SubscribeToTerminateSignal(sighandler_t func) { +bool SubscribeToTerminateSignal(void (*func)(int32_t p)) { struct sigaction act; act.sa_handler = func; sigemptyset(&act.sa_mask); act.sa_flags = 0; - bool sigint_subscribed = (sigaction(SIGINT, &act, NULL) == 0); - bool sigterm_subscribed = (sigaction(SIGTERM, &act, NULL) == 0); - - return sigint_subscribed && sigterm_subscribed; + return (sigaction(SIGINT, &act, NULL) == 0) + && (sigaction(SIGTERM, &act, NULL) == 0); } -bool SubscribeToFaultSignal(sighandler_t func) { - struct sigaction act; - act.sa_handler = func; - sigemptyset(&act.sa_mask); - act.sa_flags = SA_RESETHAND; // we only want to catch SIGSEGV once to flush logger queue - - bool sigsegv_subscribed = (sigaction(SIGSEGV, &act, NULL) == 0); - - return sigsegv_subscribed; +bool ResetSubscribeToTerminateSignal() { + void (*prev_func)(int32_t p); + prev_func = signal(SIGINT, SIG_DFL); + return (SIG_ERR != prev_func); } } // namespace utils |