blob: 93fe9ea896a881c65748781a33257bfdccb5bddc [file] [log] [blame]
Andrew Scull18834872018-10-12 11:48:09 +01001/*
Andrew Walbran692b3252019-03-07 15:51:31 +00002 * Copyright 2018 The Hafnium Authors.
Andrew Scull18834872018-10-12 11:48:09 +01003 *
Andrew Walbrane959ec12020-06-17 15:01:09 +01004 * Use of this source code is governed by a BSD-style
5 * license that can be found in the LICENSE file or at
6 * https://opensource.org/licenses/BSD-3-Clause.
Andrew Scull18834872018-10-12 11:48:09 +01007 */
8
Andrew Scullfbc938a2018-08-20 14:09:28 +01009#pragma once
Wedson Almeida Filho987c0ff2018-06-20 16:34:38 +010010
Wedson Almeida Filhofdf4afc2018-07-19 15:45:21 +010011#include <stdarg.h>
Andrew Walbran7f904bf2019-07-12 16:38:38 +010012#include <stddef.h>
Wedson Almeida Filhofdf4afc2018-07-19 15:45:21 +010013
Andrew Walbranb5ab43c2020-04-30 11:32:54 +010014#include "hf/ffa.h"
Andrew Walbranc1ad4ce2019-05-09 11:41:39 +010015
Andrew Walbranf3ac84d2019-07-26 16:10:02 +010016#define DLOG_BUFFER_SIZE 8192
17
Andrew Walbran17eebf92020-02-05 16:35:49 +000018#define LOG_LEVEL_NONE UINT32_C(0)
19#define LOG_LEVEL_ERROR UINT32_C(1)
20#define LOG_LEVEL_NOTICE UINT32_C(2)
21#define LOG_LEVEL_WARNING UINT32_C(3)
22#define LOG_LEVEL_INFO UINT32_C(4)
23#define LOG_LEVEL_VERBOSE UINT32_C(5)
24
Andrew Walbranf3ac84d2019-07-26 16:10:02 +010025extern size_t dlog_buffer_offset;
26extern char dlog_buffer[];
27
Andrew Scullfdd716e2018-12-20 05:37:31 +000028void dlog_enable_lock(void);
Wedson Almeida Filho987c0ff2018-06-20 16:34:38 +010029void dlog(const char *fmt, ...);
Wedson Almeida Filhofdf4afc2018-07-19 15:45:21 +010030void vdlog(const char *fmt, va_list args);
Andrew Walbran17eebf92020-02-05 16:35:49 +000031
32#if LOG_LEVEL >= LOG_LEVEL_ERROR
33#define dlog_error(...) dlog("ERROR: " __VA_ARGS__)
Wedson Almeida Filho987c0ff2018-06-20 16:34:38 +010034#else
Andrew Walbran17eebf92020-02-05 16:35:49 +000035#define dlog_error(...)
36#endif
37
38#if LOG_LEVEL >= LOG_LEVEL_NOTICE
39#define dlog_notice(...) dlog("NOTICE: " __VA_ARGS__)
40#else
41#define dlog_notice(...)
42#endif
43
44#if LOG_LEVEL >= LOG_LEVEL_WARNING
45#define dlog_warning(...) dlog("WARNING: " __VA_ARGS__)
46#else
47#define dlog_warning(...)
48#endif
49
50#if LOG_LEVEL >= LOG_LEVEL_INFO
51#define dlog_info(...) dlog("INFO: " __VA_ARGS__)
52#else
53#define dlog_info(...)
54#endif
55
56#if LOG_LEVEL >= LOG_LEVEL_VERBOSE
57#define dlog_verbose(...) dlog("VERBOSE: " __VA_ARGS__)
58#else
59#define dlog_verbose(...)
Wedson Almeida Filho987c0ff2018-06-20 16:34:38 +010060#endif
Andrew Walbranc1ad4ce2019-05-09 11:41:39 +010061
Andrew Walbranb5ab43c2020-04-30 11:32:54 +010062void dlog_flush_vm_buffer(ffa_vm_id_t id, char buffer[], size_t length);