linux/tools/perf/util/counts.c
<<
>>
Prefs
   1// SPDX-License-Identifier: GPL-2.0
   2#include <errno.h>
   3#include <stdlib.h>
   4#include "evsel.h"
   5#include "counts.h"
   6#include <linux/zalloc.h>
   7
   8struct perf_counts *perf_counts__new(int ncpus, int nthreads)
   9{
  10        struct perf_counts *counts = zalloc(sizeof(*counts));
  11
  12        if (counts) {
  13                struct xyarray *values;
  14
  15                values = xyarray__new(ncpus, nthreads, sizeof(struct perf_counts_values));
  16                if (!values) {
  17                        free(counts);
  18                        return NULL;
  19                }
  20
  21                counts->values = values;
  22        }
  23
  24        return counts;
  25}
  26
  27void perf_counts__delete(struct perf_counts *counts)
  28{
  29        if (counts) {
  30                xyarray__delete(counts->values);
  31                free(counts);
  32        }
  33}
  34
  35static void perf_counts__reset(struct perf_counts *counts)
  36{
  37        xyarray__reset(counts->values);
  38}
  39
  40void perf_evsel__reset_counts(struct perf_evsel *evsel)
  41{
  42        perf_counts__reset(evsel->counts);
  43}
  44
  45int perf_evsel__alloc_counts(struct perf_evsel *evsel, int ncpus, int nthreads)
  46{
  47        evsel->counts = perf_counts__new(ncpus, nthreads);
  48        return evsel->counts != NULL ? 0 : -ENOMEM;
  49}
  50
  51void perf_evsel__free_counts(struct perf_evsel *evsel)
  52{
  53        perf_counts__delete(evsel->counts);
  54        evsel->counts = NULL;
  55}
  56