#define MEMNOTI_FULL_VALUE (0.0) /* 0.0% under */
#define SIGNAL_NEED_CLEANUP "NeedCleanup"
-#define SIGNAL_LOWMEM_STATE "ChangeState"
-#define SIGNAL_LOWMEM_FULL "Full"
#define MEMNOTI_TIMER_INTERVAL 5000 /* milliseconds */
#define SIGNAL_POWEROFF_STATE "ChangeState"
_E("Fail to open %s", NEED_CLEANUP_FILE_PATH);
}
-static void memstatus_send_broadcast(enum memory_id no, char *signal, int status)
-{
- if (no == MEMORY_OPT)
- return;
-
- _I("signal %s status %d", signal, status);
- dbus_handle_broadcast_dbus_signal_var(STORAGED_PATH_LOWMEM, STORAGED_INTERFACE_LOWMEM,
- signal, g_variant_new("(i)", status));
-}
-
static void memcleanup_send_broadcast(struct storage_config_info *info, enum memnoti_level level, enum memnoti_level prev_level)
{
time_t t;
struct tm *timeinfo;
- const char *path;
+ enum tzplatform_variable path;
char *value;
char buf[20];
if (info->mem_id == MEMORY_INTERNAL)
- path = tzplatform_getenv(TZ_SYS_HOME);
+ path = TZ_SYS_USER;
else if (info->mem_id == MEMORY_TMP)
- path = MEMORY_STATUS_TMP_PATH;
+ path = TZ_SYS_TMP;
else if (info->mem_id == MEMORY_OPT)
- path = MEMORY_STATUS_OPT_PATH;
+ path = TZ_SYS_OPT;
else
return;
return;
if (level == MEMNOTI_LEVEL_WARNING)
- value = "warning";
+ value = "Warning";
else if (level == MEMNOTI_LEVEL_CRITICAL)
- value = "critical";
+ value = "Critical";
else if (level == MEMNOTI_LEVEL_FULL)
- value = "full";
+ value = "Full";
else
return;
t = time(NULL);
timeinfo = localtime(&t);
strftime(buf, sizeof(buf), "%b %d %T", timeinfo);
- _D("time: %s path: %s level: %s", buf, path, value);
+ _D("time: %s path: %d level: %s", buf, path, value);
dbus_handle_broadcast_dbus_signal_var(STORAGED_PATH_LOWMEM, STORAGED_INTERFACE_LOWMEM,
- SIGNAL_NEED_CLEANUP, g_variant_new("(ss)", path, value));
+ SIGNAL_NEED_CLEANUP, g_variant_new("(is)", path, value));
}
static void storage_status_broadcast(struct storage_config_info *info, double total, double avail)
{
double level = (avail/total)*100;
- int status = MEMNOTI_DISABLE;
enum memnoti_level prev_noti_level;
prev_noti_level = info->current_noti_level;
if (info->current_noti_level == MEMNOTI_LEVEL_FULL)
return;
info->current_noti_level = MEMNOTI_LEVEL_FULL;
- status = MEMNOTI_ENABLE;
- memstatus_send_broadcast(info->mem_id, SIGNAL_LOWMEM_FULL, status);
memcleanup_send_broadcast(info, info->current_noti_level, prev_noti_level);
if (level <= info->critical_level) {
if (info->current_noti_level == MEMNOTI_LEVEL_CRITICAL)
return;
- if (info->current_noti_level == MEMNOTI_LEVEL_FULL)
- memstatus_send_broadcast(info->mem_id, SIGNAL_LOWMEM_FULL, status);
info->current_noti_level = MEMNOTI_LEVEL_CRITICAL;
- status = MEMNOTI_ENABLE;
- memstatus_send_broadcast(info->mem_id, SIGNAL_LOWMEM_STATE, status);
memcleanup_send_broadcast(info, info->current_noti_level, prev_noti_level);
return;
}
- if (info->current_noti_level == MEMNOTI_LEVEL_FULL)
- memstatus_send_broadcast(info->mem_id, SIGNAL_LOWMEM_FULL, status);
- if (info->current_noti_level == MEMNOTI_LEVEL_CRITICAL)
- memstatus_send_broadcast(info->mem_id, SIGNAL_LOWMEM_STATE, status);
-
if (level <= info->warning_level) {
info->current_noti_level = MEMNOTI_LEVEL_WARNING;
_I("%d current level %4.4lf w:%4.4lf c:%4.4lf f:%4.4lf",
static void get_storage_status(const char *path, struct statvfs *s)
{
- if (strcmp(path, tzplatform_getenv(TZ_SYS_HOME)) == 0)
+ if (strcmp(path, tzplatform_getenv(TZ_SYS_USER)) == 0)
storage_get_internal_memory_size(s);
else
storage_get_memory_size(path, s);
static int init_storage_config_info_all(void)
{
- init_storage_config_info(tzplatform_getenv(TZ_SYS_HOME), &storage_internal_info);
+ init_storage_config_info(tzplatform_getenv(TZ_SYS_USER), &storage_internal_info);
init_storage_config_info(MEMORY_STATUS_TMP_PATH, &storage_tmp_info);
init_storage_config_info(MEMORY_STATUS_OPT_PATH, &storage_opt_info);
memnoti_timer = g_timeout_add(MEMNOTI_TIMER_INTERVAL,
const gchar *sender, const gchar *path, const gchar *iface, const gchar *name,
GVariant *param, GDBusMethodInvocation *invocation, gpointer user_data)
{
+ const char *temp;
char *str_path;
struct statvfs s;
+ struct stat buf;
pid_t pid;
unsigned long long dAvail = 0.0;
unsigned long long dTotal = 0.0;
+ int ret;
+ bool success = true;
g_variant_get(param, "(s)", &str_path);
- if (!strcmp(str_path, tzplatform_getenv(TZ_SYS_HOME)))
- storage_get_internal_memory_size(&s);
- else
- storage_get_memory_size(str_path, &s);
+ temp = tzplatform_getenv(TZ_SYS_USER);
+ if (!strncmp(str_path, temp, strlen(temp))) {
+ ret = stat(str_path, &buf);
+ if (ret == 0) {
+ ret = storage_get_internal_memory_size(&s);
+ if (ret < 0)
+ success = false;
+ } else
+ success = false;
+ } else {
+ ret = storage_get_memory_size(str_path, &s);
+ if (ret < 0)
+ success = false;
+ }
- dTotal = (unsigned long long)s.f_frsize * s.f_blocks;
- dAvail = (unsigned long long)s.f_bsize * s.f_bavail;
+ if (success) {
+ dTotal = (unsigned long long)s.f_frsize * s.f_blocks;
+ dAvail = (unsigned long long)s.f_bsize * s.f_bavail;
+ }
pid = dbus_handle_get_sender_pid(NULL, sender);
level = -1;
if (level == MEMNOTI_LEVEL_WARNING)
- value = "warning";
+ value = "Warning";
else if (level == MEMNOTI_LEVEL_CRITICAL)
- value = "critical";
+ value = "Critical";
else if (level == MEMNOTI_LEVEL_FULL)
- value = "full";
+ value = "Full";
else if (level == MEMNOTI_LEVEL_NORMAL)
- value = "normal";
+ value = "Normal";
else
value = "Not supported path";