| .. | .. |
|---|
| 3 | 3 | #define __CGROUP_H__ |
|---|
| 4 | 4 | |
|---|
| 5 | 5 | #include <linux/refcount.h> |
|---|
| 6 | +#include <linux/rbtree.h> |
|---|
| 7 | +#include "util/env.h" |
|---|
| 6 | 8 | |
|---|
| 7 | 9 | struct option; |
|---|
| 8 | 10 | |
|---|
| 9 | 11 | struct cgroup { |
|---|
| 10 | | - char *name; |
|---|
| 11 | | - int fd; |
|---|
| 12 | | - refcount_t refcnt; |
|---|
| 12 | + struct rb_node node; |
|---|
| 13 | + u64 id; |
|---|
| 14 | + char *name; |
|---|
| 15 | + int fd; |
|---|
| 16 | + refcount_t refcnt; |
|---|
| 13 | 17 | }; |
|---|
| 14 | | - |
|---|
| 15 | 18 | |
|---|
| 16 | 19 | extern int nr_cgroups; /* number of explicit cgroups defined */ |
|---|
| 17 | 20 | |
|---|
| 18 | 21 | struct cgroup *cgroup__get(struct cgroup *cgroup); |
|---|
| 19 | 22 | void cgroup__put(struct cgroup *cgroup); |
|---|
| 20 | 23 | |
|---|
| 21 | | -struct perf_evlist; |
|---|
| 24 | +struct evlist; |
|---|
| 25 | +struct rblist; |
|---|
| 22 | 26 | |
|---|
| 23 | | -struct cgroup *evlist__findnew_cgroup(struct perf_evlist *evlist, const char *name); |
|---|
| 27 | +struct cgroup *evlist__findnew_cgroup(struct evlist *evlist, const char *name); |
|---|
| 28 | +int evlist__expand_cgroup(struct evlist *evlist, const char *cgroups, |
|---|
| 29 | + struct rblist *metric_events, bool open_cgroup); |
|---|
| 24 | 30 | |
|---|
| 25 | | -void evlist__set_default_cgroup(struct perf_evlist *evlist, struct cgroup *cgroup); |
|---|
| 31 | +void evlist__set_default_cgroup(struct evlist *evlist, struct cgroup *cgroup); |
|---|
| 26 | 32 | |
|---|
| 27 | 33 | int parse_cgroups(const struct option *opt, const char *str, int unset); |
|---|
| 28 | 34 | |
|---|
| 35 | +struct cgroup *cgroup__findnew(struct perf_env *env, uint64_t id, |
|---|
| 36 | + const char *path); |
|---|
| 37 | +struct cgroup *cgroup__find(struct perf_env *env, uint64_t id); |
|---|
| 38 | + |
|---|
| 39 | +void perf_env__purge_cgroups(struct perf_env *env); |
|---|
| 40 | + |
|---|
| 29 | 41 | #endif /* __CGROUP_H__ */ |
|---|