#ifndef _CGROUP_LIBRARY_CGROUP_H_
#define _CGROUP_LIBRARY_CGROUP_H_
+#ifdef __cplusplus
+extern "C" {
+#endif /* __cplusplus */
+
#define DEFAULT_CGROUP "/sys/fs/cgroup"
#define CGROUP_MEMORY DEFAULT_CGROUP "/memory"
int cgroup_get_memory_stat(const char *name, struct cgroup_memory_stat **mem_stat);
+#ifdef __cplusplus
+}
+#endif /* __cplusplus */
+
#endif /*_CGROUP_LIBRARY_CGROUP_H_*/
#include <stdio.h>
#include <stdbool.h>
+#ifdef __cplusplus
+extern "C" {
+#endif /* __cplusplus */
+
#define MATCH(a, b) (!strncmp(a, b, strlen(a) + 1) ? 1 : 0)
#define SET_CONF(a, b) (a = (b > 0.0 ? b : a))
int config_parse_float(const char *filename, unsigned line, const char *section, const char *lvalue, int ltype, const char *rvalue, void *data);
int config_parse_long(const char *filename, unsigned line, const char *section, const char *lvalue, int ltype, const char *rvalue, void *data);
int config_parse_strv(const char *filename, unsigned line, const char *section, const char *lvalue, int ltype, const char *rvalue, void *data);
+
+#ifdef __cplusplus
+}
+#endif /* __cplusplus */
+
#endif
#include <gio/gio.h>
#include <resourced.h>
+#ifdef __cplusplus
+extern "C" {
+#endif /* __cplusplus */
+
typedef void (*d_bus_method_callback)(GDBusMethodInvocation *invocation, GVariant *params);
typedef void (*d_bus_signal_callback)(GVariant *params);
void d_bus_init(void);
void d_bus_exit(void);
+#ifdef __cplusplus
+}
+#endif /* __cplusplus */
+
#endif /* __DBUS_HANDLER_H__ */
#include "resourced.h"
#include "memory-common.h"
+#ifdef __cplusplus
+extern "C" {
+#endif /* __cplusplus */
+
#define DEDUP_CONF_FILE RD_CONFIG_FILE(dedup)
#define DEDUP_SYSFS_KSM_PATH "/sys/kernel/mm/ksm"
void dedup_set_state(enum dedup_state state);
unsigned int dedup_get_ksm_stat(enum ksm_stat stat_type);
+#ifdef __cplusplus
+}
+#endif /* __cplusplus */
+
#endif /* __DEDUP_COMMON_H__ */
#include <gio/gio.h>
#include <stdbool.h>
+#ifdef __cplusplus
+extern "C" {
+#endif /* __cplusplus */
+
/**
* @brief File descriptor handler
* @since_tizen 4.0
*/
int remove_fd_read_handler(fd_handler_h *handler);
+#ifdef __cplusplus
+}
+#endif /* __cplusplus */
+
#endif /* __FD_HANDLER_H__ */
#include "resourced.h"
+#ifdef __cplusplus
+extern "C" {
+#endif /* __cplusplus */
+
/**
* @desc write string to the file
* @param path - path to the file, str - string is written to the file
return fread_nth_ulong(path, 0, number);
}
+#ifdef __cplusplus
+}
+#endif /* __cplusplus */
+
#endif /*_RESOURCED_FILE_HELPER_H_*/
#ifndef __FILEMAP_HELPER_H_
#define __FILEMAP_HELPER_H__
+#ifdef __cplusplus
+extern "C" {
+#endif /* __cplusplus */
+
#define FILEMAP_MAX_KEY_LEN 1024
#define FILEMAP_MAX_VALUE_LEN 1024
void (*callbackfn)(const struct filemap_info *fi));
struct filemap_node *filemap_root_node(struct filemap *fm);
+#ifdef __cplusplus
+}
+#endif /* __cplusplus */
+
#endif /*__FILEMAP_HELPER_H__*/
#ifndef __FREEZER_COMMON_H__
#define __FREEZER_COMMON_H__
+#ifdef __cplusplus
+extern "C" {
+#endif /* __cplusplus */
+
extern int (*resourced_freezer_get_proc_late_control)(void);
/* Freezer cgroup late control setting retrieval */
int resourced_freezer_proc_late_control(void);
+#ifdef __cplusplus
+}
+#endif /* __cplusplus */
+
#endif /* __FREEZER_COMMON_H__ */
#include <time.h>
#include <glib.h>
+#ifdef __cplusplus
+extern "C" {
+#endif /* __cplusplus */
+
#define HEART_BATTERY_STATS_MAX 1024
#define QUERY_INSERT_BATTERYSTATS "INSERT INTO batterystats(resourceid, starttime, stoptime) VALUES('%d', '%ld', '%ld');"
#define QUERY_SELECT_BATTERYSTATS_BY_RESOURCEID "SELECT sum(min(stoptime - starttime, stoptime - %ld)) from batterystats where resourceid=%d and stoptime > %ld;"
struct heart_memory_data *heart_memory_get_memdata(char *appid, enum heart_data_period period);
int heart_memory_get_latest_data(char *appid, unsigned int *rss);
+#ifdef __cplusplus
+}
+#endif /* __cplusplus */
+
#endif /* __heart_COMMON_H__ */
#include <stdbool.h>
+#ifdef __cplusplus
+extern "C" {
+#endif /* __cplusplus */
+
int find_loop_device(char *file, char *device);
int losetup(const char *device,
bool readdonly);
int check_valid_compressor(const char* crypt_type);
+
+#ifdef __cplusplus
+}
+#endif /* __cplusplus */
#include <stdbool.h>
#include "const.h"
+#ifdef __cplusplus
+extern "C" {
+#endif /* __cplusplus */
+
/*
* [memory cgroup information]
* MEMCG_MEMORY : root cgroup for system daemons
*/
void make_memps_log(enum mem_log path, pid_t pid, char *victim_name);
+#ifdef __cplusplus
+}
+#endif /* __cplusplus */
+
#endif /*__MEMORY_COMMONL_H__*/
#include "init.h"
+#ifdef __cplusplus
+extern "C" {
+#endif /* __cplusplus */
+
struct swap_module_data {
int swap_state; /* swap SWAP_ON/SWAP_OFF */
};
void init_modules_arg(struct daemon_arg *darg);
+#ifdef __cplusplus
+}
+#endif /* __cplusplus */
+
#endif /* __MODULE_DATA_HANDLE_H__ */
#ifndef __MODULE_HANDLE_H__
#define __MODULE_HANDLE_H__
+#ifdef __cplusplus
+extern "C" {
+#endif /* __cplusplus */
+
/**
* @brief module_priority is used to initialization order of each
* modules.
const struct module_ops *find_module(const char *name);
+#ifdef __cplusplus
+}
+#endif /* __cplusplus */
+
#endif /* __MODULE_HANDLE_H__ */
#ifndef __NOTIFIER_H__
#define __NOTIFIER_H__
+#ifdef __cplusplus
+extern "C" {
+#endif /* __cplusplus */
+
enum notifier_type {
/*
* application status
int unregister_notifier(enum notifier_type status, int (*func)(void *data));
void resourced_notify(enum notifier_type status, void *value);
+#ifdef __cplusplus
+}
+#endif /* __cplusplus */
+
#endif /* __NOTIFIER_H__ */
#include "const.h"
#include "memory-common.h"
+#ifdef __cplusplus
+extern "C" {
+#endif /* __cplusplus */
+
#define RUNTIME_APP_INFO_DIR RUNTIME_RESOURCED_DIR"/appinfo"
#define GPOINTER_TO_PID(x) (pid_t)GPOINTER_TO_INT((x))
*/
int proc_priority_is_oom_fixed_process(int pid);
+#ifdef __cplusplus
+}
+#endif /* __cplusplus */
+
#endif /* __PROC_COMMON_H__ */
#include <assert.h>
#include <string.h>
+#ifdef __cplusplus
+extern "C" {
+#endif /* __cplusplus */
+
#define OOMADJ_SERVICE_MIN (-900)
#define OOMADJ_SU (0)
#define OOMADJ_INIT (100)
*/
int proc_get_swaps(struct proc_swaps ***swaps);
+#ifdef __cplusplus
+}
+#endif /* __cplusplus */
+
#endif /*__PROCFS_H__*/
#include <glib.h>
+#ifdef __cplusplus
+extern "C" {
+#endif /* __cplusplus */
+
struct resourced_worker {
pthread_t worker_thread;
GAsyncQueue *queue;
int request_helper_worker(enum helper_worker_operation op,
void *data, int (*function) (void *data), void *callback);
+#ifdef __cplusplus
+}
+#endif /* __cplusplus */
+
#endif /* __RESOURCED_HELPER_WORKER_H__ */
#define SAFE_KILL_H
#include <sys/types.h>
+#include <stdbool.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif /* __cplusplus */
int safe_kill(pid_t pid, int sig);
#ifdef _UNIT_TEST
-#include <stdbool.h>
bool is_process_coredumping(pid_t pid);
#endif
+#ifdef __cplusplus
+}
+#endif /* __cplusplus */
+
#endif /* SAFE_KILL_H */
#include "util.h"
+#ifdef __cplusplus
+extern "C" {
+#endif /* __cplusplus */
+
enum smap_id {
SMAPS_ID_INVALID = -1,
SMAPS_ID_ANON_HUGE_PAGES = 0,
#define _cleanup_smaps_free_ _cleanup_(smaps_freep)
+#ifdef __cplusplus
+}
+#endif /* __cplusplus */
+
#endif /* _RESOURCED_SMAPS_H_ */
#include <sys/statvfs.h>
#include <glib.h>
+#ifdef __cplusplus
+extern "C" {
+#endif /* __cplusplus */
+
#define KB 1024
enum storage_type {
*/
resourced_ret_c get_storage_root_paths(int type, GSList **paths);
+#ifdef __cplusplus
+}
+#endif /* __cplusplus */
+
#endif /*_RESOURCED_STORAGE_HELPER_H_*/
#include "resourced.h"
#include "memory-common.h"
+#ifdef __cplusplus
+extern "C" {
+#endif /* __cplusplus */
+
#define SWAP_ZRAM_SYSFILE "/sys/block/zram0/"
#define SWAP_FILE_NAME "/opt/usr/.swapfile"
#define SWAP_CONF_FILE RD_CONFIG_FILE(swap)
swap_remove(swap); \
}
+#ifdef __cplusplus
+}
+#endif /* __cplusplus */
+
#endif /* __SWAP_COMMON_H__ */
#include "resourced.h"
+#ifdef __cplusplus
+extern "C" {
+#endif /* __cplusplus */
+
#define userinfo_for_each(elem, list) \
guint _ui_idx; \
struct user_info *elem; \
*/
const GArray *userinfo_get_list(void);
+#ifdef __cplusplus
+}
+#endif /* __cplusplus */
+
#endif /*__USERINFO_LIST_H__*/
#include <string.h>
#include <dirent.h>
+#ifdef __cplusplus
+extern "C" {
+#endif /* __cplusplus */
+
#define COMMENT '#'
#define COMMENTS "#;"
#define NEWLINE "\n\r"
void strv_free_full(char ***strv);
int resourced_restarted(void);
+
+#ifdef __cplusplus
+}
+#endif /* __cplusplus */
+
#endif /*_RESOURCED_UTIL_H_*/
#include "const.h"
#include "fd-handler.h"
+#ifdef __cplusplus
+extern "C" {
+#endif /* __cplusplus */
+
struct block_monitor_info {
int mfd;
int mode;
int register_fanotify(struct block_monitor_info *bmi);
void unregister_fanotify(struct block_monitor_info *bmi);
+#ifdef __cplusplus
+}
+#endif /* __cplusplus */
+
#endif /* __BLOCK_H__ */
#include <stdbool.h>
#endif /* !__cplusplus */
+#ifdef __cplusplus
+extern "C" {
+#endif /* __cplusplus */
+
bool proc_check_favorite_app(char *appid);
+#ifdef __cplusplus
+}
+#endif /* __cplusplus */
+
#endif /*__PROC_APPUSAGE_H__*/
#ifndef __PROC_HANDLER_H__
#define __PROC_HANDLER_H__
+#ifdef __cplusplus
+extern "C" {
+#endif /* __cplusplus */
+
#define PREDEF_FOREGRD "foregrd"
#define PREDEF_BACKGRD "backgrd"
void dbus_proc_handler(char* type, char *buf);
+#ifdef __cplusplus
+}
+#endif /* __cplusplus */
+
#endif
#include "resourced.h"
#include "const.h"
+#ifdef __cplusplus
+extern "C" {
+#endif /* __cplusplus */
+
struct proc_app_list {
GSList *list;
pthread_mutex_t lock;
GSList *proc_app_list_remove_app_info(struct proc_app_info *pai);
#endif
+#ifdef __cplusplus
+}
+#endif /* __cplusplus */
+
#endif /*__PROC_MAIN_H__ */
#ifndef __RESOURCED_PROC_MONITOR_H__
#define __RESOURCED_PROC_MONITOR_H__
+#include <gio/gio.h>
+
#include <resourced.h>
+#ifdef __cplusplus
+extern "C" {
+#endif /* __cplusplus */
+
/*
* Initialize proc monitor module by registering it in edbus.
*/
void proc_set_watchdog_state(int state);
#ifdef _UNIT_TEST
-#include <gio/gio.h>
void proc_dbus_aul_group(GVariant *params);
void dbus_get_memory_lists(GDBusMethodInvocation *invocation, GVariant *params);
void dbus_get_app_memory(GDBusMethodInvocation *invocation, GVariant *params);
void proc_dbus_exclude_method_handler(GDBusMethodInvocation *invocation, GVariant *params);
#endif
+#ifdef __cplusplus
+}
+#endif /* __cplusplus */
+
#endif /* __RESOURCED_PROC_MONITOR_H__ */
#ifndef __PROC_PROCESS_H__
#define __PROC_PROCESS_H__
+#ifdef __cplusplus
+extern "C" {
+#endif /* __cplusplus */
+
enum proc_sweep_type {
PROC_SWEEP_EXCLUDE_ACTIVE,
PROC_SWEEP_INCLUDE_ACTIVE,
int proc_set_service_oomscore(const pid_t pid, const int oom_score);
+#ifdef __cplusplus
+}
+#endif /* __cplusplus */
#endif /*__PROC_PROCESS_H__*/
#include <time.h>
#include <gio/gio.h>
+#ifdef __cplusplus
+extern "C" {
+#endif /* __cplusplus */
+
#define INVALID_PROCESS_INFO_FIELD_VALUE -1
#define TASK_NAME_SIZE 256
void proc_get_task_name(char *task_name, int size, runtime_info_task_type task_type);
void proc_free_runtime_info_task(struct runtime_info_task *rt_task);
+#ifdef __cplusplus
+}
+#endif /* __cplusplus */
+
/* TODO
* ** Return different failure values in reply dbus message according to reason
* ** Add some kind of identifier for the process making the method call,
#include <gio/gio.h>
+#ifdef __cplusplus
+extern "C" {
+#endif /* __cplusplus */
+
/**
* @brief DBus method to return the memory usage information of input processes
* @since_tizen 2.4
* response dbus message contains only an integer whose value will the error value.
*/
void dbus_proc_swap_usage(GDBusMethodInvocation *invocation, GVariant *params);
+
+#ifdef __cplusplus
+}
+#endif /* __cplusplus */
+
#endif /* __PROC_USAGE_STATS_H__ */
#ifndef CPU_HOTPLUG_H
#define CPU_HOTPLUG_H
+#ifdef __cplusplus
+extern "C" {
+#endif /* __cplusplus */
+
int cpu_hotplug_init();
void cpu_hotplug_finalize();
+#ifdef __cplusplus
+}
+#endif /* __cplusplus */
+
#endif /* CPU_HOTPLUG_H */
#include <proc-common.h>
#include <memory-common.h>
+#ifdef __cplusplus
+extern "C" {
+#endif /* __cplusplus */
+
#define MAX_MEMORY_CGROUP_VICTIMS 10
enum lmk_type {
LOWMEM_RECLAIM_WAIT,
};
+#ifdef __cplusplus
+}
+#endif /* __cplusplus */
+
#endif /*__LOWMEM_HANDLER_H__*/
#include "dbus-handler.h"
+#ifdef __cplusplus
+extern "C" {
+#endif /* __cplusplus */
+
#define HEART_CONF_FILE_PATH RD_CONFIG_FILE(heart)
#define HEART_FILE_PATH RD_SYS_DATA"/heart"
#define HEART_USER_FILE_PATH "%s/data/heart"
const size_t size);
int heart_dbus_init(void);
+#ifdef __cplusplus
+}
+#endif /* __cplusplus */
+
#endif /*__HEART_H__*/
#include "const.h"
#include "dbus-handler.h"
+#ifdef __cplusplus
+extern "C" {
+#endif /* __cplusplus */
+
#ifndef CLOCK_BOOTTIME
#define CLOCK_BOOTTIME 7
#endif
int logging_leveldb_putv(char *key, unsigned int key_len, const char *fmt, ...);
int logging_leveldb_read(char *key, unsigned int key_len, char *value, unsigned int value_len);
+#ifdef __cplusplus
+}
+#endif /* __cplusplus */
+
#endif /*__LOGGING_H__*/
#include "resourced.h"
+#ifdef __cplusplus
+extern "C" {
+#endif /* __cplusplus */
+
struct daemon_arg {
int argc;
char **argv;
struct counter_arg;
+#ifdef __cplusplus
+}
+#endif /* __cplusplus */
+
#endif /* _RESOURCED_INIT_H */
#include "lowmem-env.hpp"
-extern "C" {
#include "lowmem-handler.h"
-}
class LowmemDbusEnv {
public:
#include "lowmem-dbus-env.hpp"
#include "cmocka-wrap.hpp"
-extern "C" {
#include "lowmem-handler.h"
#include "memory-common.h"
#include "procfs.h"
-}
#include <limits>
#pragma once
-extern "C" {
#include "notifier.h"
#include "resourced.h"
#include "dbus-handler.h"
-}
#include <map>
#include <set>
#include "cmocka-wrap.hpp"
-extern "C" {
#include "notifier.h"
-}
#include "lowmem-limit-env.hpp"
#include "lowmem-env.hpp"
-extern "C" {
#include "cgroup.h"
#include "config-parser.h"
#include "fd-handler.h"
#include "memory-common.h"
#include "resourced.h"
#include "resourced-helper-worker.h"
-}
#include <map>
#include <vector>
#include <iostream>
#include "cmocka-wrap.hpp"
-extern "C" {
#include "lowmem-handler.h"
-}
#include "lowmem-limit-env.hpp"
#include "lowmem-system-env.hpp"
#include "cmocka-wrap.hpp"
-extern "C" {
#include "lowmem-handler.h"
#include "memory-common.h"
-}
#include <vector>