chiark
/
gitweb
/
~ianmdlvl
/
elogind.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
journal: move type_to_context() to journal-file.c
[elogind.git]
/
src
/
shared
/
cgroup-util.c
diff --git
a/src/shared/cgroup-util.c
b/src/shared/cgroup-util.c
index 00eac642369df6de0c7ee3f47ee104dcab3983ba..1bcba0188758b5ee19cc7a155ec050122d0ad7ab 100644
(file)
--- a/
src/shared/cgroup-util.c
+++ b/
src/shared/cgroup-util.c
@@
-161,7
+161,7
@@
int cg_kill(const char *controller, const char *path, int sig, bool sigcont, boo
* tasks list, to properly handle forking processes */
if (!s) {
* tasks list, to properly handle forking processes */
if (!s) {
- s = allocated_set = set_new(
trivial_hash_func, trivial_compare_func
);
+ s = allocated_set = set_new(
NULL
);
if (!s)
return -ENOMEM;
}
if (!s)
return -ENOMEM;
}
@@
-195,7
+195,7
@@
int cg_kill(const char *controller, const char *path, int sig, bool sigcont, boo
if (ret >= 0 && errno != ESRCH)
ret = -errno;
} else {
if (ret >= 0 && errno != ESRCH)
ret = -errno;
} else {
- if (sigcont)
+ if (sigcont
&& sig != SIGKILL
)
kill(pid, SIGCONT);
if (ret == 0)
kill(pid, SIGCONT);
if (ret == 0)
@@
-239,7
+239,7
@@
int cg_kill_recursive(const char *controller, const char *path, int sig, bool si
assert(sig >= 0);
if (!s) {
assert(sig >= 0);
if (!s) {
- s = allocated_set = set_new(
trivial_hash_func, trivial_compare_func
);
+ s = allocated_set = set_new(
NULL
);
if (!s)
return -ENOMEM;
}
if (!s)
return -ENOMEM;
}
@@
-290,7
+290,7
@@
int cg_migrate(const char *cfrom, const char *pfrom, const char *cto, const char
assert(cto);
assert(pto);
assert(cto);
assert(pto);
- s = set_new(
trivial_hash_func, trivial_compare_func
);
+ s = set_new(
NULL
);
if (!s)
return -ENOMEM;
if (!s)
return -ENOMEM;
@@
-682,7
+682,7
@@
int cg_set_group_access(
assert(path);
assert(path);
- if (mode !=
(mode_t) -1
)
+ if (mode !=
MODE_INVALID
)
mode &= 0777;
r = cg_get_path(controller, path, NULL, &fs);
mode &= 0777;
r = cg_get_path(controller, path, NULL, &fs);
@@
-704,10
+704,10
@@
int cg_set_task_access(
assert(path);
assert(path);
- if (mode ==
(mode_t) -1 && uid == (uid_t) -1 && gid == (gid_t) -1
)
+ if (mode ==
MODE_INVALID && uid == UID_INVALID && gid == GID_INVALID
)
return 0;
return 0;
- if (mode !=
(mode_t) -1
)
+ if (mode !=
MODE_INVALID
)
mode &= 0666;
r = cg_get_path(controller, path, "cgroup.procs", &fs);
mode &= 0666;
r = cg_get_path(controller, path, "cgroup.procs", &fs);
@@
-1624,7
+1624,7
@@
int cg_create_everywhere(CGroupControllerMask supported, CGroupControllerMask ma
return 0;
}
return 0;
}
-int cg_attach_everywhere(CGroupControllerMask supported, const char *path, pid_t pid) {
+int cg_attach_everywhere(CGroupControllerMask supported, const char *path, pid_t pid
, cg_migrate_callback_t path_callback, void *userdata
) {
CGroupControllerMask bit = 1;
const char *n;
int r;
CGroupControllerMask bit = 1;
const char *n;
int r;
@@
-1634,8
+1634,18
@@
int cg_attach_everywhere(CGroupControllerMask supported, const char *path, pid_t
return r;
NULSTR_FOREACH(n, mask_names) {
return r;
NULSTR_FOREACH(n, mask_names) {
- if (supported & bit)
+
+ if (supported & bit) {
+ const char *p = NULL;
+
+ if (path_callback)
+ p = path_callback(bit, userdata);
+
+ if (!p)
+ p = path;
+
cg_attach_fallback(n, path, pid);
cg_attach_fallback(n, path, pid);
+ }
bit <<= 1;
}
bit <<= 1;
}
@@
-1643,7
+1653,7
@@
int cg_attach_everywhere(CGroupControllerMask supported, const char *path, pid_t
return 0;
}
return 0;
}
-int cg_attach_many_everywhere(CGroupControllerMask supported, const char *path, Set* pids) {
+int cg_attach_many_everywhere(CGroupControllerMask supported, const char *path, Set* pids
, cg_migrate_callback_t path_callback, void *userdata
) {
Iterator i;
void *pidp;
int r = 0;
Iterator i;
void *pidp;
int r = 0;
@@
-1652,7
+1662,7
@@
int cg_attach_many_everywhere(CGroupControllerMask supported, const char *path,
pid_t pid = PTR_TO_LONG(pidp);
int q;
pid_t pid = PTR_TO_LONG(pidp);
int q;
- q = cg_attach_everywhere(supported, path, pid);
+ q = cg_attach_everywhere(supported, path, pid
, path_callback, userdata
);
if (q < 0)
r = q;
}
if (q < 0)
r = q;
}