From 16c14e1a58bf21e7b990b5b3781ac6a805cca00d Mon Sep 17 00:00:00 2001 From: Sukchan Lee Date: Fri, 4 Aug 2017 21:55:58 +0900 Subject: [PATCH] update it --- src/epc.c | 88 ++++++++++++++++++++++++++++-------------------------- src/init.c | 4 +-- 2 files changed, 48 insertions(+), 44 deletions(-) diff --git a/src/epc.c b/src/epc.c index 0e6beca807..1d4c0fd3b6 100644 --- a/src/epc.c +++ b/src/epc.c @@ -7,14 +7,14 @@ #include "context.h" #include "app.h" -static semaphore_id pgw_sem1; -static semaphore_id pgw_sem2; +static semaphore_id pgw_sem1 = 0; +static semaphore_id pgw_sem2 = 0; -static semaphore_id sgw_sem1; -static semaphore_id sgw_sem2; +static semaphore_id sgw_sem1 = 0; +static semaphore_id sgw_sem2 = 0; -static semaphore_id hss_sem1; -static semaphore_id hss_sem2; +static semaphore_id hss_sem1 = 0; +static semaphore_id hss_sem2 = 0; status_t app_initialize(char *config_path, char *log_path) { @@ -44,14 +44,14 @@ status_t app_initialize(char *config_path, char *log_path) if (pid == 0) { - semaphore_post(pgw_sem1); + if (pgw_sem1) semaphore_post(pgw_sem1); d_trace(1, "PGW try to initialize\n"); rv = pgw_initialize(); d_assert(rv == CORE_OK,, "Failed to intialize PGW"); d_trace(1, "PGW initialize...done\n"); - semaphore_wait(pgw_sem2); + if (pgw_sem2) semaphore_wait(pgw_sem2); if (rv == CORE_OK) { @@ -60,10 +60,11 @@ status_t app_initialize(char *config_path, char *log_path) d_trace(1, "PGW terminate...done\n"); } - semaphore_post(pgw_sem1); + if (pgw_sem1) semaphore_post(pgw_sem1); - semaphore_delete(pgw_sem1); /* allocated from parent process */ - semaphore_delete(pgw_sem2); /* allocated from parent process */ + /* allocated from parent process */ + if (pgw_sem1) semaphore_delete(pgw_sem1); + if (pgw_sem2) semaphore_delete(pgw_sem2); app_did_terminate(); @@ -72,7 +73,7 @@ status_t app_initialize(char *config_path, char *log_path) _exit(EXIT_SUCCESS); } - semaphore_wait(pgw_sem1); + if (pgw_sem1) semaphore_wait(pgw_sem1); } @@ -88,17 +89,18 @@ status_t app_initialize(char *config_path, char *log_path) if (pid == 0) { - semaphore_delete(pgw_sem1); /* allocated from parent process */ - semaphore_delete(pgw_sem2); /* allocated from parent process */ + /* allocated from parent process */ + if (pgw_sem1) semaphore_delete(pgw_sem1); + if (pgw_sem2) semaphore_delete(pgw_sem2); - semaphore_post(sgw_sem1); + if (sgw_sem1) semaphore_post(sgw_sem1); d_trace(1, "SGW try to initialize\n"); rv = sgw_initialize(); d_assert(rv == CORE_OK,, "Failed to intialize SGW"); d_trace(1, "SGW initialize...done\n"); - semaphore_wait(sgw_sem2); + if (sgw_sem2) semaphore_wait(sgw_sem2); if (rv == CORE_OK) { @@ -107,10 +109,11 @@ status_t app_initialize(char *config_path, char *log_path) d_trace(1, "SGW terminate...done\n"); } - semaphore_post(sgw_sem1); + if (sgw_sem1) semaphore_post(sgw_sem1); - semaphore_delete(sgw_sem1); /* allocated from parent process */ - semaphore_delete(sgw_sem2); /* allocated from parent process */ + /* allocated from parent process */ + if (sgw_sem1) semaphore_delete(sgw_sem1); + if (sgw_sem2) semaphore_delete(sgw_sem2); app_did_terminate(); @@ -119,7 +122,7 @@ status_t app_initialize(char *config_path, char *log_path) _exit(EXIT_SUCCESS); } - semaphore_wait(sgw_sem1); + if (sgw_sem1) semaphore_wait(sgw_sem1); } @@ -135,19 +138,20 @@ status_t app_initialize(char *config_path, char *log_path) if (pid == 0) { - semaphore_delete(pgw_sem1); /* allocated from parent process */ - semaphore_delete(pgw_sem2); /* allocated from parent process */ - semaphore_delete(sgw_sem1); /* allocated from parent process */ - semaphore_delete(sgw_sem2); /* allocated from parent process */ + /* allocated from parent process */ + if (pgw_sem1) semaphore_delete(pgw_sem1); + if (pgw_sem2) semaphore_delete(pgw_sem2); + if (sgw_sem1) semaphore_delete(sgw_sem1); + if (sgw_sem2) semaphore_delete(sgw_sem2); - semaphore_post(hss_sem1); + if (hss_sem1) semaphore_post(hss_sem1); d_trace(1, "HSS try to initialize\n"); rv = hss_initialize(); d_assert(rv == CORE_OK,, "Failed to intialize HSS"); d_trace(1, "HSS initialize...done\n"); - semaphore_wait(hss_sem2); + if (hss_sem2) semaphore_wait(hss_sem2); if (rv == CORE_OK) { @@ -156,10 +160,10 @@ status_t app_initialize(char *config_path, char *log_path) d_trace(1, "HSS terminate...done\n"); } - semaphore_post(hss_sem1); + if (hss_sem1) semaphore_post(hss_sem1); - semaphore_delete(hss_sem1); /* allocated from parent process */ - semaphore_delete(hss_sem2); /* allocated from parent process */ + if (hss_sem1) semaphore_delete(hss_sem1); + if (hss_sem2) semaphore_delete(hss_sem2); app_did_terminate(); @@ -168,7 +172,7 @@ status_t app_initialize(char *config_path, char *log_path) _exit(EXIT_SUCCESS); } - semaphore_wait(hss_sem1); + if (hss_sem1) semaphore_wait(hss_sem1); } rv = app_did_initialize(config_path, log_path); @@ -192,27 +196,27 @@ void app_terminate(void) if (context_self()->hidden.disable_hss == 0) { - semaphore_post(hss_sem2); - semaphore_wait(hss_sem1); + if (hss_sem2) semaphore_post(hss_sem2); + if (hss_sem1) semaphore_wait(hss_sem1); } - semaphore_delete(hss_sem1); - semaphore_delete(hss_sem2); + if (hss_sem1) semaphore_delete(hss_sem1); + if (hss_sem2) semaphore_delete(hss_sem2); if (context_self()->hidden.disable_sgw == 0) { - semaphore_post(sgw_sem2); - semaphore_wait(sgw_sem1); + if (sgw_sem2) semaphore_post(sgw_sem2); + if (sgw_sem1) semaphore_wait(sgw_sem1); } - semaphore_delete(sgw_sem1); - semaphore_delete(sgw_sem2); + if (sgw_sem1) semaphore_delete(sgw_sem1); + if (sgw_sem2) semaphore_delete(sgw_sem2); if (context_self()->hidden.disable_pgw == 0) { - semaphore_post(pgw_sem2); - semaphore_wait(pgw_sem1); + if (pgw_sem2) semaphore_post(pgw_sem2); + if (pgw_sem1) semaphore_wait(pgw_sem1); } - semaphore_delete(pgw_sem1); - semaphore_delete(pgw_sem2); + if (pgw_sem1) semaphore_delete(pgw_sem1); + if (pgw_sem2) semaphore_delete(pgw_sem2); app_did_terminate(); } diff --git a/src/init.c b/src/init.c index 75dc48fce3..8148a85d02 100644 --- a/src/init.c +++ b/src/init.c @@ -8,7 +8,7 @@ #include "app.h" -static thread_id logger_thread; +static thread_id logger_thread = 0; static void *THREAD_FUNC logger_main(thread_id id, void *data); status_t app_will_initialize(char *config_path, char *log_path) @@ -59,7 +59,7 @@ status_t app_did_initialize(char *config_path, char *log_path) void app_will_terminate(void) { - if (context_self()->log_path) + if (logger_thread) { thread_delete(logger_thread); }