1 /* SPDX-License-Identifier: GPL-2.0 */
5 #include <linux/compiler.h>
6 #include <linux/refcount.h>
7 #include <linux/rbtree.h>
20 extern int nr_cgroups
; /* number of explicit cgroups defined */
21 extern bool cgrp_event_expanded
;
23 struct cgroup
*cgroup__get(struct cgroup
*cgroup
);
24 void cgroup__put(struct cgroup
*cgroup
);
29 struct cgroup
*cgroup__new(const char *name
, bool do_open
);
30 struct cgroup
*evlist__findnew_cgroup(struct evlist
*evlist
, const char *name
);
31 int evlist__expand_cgroup(struct evlist
*evlist
, const char *cgroups
,
32 struct rblist
*metric_events
, bool open_cgroup
);
34 void evlist__set_default_cgroup(struct evlist
*evlist
, struct cgroup
*cgroup
);
36 int parse_cgroups(const struct option
*opt
, const char *str
, int unset
);
38 struct cgroup
*cgroup__findnew(struct perf_env
*env
, uint64_t id
,
40 struct cgroup
*cgroup__find(struct perf_env
*env
, uint64_t id
);
41 struct cgroup
*__cgroup__find(struct rb_root
*root
, uint64_t id
);
43 void perf_env__purge_cgroups(struct perf_env
*env
);
45 #ifdef HAVE_FILE_HANDLE
46 int read_cgroup_id(struct cgroup
*cgrp
);
48 static inline int read_cgroup_id(struct cgroup
*cgrp __maybe_unused
)
52 #endif /* HAVE_FILE_HANDLE */
54 /* read all cgroups in the system and save them in the rbtree */
55 void read_all_cgroups(struct rb_root
*root
);
57 int cgroup_is_v2(const char *subsys
);
59 #endif /* __CGROUP_H__ */