1b2441318SGreg Kroah-Hartman /* SPDX-License-Identifier: GPL-2.0 */ 2023695d9SStephane Eranian #ifndef __CGROUP_H__ 3023695d9SStephane Eranian #define __CGROUP_H__ 4023695d9SStephane Eranian 579c5fe6dSElena Reshetova #include <linux/refcount.h> 6d1277aa3SNamhyung Kim #include <linux/rbtree.h> 7d1277aa3SNamhyung Kim #include "util/env.h" 8f812d304SArnaldo Carvalho de Melo 9023695d9SStephane Eranian struct option; 10023695d9SStephane Eranian 113ca32f69SArnaldo Carvalho de Melo struct cgroup { 12d1277aa3SNamhyung Kim struct rb_node node; 13d1277aa3SNamhyung Kim u64 id; 14023695d9SStephane Eranian char *name; 15023695d9SStephane Eranian int fd; 1679c5fe6dSElena Reshetova refcount_t refcnt; 17023695d9SStephane Eranian }; 18023695d9SStephane Eranian 19023695d9SStephane Eranian extern int nr_cgroups; /* number of explicit cgroups defined */ 20a53b6460SArnaldo Carvalho de Melo 21fc9ffb9cSArnaldo Carvalho de Melo struct cgroup *cgroup__get(struct cgroup *cgroup); 22a53b6460SArnaldo Carvalho de Melo void cgroup__put(struct cgroup *cgroup); 233ca32f69SArnaldo Carvalho de Melo 2463503dbaSJiri Olsa struct evlist; 2569239ec8SArnaldo Carvalho de Melo 2663503dbaSJiri Olsa struct cgroup *evlist__findnew_cgroup(struct evlist *evlist, const char *name); 2769239ec8SArnaldo Carvalho de Melo 2863503dbaSJiri Olsa void evlist__set_default_cgroup(struct evlist *evlist, struct cgroup *cgroup); 29483322ddSArnaldo Carvalho de Melo 303938bad4SArnaldo Carvalho de Melo int parse_cgroups(const struct option *opt, const char *str, int unset); 31023695d9SStephane Eranian 32d1277aa3SNamhyung Kim struct cgroup *cgroup__findnew(struct perf_env *env, uint64_t id, 33d1277aa3SNamhyung Kim const char *path); 34d1277aa3SNamhyung Kim struct cgroup *cgroup__find(struct perf_env *env, uint64_t id); 35d1277aa3SNamhyung Kim 36d1277aa3SNamhyung Kim void perf_env__purge_cgroups(struct perf_env *env); 37d1277aa3SNamhyung Kim 38023695d9SStephane Eranian #endif /* __CGROUP_H__ */ 39