linux/tools/perf/ui/util.c
<<
>>
Prefs
   1// SPDX-License-Identifier: GPL-2.0
   2#include "util.h"
   3#include "../util/debug.h"
   4#include <stdio.h>
   5
   6/*
   7 * Default error logging functions
   8 */
   9static int perf_stdio__error(const char *format, va_list args)
  10{
  11        fprintf(stderr, "Error:\n");
  12        vfprintf(stderr, format, args);
  13        return 0;
  14}
  15
  16static int perf_stdio__warning(const char *format, va_list args)
  17{
  18        fprintf(stderr, "Warning:\n");
  19        vfprintf(stderr, format, args);
  20        return 0;
  21}
  22
  23static struct perf_error_ops default_eops =
  24{
  25        .error          = perf_stdio__error,
  26        .warning        = perf_stdio__warning,
  27};
  28
  29static struct perf_error_ops *perf_eops = &default_eops;
  30
  31
  32int ui__error(const char *format, ...)
  33{
  34        int ret;
  35        va_list args;
  36
  37        va_start(args, format);
  38        ret = perf_eops->error(format, args);
  39        va_end(args);
  40
  41        return ret;
  42}
  43
  44int ui__warning(const char *format, ...)
  45{
  46        int ret;
  47        va_list args;
  48
  49        va_start(args, format);
  50        ret = perf_eops->warning(format, args);
  51        va_end(args);
  52
  53        return ret;
  54}
  55
  56/**
  57 * perf_error__register - Register error logging functions
  58 * @eops: The pointer to error logging function struct
  59 *
  60 * Register UI-specific error logging functions. Before calling this,
  61 * other logging functions should be unregistered, if any.
  62 */
  63int perf_error__register(struct perf_error_ops *eops)
  64{
  65        if (perf_eops != &default_eops)
  66                return -1;
  67
  68        perf_eops = eops;
  69        return 0;
  70}
  71
  72/**
  73 * perf_error__unregister - Unregister error logging functions
  74 * @eops: The pointer to error logging function struct
  75 *
  76 * Unregister already registered error logging functions.
  77 */
  78int perf_error__unregister(struct perf_error_ops *eops)
  79{
  80        if (perf_eops != eops)
  81                return -1;
  82
  83        perf_eops = &default_eops;
  84        return 0;
  85}
  86