From: giyeol.ok Date: Mon, 15 Apr 2013 07:05:28 +0000 (+0900) Subject: patch crashed mmc notification popup routine X-Git-Tag: submit/tizen_ivi_release/20140401.030119~118 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=refs%2Fchanges%2F10%2F14710%2F1;p=platform%2Fcore%2Fsystem%2Fsystem-server.git patch crashed mmc notification popup routine Change-Id: I42631ba3b4b175ba85f2de52d3a93a60bbf2b178 Signed-off-by: giyeol.ok --- diff --git a/src/mmc/mmc-handler.c b/src/mmc/mmc-handler.c index 2be0a99..79f65cb 100644 --- a/src/mmc/mmc-handler.c +++ b/src/mmc/mmc-handler.c @@ -38,9 +38,7 @@ #define PREDEF_MOUNT_MMC "mountmmc" #define PREDEF_UNMOUNT_MMC "unmountmmc" #define PREDEF_FORMAT_MMC "formatmmc" -#define PREDEF_CHECK_SMACK_MMC "checksmackmmc" -#define PREDEF_CHECK_MMC "checkmmc" -#define PREDEF_CHECK_MMC_PROC "checkmmcproc" +#define PREDEF_CHECK_SMACK_MMC "checksmackmmc" #define MMC_MOUNT_POINT "/opt/storage/sdcard" @@ -509,33 +507,6 @@ static const char **get_check_argument(const char *path) return NULL; } -static int mmc_check_process_launch(int argc, char **argv) -{ - const char **params; - char buf[NAME_MAX]; - int pid; - - params = get_check_argument((const char*)argv[1]); - if ((pid = exec_process(params)) < 0) { - _E("mmc checker failed"); - goto run_mount; - } - - snprintf(buf, sizeof(buf), "%s%d", "/proc/", pid); - _E("child process : %s", buf); - - while (1) { - sleep(1); - _E("mmc checking ...."); - if (access(buf, R_OK) != 0) - break; - } -run_mount: - ss_action_entry_call_internal(PREDEF_CHECK_MMC,0); - return 0; - -} - int ss_mmc_unmounted(int argc, char **argv) { int option = -1; @@ -566,17 +537,6 @@ int ss_mmc_unmounted(int argc, char **argv) return 0; } - -static int __ss_rw_mount(const char* szPath) -{ - struct statvfs mount_stat; - if (!statvfs(szPath, &mount_stat)) { - if ((mount_stat.f_flag & ST_RDONLY) == ST_RDONLY) - return -1; - } - return 0; -} - static int __ss_check_smack_popup(void) { bundle *b = NULL; @@ -665,7 +625,17 @@ static int __mmc_mount_fs(void) return 0; } -static int mmc_check_mount(int argc, char **argv) +static int __ss_rw_mount(const char* szPath) +{ + struct statvfs mount_stat; + if (!statvfs(szPath, &mount_stat)) { + if ((mount_stat.f_flag & ST_RDONLY) == ST_RDONLY) + return -1; + } + return 0; +} + +static int mmc_check_mount(void) { int r; r = __mmc_mount_fs(); @@ -692,17 +662,40 @@ mount_fail: vconf_set_int(VCONFKEY_SYSMAN_MMC_STATUS, VCONFKEY_SYSMAN_MMC_REMOVED); vconf_set_int(VCONFKEY_SYSMAN_MMC_MOUNT, VCONFKEY_SYSMAN_MMC_MOUNT_FAILED); vconf_set_int(VCONFKEY_SYSMAN_MMC_ERR_STATUS, VCONFKEY_SYSMAN_MMC_EINVAL); - return 0; + return -1; mount_wait: _E("wait ext4 smack rule checking"); return 0; } +static int mmc_check_process_launch(char *path) +{ + const char **params; + char buf[NAME_MAX]; + int pid; + + params = get_check_argument((const char*)path); + if ((pid = exec_process(params)) < 0) { + PRT_TRACE_ERR("mmc checker failed"); + goto run_mount; + } + + snprintf(buf, sizeof(buf), "%s%d", "/proc/", pid); + PRT_TRACE_ERR("child process : %s", buf); + + while (1) { + PRT_TRACE_ERR("mmc checking ...."); + if (access(buf, R_OK) != 0) + break; + sleep(1); + } +run_mount: + return mmc_check_mount(); +} + static int __check_mmc_fs(void) { char buf[NAME_MAX]; - char params[NAME_MAX]; - char options[NAME_MAX]; int fd; int blk_num; int ret = 0; @@ -733,11 +726,7 @@ static int __check_mmc_fs(void) _E("fail to check mount point %s", buf); return -1; } - snprintf(params, sizeof(params), "%d", inserted_type); - if (ss_action_entry_call_internal(PREDEF_CHECK_MMC_PROC, 2, params, buf) < 0) { - _E("fail to launch mmc checker,direct mount mmc"); - ret = mmc_check_mount(0, NULL); - } + ret = mmc_check_process_launch(buf); return ret; } @@ -804,8 +793,6 @@ static void mmc_init(void *data) ss_action_entry_add_internal(PREDEF_UNMOUNT_MMC, ss_mmc_unmounted, NULL, NULL); ss_action_entry_add_internal(PREDEF_FORMAT_MMC, ss_mmc_format, NULL, NULL); ss_action_entry_add_internal(PREDEF_CHECK_SMACK_MMC, ss_mmc_check_smack, NULL, NULL); - ss_action_entry_add_internal(PREDEF_CHECK_MMC, mmc_check_mount, NULL, NULL); - ss_action_entry_add_internal(PREDEF_CHECK_MMC_PROC, mmc_check_process_launch, NULL, NULL); /* mmc card mount */ if (__check_mmc_fs() != 0) _E("failed to check mmc");