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