Fix svace issue 36/288736/3 accepted/tizen/7.0/unified/20230227.140636
authorYoungHun Kim <yh8004.kim@samsung.com>
Wed, 22 Feb 2023 06:22:56 +0000 (15:22 +0900)
committerYoungHun Kim <yh8004.kim@samsung.com>
Thu, 23 Feb 2023 06:05:54 +0000 (15:05 +0900)
Change-Id: If274f4d84044220e9543991f49f073291a893da7

packaging/mused.spec
server/src/muse_server_system.c

index 2e6d17d..b7cd5fd 100644 (file)
@@ -1,6 +1,6 @@
 Name:       mused
 Summary:    A multimedia daemon
-Version:    0.3.163
+Version:    0.3.164
 Release:    0
 Group:      System/Libraries
 License:    Apache-2.0
index 602c93d..4618efd 100644 (file)
@@ -320,26 +320,34 @@ static gboolean _ms_system_cpu_usage_cb(gpointer user_data)
 
        sscanf(buf, "cpu %llu %llu %llu %llu", &u, &n, &s, &i);
 
-       u -= system->st.user;
-       n -= system->st.nice;
-       s -= system->st.system;
-       i -= system->st.idle;
+       u = u > system->st.user ? u - system->st.user : 0;
+       n = n > system->st.nice ? n - system->st.nice : 0;
+       s = s > system->st.system ? s - system->st.system : 0;
+       i = i > system->st.idle ? i - system->st.idle : 0;
 
        system->st.user += u;
        system->st.nice += n;
        system->st.system += s;
        system->st.idle += i;
 
-       system->st.usage = (int)100 * (u + n + s) / (u + n + s + i);
+       if (u + n + s + i == 0) {
+               LOGD("[#%d] cpu usage is 0%%", system->st.counter);
+               return G_SOURCE_REMOVE;
+       }
+
+       system->st.usage = (int)(100 * ((double)(u + n + s) / (u + n + s + i)));
        LOGD("[#%d] cpu usage %d %%", system->st.counter, system->st.usage);
 
-       if (system->st.usage < cpu_threshold)
+       if (system->st.usage < cpu_threshold) {
+               LOGD("[#%d] cpu usage (%d) < cpu_threshold (%d)", system->st.counter, system->st.usage, cpu_threshold);
                return G_SOURCE_REMOVE;
+       }
 
        system->st.counter++;
 
        if (system->st.counter >= MUSE_STAT_CHECK_COUNT) {
-               ms_log_process_info(ms_get_instance()->pid);
+               if (ms_get_instance())
+                       ms_log_process_info(ms_get_instance()->pid);
 
                snprintf(err_msg, sizeof(err_msg), "[CPU BUSY] %d >= %d %%", system->st.usage, cpu_threshold);