Merge pull request #29231 from poettering/cgroup-utils-tweaklets

minor tweaks/modernizations in cgroup-util.[ch]
This commit is contained in:
Mike Yuan
2023-09-20 13:06:16 +08:00
committed by GitHub
2 changed files with 27 additions and 24 deletions

View File

@@ -39,12 +39,12 @@
#include "user-util.h"
#include "xattr-util.h"
static int cg_enumerate_items(const char *controller, const char *path, FILE **_f, const char *item) {
static int cg_enumerate_items(const char *controller, const char *path, FILE **ret, const char *item) {
_cleanup_free_ char *fs = NULL;
FILE *f;
int r;
assert(_f);
assert(ret);
r = cg_get_path(controller, path, item, &fs);
if (r < 0)
@@ -54,36 +54,39 @@ static int cg_enumerate_items(const char *controller, const char *path, FILE **_
if (!f)
return -errno;
*_f = f;
*ret = f;
return 0;
}
int cg_enumerate_processes(const char *controller, const char *path, FILE **_f) {
return cg_enumerate_items(controller, path, _f, "cgroup.procs");
int cg_enumerate_processes(const char *controller, const char *path, FILE **ret) {
return cg_enumerate_items(controller, path, ret, "cgroup.procs");
}
int cg_read_pid(FILE *f, pid_t *_pid) {
int cg_read_pid(FILE *f, pid_t *ret) {
unsigned long ul;
/* Note that the cgroup.procs might contain duplicates! See
* cgroups.txt for details. */
/* Note that the cgroup.procs might contain duplicates! See cgroups.txt for details. */
assert(f);
assert(_pid);
assert(ret);
errno = 0;
if (fscanf(f, "%lu", &ul) != 1) {
if (feof(f))
if (feof(f)) {
*ret = 0;
return 0;
}
return errno_or_else(EIO);
}
if (ul <= 0)
return -EIO;
if (ul > PID_T_MAX)
return -EIO;
*_pid = (pid_t) ul;
*ret = (pid_t) ul;
return 1;
}
@@ -178,12 +181,12 @@ bool cg_kill_supported(void) {
return supported;
}
int cg_enumerate_subgroups(const char *controller, const char *path, DIR **_d) {
int cg_enumerate_subgroups(const char *controller, const char *path, DIR **ret) {
_cleanup_free_ char *fs = NULL;
int r;
DIR *d;
int r;
assert(_d);
assert(ret);
/* This is not recursive! */
@@ -195,13 +198,13 @@ int cg_enumerate_subgroups(const char *controller, const char *path, DIR **_d) {
if (!d)
return -errno;
*_d = d;
*ret = d;
return 0;
}
int cg_read_subgroup(DIR *d, char **fn) {
int cg_read_subgroup(DIR *d, char **ret) {
assert(d);
assert(fn);
assert(ret);
FOREACH_DIRENT_ALL(de, d, return -errno) {
char *b;
@@ -216,10 +219,11 @@ int cg_read_subgroup(DIR *d, char **fn) {
if (!b)
return -ENOMEM;
*fn = b;
*ret = b;
return 1;
}
*ret = NULL;
return 0;
}

View File

@@ -176,13 +176,12 @@ typedef enum CGroupUnified {
* generate paths with multiple adjacent / removed.
*/
int cg_enumerate_processes(const char *controller, const char *path, FILE **_f);
int cg_read_pid(FILE *f, pid_t *_pid);
int cg_read_event(const char *controller, const char *path, const char *event,
char **val);
int cg_enumerate_processes(const char *controller, const char *path, FILE **ret);
int cg_read_pid(FILE *f, pid_t *ret);
int cg_read_event(const char *controller, const char *path, const char *event, char **ret);
int cg_enumerate_subgroups(const char *controller, const char *path, DIR **_d);
int cg_read_subgroup(DIR *d, char **fn);
int cg_enumerate_subgroups(const char *controller, const char *path, DIR **ret);
int cg_read_subgroup(DIR *d, char **ret);
typedef enum CGroupFlags {
CGROUP_SIGCONT = 1 << 0,