cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

util.c (1647B)


      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}