/kernel/linux/linux-5.10/tools/testing/selftests/cgroup/ |
H A D | test_freezer.c | 27 * Check if the cgroup is frozen by looking at the cgroup.events::frozen value. 29 static int cg_check_frozen(const char *cgroup, bool frozen) in cg_check_frozen() argument 32 if (cg_read_strstr(cgroup, "cgroup.events", "frozen 1") != 0) { in cg_check_frozen() 33 debug("Cgroup %s isn't frozen\n", cgroup); in cg_check_frozen() 38 * Check the cgroup.events::frozen value. in cg_check_frozen() 40 if (cg_read_strstr(cgroup, "cgroup.events", "frozen 0") != 0) { in cg_check_frozen() 41 debug("Cgroup %s is frozen\n", cgroup); in cg_check_frozen() 52 cg_freeze_nowait(const char *cgroup, bool freeze) cg_freeze_nowait() argument 60 cg_prepare_for_wait(const char *cgroup) cg_prepare_for_wait() argument 116 cg_enter_and_wait_for_frozen(const char *cgroup, int pid, bool frozen) cg_enter_and_wait_for_frozen() argument 150 cg_freeze_wait(const char *cgroup, bool freeze) cg_freeze_wait() argument 178 child_fn(const char *cgroup, void *arg) child_fn() argument 196 char *cgroup = NULL; test_cgfreezer_simple() local 247 char *cgroup[10] = {0}; test_cgfreezer_tree() local 397 forkbomb_fn(const char *cgroup, void *arg) forkbomb_fn() argument 420 char *cgroup = NULL; test_cgfreezer_forkbomb() local 568 char *cgroup[2] = {0}; test_cgfreezer_migrate() local 643 char *cgroup = NULL; test_cgfreezer_ptrace() local 725 char *cgroup = NULL; test_cgfreezer_stopped() local 769 char *cgroup = NULL; test_cgfreezer_ptraced() local 820 vfork_fn(const char *cgroup, void *arg) vfork_fn() argument 838 char *cgroup = NULL; test_cgfreezer_vfork() local [all...] |
H A D | cgroup_util.h | 22 extern char *cg_control(const char *cgroup, const char *control); 23 extern int cg_create(const char *cgroup); 24 extern int cg_destroy(const char *cgroup); 25 extern int cg_read(const char *cgroup, const char *control, 27 extern int cg_read_strcmp(const char *cgroup, const char *control, 29 extern int cg_read_strstr(const char *cgroup, const char *control, 31 extern long cg_read_long(const char *cgroup, const char *control); 32 long cg_read_key_long(const char *cgroup, const char *control, const char *key); 33 extern long cg_read_lc(const char *cgroup, const char *control); 34 extern int cg_write(const char *cgroup, cons [all...] |
H A D | cgroup_util.c | 78 char *cg_control(const char *cgroup, const char *control) in cg_control() argument 80 size_t len = strlen(cgroup) + strlen(control) + 2; in cg_control() 83 snprintf(ret, len, "%s/%s", cgroup, control); in cg_control() 88 int cg_read(const char *cgroup, const char *control, char *buf, size_t len) in cg_read() argument 92 snprintf(path, sizeof(path), "%s/%s", cgroup, control); in cg_read() 100 int cg_read_strcmp(const char *cgroup, const char *control, in cg_read_strcmp() argument 117 if (cg_read(cgroup, control, buf, size)) { in cg_read_strcmp() 127 int cg_read_strstr(const char *cgroup, const char *control, const char *needle) in cg_read_strstr() argument 131 if (cg_read(cgroup, control, buf, sizeof(buf))) in cg_read_strstr() 137 long cg_read_long(const char *cgroup, cons argument 147 cg_read_key_long(const char *cgroup, const char *control, const char *key) cg_read_key_long() argument 162 cg_read_lc(const char *cgroup, const char *control) cg_read_lc() argument 178 cg_write(const char *cgroup, const char *control, char *buf) cg_write() argument 220 cg_create(const char *cgroup) cg_create() argument 225 cg_wait_for_proc_count(const char *cgroup, int count) cg_wait_for_proc_count() argument 250 cg_killall(const char *cgroup) cg_killall() argument 274 cg_destroy(const char *cgroup) cg_destroy() argument 292 cg_enter(const char *cgroup, int pid) cg_enter() argument 300 cg_enter_current(const char *cgroup) cg_enter_current() argument 305 cg_enter_current_thread(const char *cgroup) cg_enter_current_thread() argument 310 cg_run(const char *cgroup, int (*fn)(const char *cgroup, void *arg), void *arg) cg_run() argument 408 clone_into_cgroup_run_nowait(const char *cgroup, int (*fn)(const char *cgroup, void *arg), void *arg) clone_into_cgroup_run_nowait() argument 427 cg_run_nowait(const char *cgroup, int (*fn)(const char *cgroup, void *arg), void *arg) cg_run_nowait() argument 482 alloc_anon(const char *cgroup, void *arg) alloc_anon() argument 555 clone_into_cgroup_run_wait(const char *cgroup) clone_into_cgroup_run_wait() argument [all...] |
/kernel/linux/linux-6.6/tools/testing/selftests/cgroup/ |
H A D | test_freezer.c | 25 * Check if the cgroup is frozen by looking at the cgroup.events::frozen value. 27 static int cg_check_frozen(const char *cgroup, bool frozen) in cg_check_frozen() argument 30 if (cg_read_strstr(cgroup, "cgroup.events", "frozen 1") != 0) { in cg_check_frozen() 31 debug("Cgroup %s isn't frozen\n", cgroup); in cg_check_frozen() 36 * Check the cgroup.events::frozen value. in cg_check_frozen() 38 if (cg_read_strstr(cgroup, "cgroup.events", "frozen 0") != 0) { in cg_check_frozen() 39 debug("Cgroup %s is frozen\n", cgroup); in cg_check_frozen() 50 cg_freeze_nowait(const char *cgroup, bool freeze) cg_freeze_nowait() argument 59 cg_enter_and_wait_for_frozen(const char *cgroup, int pid, bool frozen) cg_enter_and_wait_for_frozen() argument 93 cg_freeze_wait(const char *cgroup, bool freeze) cg_freeze_wait() argument 121 child_fn(const char *cgroup, void *arg) child_fn() argument 139 char *cgroup = NULL; test_cgfreezer_simple() local 190 char *cgroup[10] = {0}; test_cgfreezer_tree() local 340 forkbomb_fn(const char *cgroup, void *arg) forkbomb_fn() argument 363 char *cgroup = NULL; test_cgfreezer_forkbomb() local 511 char *cgroup[2] = {0}; test_cgfreezer_migrate() local 586 char *cgroup = NULL; test_cgfreezer_ptrace() local 668 char *cgroup = NULL; test_cgfreezer_stopped() local 712 char *cgroup = NULL; test_cgfreezer_ptraced() local 763 vfork_fn(const char *cgroup, void *arg) vfork_fn() argument 781 char *cgroup = NULL; test_cgfreezer_vfork() local [all...] |
H A D | test_kill.c | 17 * Kill the given cgroup and wait for the inotify signal. 19 * Then check that the cgroup is in the desired state. 21 static int cg_kill_wait(const char *cgroup) in cg_kill_wait() argument 25 fd = cg_prepare_for_wait(cgroup); in cg_kill_wait() 29 ret = cg_write(cgroup, "cgroup.kill", "1"); in cg_kill_wait() 46 static int child_fn(const char *cgroup, void *arg) in child_fn() argument 60 char *cgroup = NULL; in test_cgkill_simple() local 63 cgroup = cg_name(root, "cg_test_simple"); in test_cgkill_simple() 64 if (!cgroup) in test_cgkill_simple() 116 char *cgroup[10] = {0}; test_cgkill_tree() local 204 forkbomb_fn(const char *cgroup, void *arg) forkbomb_fn() argument 225 char *cgroup = NULL; test_cgkill_forkbomb() local [all...] |
H A D | cgroup_util.h | 27 extern char *cg_control(const char *cgroup, const char *control); 28 extern int cg_create(const char *cgroup); 29 extern int cg_destroy(const char *cgroup); 30 extern int cg_read(const char *cgroup, const char *control, 32 extern int cg_read_strcmp(const char *cgroup, const char *control, 34 extern int cg_read_strstr(const char *cgroup, const char *control, 36 extern long cg_read_long(const char *cgroup, const char *control); 37 long cg_read_key_long(const char *cgroup, const char *control, const char *key); 38 extern long cg_read_lc(const char *cgroup, const char *control); 39 extern int cg_write(const char *cgroup, cons [all...] |
H A D | cgroup_util.c | 75 char *cg_control(const char *cgroup, const char *control) in cg_control() argument 77 size_t len = strlen(cgroup) + strlen(control) + 2; in cg_control() 80 snprintf(ret, len, "%s/%s", cgroup, control); in cg_control() 86 int cg_read(const char *cgroup, const char *control, char *buf, size_t len) in cg_read() argument 91 snprintf(path, sizeof(path), "%s/%s", cgroup, control); in cg_read() 97 int cg_read_strcmp(const char *cgroup, const char *control, in cg_read_strcmp() argument 114 if (cg_read(cgroup, control, buf, size)) { in cg_read_strcmp() 124 int cg_read_strstr(const char *cgroup, const char *control, const char *needle) in cg_read_strstr() argument 128 if (cg_read(cgroup, control, buf, sizeof(buf))) in cg_read_strstr() 134 long cg_read_long(const char *cgroup, cons argument 144 cg_read_key_long(const char *cgroup, const char *control, const char *key) cg_read_key_long() argument 159 cg_read_lc(const char *cgroup, const char *control) cg_read_lc() argument 176 cg_write(const char *cgroup, const char *control, char *buf) cg_write() argument 186 cg_write_numeric(const char *cgroup, const char *control, long value) cg_write_numeric() argument 227 cg_create(const char *cgroup) cg_create() argument 232 cg_wait_for_proc_count(const char *cgroup, int count) cg_wait_for_proc_count() argument 257 cg_killall(const char *cgroup) cg_killall() argument 285 cg_destroy(const char *cgroup) cg_destroy() argument 305 cg_enter(const char *cgroup, int pid) cg_enter() argument 313 cg_enter_current(const char *cgroup) cg_enter_current() argument 318 cg_enter_current_thread(const char *cgroup) cg_enter_current_thread() argument 323 cg_run(const char *cgroup, int (*fn)(const char *cgroup, void *arg), void *arg) cg_run() argument 421 clone_into_cgroup_run_nowait(const char *cgroup, int (*fn)(const char *cgroup, void *arg), void *arg) clone_into_cgroup_run_nowait() argument 440 cg_run_nowait(const char *cgroup, int (*fn)(const char *cgroup, void *arg), void *arg) cg_run_nowait() argument 495 alloc_anon(const char *cgroup, void *arg) alloc_anon() argument 582 clone_into_cgroup_run_wait(const char *cgroup) clone_into_cgroup_run_wait() argument 607 __prepare_for_wait(const char *cgroup, const char *filename) __prepare_for_wait() argument 624 cg_prepare_for_wait(const char *cgroup) cg_prepare_for_wait() argument 629 memcg_prepare_for_wait(const char *cgroup) memcg_prepare_for_wait() argument [all...] |
/kernel/linux/linux-6.6/kernel/bpf/ |
H A D | bpf_cgrp_storage.c | 41 struct cgroup *cg = owner; in cgroup_storage_ptr() 46 void bpf_cgrp_storage_free(struct cgroup *cgroup) in bpf_cgrp_storage_free() argument 51 local_storage = rcu_dereference(cgroup->bpf_cgrp_storage); in bpf_cgrp_storage_free() 64 cgroup_storage_lookup(struct cgroup *cgroup, struct bpf_map *map, bool cacheit_lockit) in cgroup_storage_lookup() argument 69 cgroup_storage = rcu_dereference_check(cgroup->bpf_cgrp_storage, in cgroup_storage_lookup() 81 struct cgroup *cgroup; in bpf_cgrp_storage_lookup_elem() local 85 cgroup in bpf_cgrp_storage_lookup_elem() 100 struct cgroup *cgroup; bpf_cgrp_storage_update_elem() local 116 cgroup_storage_delete(struct cgroup *cgroup, struct bpf_map *map) cgroup_storage_delete() argument 130 struct cgroup *cgroup; bpf_cgrp_storage_delete_elem() local [all...] |
H A D | cgroup_iter.c | 5 #include <linux/cgroup.h> 9 #include "../cgroup/cgroup-internal.h" /* cgroup_mutex and cgroup_is_dead */ 11 /* cgroup_iter provides four modes of traversal to the cgroup hierarchy. 13 * 1. Walk the descendants of a cgroup in pre-order. 14 * 2. Walk the descendants of a cgroup in post-order. 15 * 3. Walk the ancestors of a cgroup. 16 * 4. Show the given cgroup only. 19 * post-order. For walking ancestors, the iter walks up from a cgroup to 26 * the first element. The prog may also be passed a NULL cgroup, [all...] |
/kernel/linux/linux-5.10/tools/perf/util/ |
H A D | cgroup.c | 4 #include "cgroup.h" 33 fprintf(stderr, "no access to cgroup %s\n", path); in open_cgroup() 38 static struct cgroup *evlist__find_cgroup(struct evlist *evlist, const char *str) in evlist__find_cgroup() 54 static struct cgroup *cgroup__new(const char *name, bool do_open) in cgroup__new() 56 struct cgroup *cgroup = zalloc(sizeof(*cgroup)); in cgroup__new() local 58 if (cgroup != NULL) { in cgroup__new() 59 refcount_set(&cgroup->refcnt, 1); in cgroup__new() 61 cgroup in cgroup__new() 85 struct cgroup *cgroup = evlist__find_cgroup(evlist, name); evlist__findnew_cgroup() local 116 cgroup__delete(struct cgroup *cgroup) cgroup__delete() argument 131 cgroup__get(struct cgroup *cgroup) cgroup__get() argument 138 evsel__set_default_cgroup(struct evsel *evsel, struct cgroup *cgroup) evsel__set_default_cgroup() argument 144 evlist__set_default_cgroup(struct evlist *evlist, struct cgroup *cgroup) evlist__set_default_cgroup() argument [all...] |
H A D | cgroup.h | 11 struct cgroup { struct 21 struct cgroup *cgroup__get(struct cgroup *cgroup); 22 void cgroup__put(struct cgroup *cgroup); 27 struct cgroup *evlist__findnew_cgroup(struct evlist *evlist, const char *name); 31 void evlist__set_default_cgroup(struct evlist *evlist, struct cgroup *cgroup); 35 struct cgroup *cgroup__findne [all...] |
/kernel/linux/linux-6.6/tools/testing/selftests/bpf/progs/ |
H A D | cgrp_kfunc_failure.c | 16 * TP_PROTO(struct cgroup *cgrp, const char *path), 20 static struct __cgrps_kfunc_map_value *insert_lookup_cgrp(struct cgroup *cgrp) in insert_lookup_cgrp() 33 int BPF_PROG(cgrp_kfunc_acquire_untrusted, struct cgroup *cgrp, const char *path) in BPF_PROG() 35 struct cgroup *acquired; in BPF_PROG() 52 int BPF_PROG(cgrp_kfunc_acquire_no_null_check, struct cgroup *cgrp, const char *path) in BPF_PROG() 54 struct cgroup *acquired; in BPF_PROG() 67 __failure __msg("arg#0 pointer type STRUCT cgroup must point") 68 int BPF_PROG(cgrp_kfunc_acquire_fp, struct cgroup *cgrp, const char *path) in BPF_PROG() 70 struct cgroup *acquired, *stack_cgrp = (struct cgroup *) in BPF_PROG() [all...] |
H A D | cgrp_kfunc_common.h | 13 struct cgroup __kptr * cgrp; 23 struct cgroup *bpf_cgroup_acquire(struct cgroup *p) __ksym; 24 void bpf_cgroup_release(struct cgroup *p) __ksym; 25 struct cgroup *bpf_cgroup_ancestor(struct cgroup *cgrp, int level) __ksym; 26 struct cgroup *bpf_cgroup_from_id(u64 cgid) __ksym; 30 static inline struct __cgrps_kfunc_map_value *cgrps_kfunc_map_value_lookup(struct cgroup *cgrp) in cgrps_kfunc_map_value_lookup() 42 static inline int cgrps_kfunc_map_insert(struct cgroup *cgrp) in cgrps_kfunc_map_insert() 46 struct cgroup *acquire in cgrps_kfunc_map_insert() [all...] |
H A D | cgrp_kfunc_success.c | 17 * TP_PROTO(struct cgroup *cgrp, const char *path), 33 int BPF_PROG(test_cgrp_acquire_release_argument, struct cgroup *cgrp, const char *path) in BPF_PROG() 35 struct cgroup *acquired; in BPF_PROG() 50 int BPF_PROG(test_cgrp_acquire_leave_in_map, struct cgroup *cgrp, const char *path) in BPF_PROG() 65 int BPF_PROG(test_cgrp_xchg_release, struct cgroup *cgrp, const char *path) in BPF_PROG() 67 struct cgroup *kptr, *cg; in BPF_PROG() 108 int BPF_PROG(test_cgrp_get_release, struct cgroup *cgrp, const char *path) in BPF_PROG() 110 struct cgroup *kptr; in BPF_PROG() 139 int BPF_PROG(test_cgrp_get_ancestors, struct cgroup *cgrp, const char *path) in BPF_PROG() 141 struct cgroup *sel in BPF_PROG() [all...] |
/kernel/linux/linux-5.10/include/linux/ |
H A D | cgroup.h | 5 * cgroup interface 28 #include <linux/cgroup-defs.h> 101 struct cgroup_subsys_state *cgroup_e_css(struct cgroup *cgroup, 103 struct cgroup_subsys_state *cgroup_get_e_css(struct cgroup *cgroup, 108 struct cgroup *cgroup_get_from_path(const char *path); 109 struct cgroup *cgroup_get_from_fd(int fd); 112 int cgroup_transfer_tasks(struct cgroup *to, struct cgroup *fro [all...] |
/kernel/linux/linux-6.6/include/linux/ |
H A D | cgroup.h | 5 * cgroup interface 28 #include <linux/cgroup-defs.h> 101 struct cgroup_subsys_state *cgroup_e_css(struct cgroup *cgroup, 103 struct cgroup_subsys_state *cgroup_get_e_css(struct cgroup *cgroup, 108 struct cgroup *cgroup_get_from_path(const char *path); 109 struct cgroup *cgroup_get_from_fd(int fd); 110 struct cgroup *cgroup_v1v2_get_from_fd(int fd); 113 int cgroup_transfer_tasks(struct cgroup *t [all...] |
/kernel/linux/linux-6.6/tools/perf/util/ |
H A D | cgroup.c | 4 #include "cgroup.h" 23 /* used to match cgroup name with patterns */ 45 fprintf(stderr, "no access to cgroup %s\n", path); in open_cgroup() 51 int read_cgroup_id(struct cgroup *cgrp) in read_cgroup_id() 93 static struct cgroup *evlist__find_cgroup(struct evlist *evlist, const char *str) in evlist__find_cgroup() 109 static struct cgroup *cgroup__new(const char *name, bool do_open) in cgroup__new() 111 struct cgroup *cgroup = zalloc(sizeof(*cgroup)); in cgroup__new() local 113 if (cgroup ! in cgroup__new() 140 struct cgroup *cgroup = evlist__find_cgroup(evlist, name); evlist__findnew_cgroup() local 171 cgroup__delete(struct cgroup *cgroup) cgroup__delete() argument 186 cgroup__get(struct cgroup *cgroup) cgroup__get() argument 193 evsel__set_default_cgroup(struct evsel *evsel, struct cgroup *cgroup) evsel__set_default_cgroup() argument 199 evlist__set_default_cgroup(struct evlist *evlist, struct cgroup *cgroup) evlist__set_default_cgroup() argument [all...] |
H A D | cgroup.h | 12 struct cgroup { struct 23 struct cgroup *cgroup__get(struct cgroup *cgroup); 24 void cgroup__put(struct cgroup *cgroup); 29 struct cgroup *evlist__findnew_cgroup(struct evlist *evlist, const char *name); 33 void evlist__set_default_cgroup(struct evlist *evlist, struct cgroup *cgroup); 37 struct cgroup *cgroup__findne [all...] |
/kernel/linux/linux-5.10/include/trace/events/ |
H A D | cgroup.h | 3 #define TRACE_SYSTEM cgroup 8 #include <linux/cgroup.h> 54 DECLARE_EVENT_CLASS(cgroup, 56 TP_PROTO(struct cgroup *cgrp, const char *path), 78 DEFINE_EVENT(cgroup, cgroup_mkdir, 80 TP_PROTO(struct cgroup *cgrp, const char *path), 85 DEFINE_EVENT(cgroup, cgroup_rmdir, 87 TP_PROTO(struct cgroup *cgrp, const char *path), 92 DEFINE_EVENT(cgroup, cgroup_release, 94 TP_PROTO(struct cgroup *cgr [all...] |
/kernel/linux/linux-6.6/include/trace/events/ |
H A D | cgroup.h | 3 #define TRACE_SYSTEM cgroup 8 #include <linux/cgroup.h> 54 DECLARE_EVENT_CLASS(cgroup, 56 TP_PROTO(struct cgroup *cgrp, const char *path), 78 DEFINE_EVENT(cgroup, cgroup_mkdir, 80 TP_PROTO(struct cgroup *cgrp, const char *path), 85 DEFINE_EVENT(cgroup, cgroup_rmdir, 87 TP_PROTO(struct cgroup *cgrp, const char *path), 92 DEFINE_EVENT(cgroup, cgroup_release, 94 TP_PROTO(struct cgroup *cgr [all...] |
/kernel/linux/linux-5.10/kernel/cgroup/ |
H A D | cgroup-internal.h | 5 #include <linux/cgroup.h> 44 * The cgroup filesystem superblock creation/mount context. 88 * A cgroup can be associated with multiple css_sets as different tasks may 96 /* the cgroup and css_set this link associates */ 97 struct cgroup *cgrp; 178 * for_each_subsys - iterate all enabled cgroup subsystems 186 static inline bool cgroup_is_dead(const struct cgroup *cgrp) in cgroup_is_dead() 191 static inline bool notify_on_release(const struct cgroup *cgrp) in notify_on_release() 224 bool cgroup_on_dfl(const struct cgroup *cgrp); 225 bool cgroup_is_thread_root(struct cgroup *cgr [all...] |
H A D | rstat.c | 2 #include "cgroup-internal.h" 9 static void cgroup_base_stat_flush(struct cgroup *cgrp, int cpu); 11 static struct cgroup_rstat_cpu *cgroup_rstat_cpu(struct cgroup *cgrp, int cpu) in cgroup_rstat_cpu() 18 * @cgrp: target cgroup 25 void cgroup_rstat_updated(struct cgroup *cgrp, int cpu) in cgroup_rstat_updated() 28 struct cgroup *parent; in cgroup_rstat_updated() 55 * Both additions and removals are bottom-up. If a cgroup in cgroup_rstat_updated() 76 * each returned cgroup is unlinked from the tree. Must be called with the 83 static struct cgroup *cgroup_rstat_cpu_pop_updated(struct cgroup *po [all...] |
/kernel/linux/linux-6.6/kernel/cgroup/ |
H A D | cgroup-internal.h | 5 #include <linux/cgroup.h> 43 * The cgroup filesystem superblock creation/mount context. 87 * A cgroup can be associated with multiple css_sets as different tasks may 95 /* the cgroup and css_set this link associates */ 96 struct cgroup *cgrp; 176 * for_each_subsys - iterate all enabled cgroup subsystems 184 static inline bool cgroup_is_dead(const struct cgroup *cgrp) in cgroup_is_dead() 189 static inline bool notify_on_release(const struct cgroup *cgrp) in notify_on_release() 222 bool cgroup_on_dfl(const struct cgroup *cgrp); 225 struct cgroup *task_cgroup_from_roo [all...] |
H A D | cgroup.c | 31 #include "cgroup-internal.h" 33 #include <linux/bpf-cgroup.h> 65 #include <trace/events/cgroup.h> 81 * cgroup_mutex is the master lock. Any modification to cgroup or its 88 * cgroup.h can use them for lockdep annotations. 122 * cgroup destruction makes heavy use of work items and there can be a lot 123 * of concurrent destructions. Use a separate workqueue so that cgroup 129 /* generate an array of cgroup subsystem pointers */ 136 /* array of cgroup subsystem names */ 210 /* cgroup namespac 3625 struct cgroup *cgroup = seq_css(seq)->cgroup; cgroup_stat_show() local 5689 struct cgroup *cgroup; cgroup_check_hierarchy_limits() local 6940 struct cgroup *cgroup; cgroup_sk_alloc() local [all...] |
/kernel/linux/linux-6.6/tools/perf/tests/shell/ |
H A D | stat_bpf_counters_cgrp.sh | 2 # perf stat --bpf-counters --for-each-cgroup test 12 # skip if --bpf-counters --for-each-cgroup is not supported 15 if ! perf stat -a --bpf-counters --for-each-cgroup / true > /dev/null 2>&1; then 17 echo "Skipping: --bpf-counters --for-each-cgroup not supported" 18 perf --no-pager stat -a --bpf-counters --for-each-cgroup / true || true 28 if [ -d /sys/fs/cgroup/system.slice ] && [ -d /sys/fs/cgroup/user.slice ]; then 34 find_cgroups_self_cgrp=$(grep perf_event /proc/self/cgroup | cut -d: -f3) 36 # cgroup v2 doesn't specify perf_event 37 find_cgroups_self_cgrp=$(grep ^0: /proc/self/cgroup | cu [all...] |