chiark
/
gitweb
/
~ianmdlvl
/
elogind.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
machined: add "machinectl remove" for removing images
[elogind.git]
/
src
/
shared
/
cgroup-util.c
diff --git
a/src/shared/cgroup-util.c
b/src/shared/cgroup-util.c
index da8e8852260a106248e1e1955152fe3e350ca069..1bcba0188758b5ee19cc7a155ec050122d0ad7ab 100644
(file)
--- a/
src/shared/cgroup-util.c
+++ b/
src/shared/cgroup-util.c
@@
-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)
@@
-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;
}