From fa2550e8727f02ec03fd13576a6bccd5c3f00fe7 Mon Sep 17 00:00:00 2001 From: "giwoong.kim" Date: Fri, 9 Mar 2012 10:35:29 +0900 Subject: [PATCH] [Title] added emulsignal files [Type] [Module] [Priority] [Jira#] [Redmine#] [Problem] [Cause] [Solution] [TestCase] --- tizen/src/Makefile.tizen | 2 +- tizen/src/emulator.h | 2 +- tizen/src/emulsignal.c | 115 +++++++++++++++++++++++++++++++++++++++++++++++ tizen/src/emulsignal.h | 55 +++++++++++++++++++++++ 4 files changed, 172 insertions(+), 2 deletions(-) create mode 100644 tizen/src/emulsignal.c create mode 100644 tizen/src/emulsignal.h diff --git a/tizen/src/Makefile.tizen b/tizen/src/Makefile.tizen index 5aae37f..8166b5f 100644 --- a/tizen/src/Makefile.tizen +++ b/tizen/src/Makefile.tizen @@ -11,7 +11,7 @@ QEMU_CFLAGS += -L$(SRC_PATH)/tizen/distrib/ffmpeg/lib LIBS += -lavformat -lavcodec -lavutil -lm -lGL # maru loader -obj-y += emulator.o +obj-y += emulator.o emulsignal.o # sdb obj-y += sdb.o diff --git a/tizen/src/emulator.h b/tizen/src/emulator.h index 1ccebe5..369601d 100644 --- a/tizen/src/emulator.h +++ b/tizen/src/emulator.h @@ -5,7 +5,7 @@ * * Contact: * SeokYeon Hwang - * Hyunjun Son + * HyunJun Son * MunKyu Im * GiWoong Kim * YeongKyoon Lee diff --git a/tizen/src/emulsignal.c b/tizen/src/emulsignal.c new file mode 100644 index 0000000..e5f0989 --- /dev/null +++ b/tizen/src/emulsignal.c @@ -0,0 +1,115 @@ +/* + * Emulator signal handler + * + * Copyright (C) 2000 - 2011 Samsung Electronics Co., Ltd. All rights reserved. + * + * Contact: + * DoHyung Hong + * SeokYeon Hwang + * HyunJun Son + * SangJin Kim + * MunKyu Im + * KiTae Kim + * JinHyung Jo + * SungMin Ha + * JiHye Kim + * GiWoong Kim + * YeongKyoon Lee + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + * Contributors: + * - S-Core Co., Ltd + * + */ + +#include "emulsignal.h" +#include "debug_ch.h" +#ifndef _WIN32 +#include +#include +#endif + +MULTI_DEBUG_CHANNEL(qemu, emulsignal); + + +static sigset_t cur_sigset, old_sigset; + +int sig_block(void) +{ +#ifndef _WIN32 + sigfillset (&cur_sigset); + + if (sigprocmask (SIG_BLOCK, &cur_sigset, &old_sigset) < 0) { + ERR( "sigprocmask error \n"); + } +#endif + return 0; + +} + +int sig_unblock(void) +{ +#ifndef _WIN32 + sigfillset (&cur_sigset); + + if (sigprocmask (SIG_SETMASK, &old_sigset, NULL) < 0) { + ERR( "sigprocmask error \n"); + } +#endif + return 0; +} + +void sig_handler (int signo) +{ + sigset_t sigset, oldset; + + TRACE("signo %d happens\n", signo); + switch (signo) { + case SIGINT: + case SIGQUIT: + case SIGTERM: + sigfillset (&sigset); + + if (sigprocmask (SIG_BLOCK, &sigset, &oldset) < 0) { + ERR( "sigprocmask %d error \n", signo); + //exit_emulator(); + } + + if (sigprocmask (SIG_SETMASK, &oldset, NULL) < 0) { + ERR( "sigprocmask error \n"); + } + + //exit_emulator(); + exit(0); + break; + + default: + break; + } +} + +int register_sig_handler(void) +{ +#ifndef _WIN32 + signal (SIGINT, sig_handler); + signal (SIGQUIT, sig_handler); + signal (SIGTERM, sig_handler); +#endif + TRACE( "resist sig handler\n"); + + return 0; +} + diff --git a/tizen/src/emulsignal.h b/tizen/src/emulsignal.h new file mode 100644 index 0000000..879bfbc --- /dev/null +++ b/tizen/src/emulsignal.h @@ -0,0 +1,55 @@ +/* + * Emulator signal handler + * + * Copyright (C) 2000 - 2011 Samsung Electronics Co., Ltd. All rights reserved. + * + * Contact: + * DoHyung Hong + * SeokYeon Hwang + * HyunJun Son + * SangJin Kim + * MunKyu Im + * KiTae Kim + * JinHyung Jo + * SungMin Ha + * JiHye Kim + * GiWoong Kim + * YeongKyoon Lee + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + * Contributors: + * - S-Core Co., Ltd + * + */ + + +#ifndef __EMULSIGNAL_H__ +#define __EMULSIGNAL_H__ + +#include +#include +#include +#ifndef _WIN32 +#include +#endif + + +int sig_block(void); +int sig_unblock(void); +void sig_handler (int signo); +int register_sig_handler(void); + +#endif /* __EMULSIGNAL_H__ */ -- 2.7.4