mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-11 21:38:32 +08:00
perf tools: Add read_cgroup_id() function
The read_cgroup_id() is to read a cgroup id from a file handle using name_to_handle_at(2) for the given cgroup. It'll be used by bperf cgroup stat later. Committer notes: -int read_cgroup_id(struct cgroup *cgrp) +static inline int read_cgroup_id(struct cgroup *cgrp __maybe_unused) To fix the build when HAVE_FILE_HANDLE is not defined. Signed-off-by: Namhyung Kim <namhyung@kernel.org> Cc: Andi Kleen <ak@linux.intel.com> Cc: Ian Rogers <irogers@google.com> Cc: Jiri Olsa <jolsa@redhat.com> Cc: Peter Zijlstra <peterz@infradead.org> Cc: Song Liu <songliubraving@fb.com> Cc: Stephane Eranian <eranian@google.com> Link: http://lore.kernel.org/lkml/20210625071826.608504-2-namhyung@kernel.org Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
This commit is contained in:
parent
f20510d552
commit
69e874db4d
@ -45,6 +45,31 @@ static int open_cgroup(const char *name)
|
||||
return fd;
|
||||
}
|
||||
|
||||
#ifdef HAVE_FILE_HANDLE
|
||||
int read_cgroup_id(struct cgroup *cgrp)
|
||||
{
|
||||
char path[PATH_MAX + 1];
|
||||
char mnt[PATH_MAX + 1];
|
||||
struct {
|
||||
struct file_handle fh;
|
||||
uint64_t cgroup_id;
|
||||
} handle;
|
||||
int mount_id;
|
||||
|
||||
if (cgroupfs_find_mountpoint(mnt, PATH_MAX + 1, "perf_event"))
|
||||
return -1;
|
||||
|
||||
scnprintf(path, PATH_MAX, "%s/%s", mnt, cgrp->name);
|
||||
|
||||
handle.fh.handle_bytes = sizeof(handle.cgroup_id);
|
||||
if (name_to_handle_at(AT_FDCWD, path, &handle.fh, &mount_id, 0) < 0)
|
||||
return -1;
|
||||
|
||||
cgrp->id = handle.cgroup_id;
|
||||
return 0;
|
||||
}
|
||||
#endif /* HAVE_FILE_HANDLE */
|
||||
|
||||
static struct cgroup *evlist__find_cgroup(struct evlist *evlist, const char *str)
|
||||
{
|
||||
struct evsel *counter;
|
||||
|
@ -2,6 +2,7 @@
|
||||
#ifndef __CGROUP_H__
|
||||
#define __CGROUP_H__
|
||||
|
||||
#include <linux/compiler.h>
|
||||
#include <linux/refcount.h>
|
||||
#include <linux/rbtree.h>
|
||||
#include "util/env.h"
|
||||
@ -38,4 +39,13 @@ struct cgroup *cgroup__find(struct perf_env *env, uint64_t id);
|
||||
|
||||
void perf_env__purge_cgroups(struct perf_env *env);
|
||||
|
||||
#ifdef HAVE_FILE_HANDLE
|
||||
int read_cgroup_id(struct cgroup *cgrp);
|
||||
#else
|
||||
static inline int read_cgroup_id(struct cgroup *cgrp __maybe_unused)
|
||||
{
|
||||
return -1;
|
||||
}
|
||||
#endif /* HAVE_FILE_HANDLE */
|
||||
|
||||
#endif /* __CGROUP_H__ */
|
||||
|
Loading…
Reference in New Issue
Block a user