#include "edbus-handler.h"
#include "macro.h"
#include "resourced.h"
+#include "util.h"
#define EDBUS_INIT_RETRY_COUNT 5
const char *sig, char *param[])
{
DBusConnection *conn;
- DBusMessage *msg;
DBusMessageIter iter;
DBusMessage *reply;
- DBusError err;
+ _cleanup_dbus_error_free_ DBusError err = DBUS_ERROR_INIT;
+ _cleanup_dbus_message_unref_ DBusMessage *msg = NULL;
int r;
conn = dbus_bus_get(DBUS_BUS_SYSTEM, NULL);
r = append_variant(&iter, sig, param);
if (r < 0) {
_E("append_variant error(%d)", r);
- dbus_message_unref(msg);
dbus_connection_unref(conn);
return NULL;
}
- dbus_error_init(&err);
-
reply = dbus_connection_send_with_reply_and_block(conn, msg,
DBUS_REPLY_TIMEOUT, &err);
- if (dbus_error_is_set(&err)) {
- _E("dbus_connection_send error(%s:%s)", err.name, err.message);
- dbus_error_free(&err);
- reply = NULL;
- }
- dbus_message_unref(msg);
+ if (!reply) {
+ if (dbus_error_is_set(&err))
+ _E("dbus_connection_send error: (%s:%s) %s %s:%s-%s", err.name, err.message, dest, path, interface, method);
+ else
+ _E("dbus_connection_send error : %s %s:%s-%s", dest, path, interface, method);
+ }
dbus_connection_unref(conn);
return reply;
}
int num, va_list args)
{
DBusConnection *conn;
- DBusMessage *msg;
DBusMessage *reply;
DBusMessageIter iter;
DBusMessageIter aiter, piter;
- DBusError err;
+ _cleanup_dbus_error_free_ DBusError err = DBUS_ERROR_INIT;
+ _cleanup_dbus_message_unref_ DBusMessage *msg = NULL;
int ret, result, i;
char *key, *value;
dbus_message_iter_close_container(&iter, &aiter);
- dbus_error_init(&err);
-
reply = dbus_connection_send_with_reply_and_block(conn, msg, DBUS_REPLY_TIMEOUT, &err);
- dbus_message_unref(msg);
if (!reply) {
- _E("dbus_connection_send error(%s:%s) %s %s:%s-%s",
- err.name, err.message, dest, path, interface, method);
- dbus_error_free(&err);
+ if (dbus_error_is_set(&err))
+ _E("dbus_connection_send error: (%s:%s) %s %s:%s-%s", err.name, err.message, dest, path, interface, method);
+ else
+ _E("dbus_connection_send error : %s %s:%s-%s", dest, path, interface, method);
return -ECOMM;
}
ret = dbus_message_get_args(reply, &err, DBUS_TYPE_INT32, &result, DBUS_TYPE_INVALID);
- dbus_message_unref(reply);
if (!ret) {
- _E("no message : [%s:%s] %s %s:%s-%s",
- err.name, err.message, dest, path, interface, method);
- dbus_error_free(&err);
+ if (dbus_error_is_set(&err))
+ _D("there is no message: %s %s", err.name, err.message);
+ else
+ _D("there is no message");
return -ENOMSG;
}
const char *sig, char *param[])
{
DBusConnection *conn;
- DBusMessage *msg;
DBusMessageIter iter;
+ _cleanup_dbus_message_unref_ DBusMessage *msg = NULL;
int ret;
conn = dbus_bus_get(DBUS_BUS_SYSTEM, NULL);
}
ret = dbus_connection_send(conn, msg, NULL);
- dbus_message_unref(msg);
if (ret != TRUE) {
_E("dbus_connection_send error");
return -ECOMM;
int broadcast_edbus_signal_str(const char *path, const char *interface,
const char *name, const char *sig, char *param[])
{
- DBusMessage *msg;
+ _cleanup_dbus_message_unref_ DBusMessage *msg = NULL;
DBusConnection *conn;
DBusMessageIter iter;
int r;
}
r = dbus_connection_send(conn, msg, NULL);
- dbus_message_unref(msg);
if (r != TRUE) {
_E("dbus_connection_send error(%s:%s-%s)",
static void request_name_cb(void *data, DBusMessage *msg, DBusError *error)
{
- DBusError err;
+ _cleanup_dbus_error_free_ DBusError err = DBUS_ERROR_INIT;
unsigned int val;
int r;
return;
}
- dbus_error_init(&err);
r = dbus_message_get_args(msg, &err, DBUS_TYPE_UINT32, &val, DBUS_TYPE_INVALID);
if (!r) {
- _E("no message : [%s:%s]", err.name, err.message);
- dbus_error_free(&err);
+ if (dbus_error_is_set(&err))
+ _D("there is no message: %s %s", err.name, err.message);
+ else
+ _D("there is no message");
return;
}
{
int retry = 0;
int i;
- DBusError err;
+ _cleanup_dbus_error_free_ DBusError err = DBUS_ERROR_INIT;
dbus_threads_init_default();
- dbus_error_init(&err);
retry_init:
edbus_init_val = e_dbus_init();
#include "macro.h"
#include "memory-common.h"
#include "procfs.h"
+#include "util.h"
static void lowmem_dbus_oom_set_threshold(void *data, DBusMessage *msg)
{
- DBusError err;
+ _cleanup_dbus_error_free_ DBusError err = DBUS_ERROR_INIT;
int ret;
int level, thres;
return;
}
- dbus_error_init(&err);
-
ret = dbus_message_get_args(msg, &err, DBUS_TYPE_INT32, &level,
DBUS_TYPE_INT32, &thres, DBUS_TYPE_INVALID);
if (ret == 0) {
- _D("there is no message");
+ if (dbus_error_is_set(&err))
+ _D("there is no message: %s %s", err.name, err.message);
+ else
+ _D("there is no message");
return;
}
static void lowmem_dbus_oom_set_leave_threshold(void *data, DBusMessage *msg)
{
- DBusError err;
+ _cleanup_dbus_error_free_ DBusError err = DBUS_ERROR_INIT;
int ret;
int thres;
return;
}
- dbus_error_init(&err);
-
ret = dbus_message_get_args(msg, &err, DBUS_TYPE_INT32, &thres,
DBUS_TYPE_INVALID);
if (ret == 0) {
- _D("there is no message");
- return;
+ if (dbus_error_is_set(&err))
+ _D("there is no message: %s %s", err.name, err.message);
+ else
+ _D("there is no message");
}
lowmem_memcg_set_leave_threshold(MEMCG_MEMORY, thres);
static void lowmem_dbus_oom_trigger(void *data, DBusMessage *msg)
{
- DBusError err;
int ret;
ret = dbus_message_is_signal(msg, RESOURCED_INTERFACE_OOM,
return;
}
- dbus_error_init(&err);
-
lowmem_change_memory_state(LOWMEM_LOW, 1);
lowmem_memory_oom_killer(OOM_FORCE | OOM_NOMEMORY_CHECK);
lowmem_change_memory_state(LOWMEM_NORMAL, 0);
static void lowmem_dbus_set_perceptible(void *data, DBusMessage *msg)
{
- DBusError err;
+ _cleanup_dbus_error_free_ DBusError err = DBUS_ERROR_INIT;
int ret;
pid_t pid;
- dbus_error_init(&err);
ret = dbus_message_is_signal(msg, RESOURCED_INTERFACE_OOM,
SIGNAL_OOM_SET_PERCEPTIBLE);
if (ret == 0) {
if (dbus_message_get_args(msg, &err, DBUS_TYPE_INT32, &pid,
DBUS_TYPE_INVALID) == 0) {
- _D("there is no message");
+ if (dbus_error_is_set(&err))
+ _D("there is no message: %s %s", err.name, err.message);
+ else
+ _D("there is no message");
return;
}
- dbus_error_free(&err);
proc_set_oom_score_adj(pid, OOMADJ_BACKGRD_PERCEPTIBLE);
}
static void lowmem_dbus_set_platform(void *data, DBusMessage *msg)
{
- DBusError err;
+ _cleanup_dbus_error_free_ DBusError err = DBUS_ERROR_INIT;
int ret;
pid_t pid;
- dbus_error_init(&err);
ret = dbus_message_is_signal(msg, RESOURCED_INTERFACE_OOM,
SIGNAL_OOM_SET_PLATFORM);
if (ret == 0) {
if (dbus_message_get_args(msg, &err, DBUS_TYPE_INT32, &pid,
DBUS_TYPE_INVALID) == 0) {
- _D("there is no message");
+ if (dbus_error_is_set(&err))
+ _D("there is no message: %s %s", err.name, err.message);
+ else
+ _D("there is no message");
return;
}
- dbus_error_free(&err);
lowmem_trigger_swap(pid, MEMCG_PLATFORM);
}
#include "notifier.h"
#include "init.h"
#include "module.h"
+#include "util.h"
#define WATCHDOG_LAUNCHING_PARAM "PopupLaunch"
#define WATCHDOG_KEY1 "_SYSPOPUP_CONTENT_"
static DBusMessage *edbus_reclaim_memory(E_DBus_Object *obj, DBusMessage *msg)
{
- DBusError err;
DBusMessageIter iter;
DBusMessage *reply;
int ret = -1;
- dbus_error_init(&err);
_D("reclaiming memory!");
ret = proc_sys_node_trigger(SYS_VM_SHRINK_MEMORY);
static void proc_dbus_active_signal_handler(void *data, DBusMessage *msg)
{
- DBusError err;
+ _cleanup_dbus_error_free_ DBusError err = DBUS_ERROR_INIT;
int ret, type;
char *str;
pid_t pid;
return;
}
- dbus_error_init(&err);
-
if (dbus_message_get_args(msg, &err, DBUS_TYPE_STRING, &str, DBUS_TYPE_INT32, &pid, DBUS_TYPE_INVALID) == 0) {
- _D("there is no message");
+ if (dbus_error_is_set(&err))
+ _D("there is no message: %s %s", err.name, err.message);
+ else
+ _D("there is no message");
return;
}
GSList *giter;
char *appid;
struct proc_app_info *pai;
- unsigned int total = 0, usage = 0;
+ unsigned int usage = 0;
reply = dbus_message_new_method_return(msg);
proc_app_list = proc_app_list_open();
- gslist_for_each_item(giter, proc_app_list) {
- pai = (struct proc_app_info *)giter->data;
- if (!pai->main_pid)
- continue;
- if (proc_get_procstat_mem_usage(pai->main_pid, &usage) < 0)
- continue;
- total += usage;
- }
dbus_message_iter_init_append(reply, &iter);
dbus_message_iter_open_container(&iter, DBUS_TYPE_ARRAY, "(su)", &arr);
static void proc_dbus_exclude_signal_handler(void *data, DBusMessage *msg)
{
- DBusError err;
+ _cleanup_dbus_error_free_ DBusError err = DBUS_ERROR_INIT;
int ret;
char *str;
pid_t pid;
return;
}
- dbus_error_init(&err);
-
if (dbus_message_get_args(msg, &err, DBUS_TYPE_STRING, &str, DBUS_TYPE_INT32, &pid, DBUS_TYPE_INVALID) == 0) {
- _D("there is no message");
+ if (dbus_error_is_set(&err))
+ _D("there is no message: %s %s", err.name, err.message);
+ else
+ _D("there is no message");
return;
}
static void proc_dbus_exclude_appid_signal_handler(void *data, DBusMessage *msg)
{
- DBusError err;
+ _cleanup_dbus_error_free_ DBusError err = DBUS_ERROR_INIT;
int ret;
char *str;
char *appid;
return;
}
- dbus_error_init(&err);
-
if (dbus_message_get_args(msg, &err, DBUS_TYPE_STRING, &str,
DBUS_TYPE_STRING, &appid, DBUS_TYPE_INVALID) == 0) {
- _D("there is no message");
+ if (dbus_error_is_set(&err))
+ _D("there is no message: %s %s", err.name, err.message);
+ else
+ _D("there is no message");
return;
}
static void proc_dbus_prelaunch_signal_handler(void *data, DBusMessage *msg)
{
- DBusError err;
+ _cleanup_dbus_error_free_ DBusError err = DBUS_ERROR_INIT;
int ret;
char *appid;
char *pkgid;
return;
}
- dbus_error_init(&err);
-
if (dbus_message_get_args(msg, &err,
DBUS_TYPE_STRING, &appid,
DBUS_TYPE_STRING, &pkgid,
DBUS_TYPE_INT32, &flags,
DBUS_TYPE_INT32, &categories, DBUS_TYPE_INVALID) == 0) {
- _D("there is no message");
+ if (dbus_error_is_set(&err))
+ _D("there is no message: %s %s", err.name, err.message);
+ else
+ _D("there is no message");
return;
}
static void proc_dbus_sweep_signal_handler(void *data, DBusMessage *msg)
{
- DBusError err;
int ret;
ret = dbus_message_is_signal(msg, RESOURCED_INTERFACE_PROCESS,
return;
}
- dbus_error_init(&err);
proc_sweep_memory(PROC_SWEEP_INCLUDE_ACTIVE, INIT_PID);
}
static void proc_dbus_watchdog_result(void *data, DBusMessage *msg)
{
- DBusError err;
+ _cleanup_dbus_error_free_ DBusError err = DBUS_ERROR_INIT;
int type;
if (dbus_message_is_signal(msg, RESOURCED_INTERFACE_PROCESS, SIGNAL_PROC_WATCHDOG_RESULT) == 0) {
return;
}
- dbus_error_init(&err);
-
if (dbus_message_get_args(msg, &err, DBUS_TYPE_INT32, &type, DBUS_TYPE_INVALID) == 0) {
- _D("there is no message");
+ if (dbus_error_is_set(&err))
+ _D("there is no message: %s %s", err.name, err.message);
+ else
+ _D("there is no message");
return;
}
static void proc_dbus_watchdog_handler(void *data, DBusMessage *msg)
{
- DBusError err;
int pid, command, ret;
char appname[PROC_NAME_MAX];
struct proc_status ps;
return;
}
- dbus_error_init(&err);
-
ret = dbus_message_get_args(msg, NULL, DBUS_TYPE_INT32, &pid, DBUS_TYPE_INT32,
&command, DBUS_TYPE_INVALID);
static void proc_dbus_dump_handler(void *data, DBusMessage *msg)
{
- DBusError err;
+ _cleanup_dbus_error_free_ DBusError err = DBUS_ERROR_INIT;
dbus_bool_t ret;
char *path;
int mode;
return;
}
- dbus_error_init(&err);
-
ret = dbus_message_get_args(msg, &err, DBUS_TYPE_INT32, &mode,
DBUS_TYPE_STRING, &path, DBUS_TYPE_INVALID);
if (ret == 0) {
- _D("there is no message");
+ if (dbus_error_is_set(&err))
+ _D("there is no message: %s %s", err.name, err.message);
+ else
+ _D("there is no message");
return;
}
_D("received dump request: path %s", path);
static void proc_dbus_systemservice_handler(void *data, DBusMessage *msg)
{
- DBusError err;
+ _cleanup_dbus_error_free_ DBusError err = DBUS_ERROR_INIT;
dbus_bool_t ret;
pid_t pid;
return;
}
- dbus_error_init(&err);
-
ret = dbus_message_get_args(msg, &err, DBUS_TYPE_INT32, &pid,
DBUS_TYPE_INVALID);
if (ret == 0) {
- _D("there is no message");
+ if (dbus_error_is_set(&err))
+ _D("there is no message: %s %s", err.name, err.message);
+ else
+ _D("there is no message");
return;
}
resourced_proc_status_change(PROC_CGROUP_SET_SYSTEM_SERVICE, pid,
static void proc_dbus_lcd_on(void *data, DBusMessage *msg)
{
- DBusError err;
- dbus_error_init(&err);
-
if (dbus_message_is_signal(msg, DEVICED_INTERFACE_DISPLAY,
SIGNAL_DEVICED_LCDON) == 0) {
_D("there is no lcd on signal");
return;
}
- dbus_error_free(&err);
+
current_lcd_state = LCD_STATE_ON;
resourced_notify(RESOURCED_NOTIFIER_LCD_ON, NULL);
/* nothing */
static void proc_dbus_lcd_off(void *data, DBusMessage *msg)
{
- DBusError err;
-
- dbus_error_init(&err);
if (dbus_message_is_signal(msg, DEVICED_INTERFACE_DISPLAY,
SIGNAL_DEVICED_LCDOFF) == 0) {
_D("there is no lcd on signal");
return;
}
- dbus_error_free(&err);
current_lcd_state = LCD_STATE_OFF;
resourced_notify(RESOURCED_NOTIFIER_LCD_OFF, NULL);
}
static void booting_done_signal_handler(void *data, DBusMessage *msg)
{
- DBusError err;
-
- dbus_error_init(&err);
if (dbus_message_is_signal(msg, DEVICED_INTERFACE_CORE,
SIGNAL_DEVICED_BOOTINGDONE) == 0) {
_D("there is no lcd on signal");
static void early_booting_done_signal_handler(void *data, DBusMessage *msg)
{
- DBusError err;
-
- dbus_error_init(&err);
if (dbus_message_is_signal(msg, DEVICED_INTERFACE_CORE,
SIGNAL_DEVICED_EARLY_BOOTING_DONE) == 0) {
_D("there is no lcd on signal");
static void low_battery_signal_handler(void *data, DBusMessage *msg)
{
- DBusError err;
-
- dbus_error_init(&err);
if (dbus_message_is_signal(msg, DEVICED_INTERFACE_BATTERY,
SIGNAL_DEVICED_LOW_BATTERY) == 0) {
_D("there is no low battery signal");
static void poweroff_signal_handler(void *data, DBusMessage *msg)
{
- DBusError err;
-
- dbus_error_init(&err);
if (dbus_message_is_signal(msg, DEVICED_INTERFACE_POWEROFF,
SIGNAL_DEVICED_POWEROFF_STATE) == 0) {
_D("there is no power off signal");
static void systemtime_changed_signal_handler(void *data, DBusMessage *msg)
{
- DBusError err;
-
- dbus_error_init(&err);
if (dbus_message_is_signal(msg, DEVICED_INTERFACE_TIME,
SIGNAL_DEVICED_SYSTEMTIME_CHANGED) == 0) {
_D("there is no system time changed signal");
static void proc_dbus_aul_launch(void *data, DBusMessage *msg)
{
- DBusError err;
- dbus_error_init(&err);
+ _cleanup_dbus_error_free_ DBusError err = DBUS_ERROR_INIT;
pid_t pid;
int status, apptype;
char *appid, *pkgid, *pkgtype;
if (dbus_message_get_args(msg, &err, DBUS_TYPE_INT32, &pid,
DBUS_TYPE_STRING, &appid, DBUS_TYPE_STRING, &pkgid,
DBUS_TYPE_STRING, &pkgtype, DBUS_TYPE_INVALID) == 0) {
- _D("there is no message");
+ if (dbus_error_is_set(&err))
+ _D("there is no message: %s %s", err.name, err.message);
+ else
+ _D("there is no message");
return;
}
- dbus_error_free(&err);
#ifdef PROC_DEBUG
_D("aul_launch: app %s, pkgd %s, pid %d, pkgtype %s",
static void proc_dbus_aul_resume(void *data, DBusMessage *msg)
{
- DBusError err;
- dbus_error_init(&err);
+ _cleanup_dbus_error_free_ DBusError err = DBUS_ERROR_INIT;
pid_t pid;
int status = PROC_CGROUP_SET_RESUME_REQUEST, apptype;
char *appid, *pkgid, *pkgtype;
if (dbus_message_get_args(msg, &err, DBUS_TYPE_INT32, &pid,
DBUS_TYPE_STRING, &appid, DBUS_TYPE_STRING, &pkgid,
DBUS_TYPE_STRING, &pkgtype, DBUS_TYPE_INVALID) == 0) {
- _D("there is no message");
+ if (dbus_error_is_set(&err))
+ _D("there is no message: %s %s", err.name, err.message);
+ else
+ _D("there is no message");
return;
}
- dbus_error_free(&err);
if (!strncmp(pkgtype, "svc", 3))
apptype = PROC_TYPE_SERVICE;
static void proc_dbus_aul_terminate(void *data, DBusMessage *msg)
{
- DBusError err;
- dbus_error_init(&err);
+ _cleanup_dbus_error_free_ DBusError err = DBUS_ERROR_INIT;
pid_t pid;
int status = PROC_CGROUP_SET_TERMINATE_REQUEST;
char *appid, *pkgid, *pkgtype;
if (dbus_message_get_args(msg, &err, DBUS_TYPE_INT32, &pid,
DBUS_TYPE_STRING, &appid, DBUS_TYPE_STRING, &pkgid,
DBUS_TYPE_STRING, &pkgtype, DBUS_TYPE_INVALID) == 0) {
- _D("there is no message");
+ if (dbus_error_is_set(&err))
+ _D("there is no message: %s %s", err.name, err.message);
+ else
+ _D("there is no message");
return;
}
- dbus_error_free(&err);
resourced_proc_status_change(status, pid, appid, pkgid, PROC_TYPE_NONE);
}
static void proc_dbus_aul_changestate(void *data, DBusMessage *msg)
{
- DBusError err;
- dbus_error_init(&err);
+ _cleanup_dbus_error_free_ DBusError err = DBUS_ERROR_INIT;
pid_t pid;
int status, apptype;
char *appid, *pkgid, *statstr, *pkgtype;
DBUS_TYPE_STRING, &appid, DBUS_TYPE_STRING, &pkgid,
DBUS_TYPE_STRING, &statstr, DBUS_TYPE_STRING, &pkgtype,
DBUS_TYPE_INVALID) == 0) {
- _D("there is no message");
+ if (dbus_error_is_set(&err))
+ _D("there is no message: %s %s", err.name, err.message);
+ else
+ _D("there is no message");
return;
}
- dbus_error_free(&err);
if (!strncmp(statstr, "fg", 2))
status = PROC_CGROUP_SET_FOREGRD;
static void proc_dbus_aul_group(void *data, DBusMessage *msg)
{
- DBusError err;
- dbus_error_init(&err);
+ _cleanup_dbus_error_free_ DBusError err = DBUS_ERROR_INIT;
pid_t ownerpid, childpid;
char *appid;
if (dbus_message_get_args(msg, &err, DBUS_TYPE_INT32, &ownerpid,
DBUS_TYPE_INT32, &childpid, DBUS_TYPE_STRING, &appid,
DBUS_TYPE_INVALID) == 0) {
- _D("there is no message");
+ if (dbus_error_is_set(&err))
+ _D("there is no message: %s %s", err.name, err.message);
+ else
+ _D("there is no message");
return;
}
- dbus_error_free(&err);
if (ownerpid == childpid) {
_I("specific case, one application %d makes multiple window. skip to merge", ownerpid);
static void proc_dbus_aul_terminated(void *data, DBusMessage *msg)
{
- DBusError err;
- dbus_error_init(&err);
+ _cleanup_dbus_error_free_ DBusError err = DBUS_ERROR_INIT;
pid_t pid;
int status = PROC_CGROUP_SET_TERMINATED;
if (dbus_message_get_args(msg, &err, DBUS_TYPE_INT32, &pid,
DBUS_TYPE_INVALID) == 0) {
- _D("there is no message");
+ if (dbus_error_is_set(&err))
+ _D("there is no message: %s %s", err.name, err.message);
+ else
+ _D("there is no message");
return;
}
- dbus_error_free(&err);
resourced_proc_status_change(status, pid, NULL, NULL, PROC_TYPE_NONE);
}
static void proc_dbus_suspend_hint(void *data, DBusMessage *msg)
{
- DBusError err;
- dbus_error_init(&err);
+ _cleanup_dbus_error_free_ DBusError err = DBUS_ERROR_INIT;
pid_t pid;
struct proc_app_info *pai = NULL;
struct proc_status ps = {0};
if (dbus_message_get_args(msg, &err, DBUS_TYPE_INT32, &pid,
DBUS_TYPE_INVALID) == 0) {
- _D("there is no message");
+ if (dbus_error_is_set(&err))
+ _D("there is no message: %s %s", err.name, err.message);
+ else
+ _D("there is no message");
return;
}
- dbus_error_free(&err);
pai = find_app_info(pid);
if (!pai)