mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2025-08-16 11:12:30 +00:00

The rblist of metric_event that then have a list of associated metric_expr is moved out of the stat_config and into the evlist. This is done as part of refactoring things for python, having the state split in two places complicates that implementation. The evlist is doing the harder work of enabling and disabling events, the metrics are needed to compute a value and it doesn't seem unreasonable to hang them from the evlist. Signed-off-by: Ian Rogers <irogers@google.com> Link: https://lore.kernel.org/r/20250710235126.1086011-7-irogers@google.com Signed-off-by: Namhyung Kim <namhyung@kernel.org>
59 lines
1.5 KiB
C
59 lines
1.5 KiB
C
/* SPDX-License-Identifier: GPL-2.0 */
|
|
#ifndef __CGROUP_H__
|
|
#define __CGROUP_H__
|
|
|
|
#include <linux/compiler.h>
|
|
#include <linux/refcount.h>
|
|
#include <linux/rbtree.h>
|
|
#include "util/env.h"
|
|
|
|
struct option;
|
|
|
|
struct cgroup {
|
|
struct rb_node node;
|
|
u64 id;
|
|
char *name;
|
|
int fd;
|
|
refcount_t refcnt;
|
|
};
|
|
|
|
extern int nr_cgroups; /* number of explicit cgroups defined */
|
|
extern bool cgrp_event_expanded;
|
|
|
|
struct cgroup *cgroup__get(struct cgroup *cgroup);
|
|
void cgroup__put(struct cgroup *cgroup);
|
|
|
|
struct evlist;
|
|
struct rblist;
|
|
|
|
struct cgroup *cgroup__new(const char *name, bool do_open);
|
|
struct cgroup *evlist__findnew_cgroup(struct evlist *evlist, const char *name);
|
|
int evlist__expand_cgroup(struct evlist *evlist, const char *cgroups, bool open_cgroup);
|
|
|
|
void evlist__set_default_cgroup(struct evlist *evlist, struct cgroup *cgroup);
|
|
|
|
int parse_cgroups(const struct option *opt, const char *str, int unset);
|
|
|
|
struct cgroup *cgroup__findnew(struct perf_env *env, uint64_t id,
|
|
const char *path);
|
|
struct cgroup *cgroup__find(struct perf_env *env, uint64_t id);
|
|
struct cgroup *__cgroup__find(struct rb_root *root, 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 */
|
|
|
|
/* read all cgroups in the system and save them in the rbtree */
|
|
void read_all_cgroups(struct rb_root *root);
|
|
|
|
int cgroup_is_v2(const char *subsys);
|
|
|
|
#endif /* __CGROUP_H__ */
|