root/tools/perf/util/counts.c

/* [<][>][^][v][top][bottom][index][help] */

DEFINITIONS

This source file includes following definitions.
  1. perf_counts__new
  2. perf_counts__delete
  3. perf_counts__reset
  4. perf_evsel__reset_counts
  5. perf_evsel__alloc_counts
  6. perf_evsel__free_counts

   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 
   8 struct 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                 values = xyarray__new(ncpus, nthreads, sizeof(bool));
  24                 if (!values) {
  25                         xyarray__delete(counts->values);
  26                         free(counts);
  27                         return NULL;
  28                 }
  29 
  30                 counts->loaded = values;
  31         }
  32 
  33         return counts;
  34 }
  35 
  36 void perf_counts__delete(struct perf_counts *counts)
  37 {
  38         if (counts) {
  39                 xyarray__delete(counts->loaded);
  40                 xyarray__delete(counts->values);
  41                 free(counts);
  42         }
  43 }
  44 
  45 static void perf_counts__reset(struct perf_counts *counts)
  46 {
  47         xyarray__reset(counts->loaded);
  48         xyarray__reset(counts->values);
  49 }
  50 
  51 void perf_evsel__reset_counts(struct evsel *evsel)
  52 {
  53         perf_counts__reset(evsel->counts);
  54 }
  55 
  56 int perf_evsel__alloc_counts(struct evsel *evsel, int ncpus, int nthreads)
  57 {
  58         evsel->counts = perf_counts__new(ncpus, nthreads);
  59         return evsel->counts != NULL ? 0 : -ENOMEM;
  60 }
  61 
  62 void perf_evsel__free_counts(struct evsel *evsel)
  63 {
  64         perf_counts__delete(evsel->counts);
  65         evsel->counts = NULL;
  66 }

/* [<][>][^][v][top][bottom][index][help] */