#include <errno.h>
#include <pthread.h>
#include <signal.h>
+#include <stdlib.h>
#define EXPORT_API __attribute__((__visibility__("default")))
#define MAX_FILE_LENGTH 256
void __session_signal_handler(int signo, siginfo_t *siginfo, void *context)
{
- char filename[MAX_FILE_LENGTH];
- char str_error[256];
+ sigset_t old_mask, all_mask;
- debug_warning("ENTER, sig.num(%d)", signo);
+ debug_warning("ENTER, signo(%d), siginfo(%p), context(%p)", signo, siginfo, context);
/* signal block -------------- */
- sigset_t old_mask, all_mask;
sigfillset(&all_mask);
sigprocmask(SIG_BLOCK, &all_mask, &old_mask);
- snprintf(filename, sizeof(filename) - 1, "/tmp/mm_session_%d", getpid());
- if (!remove(filename)) {
- debug_log(" remove %s success\n", filename);
- } else {
- strerror_r(errno, str_error, sizeof(str_error));
- debug_error(" remove %s failed with %s\n", filename, str_error);
- }
+ _mm_session_util_delete_information(-1);
sigprocmask(SIG_SETMASK, &old_mask, NULL);
/* signal unblock ------------ */
debug_warning("LEAVE");
}
+#ifdef TIZEN_TV
+EXPORT_API
+void mm_session_dotnet_cleanup(int signo)
+{
+ debug_warning("dotnet cleanup [%d]", signo);
+ _mm_session_util_delete_information(-1);
+
+}
+static bool _is_dotnet_app(void)
+{
+ char *is_dotnet = NULL;
+
+ is_dotnet = getenv("DOTNET_APP");
+ if (is_dotnet && atoi(is_dotnet) == 1)
+ return true;
+ else
+ return false;
+}
+#endif
+
__attribute__ ((constructor))
void __mmsession_initialize(void)
{
struct sigaction session_action;
- session_action.sa_sigaction = __session_signal_handler;
- session_action.sa_flags = SA_NOCLDSTOP | SA_SIGINFO;
debug_fenter();
+#ifdef TIZEN_TV
+ if (_is_dotnet_app()) {
+ debug_warning("no signal handler for dotnet!!");
+ return;
+ }
+#endif
+ session_action.sa_sigaction = __session_signal_handler;
+ session_action.sa_flags = SA_NOCLDSTOP | SA_SIGINFO;
+
sigemptyset(&session_action.sa_mask);
sigaction(SIGINT, &session_action, &session_int_old_action);
debug_fenter();
_mm_session_util_delete_information(-1);
-
+#ifdef TIZEN_TV
+ if (_is_dotnet_app()) {
+ debug_warning("no signal handler for dotnet!!");
+ return;
+ }
+#endif
sigaction(SIGINT, &session_int_old_action, NULL);
sigaction(SIGABRT, &session_abrt_old_action, NULL);
sigaction(SIGSEGV, &session_segv_old_action, NULL);