Create server setup file after dbus connection 91/211691/3 accepted/tizen_5.5_unified_mobile_hotfix tizen_5.5_mobile_hotfix accepted/tizen/5.5/unified/20191031.022651 accepted/tizen/5.5/unified/mobile/hotfix/20201027.090433 accepted/tizen/unified/20190820.224212 submit/tizen/20190809.042802 submit/tizen/20190820.061055 submit/tizen_5.5/20191031.000004 submit/tizen_5.5_mobile_hotfix/20201026.185104 tizen_5.5.m2_release
authorYoungHun Kim <yh8004.kim@samsung.com>
Thu, 8 Aug 2019 07:17:40 +0000 (16:17 +0900)
committerYoungHun Kim <yh8004.kim@samsung.com>
Fri, 9 Aug 2019 03:40:49 +0000 (12:40 +0900)
Change-Id: I128601bdb1cf7c7bb1f565354af7c3333c1b9ef0

src/daemon/backend/murphy/mm_resource_manager_mloop.c
src/daemon/mm_resource_manager_daemon.c
src/daemon/mm_resource_manager_daemon_dbus.c
src/daemon/mm_resource_manager_daemon_priv.c
src/daemon/mm_resource_manager_daemon_priv.h
src/lib/mm_resource_manager_priv.c
src/lib/mm_resource_manager_priv.h

index f697454..e61f04b 100644 (file)
@@ -103,8 +103,6 @@ int _mm_resource_manager_mloop_create(mm_resource_manager_mloop_s **mrp)
 
        *mrp = handle;
 
-       _mmrm_dmn_notify_fork_done();
-
        MM_RM_INFO("Successfully performed mloop create");
 
        return ret;
index 12b7782..ccedc8a 100644 (file)
 
 
 
-#include <stdlib.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <unistd.h>
-#include <sys/types.h>
 #include <sys/stat.h>
-#include <fcntl.h>
-#include <glib.h>
 #include <iniparser.h>
-
 #include "common/mm_resource_manager_utils.h"
 #include "daemon/mm_resource_manager_daemon_priv.h"
 #include "daemon/mm_resource_manager_daemon_conf.h"
@@ -33,8 +25,6 @@
 
 
 
-#define PID_FILE "/tmp/.mm-res-mgr.pid"
-#define PID_MSG_LEN    (16)
 
 
 typedef enum {
@@ -54,9 +44,6 @@ static gboolean fork_wait(void);
 static daemonize_result_e daemonize(const char *path);
 static gboolean init_event(gpointer user_data);
 static void daemon_loop();
-static gboolean create_pid_file(void);
-static gboolean create_ready_file(void);
-static gboolean create_daemon_setup_file(void);
 static gboolean remove_pid_file(void);
 static gboolean remove_ready_file(void);
 static gboolean remove_daemon_setup_file(void);
@@ -166,72 +153,6 @@ end:
        } while (restart);
 }
 
-static gboolean create_pid_file(void)
-{
-       int fd;
-       struct flock lock;
-       char pid_buf[PID_MSG_LEN] = {'\0',};
-
-       fd = open(PID_FILE, O_WRONLY | O_CREAT, (S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH));
-       MM_RM_RETVM_IF(fd < 0, FALSE, "PID file cannot be created (%d)", errno);
-
-       lock.l_type = F_WRLCK;
-       lock.l_start = 0;
-       lock.l_whence = SEEK_SET;
-       lock.l_len = 1000;
-
-       if (fcntl(fd, F_SETLK, &lock) < 0) {
-               if (errno != EACCES && errno != EAGAIN)
-                       MM_RM_ERROR("Fail to lock pidfile [%d]", errno);
-               else
-                       MM_RM_ERROR("process is already running");
-
-               goto error;
-       }
-
-       if (ftruncate(fd, 0) < 0) {
-               MM_RM_ERROR("Fail to truncate pidfile [%d]", errno);
-               goto error;
-       }
-
-       memset(pid_buf, 0, sizeof(pid_buf));
-       snprintf(pid_buf, sizeof(pid_buf), "%u", getpid());
-
-       if (write(fd, pid_buf, strlen(pid_buf)) != (int)strlen(pid_buf)) {
-               MM_RM_ERROR("Fail to write pid to pidfile [%d]", errno);
-               goto error;
-       }
-
-       close(fd);
-
-       MM_RM_INFO("PID file (%s) is created", PID_FILE);
-       return TRUE;
-
-error:
-       close(fd);
-       return FALSE;
-}
-
-static gboolean create_ready_file(void)
-{
-       int fd = -1;
-
-       if ((fd = creat(MM_RESOURCE_MANAGER_READY, 0644)) != -1) {
-               MM_RM_INFO("ready file(%s) file was created", MM_RESOURCE_MANAGER_READY);
-               close(fd);
-       } else {
-               MM_RM_ERROR("cannot create ready file(%s), errno(%d)", MM_RESOURCE_MANAGER_READY, errno);
-               return FALSE;
-       }
-
-       return TRUE;
-}
-
-static gboolean create_daemon_setup_file(void)
-{
-       return create_pid_file() && create_ready_file();
-}
-
 static gboolean remove_pid_file(void)
 {
        if (unlink(PID_FILE) != 0) {
@@ -309,8 +230,6 @@ int main(int argc, char *argv[])
        case MM_RESOURCE_MANAGER_DAEMON_NOW:
                MM_RM_RETVM_IF(!set_signal_handlers(), EXIT_FAILURE,
                                "Daemon cannot set signal handlers");
-               MM_RM_RETVM_IF(!create_daemon_setup_file(), EXIT_FAILURE,
-                               "Daemon cannot create setup file");
 
                daemon_loop();
 
index 27e8d7b..a140c63 100755 (executable)
 #include "daemon/mm_resource_manager_daemon_conf.h"
 
 
-
 static MMResourceManager *interface;
 
 extern int notify_fd[2];
 
+
 static void __gv2c_array(GVariantIter *gv, mm_resource_manager_dmn_res_request_s **c);
 static gboolean on_get_conf(MMResourceManager *interface,
                GDBusMethodInvocation *invocation, gpointer user_data);
@@ -41,6 +41,72 @@ static void on_bus_acquired(GDBusConnection *connection, const gchar *name,
                gpointer user_data);
 
 
+static gboolean _create_pid_file(void)
+{
+       int fd;
+       struct flock lock;
+       char pid_buf[PID_MSG_LEN] = {'\0',};
+
+       fd = open(PID_FILE, O_WRONLY | O_CREAT, (S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH));
+       MM_RM_RETVM_IF(fd < 0, FALSE, "PID file cannot be created (%d)", errno);
+
+       lock.l_type = F_WRLCK;
+       lock.l_start = 0;
+       lock.l_whence = SEEK_SET;
+       lock.l_len = 1000;
+
+       if (fcntl(fd, F_SETLK, &lock) < 0) {
+               if (errno != EACCES && errno != EAGAIN)
+                       MM_RM_ERROR("Fail to lock pidfile [%d]", errno);
+               else
+                       MM_RM_ERROR("process is already running");
+
+               goto error;
+       }
+
+       if (ftruncate(fd, 0) < 0) {
+               MM_RM_ERROR("Fail to truncate pidfile [%d]", errno);
+               goto error;
+       }
+
+       memset(pid_buf, 0, sizeof(pid_buf));
+       snprintf(pid_buf, sizeof(pid_buf), "%u", getpid());
+
+       if (write(fd, pid_buf, strlen(pid_buf)) != (int)strlen(pid_buf)) {
+               MM_RM_ERROR("Fail to write pid to pidfile [%d]", errno);
+               goto error;
+       }
+
+       close(fd);
+
+       MM_RM_INFO("PID file (%s) is created", PID_FILE);
+       return TRUE;
+
+error:
+       close(fd);
+       return FALSE;
+}
+
+static gboolean _create_ready_file(void)
+{
+       int fd = -1;
+
+       if ((fd = creat(MM_RESOURCE_MANAGER_READY, 0644)) != -1) {
+               MM_RM_INFO("ready file(%s) file was created", MM_RESOURCE_MANAGER_READY);
+               close(fd);
+       } else {
+               MM_RM_ERROR("cannot create ready file(%s), errno(%d)", MM_RESOURCE_MANAGER_READY, errno);
+               return FALSE;
+       }
+
+       return TRUE;
+}
+
+static gboolean _create_daemon_setup_file(void)
+{
+       _mmrm_dmn_notify_fork_done();
+       return _create_pid_file() && _create_ready_file();
+}
 
 int _mmrm_dmn_dbus_init()
 {
@@ -276,5 +342,8 @@ static void on_bus_acquired(GDBusConnection *connection, const gchar *name,
                        connection, RMD_GDBUS_PATH, &error)) {
                MM_RM_ERROR("failed to export interface. msg : %s", error->message);
                g_error_free(error);
+               return;
        }
+
+       MM_RM_RETM_IF(!_create_daemon_setup_file(), "Daemon cannot create setup file");
 }
index f90b8e4..a0bb41b 100644 (file)
@@ -16,7 +16,6 @@
 
 #include <glib.h>
 #include <unistd.h>
-#include <fcntl.h>
 #include <sys/stat.h>
 #include <poll.h>
 #include <inttypes.h>
index 6d9909c..5e48465 100644 (file)
 #ifndef __MM_RESOURCE_MANAGER_DAEMON_PRIVATE__
 #define __MM_RESOURCE_MANAGER_DAEMON_PRIVATE__
 
+#include <stdio.h>
+#include <fcntl.h>
 #include "common/mm_resource_manager_utils.h"
 
 #define MSG_DONE "DONE"
-
+#define PID_FILE "/tmp/.mm-res-mgr.pid"
+#define PID_MSG_LEN (16)
 
 
 typedef struct {
index 6192b6d..c3a7cdd 100644 (file)
  * limitations under the License.
  */
 
-#include <stdlib.h>
-#include <inttypes.h>
-#include <glib.h>
-#include <unistd.h>
-#include <fcntl.h>
-#include <sys/stat.h>
-
 #include "common/mm_resource_manager_utils.h"
 #include "lib/mm_resource_manager_priv.h"
 #include "common/mm_resource_manager_dbus.h"
index 5363053..5532708 100644 (file)
@@ -22,6 +22,9 @@
 #include "lib/mm_resource_manager.h"
 
 #include <stdint.h>
+#include <stdlib.h>
+#include <inttypes.h>
+#include <fcntl.h>
 
 int _mm_resource_manager_create(mm_resource_manager_app_class_e app_class,
                mm_resource_manager_release_cb cb, void *cb_data,