Andrew Scull | 1883487 | 2018-10-12 11:48:09 +0100 | [diff] [blame] | 1 | /* |
Andrew Walbran | 692b325 | 2019-03-07 15:51:31 +0000 | [diff] [blame] | 2 | * Copyright 2018 The Hafnium Authors. |
Andrew Scull | 1883487 | 2018-10-12 11:48:09 +0100 | [diff] [blame] | 3 | * |
| 4 | * Licensed under the Apache License, Version 2.0 (the "License"); |
| 5 | * you may not use this file except in compliance with the License. |
| 6 | * You may obtain a copy of the License at |
| 7 | * |
| 8 | * https://www.apache.org/licenses/LICENSE-2.0 |
| 9 | * |
| 10 | * Unless required by applicable law or agreed to in writing, software |
| 11 | * distributed under the License is distributed on an "AS IS" BASIS, |
| 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| 13 | * See the License for the specific language governing permissions and |
| 14 | * limitations under the License. |
| 15 | */ |
| 16 | |
Andrew Scull | fbc938a | 2018-08-20 14:09:28 +0100 | [diff] [blame] | 17 | #pragma once |
Wedson Almeida Filho | 987c0ff | 2018-06-20 16:34:38 +0100 | [diff] [blame] | 18 | |
Wedson Almeida Filho | fdf4afc | 2018-07-19 15:45:21 +0100 | [diff] [blame] | 19 | #include <stdarg.h> |
Andrew Walbran | 7f904bf | 2019-07-12 16:38:38 +0100 | [diff] [blame] | 20 | #include <stddef.h> |
Wedson Almeida Filho | fdf4afc | 2018-07-19 15:45:21 +0100 | [diff] [blame] | 21 | |
Andrew Walbran | b5ab43c | 2020-04-30 11:32:54 +0100 | [diff] [blame^] | 22 | #include "hf/ffa.h" |
Andrew Walbran | c1ad4ce | 2019-05-09 11:41:39 +0100 | [diff] [blame] | 23 | |
Andrew Walbran | f3ac84d | 2019-07-26 16:10:02 +0100 | [diff] [blame] | 24 | #define DLOG_BUFFER_SIZE 8192 |
| 25 | |
Andrew Walbran | 17eebf9 | 2020-02-05 16:35:49 +0000 | [diff] [blame] | 26 | #define LOG_LEVEL_NONE UINT32_C(0) |
| 27 | #define LOG_LEVEL_ERROR UINT32_C(1) |
| 28 | #define LOG_LEVEL_NOTICE UINT32_C(2) |
| 29 | #define LOG_LEVEL_WARNING UINT32_C(3) |
| 30 | #define LOG_LEVEL_INFO UINT32_C(4) |
| 31 | #define LOG_LEVEL_VERBOSE UINT32_C(5) |
| 32 | |
Andrew Walbran | f3ac84d | 2019-07-26 16:10:02 +0100 | [diff] [blame] | 33 | extern size_t dlog_buffer_offset; |
| 34 | extern char dlog_buffer[]; |
| 35 | |
Andrew Scull | fdd716e | 2018-12-20 05:37:31 +0000 | [diff] [blame] | 36 | void dlog_enable_lock(void); |
Wedson Almeida Filho | 987c0ff | 2018-06-20 16:34:38 +0100 | [diff] [blame] | 37 | void dlog(const char *fmt, ...); |
Wedson Almeida Filho | fdf4afc | 2018-07-19 15:45:21 +0100 | [diff] [blame] | 38 | void vdlog(const char *fmt, va_list args); |
Andrew Walbran | 17eebf9 | 2020-02-05 16:35:49 +0000 | [diff] [blame] | 39 | |
| 40 | #if LOG_LEVEL >= LOG_LEVEL_ERROR |
| 41 | #define dlog_error(...) dlog("ERROR: " __VA_ARGS__) |
Wedson Almeida Filho | 987c0ff | 2018-06-20 16:34:38 +0100 | [diff] [blame] | 42 | #else |
Andrew Walbran | 17eebf9 | 2020-02-05 16:35:49 +0000 | [diff] [blame] | 43 | #define dlog_error(...) |
| 44 | #endif |
| 45 | |
| 46 | #if LOG_LEVEL >= LOG_LEVEL_NOTICE |
| 47 | #define dlog_notice(...) dlog("NOTICE: " __VA_ARGS__) |
| 48 | #else |
| 49 | #define dlog_notice(...) |
| 50 | #endif |
| 51 | |
| 52 | #if LOG_LEVEL >= LOG_LEVEL_WARNING |
| 53 | #define dlog_warning(...) dlog("WARNING: " __VA_ARGS__) |
| 54 | #else |
| 55 | #define dlog_warning(...) |
| 56 | #endif |
| 57 | |
| 58 | #if LOG_LEVEL >= LOG_LEVEL_INFO |
| 59 | #define dlog_info(...) dlog("INFO: " __VA_ARGS__) |
| 60 | #else |
| 61 | #define dlog_info(...) |
| 62 | #endif |
| 63 | |
| 64 | #if LOG_LEVEL >= LOG_LEVEL_VERBOSE |
| 65 | #define dlog_verbose(...) dlog("VERBOSE: " __VA_ARGS__) |
| 66 | #else |
| 67 | #define dlog_verbose(...) |
Wedson Almeida Filho | 987c0ff | 2018-06-20 16:34:38 +0100 | [diff] [blame] | 68 | #endif |
Andrew Walbran | c1ad4ce | 2019-05-09 11:41:39 +0100 | [diff] [blame] | 69 | |
Andrew Walbran | b5ab43c | 2020-04-30 11:32:54 +0100 | [diff] [blame^] | 70 | void dlog_flush_vm_buffer(ffa_vm_id_t id, char buffer[], size_t length); |