mirror of
https://github.com/systemd/systemd.git
synced 2026-08-04 15:10:33 +00:00
cgroup-util: add cg_read_pidref() helper
Just like cg_read_pid() but returns a PidRef
This commit is contained in:
@@ -90,6 +90,33 @@ int cg_read_pid(FILE *f, pid_t *ret) {
|
||||
return 1;
|
||||
}
|
||||
|
||||
int cg_read_pidref(FILE *f, PidRef *ret) {
|
||||
int r;
|
||||
|
||||
assert(f);
|
||||
assert(ret);
|
||||
|
||||
for (;;) {
|
||||
pid_t pid;
|
||||
|
||||
r = cg_read_pid(f, &pid);
|
||||
if (r < 0)
|
||||
return r;
|
||||
if (r == 0) {
|
||||
*ret = PIDREF_NULL;
|
||||
return 0;
|
||||
}
|
||||
|
||||
r = pidref_set_pid(ret, pid);
|
||||
if (r >= 0)
|
||||
return 1;
|
||||
if (r != -ESRCH)
|
||||
return r;
|
||||
|
||||
/* ESRCH → gone by now? just skip over it, read the next */
|
||||
}
|
||||
}
|
||||
|
||||
int cg_read_event(
|
||||
const char *controller,
|
||||
const char *path,
|
||||
|
||||
@@ -10,6 +10,7 @@
|
||||
#include <sys/types.h>
|
||||
|
||||
#include "constants.h"
|
||||
#include "pidref.h"
|
||||
#include "set.h"
|
||||
|
||||
#define SYSTEMD_CGROUP_CONTROLLER_LEGACY "name=systemd"
|
||||
@@ -178,6 +179,7 @@ typedef enum CGroupUnified {
|
||||
|
||||
int cg_enumerate_processes(const char *controller, const char *path, FILE **ret);
|
||||
int cg_read_pid(FILE *f, pid_t *ret);
|
||||
int cg_read_pidref(FILE *f, PidRef *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 **ret);
|
||||
|
||||
Reference in New Issue
Block a user