diff options
author | Amitay Isaacs <amitay@gmail.com> | 2018-03-27 11:33:05 +1100 |
---|---|---|
committer | Amitay Isaacs <amitay@ozlabs.org> | 2018-05-18 15:40:57 +1000 |
commit | ba4df6f0ab5a9ba0bee78d5233ac6848f1258b6b (patch) | |
tree | d73ecdaa4015ff0643c2102105ac8b05c317ba27 /libpdbg/debug.c | |
parent | b278488943c169c14746233534169714aa618864 (diff) | |
download | pdbg-ba4df6f0ab5a9ba0bee78d5233ac6848f1258b6b.tar.gz pdbg-ba4df6f0ab5a9ba0bee78d5233ac6848f1258b6b.zip |
libpdbg: Add logging api
To avoid churn define short-cut macros for logging using PR_ prefix.
Signed-off-by: Amitay Isaacs <amitay@ozlabs.org>
Diffstat (limited to 'libpdbg/debug.c')
-rw-r--r-- | libpdbg/debug.c | 59 |
1 files changed, 59 insertions, 0 deletions
diff --git a/libpdbg/debug.c b/libpdbg/debug.c new file mode 100644 index 0000000..64f41f6 --- /dev/null +++ b/libpdbg/debug.c @@ -0,0 +1,59 @@ +/* Copyright 2018 IBM Corp. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + * implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include <stdio.h> +#include <stdarg.h> + +#include "debug.h" + +static int pdbg_loglevel = PDBG_ERROR; + +static void pdbg_logfunc_default(int loglevel, const char *fmt, va_list ap) +{ + vfprintf(stderr, fmt, ap); +} + +static pdbg_log_func_t pdbg_logfunc = pdbg_logfunc_default; + +void pdbg_set_logfunc(pdbg_log_func_t fn) +{ + if (fn == NULL) + return; + + pdbg_logfunc = fn; +} + +void pdbg_set_loglevel(int loglevel) +{ + if (loglevel < PDBG_ERROR) + pdbg_loglevel = PDBG_ERROR; + else if (loglevel > PDBG_DEBUG) + pdbg_loglevel = PDBG_DEBUG; + else + pdbg_loglevel = loglevel; +} + +void pdbg_log(int loglevel, const char *fmt, ...) +{ + va_list ap; + + if (loglevel > pdbg_loglevel) + return; + + va_start(ap, fmt); + pdbg_logfunc(loglevel, fmt, ap); + va_end(ap); +} |