[Pdbg] [PATCH 05/18] libpdbg: Add logging api

Amitay Isaacs amitay at ozlabs.org
Thu May 17 12:12:46 AEST 2018


On Wed, 2018-05-16 at 16:17 +1000, Amitay Isaacs wrote:
> From: Amitay Isaacs <amitay at gmail.com>
> 
> To avoid churn define short-cut macros for logging using PR_ prefix.

This patch requires a small change.  Will post the new patch set after
seeing any other review comments.

> 
> Signed-off-by: Amitay Isaacs <amitay at gmail.com>
> ---
>  Makefile.am       |  3 ++-
>  libpdbg/debug.c   | 59
> +++++++++++++++++++++++++++++++++++++++++++++++
>  libpdbg/debug.h   | 32 +++++++++++++++++++++++++
>  libpdbg/libpdbg.h | 13 +++++++++++
>  4 files changed, 106 insertions(+), 1 deletion(-)
>  create mode 100644 libpdbg/debug.c
>  create mode 100644 libpdbg/debug.h
> 
> diff --git a/Makefile.am b/Makefile.am
> index 6c138da..8760184 100644
> --- a/Makefile.am
> +++ b/Makefile.am
> @@ -50,7 +50,8 @@ libpdbg_la_SOURCES = \
>  	libpdbg/adu.c \
>  	libpdbg/device.c \
>  	libpdbg/target.c \
> -	libpdbg/htm.c
> +	libpdbg/htm.c \
> +	libpdbg/debug.c
>  
>  M4_V = $(M4_V_$(V))
>  M4_V_ = $(M4_V_$(AM_DEFAULT_VERBOSITY))
> diff --git a/libpdbg/debug.c b/libpdbg/debug.c
> new file mode 100644
> index 0000000..99fc726
> --- /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)
> +{
> +	if (loglevel > pdbg_loglevel)
> +		return;
> +
> +	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;
> +
> +	va_start(ap, fmt);
> +	pdbg_logfunc(loglevel, fmt, ap);
> +	va_end(ap);
> +}
> diff --git a/libpdbg/debug.h b/libpdbg/debug.h
> new file mode 100644
> index 0000000..c318e3a
> --- /dev/null
> +++ b/libpdbg/debug.h
> @@ -0,0 +1,32 @@
> +/* 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.
> + */
> +#ifndef __LIBPDBG_DEBUG_H
> +#define __LIBPDBG_DEBUG_H
> +
> +#include "libpdbg.h"
> +
> +#define PR_ERROR(x, args...) \
> +	pdbg_log(PDBG_ERROR, x, ##args)
> +#define PR_WARNING(x, args...) \
> +	pdbg_log(PDBG_WARNING, x, ##args)
> +#define PR_NOTICE(x, args...) \
> +	pdbg_log(PDBG_NOTICE, x, ##args)
> +#define PR_INFO(x, args...) \
> +	pdbg_log(PDBG_INFO, x, ##args)
> +#define PR_DEBUG(x, args...) \
> +	pdbg_log(PDBG_DEBUG, "%s[%d]: " x, __FUNCTION__, __LINE__,
> ##args)
> +
> +#endif
> diff --git a/libpdbg/libpdbg.h b/libpdbg/libpdbg.h
> index 4b053b2..0dac243 100644
> --- a/libpdbg/libpdbg.h
> +++ b/libpdbg/libpdbg.h
> @@ -3,6 +3,7 @@
>  
>  #include <stdio.h>
>  #include <stdint.h>
> +#include <stdarg.h>
>  
>  struct pdbg_target;
>  struct pdbg_target_class;
> @@ -136,4 +137,16 @@ int adu_putmem(struct pdbg_target *target,
> uint64_t addr, uint8_t *input, uint64
>  int opb_read(struct pdbg_target *target, uint32_t addr, uint32_t
> *data);
>  int opb_write(struct pdbg_target *target, uint32_t addr, uint32_t
> data);
>  
> +#define PDBG_ERROR	0
> +#define PDBG_WARNING	1
> +#define PDBG_NOTICE	2
> +#define PDBG_INFO	3
> +#define PDBG_DEBUG	4
> +
> +typedef void (*pdbg_log_func_t)(int loglevel, const char *fmt,
> va_list ap);
> +
> +void pdbg_set_logfunc(pdbg_log_func_t fn);
> +void pdbg_set_loglevel(int loglevel);
> +void pdbg_log(int loglevel, const char *fmt, ...);
> +
>  #endif
> -- 
> 2.17.0
> 

Amitay.
-- 

Retirement: When you quit working just before your heart does.


More information about the Pdbg mailing list