tizen 2.3.1 release
[framework/appfw/aul-1.git] / am_daemon / amd_cgutil.h
1
2 #ifndef __AUL_AMD_CGROUP_UTIL_H__
3 #define __AUL_AMD_CGROUP_UTIL_H__
4
5 enum ctrl_type {
6         CTRL_MGR, /* for manager */
7 #if defined(USE_CGROUP_CPU) /* not implemented */
8         CTRL_CPU, /* cpuset */
9 #endif
10 #if defined(USE_CGROUP_MEM) /* not implemented */
11         CTRL_MEM, /* memory */
12 #endif
13         /* TODO: add more */
14         CTRL_MAX,
15 };
16
17 struct cginfo;
18
19 int cgutil_create(const char *mount_point, const char *agent_path,
20                 struct cginfo **cg);
21 void cgutil_destroy(struct cginfo **cg);
22
23 struct cginfo *cgutil_ref(struct cginfo *cg);
24 #define cgutil_unref(cg) cgutil_destroy(cg)
25
26
27 int cgutil_create_group(struct cginfo *cg,
28                 enum ctrl_type ctrl, const char *group);
29 int cgutil_remove_group(struct cginfo *cg,
30                 enum ctrl_type ctrl, const char *group);
31 int cgutil_exist_group(struct cginfo *cg,
32                 enum ctrl_type ctrl, const char *group);
33
34 typedef int (*cgutil_iter_group_callback)(void *user_data, const char *group);
35 int cgutil_foreach_group(struct cginfo *cg, enum ctrl_type ctrl,
36                 cgutil_iter_group_callback cb, void *user_data);
37
38
39 int cgutil_group_add_pid(struct cginfo *cg,
40                 enum ctrl_type ctrl, const char *group, pid_t pid);
41
42 typedef int (*cgutil_iter_pid_callback)(void *user_data, const char *group,
43                 pid_t pid);
44 int cgutil_group_foreach_pid(struct cginfo *cg,
45                 enum ctrl_type ctrl, const char *group,
46                 cgutil_iter_pid_callback cb, void *user_data);
47
48 #endif /* __AUL_AMD_CGROUP_UTIL_H__ */