diff mbox

[v2] example: Remove use of ODP API logging

Message ID 1415363833-57742-1-git-send-email-mike.holmes@linaro.org
State Accepted
Commit b5854d0a604b7c4672edc423ca313e07fda2bf29
Headers show

Commit Message

Mike Holmes Nov. 7, 2014, 12:37 p.m. UTC
Removing the calls to the ODP API error functions from applications
allows the functions to be moved into the ODP APIs internal interface.
Applications should consume ODP implementation error messages and not
use the library for its own logging needs.

Signed-off-by: Mike Holmes <mike.holmes@linaro.org>
---
 example/example_debug.h           | 88 +++++++++++++++++++++++++++++++++++++++
 example/generator/Makefile.am     |  1 +
 example/generator/odp_generator.c | 44 +++++++++++---------
 example/ipsec/Makefile.am         |  1 +
 example/ipsec/odp_ipsec.c         | 47 ++++++++++++---------
 example/ipsec/odp_ipsec_cache.c   |  4 +-
 example/ipsec/odp_ipsec_fwd_db.c  |  4 +-
 example/ipsec/odp_ipsec_loop_db.c |  4 +-
 example/ipsec/odp_ipsec_sa_db.c   |  4 +-
 example/ipsec/odp_ipsec_sp_db.c   |  4 +-
 example/ipsec/odp_ipsec_stream.c  |  9 ++--
 example/l2fwd/Makefile.am         |  1 +
 example/l2fwd/odp_l2fwd.c         | 47 +++++++++++----------
 example/odp_example/Makefile.am   |  1 +
 example/odp_example/odp_example.c | 75 +++++++++++++++++----------------
 example/packet/Makefile.am        |  1 +
 example/packet/odp_pktio.c        | 34 ++++++++-------
 example/timer/Makefile.am         |  1 +
 example/timer/odp_timer_test.c    | 22 +++++-----
 19 files changed, 262 insertions(+), 130 deletions(-)
 create mode 100644 example/example_debug.h

Comments

Ciprian Barbu Nov. 11, 2014, 10:51 a.m. UTC | #1
On Fri, Nov 7, 2014 at 2:37 PM, Mike Holmes <mike.holmes@linaro.org> wrote:
> Removing the calls to the ODP API error functions from applications
> allows the functions to be moved into the ODP APIs internal interface.
> Applications should consume ODP implementation error messages and not
> use the library for its own logging needs.
>
> Signed-off-by: Mike Holmes <mike.holmes@linaro.org>
> ---
>  example/example_debug.h           | 88 +++++++++++++++++++++++++++++++++++++++
>  example/generator/Makefile.am     |  1 +
>  example/generator/odp_generator.c | 44 +++++++++++---------
>  example/ipsec/Makefile.am         |  1 +
>  example/ipsec/odp_ipsec.c         | 47 ++++++++++++---------
>  example/ipsec/odp_ipsec_cache.c   |  4 +-
>  example/ipsec/odp_ipsec_fwd_db.c  |  4 +-
>  example/ipsec/odp_ipsec_loop_db.c |  4 +-
>  example/ipsec/odp_ipsec_sa_db.c   |  4 +-
>  example/ipsec/odp_ipsec_sp_db.c   |  4 +-
>  example/ipsec/odp_ipsec_stream.c  |  9 ++--
>  example/l2fwd/Makefile.am         |  1 +
>  example/l2fwd/odp_l2fwd.c         | 47 +++++++++++----------
>  example/odp_example/Makefile.am   |  1 +
>  example/odp_example/odp_example.c | 75 +++++++++++++++++----------------
>  example/packet/Makefile.am        |  1 +
>  example/packet/odp_pktio.c        | 34 ++++++++-------
>  example/timer/Makefile.am         |  1 +
>  example/timer/odp_timer_test.c    | 22 +++++-----
>  19 files changed, 262 insertions(+), 130 deletions(-)
>  create mode 100644 example/example_debug.h
>
> diff --git a/example/example_debug.h b/example/example_debug.h
> new file mode 100644
> index 0000000..b83667c
> --- /dev/null
> +++ b/example/example_debug.h
> @@ -0,0 +1,88 @@
> +/* Copyright (c) 2014, Linaro Limited
> + * All rights reserved.
> + *
> + * SPDX-License-Identifier:     BSD-3-Clause
> + */
> +/**
> + * @file
> + *
> + * example debug
> + */
> +
> +#ifndef EXAMPLE_DEBUG_H_
> +#define EXAMPLE_DEBUG_H_
> +
> +#include <stdio.h>
> +#include <stdlib.h>
> +
> +#ifdef __cplusplus
> +extern "C" {
> +#endif
> +
> +#ifndef EXAMPLE_DEBUG_PRINT
> +#define EXAMPLE_DEBUG_PRINT 1
> +#endif
> +
> +/**
> + * log level.
> + */
> +typedef enum example_log_level {
> +       EXAMPLE_LOG_DBG,
> +       EXAMPLE_LOG_ERR,
> +       EXAMPLE_LOG_ABORT
> +} example_log_level_e;
> +
> +/**
> + * default LOG macro.
> + */
> +#define EXAMPLE_LOG(level, fmt, ...) \

The name of this macro doesn't sound right to me. The include file is
inside the example/ dir anyway, so I would rather see it named simply
log.h or something like this. I know the reason for having it like
this is because of the discussion we had about removing odp_debug.h
from the API, but naming this example_debug.h is wrong in my opinion.
It also makes for a long macro name, LOG("....") is much more elegant.

You should also send a patch in the same series to deal with
odp_debug.h, for now it is still copied when you 'make install'. You
need to remove it from include_HEADERS in
platform/linux-generic/Makefile.am. Probably name it to
odp_debug_internal.h, this way a platform implementer knows it will
not be exposed to application.

> +do { \
> +       switch (level) { \
> +       case EXAMPLE_LOG_ERR: \
> +               fprintf(stderr, "%s:%d:%s():" fmt, __FILE__, \
> +               __LINE__, __func__, ##__VA_ARGS__); \
> +               break; \
> +       case EXAMPLE_LOG_DBG: \
> +               if (EXAMPLE_DEBUG_PRINT == 1) \
> +                       fprintf(stderr, "%s:%d:%s():" fmt, __FILE__, \
> +                       __LINE__, __func__, ##__VA_ARGS__); \
> +               break; \
> +       case EXAMPLE_LOG_ABORT: \
> +               fprintf(stderr, "%s:%d:%s(): " fmt, __FILE__, \
> +               __LINE__, __func__, ##__VA_ARGS__); \
> +               abort(); \
> +               break; \
> +       default: \
> +               fprintf(stderr, "Unknown LOG level"); \
> +               break;\
> +       } \
> +} while (0)
> +
> +/**
> + * Debug printing macro, which prints output when DEBUG flag is set.
> + */
> +#define EXAMPLE_DBG(fmt, ...) \
> +               EXAMPLE_LOG(EXAMPLE_LOG_DBG, fmt, ##__VA_ARGS__)
> +
> +/**
> + * Print output to stderr (file, line and function).
> + */
> +#define EXAMPLE_ERR(fmt, ...) \
> +               EXAMPLE_LOG(EXAMPLE_LOG_ERR, fmt, ##__VA_ARGS__)
> +
> +/**
> + * Print output to stderr (file, line and function),
> + * then abort.
> + */
> +#define EXAMPLE_ABORT(fmt, ...) \
> +               EXAMPLE_LOG(EXAMPLE_LOG_ABORT, fmt, ##__VA_ARGS__)
> +
> +/**
> + * @}
> + */
> +
> +#ifdef __cplusplus
> +}
> +#endif
> +
> +#endif
> diff --git a/example/generator/Makefile.am b/example/generator/Makefile.am
> index 5b3d55a..394985f 100644
> --- a/example/generator/Makefile.am
> +++ b/example/generator/Makefile.am
> @@ -2,5 +2,6 @@ include $(top_srcdir)/example/Makefile.inc
>
>  bin_PROGRAMS = odp_generator
>  odp_generator_LDFLAGS = $(AM_LDFLAGS) -static
> +odp_generator_CFLAGS = $(AM_CFLAGS) -I../
>
>  dist_odp_generator_SOURCES = odp_generator.c
> diff --git a/example/generator/odp_generator.c b/example/generator/odp_generator.c
> index ffa5e62..e2e0ba4 100644
> --- a/example/generator/odp_generator.c
> +++ b/example/generator/odp_generator.c
> @@ -16,6 +16,8 @@
>  #include <unistd.h>
>  #include <sys/time.h>
>
> +#include <example_debug.h>
> +
>  #include <odp.h>
>
>  #include <odph_linux.h>
> @@ -55,7 +57,8 @@ typedef struct {
>         int number;             /**< packets number to be sent */
>         int payload;            /**< data len */
>         int timeout;            /**< wait time */
> -       int interval;           /**< wait interval ms between sending each packet */
> +       int interval;           /**< wait interval ms between sending
> +                                    each packet */
>  } appl_args_t;
>
>  /**
> @@ -303,13 +306,13 @@ static void *gen_send_thread(void *arg)
>         /* Open a packet IO instance for this thread */
>         pktio = odp_pktio_open(thr_args->pktio_dev, thr_args->pool);
>         if (pktio == ODP_PKTIO_INVALID) {
> -               ODP_ERR("  [%02i] Error: pktio create failed\n", thr);
> +               EXAMPLE_ERR("  [%02i] Error: pktio create failed\n", thr);
>                 return NULL;
>         }
>
>         outq_def = odp_pktio_outq_getdef(pktio);
>         if (outq_def == ODP_QUEUE_INVALID) {
> -               ODP_ERR("  [%02i] Error: def output-Q query\n", thr);
> +               EXAMPLE_ERR("  [%02i] Error: def output-Q query\n", thr);
>                 return NULL;
>         }
>
> @@ -318,7 +321,7 @@ static void *gen_send_thread(void *arg)
>                 int err;
>                 buf = odp_buffer_alloc(thr_args->pool);
>                 if (!odp_buffer_is_valid(buf)) {
> -                       ODP_ERR("  [%2i] alloc_single failed\n", thr);
> +                       EXAMPLE_ERR("  [%2i] alloc_single failed\n", thr);
>                         return NULL;
>                 }
>
> @@ -329,7 +332,7 @@ static void *gen_send_thread(void *arg)
>
>                 err = odp_queue_enq(outq_def, buf);
>                 if (err != 0) {
> -                       ODP_ERR("  [%02i] send pkt err!\n", thr);
> +                       EXAMPLE_ERR("  [%02i] send pkt err!\n", thr);
>                         return NULL;
>                 }
>
> @@ -463,7 +466,7 @@ static void *gen_recv_thread(void *arg)
>         /* Open a packet IO instance for this thread */
>         pktio = odp_pktio_open(thr_args->pktio_dev, thr_args->pool);
>         if (pktio == ODP_PKTIO_INVALID) {
> -               ODP_ERR("  [%02i] Error: pktio create failed\n", thr);
> +               EXAMPLE_ERR("  [%02i] Error: pktio create failed\n", thr);
>                 return NULL;
>         }
>
> @@ -475,13 +478,14 @@ static void *gen_recv_thread(void *arg)
>         inq_name[ODP_QUEUE_NAME_LEN - 1] = '\0';
>         inq_def = odp_queue_create(inq_name, ODP_QUEUE_TYPE_PKTIN, &qparam);
>         if (inq_def == ODP_QUEUE_INVALID) {
> -               ODP_ERR("  [%02i] Error: pktio queue creation failed\n", thr);
> +               EXAMPLE_ERR("  [%02i] Error: pktio queue creation failed\n",
> +                           thr);
>                 return NULL;
>         }
>
>         ret = odp_pktio_inq_setdef(pktio, inq_def);
>         if (ret != 0) {
> -               ODP_ERR("  [%02i] Error: default input-Q setup\n", thr);
> +               EXAMPLE_ERR("  [%02i] Error: default input-Q setup\n", thr);
>                 return NULL;
>         }
>
> @@ -520,12 +524,12 @@ int main(int argc, char *argv[])
>
>         /* Init ODP before calling anything else */
>         if (odp_init_global(NULL, NULL)) {
> -               ODP_ERR("Error: ODP global init failed.\n");
> +               EXAMPLE_ERR("Error: ODP global init failed.\n");
>                 exit(EXIT_FAILURE);
>         }
>
>         if (odp_init_local()) {
> -               ODP_ERR("Error: ODP local init failed.\n");
> +               EXAMPLE_ERR("Error: ODP local init failed.\n");
>                 exit(EXIT_FAILURE);
>         }
>
> @@ -541,7 +545,7 @@ int main(int argc, char *argv[])
>         args = odp_shm_addr(shm);
>
>         if (args == NULL) {
> -               ODP_ERR("Error: shared mem alloc failed.\n");
> +               EXAMPLE_ERR("Error: shared mem alloc failed.\n");
>                 exit(EXIT_FAILURE);
>         }
>         memset(args, 0, sizeof(*args));
> @@ -584,7 +588,7 @@ int main(int argc, char *argv[])
>         pool_base = odp_shm_addr(shm);
>
>         if (pool_base == NULL) {
> -               ODP_ERR("Error: packet pool mem alloc failed.\n");
> +               EXAMPLE_ERR("Error: packet pool mem alloc failed.\n");
>                 exit(EXIT_FAILURE);
>         }
>
> @@ -594,7 +598,7 @@ int main(int argc, char *argv[])
>                                       ODP_CACHE_LINE_SIZE,
>                                       ODP_BUFFER_TYPE_PACKET);
>         if (pool == ODP_BUFFER_POOL_INVALID) {
> -               ODP_ERR("Error: packet pool create failed.\n");
> +               EXAMPLE_ERR("Error: packet pool create failed.\n");
>                 exit(EXIT_FAILURE);
>         }
>         odp_buffer_pool_print(pool);
> @@ -636,7 +640,7 @@ int main(int argc, char *argv[])
>                         } else if (args->appl.mode == APPL_MODE_RCV) {
>                                 thr_run_func = gen_recv_thread;
>                         } else {
> -                               ODP_ERR("ERR MODE\n");
> +                               EXAMPLE_ERR("ERR MODE\n");
>                                 exit(EXIT_FAILURE);
>                         }
>                         /*
> @@ -754,35 +758,35 @@ static void parse_args(int argc, char *argv[], appl_args_t *appl_args)
>                         } else if (optarg[0] == 'r') {
>                                 appl_args->mode = APPL_MODE_RCV;
>                         } else {
> -                               ODP_ERR("wrong mode!\n");
> +                               EXAMPLE_ERR("wrong mode!\n");
>                                 exit(EXIT_FAILURE);
>                         }
>                         break;
>
>                 case 'a':
>                         if (scan_mac(optarg, &appl_args->srcmac) != 1) {
> -                               ODP_ERR("wrong src mac:%s\n", optarg);
> +                               EXAMPLE_ERR("wrong src mac:%s\n", optarg);
>                                 exit(EXIT_FAILURE);
>                         }
>                         break;
>
>                 case 'b':
>                         if (scan_mac(optarg, &appl_args->dstmac) != 1) {
> -                               ODP_ERR("wrong dst mac:%s\n", optarg);
> +                               EXAMPLE_ERR("wrong dst mac:%s\n", optarg);
>                                 exit(EXIT_FAILURE);
>                         }
>                         break;
>
>                 case 'c':
>                         if (scan_ip(optarg, &appl_args->srcip) != 1) {
> -                               ODP_ERR("wrong src ip:%s\n", optarg);
> +                               EXAMPLE_ERR("wrong src ip:%s\n", optarg);
>                                 exit(EXIT_FAILURE);
>                         }
>                         break;
>
>                 case 'd':
>                         if (scan_ip(optarg, &appl_args->dstip) != 1) {
> -                               ODP_ERR("wrong dst ip:%s\n", optarg);
> +                               EXAMPLE_ERR("wrong dst ip:%s\n", optarg);
>                                 exit(EXIT_FAILURE);
>                         }
>                         break;
> @@ -802,7 +806,7 @@ static void parse_args(int argc, char *argv[], appl_args_t *appl_args)
>                 case 'i':
>                         appl_args->interval = atoi(optarg);
>                         if (appl_args->interval <= 200 && geteuid() != 0) {
> -                               ODP_ERR("should be root user\n");
> +                               EXAMPLE_ERR("should be root user\n");
>                                 exit(EXIT_FAILURE);
>                         }
>                         break;
> diff --git a/example/ipsec/Makefile.am b/example/ipsec/Makefile.am
> index ac0949e..b4ef0cb 100644
> --- a/example/ipsec/Makefile.am
> +++ b/example/ipsec/Makefile.am
> @@ -2,6 +2,7 @@ include $(top_srcdir)/example/Makefile.inc
>
>  bin_PROGRAMS = odp_ipsec
>  odp_ipsec_LDFLAGS = $(AM_LDFLAGS) -static
> +odp_ipsec_CFLAGS = $(AM_CFLAGS) -I../
>
>  dist_odp_ipsec_SOURCES = odp_ipsec.c \
>                          odp_ipsec_sa_db.c \
> diff --git a/example/ipsec/odp_ipsec.c b/example/ipsec/odp_ipsec.c
> index da6c48e..709855c 100644
> --- a/example/ipsec/odp_ipsec.c
> +++ b/example/ipsec/odp_ipsec.c
> @@ -15,6 +15,8 @@
>  #include <getopt.h>
>  #include <unistd.h>
>
> +#include <example_debug.h>
> +
>  #include <odp.h>
>
>  #include <odph_linux.h>
> @@ -234,7 +236,7 @@ int query_mac_address(char *intf, uint8_t *src_mac)
>         /* Get a socket descriptor */
>         sd = socket(PF_PACKET, SOCK_RAW, htons(ETH_P_ALL));
>         if (sd < 0) {
> -               ODP_ERR("Error: socket() failed for %s\n", intf);
> +               EXAMPLE_ERR("Error: socket() failed for %s\n", intf);
>                 return -1;
>         }
>
> @@ -243,7 +245,7 @@ int query_mac_address(char *intf, uint8_t *src_mac)
>         snprintf(ifr.ifr_name, sizeof(ifr.ifr_name), "%s", intf);
>         if (ioctl(sd, SIOCGIFHWADDR, &ifr) < 0) {
>                 close(sd);
> -               ODP_ERR("Error: ioctl() failed for %s\n", intf);
> +               EXAMPLE_ERR("Error: ioctl() failed for %s\n", intf);
>                 return -1;
>         }
>         memcpy(src_mac, ifr.ifr_hwaddr.sa_data, ODPH_ETHADDR_LEN);
> @@ -382,7 +384,7 @@ void ipsec_init_pre(void)
>                                    ODP_QUEUE_TYPE_SCHED,
>                                    &qparam);
>         if (ODP_QUEUE_INVALID == completionq) {
> -               ODP_ERR("Error: completion queue creation failed\n");
> +               EXAMPLE_ERR("Error: completion queue creation failed\n");
>                 exit(EXIT_FAILURE);
>         }
>
> @@ -394,7 +396,7 @@ void ipsec_init_pre(void)
>                                ODP_QUEUE_TYPE_SCHED,
>                                &qparam);
>         if (ODP_QUEUE_INVALID == seqnumq) {
> -               ODP_ERR("Error: sequence number queue creation failed\n");
> +               EXAMPLE_ERR("Error: sequence number queue creation failed\n");
>                 exit(EXIT_FAILURE);
>         }
>
> @@ -411,7 +413,7 @@ void ipsec_init_pre(void)
>                                           ODP_BUFFER_TYPE_PACKET);
>
>         if (ODP_BUFFER_POOL_INVALID == out_pool) {
> -               ODP_ERR("Error: message pool create failed.\n");
> +               EXAMPLE_ERR("Error: message pool create failed.\n");
>                 exit(EXIT_FAILURE);
>         }
>
> @@ -454,7 +456,8 @@ void ipsec_init_post(crypto_api_mode_e api_mode)
>                                                      entry->input,
>                                                      completionq,
>                                                      out_pool)) {
> -                               ODP_ERR("Error: IPSec cache entry failed.\n");
> +                               EXAMPLE_ERR("Error: IPSec cache entry failed.\n"
> +                                               );
>                                 exit(EXIT_FAILURE);
>                         }
>                 } else {
> @@ -487,7 +490,7 @@ void initialize_loop(char *intf)
>         /* Derive loopback interface index */
>         idx = loop_if_index(intf);
>         if (idx < 0) {
> -               ODP_ERR("Error: loopback \"%s\" invalid\n", intf);
> +               EXAMPLE_ERR("Error: loopback \"%s\" invalid\n", intf);
>                 exit(EXIT_FAILURE);
>         }
>
> @@ -500,7 +503,8 @@ void initialize_loop(char *intf)
>
>         inq_def = QUEUE_CREATE(queue_name, ODP_QUEUE_TYPE_SCHED, &qparam);
>         if (ODP_QUEUE_INVALID == inq_def) {
> -               ODP_ERR("Error: input queue creation failed for %s\n", intf);
> +               EXAMPLE_ERR("Error: input queue creation failed for %s\n",
> +                           intf);
>                 exit(EXIT_FAILURE);
>         }
>         /* Create output queue */
> @@ -512,7 +516,8 @@ void initialize_loop(char *intf)
>
>         outq_def = QUEUE_CREATE(queue_name, ODP_QUEUE_TYPE_POLL, &qparam);
>         if (ODP_QUEUE_INVALID == outq_def) {
> -               ODP_ERR("Error: output queue creation failed for %s\n", intf);
> +               EXAMPLE_ERR("Error: output queue creation failed for %s\n",
> +                           intf);
>                 exit(EXIT_FAILURE);
>         }
>
> @@ -556,7 +561,7 @@ void initialize_intf(char *intf)
>          */
>         pktio = odp_pktio_open(intf, pkt_pool);
>         if (ODP_PKTIO_INVALID == pktio) {
> -               ODP_ERR("Error: pktio create failed for %s\n", intf);
> +               EXAMPLE_ERR("Error: pktio create failed for %s\n", intf);
>                 exit(EXIT_FAILURE);
>         }
>         outq_def = odp_pktio_outq_getdef(pktio);
> @@ -573,13 +578,14 @@ void initialize_intf(char *intf)
>
>         inq_def = QUEUE_CREATE(inq_name, ODP_QUEUE_TYPE_PKTIN, &qparam);
>         if (ODP_QUEUE_INVALID == inq_def) {
> -               ODP_ERR("Error: pktio queue creation failed for %s\n", intf);
> +               EXAMPLE_ERR("Error: pktio queue creation failed for %s\n",
> +                           intf);
>                 exit(EXIT_FAILURE);
>         }
>
>         ret = odp_pktio_inq_setdef(pktio, inq_def);
>         if (ret) {
> -               ODP_ERR("Error: default input-Q setup for %s\n", intf);
> +               EXAMPLE_ERR("Error: default input-Q setup for %s\n", intf);
>                 exit(EXIT_FAILURE);
>         }
>
> @@ -590,7 +596,8 @@ void initialize_intf(char *intf)
>         ret = odp_pktio_get_mac_addr(pktio, src_mac);
>  #endif
>         if (ret) {
> -               ODP_ERR("Error: failed during MAC address get for %s\n", intf);
> +               EXAMPLE_ERR("Error: failed during MAC address get for %s\n",
> +                           intf);
>                 exit(EXIT_FAILURE);
>         }
>
> @@ -1176,13 +1183,13 @@ main(int argc, char *argv[])
>
>         /* Init ODP before calling anything else */
>         if (odp_init_global(NULL, NULL)) {
> -               ODP_ERR("Error: ODP global init failed.\n");
> +               EXAMPLE_ERR("Error: ODP global init failed.\n");
>                 exit(EXIT_FAILURE);
>         }
>
>         /* Init this thread */
>         if (odp_init_local()) {
> -               ODP_ERR("Error: ODP local init failed.\n");
> +               EXAMPLE_ERR("Error: ODP local init failed.\n");
>                 exit(EXIT_FAILURE);
>         }
>
> @@ -1193,7 +1200,7 @@ main(int argc, char *argv[])
>         args = odp_shm_addr(shm);
>
>         if (NULL == args) {
> -               ODP_ERR("Error: shared mem alloc failed.\n");
> +               EXAMPLE_ERR("Error: shared mem alloc failed.\n");
>                 exit(EXIT_FAILURE);
>         }
>         memset(args, 0, sizeof(*args));
> @@ -1238,7 +1245,7 @@ main(int argc, char *argv[])
>         pool_base = odp_shm_addr(shm);
>
>         if (NULL == pool_base) {
> -               ODP_ERR("Error: packet pool mem alloc failed.\n");
> +               EXAMPLE_ERR("Error: packet pool mem alloc failed.\n");
>                 exit(EXIT_FAILURE);
>         }
>
> @@ -1248,7 +1255,7 @@ main(int argc, char *argv[])
>                                           ODP_CACHE_LINE_SIZE,
>                                           ODP_BUFFER_TYPE_PACKET);
>         if (ODP_BUFFER_POOL_INVALID == pkt_pool) {
> -               ODP_ERR("Error: packet pool create failed.\n");
> +               EXAMPLE_ERR("Error: packet pool create failed.\n");
>                 exit(EXIT_FAILURE);
>         }
>
> @@ -1259,7 +1266,7 @@ main(int argc, char *argv[])
>         pool_base = odp_shm_addr(shm);
>
>         if (NULL == pool_base) {
> -               ODP_ERR("Error: context pool mem alloc failed.\n");
> +               EXAMPLE_ERR("Error: context pool mem alloc failed.\n");
>                 exit(EXIT_FAILURE);
>         }
>
> @@ -1269,7 +1276,7 @@ main(int argc, char *argv[])
>                                           ODP_CACHE_LINE_SIZE,
>                                           ODP_BUFFER_TYPE_RAW);
>         if (ODP_BUFFER_POOL_INVALID == ctx_pool) {
> -               ODP_ERR("Error: context pool create failed.\n");
> +               EXAMPLE_ERR("Error: context pool create failed.\n");
>                 exit(EXIT_FAILURE);
>         }
>
> diff --git a/example/ipsec/odp_ipsec_cache.c b/example/ipsec/odp_ipsec_cache.c
> index 1397d77..fb53bb6 100644
> --- a/example/ipsec/odp_ipsec_cache.c
> +++ b/example/ipsec/odp_ipsec_cache.c
> @@ -7,6 +7,8 @@
>  #include <stdlib.h>
>  #include <string.h>
>
> +#include <example_debug.h>
> +
>  #include <odp.h>
>
>  #include <odph_ipsec.h>
> @@ -28,7 +30,7 @@ void init_ipsec_cache(void)
>         ipsec_cache = odp_shm_addr(shm);
>
>         if (ipsec_cache == NULL) {
> -               ODP_ERR("Error: shared mem alloc failed.\n");
> +               EXAMPLE_ERR("Error: shared mem alloc failed.\n");
>                 exit(EXIT_FAILURE);
>         }
>         memset(ipsec_cache, 0, sizeof(*ipsec_cache));
> diff --git a/example/ipsec/odp_ipsec_fwd_db.c b/example/ipsec/odp_ipsec_fwd_db.c
> index e067db9..4168420 100644
> --- a/example/ipsec/odp_ipsec_fwd_db.c
> +++ b/example/ipsec/odp_ipsec_fwd_db.c
> @@ -7,6 +7,8 @@
>  #include <stdlib.h>
>  #include <string.h>
>
> +#include <example_debug.h>
> +
>  #include <odp.h>
>
>  #include <odp_ipsec_fwd_db.h>
> @@ -26,7 +28,7 @@ void init_fwd_db(void)
>         fwd_db = odp_shm_addr(shm);
>
>         if (fwd_db == NULL) {
> -               ODP_ERR("Error: shared mem alloc failed.\n");
> +               EXAMPLE_ERR("Error: shared mem alloc failed.\n");
>                 exit(EXIT_FAILURE);
>         }
>         memset(fwd_db, 0, sizeof(*fwd_db));
> diff --git a/example/ipsec/odp_ipsec_loop_db.c b/example/ipsec/odp_ipsec_loop_db.c
> index af4590a..d213bb3 100644
> --- a/example/ipsec/odp_ipsec_loop_db.c
> +++ b/example/ipsec/odp_ipsec_loop_db.c
> @@ -7,6 +7,8 @@
>  #include <stdlib.h>
>  #include <string.h>
>
> +#include <example_debug.h>
> +
>  #include <odp.h>
>
>  #include <odp_ipsec_loop_db.h>
> @@ -26,7 +28,7 @@ void init_loopback_db(void)
>         loopback_db = odp_shm_addr(shm);
>
>         if (loopback_db == NULL) {
> -               ODP_ERR("Error: shared mem alloc failed.\n");
> +               EXAMPLE_ERR("Error: shared mem alloc failed.\n");
>                 exit(EXIT_FAILURE);
>         }
>         memset(loopback_db, 0, sizeof(*loopback_db));
> diff --git a/example/ipsec/odp_ipsec_sa_db.c b/example/ipsec/odp_ipsec_sa_db.c
> index e8679db..384c0ce 100644
> --- a/example/ipsec/odp_ipsec_sa_db.c
> +++ b/example/ipsec/odp_ipsec_sa_db.c
> @@ -7,6 +7,8 @@
>  #include <stdlib.h>
>  #include <string.h>
>
> +#include <example_debug.h>
> +
>  #include <odp.h>
>
>  #include <odp_ipsec_sa_db.h>
> @@ -26,7 +28,7 @@ void init_sa_db(void)
>         sa_db = odp_shm_addr(shm);
>
>         if (sa_db == NULL) {
> -               ODP_ERR("Error: shared mem alloc failed.\n");
> +               EXAMPLE_ERR("Error: shared mem alloc failed.\n");
>                 exit(EXIT_FAILURE);
>         }
>         memset(sa_db, 0, sizeof(*sa_db));
> diff --git a/example/ipsec/odp_ipsec_sp_db.c b/example/ipsec/odp_ipsec_sp_db.c
> index f288dfe..b0f4480 100644
> --- a/example/ipsec/odp_ipsec_sp_db.c
> +++ b/example/ipsec/odp_ipsec_sp_db.c
> @@ -7,6 +7,8 @@
>  #include <stdlib.h>
>  #include <string.h>
>
> +#include <example_debug.h>
> +
>  #include <odp.h>
>  #include <odp_align.h>
>  #include <odp_crypto.h>
> @@ -28,7 +30,7 @@ void init_sp_db(void)
>         sp_db = odp_shm_addr(shm);
>
>         if (sp_db == NULL) {
> -               ODP_ERR("Error: shared mem alloc failed.\n");
> +               EXAMPLE_ERR("Error: shared mem alloc failed.\n");
>                 exit(EXIT_FAILURE);
>         }
>         memset(sp_db, 0, sizeof(*sp_db));
> diff --git a/example/ipsec/odp_ipsec_stream.c b/example/ipsec/odp_ipsec_stream.c
> index fa9aba8..139d00e 100644
> --- a/example/ipsec/odp_ipsec_stream.c
> +++ b/example/ipsec/odp_ipsec_stream.c
> @@ -12,6 +12,8 @@
>  #include <openssl/hmac.h>
>  #include <openssl/evp.h>
>
> +#include <example_debug.h>
> +
>  #include <odp.h>
>
>  #include <odph_packet.h>
> @@ -56,7 +58,7 @@ void init_stream_db(void)
>         stream_db = odp_shm_addr(shm);
>
>         if (stream_db == NULL) {
> -               ODP_ERR("Error: shared mem alloc failed.\n");
> +               EXAMPLE_ERR("Error: shared mem alloc failed.\n");
>                 exit(EXIT_FAILURE);
>         }
>         memset(stream_db, 0, sizeof(*stream_db));
> @@ -100,7 +102,8 @@ int create_stream_db_entry(char *input)
>                 case 2:
>                         entry->input.loop = loop_if_index(token);
>                         if (entry->input.loop < 0) {
> -                               ODP_ERR("Error: stream must have input loop\n");
> +                               EXAMPLE_ERR("Error: stream must have input"
> +                                           " loop\n");
>                                 exit(EXIT_FAILURE);
>                         }
>                         break;
> @@ -479,7 +482,7 @@ int create_stream_db_inputs(void)
>         /* Lookup the packet pool */
>         pkt_pool = odp_buffer_pool_lookup("packet_pool");
>         if (pkt_pool == ODP_BUFFER_POOL_INVALID) {
> -               ODP_ERR("Error: pkt_pool not found\n");
> +               EXAMPLE_ERR("Error: pkt_pool not found\n");
>                 exit(EXIT_FAILURE);
>         }
>
> diff --git a/example/l2fwd/Makefile.am b/example/l2fwd/Makefile.am
> index a83e757..d57a159 100644
> --- a/example/l2fwd/Makefile.am
> +++ b/example/l2fwd/Makefile.am
> @@ -2,5 +2,6 @@ include $(top_srcdir)/example/Makefile.inc
>
>  bin_PROGRAMS = odp_l2fwd
>  odp_l2fwd_LDFLAGS = $(AM_LDFLAGS) -static
> +odp_l2fwd_CFLAGS = $(AM_CFLAGS) -I../
>
>  dist_odp_l2fwd_SOURCES = odp_l2fwd.c
> diff --git a/example/l2fwd/odp_l2fwd.c b/example/l2fwd/odp_l2fwd.c
> index 57037cd..ebac8c5 100644
> --- a/example/l2fwd/odp_l2fwd.c
> +++ b/example/l2fwd/odp_l2fwd.c
> @@ -15,6 +15,8 @@
>  #include <getopt.h>
>  #include <unistd.h>
>
> +#include <example_debug.h>
> +
>  #include <odp.h>
>  #include <odph_linux.h>
>  #include <odph_packet.h>
> @@ -128,7 +130,7 @@ static odp_pktio_t burst_mode_init_params(void *arg, odp_buffer_pool_t pool)
>         /* Open a packet IO instance for this thread */
>         pktio = odp_pktio_open(args->srcif, pool);
>         if (pktio == ODP_PKTIO_INVALID)
> -               ODP_ERR("  Error: pktio create failed");
> +               EXAMPLE_ERR("  Error: pktio create failed");
>
>         return pktio;
>  }
> @@ -167,13 +169,13 @@ static odp_pktio_t queue_mode_init_params(void *arg, odp_buffer_pool_t pool)
>
>         inq_def = odp_queue_create(inq_name, ODP_QUEUE_TYPE_PKTIN, &qparam);
>         if (inq_def == ODP_QUEUE_INVALID) {
> -               ODP_ERR("  Error: pktio queue creation failed");
> +               EXAMPLE_ERR("  Error: pktio queue creation failed");
>                 return ODP_PKTIO_INVALID;
>         }
>
>         ret = odp_pktio_inq_setdef(pktio, inq_def);
>         if (ret != 0) {
> -               ODP_ERR("  Error: default input-Q setup");
> +               EXAMPLE_ERR("  Error: default input-Q setup");
>                 return ODP_PKTIO_INVALID;
>         }
>
> @@ -200,8 +202,8 @@ static void *pktio_queue_thread(void *arg)
>         thr_args = arg;
>
>         if (thr_args->srcpktio == 0 || thr_args->dstpktio == 0) {
> -               ODP_ERR("Invalid srcpktio:%d dstpktio:%d\n",
> -                       thr_args->srcpktio, thr_args->dstpktio);
> +               EXAMPLE_ERR("Invalid srcpktio:%d dstpktio:%d\n",
> +                           thr_args->srcpktio, thr_args->dstpktio);
>                 return NULL;
>         }
>         printf("[%02i] srcif:%s dstif:%s spktio:%02i dpktio:%02i QUEUE mode\n",
> @@ -224,14 +226,15 @@ static void *pktio_queue_thread(void *arg)
>                 pkt = odp_packet_from_buffer(buf);
>                 /* Drop packets with errors */
>                 if (odp_unlikely(drop_err_pkts(&pkt, 1) == 0)) {
> -                       ODP_ERR("Drop frame - err_cnt:%lu\n", ++err_cnt);
> +                       EXAMPLE_ERR("Drop frame - err_cnt:%lu\n", ++err_cnt);
>                         continue;
>                 }
>
>                 pktio_tmp = odp_pktio_get_input(pkt);
>                 outq_def = odp_pktio_outq_getdef(dstpktio[pktio_tmp]);
>                 if (outq_def == ODP_QUEUE_INVALID) {
> -                       ODP_ERR("  [%02i] Error: def output-Q query\n", thr);
> +                       EXAMPLE_ERR("  [%02i] Error: def output-Q query\n",
> +                                   thr);
>                         return NULL;
>                 }
>
> @@ -267,8 +270,8 @@ static void *pktio_ifburst_thread(void *arg)
>         thr_args = arg;
>
>         if (thr_args->srcpktio == 0 || thr_args->dstpktio == 0) {
> -               ODP_ERR("Invalid srcpktio:%d dstpktio:%d\n",
> -                       thr_args->srcpktio, thr_args->dstpktio);
> +               EXAMPLE_ERR("Invalid srcpktio:%d dstpktio:%d\n",
> +                           thr_args->srcpktio, thr_args->dstpktio);
>                 return NULL;
>         }
>         printf("[%02i] srcif:%s dstif:%s spktio:%02i dpktio:%02i BURST mode\n",
> @@ -286,8 +289,8 @@ static void *pktio_ifburst_thread(void *arg)
>                                 odp_pktio_send(thr_args->dstpktio, pkt_tbl,
>                                                pkts_ok);
>                         if (odp_unlikely(pkts_ok != pkts))
> -                               ODP_ERR("Dropped frames:%u - err_cnt:%lu\n",
> -                                       pkts-pkts_ok, ++err_cnt);
> +                               EXAMPLE_ERR("Dropped frames:%u - err_cnt:%lu\n",
> +                                           pkts-pkts_ok, ++err_cnt);
>
>                         /* Print packet counts every once in a while */
>                         tmp += pkts_ok;
> @@ -320,13 +323,13 @@ int main(int argc, char *argv[])
>
>         /* Init ODP before calling anything else */
>         if (odp_init_global(NULL, NULL)) {
> -               ODP_ERR("Error: ODP global init failed.\n");
> +               EXAMPLE_ERR("Error: ODP global init failed.\n");
>                 exit(EXIT_FAILURE);
>         }
>
>         /* Init this thread */
>         if (odp_init_local()) {
> -               ODP_ERR("Error: ODP local init failed.\n");
> +               EXAMPLE_ERR("Error: ODP local init failed.\n");
>                 exit(EXIT_FAILURE);
>         }
>
> @@ -336,7 +339,7 @@ int main(int argc, char *argv[])
>         gbl_args = odp_shm_addr(shm);
>
>         if (gbl_args == NULL) {
> -               ODP_ERR("Error: shared mem alloc failed.\n");
> +               EXAMPLE_ERR("Error: shared mem alloc failed.\n");
>                 exit(EXIT_FAILURE);
>         }
>         memset(gbl_args, 0, sizeof(*gbl_args));
> @@ -359,13 +362,13 @@ int main(int argc, char *argv[])
>         printf("Num worker threads: %i\n", num_workers);
>
>         if (num_workers < gbl_args->appl.if_count) {
> -               ODP_ERR("Error: core count %d is less than interface count\n",
> -                       num_workers);
> +               EXAMPLE_ERR("Error: core count %d is less than interface "
> +                           "count\n", num_workers);
>                 exit(EXIT_FAILURE);
>         }
>         if (gbl_args->appl.if_count % 2 != 0) {
> -               ODP_ERR("Error: interface count %d is odd in fwd appl.\n",
> -                       gbl_args->appl.if_count);
> +               EXAMPLE_ERR("Error: interface count %d is odd in fwd appl.\n",
> +                           gbl_args->appl.if_count);
>                 exit(EXIT_FAILURE);
>         }
>         /*
> @@ -385,7 +388,7 @@ int main(int argc, char *argv[])
>         pool_base = odp_shm_addr(shm);
>
>         if (pool_base == NULL) {
> -               ODP_ERR("Error: packet pool mem alloc failed.\n");
> +               EXAMPLE_ERR("Error: packet pool mem alloc failed.\n");
>                 exit(EXIT_FAILURE);
>         }
>
> @@ -395,7 +398,7 @@ int main(int argc, char *argv[])
>                                       ODP_CACHE_LINE_SIZE,
>                                       ODP_BUFFER_TYPE_PACKET);
>         if (pool == ODP_BUFFER_POOL_INVALID) {
> -               ODP_ERR("Error: packet pool create failed.\n");
> +               EXAMPLE_ERR("Error: packet pool create failed.\n");
>                 exit(EXIT_FAILURE);
>         }
>         odp_buffer_pool_print(pool);
> @@ -418,13 +421,13 @@ int main(int argc, char *argv[])
>                 if (gbl_args->appl.mode == APPL_MODE_PKT_BURST) {
>                         pktio = burst_mode_init_params(&gbl_args->thread[i], pool);
>                         if (pktio == ODP_PKTIO_INVALID) {
> -                               ODP_ERR("  for thread:%02i\n", i);
> +                               EXAMPLE_ERR("  for thread:%02i\n", i);
>                                 exit(EXIT_FAILURE);
>                         }
>                 } else { /* APPL_MODE_PKT_QUEUE */
>                         pktio = queue_mode_init_params(&gbl_args->thread[i], pool);
>                         if (pktio == ODP_PKTIO_INVALID) {
> -                               ODP_ERR("  for thread:%02i\n", i);
> +                               EXAMPLE_ERR("  for thread:%02i\n", i);
>                                 exit(EXIT_FAILURE);
>                         }
>                 }
> diff --git a/example/odp_example/Makefile.am b/example/odp_example/Makefile.am
> index e6f23d0..95136e7 100644
> --- a/example/odp_example/Makefile.am
> +++ b/example/odp_example/Makefile.am
> @@ -2,5 +2,6 @@ include $(top_srcdir)/example/Makefile.inc
>
>  bin_PROGRAMS = odp_example
>  odp_example_LDFLAGS = $(AM_LDFLAGS) -static
> +odp_example_CFLAGS = $(AM_CFLAGS) -I../
>
>  dist_odp_example_SOURCES = odp_example.c
> diff --git a/example/odp_example/odp_example.c b/example/odp_example/odp_example.c
> index 1ed4a0b..a674b77 100644
> --- a/example/odp_example/odp_example.c
> +++ b/example/odp_example/odp_example.c
> @@ -13,6 +13,8 @@
>  #include <string.h>
>  #include <stdlib.h>
>
> +#include <example_debug.h>
> +
>  /* ODP main header */
>  #include <odp.h>
>
> @@ -93,7 +95,7 @@ static int create_queue(int thr, odp_buffer_pool_t msg_pool, int prio)
>         buf = odp_buffer_alloc(msg_pool);
>
>         if (!odp_buffer_is_valid(buf)) {
> -               ODP_ERR("  [%i] msg_pool alloc failed\n", thr);
> +               EXAMPLE_ERR("  [%i] msg_pool alloc failed\n", thr);
>                 return -1;
>         }
>
> @@ -103,12 +105,12 @@ static int create_queue(int thr, odp_buffer_pool_t msg_pool, int prio)
>         queue = odp_queue_lookup(name);
>
>         if (queue == ODP_QUEUE_INVALID) {
> -               ODP_ERR("  [%i] Queue %s lookup failed.\n", thr, name);
> +               EXAMPLE_ERR("  [%i] Queue %s lookup failed.\n", thr, name);
>                 return -1;
>         }
>
>         if (odp_queue_enq(queue, buf)) {
> -               ODP_ERR("  [%i] Queue enqueue failed.\n", thr);
> +               EXAMPLE_ERR("  [%i] Queue enqueue failed.\n", thr);
>                 return -1;
>         }
>
> @@ -142,19 +144,20 @@ static int create_queues(int thr, odp_buffer_pool_t msg_pool, int prio)
>                 queue = odp_queue_lookup(name);
>
>                 if (queue == ODP_QUEUE_INVALID) {
> -                       ODP_ERR("  [%i] Queue %s lookup failed.\n", thr, name);
> +                       EXAMPLE_ERR("  [%i] Queue %s lookup failed.\n", thr,
> +                                   name);
>                         return -1;
>                 }
>
>                 buf = odp_buffer_alloc(msg_pool);
>
>                 if (!odp_buffer_is_valid(buf)) {
> -                       ODP_ERR("  [%i] msg_pool alloc failed\n", thr);
> +                       EXAMPLE_ERR("  [%i] msg_pool alloc failed\n", thr);
>                         return -1;
>                 }
>
>                 if (odp_queue_enq(queue, buf)) {
> -                       ODP_ERR("  [%i] Queue enqueue failed.\n", thr);
> +                       EXAMPLE_ERR("  [%i] Queue enqueue failed.\n", thr);
>                         return -1;
>                 }
>         }
> @@ -183,7 +186,7 @@ static int test_alloc_single(int thr, odp_buffer_pool_t pool)
>                 temp_buf = odp_buffer_alloc(pool);
>
>                 if (!odp_buffer_is_valid(temp_buf)) {
> -                       ODP_ERR("  [%i] alloc_single failed\n", thr);
> +                       EXAMPLE_ERR("  [%i] alloc_single failed\n", thr);
>                         return -1;
>                 }
>
> @@ -221,7 +224,7 @@ static int test_alloc_multi(int thr, odp_buffer_pool_t pool)
>                         temp_buf[j] = odp_buffer_alloc(pool);
>
>                         if (!odp_buffer_is_valid(temp_buf[j])) {
> -                               ODP_ERR("  [%i] alloc_multi failed\n", thr);
> +                               EXAMPLE_ERR("  [%i] alloc_multi failed\n", thr);
>                                 return -1;
>                         }
>                 }
> @@ -263,7 +266,7 @@ static int test_poll_queue(int thr, odp_buffer_pool_t msg_pool)
>         buf = odp_buffer_alloc(msg_pool);
>
>         if (!odp_buffer_is_valid(buf)) {
> -               ODP_ERR("  [%i] msg_pool alloc failed\n", thr);
> +               EXAMPLE_ERR("  [%i] msg_pool alloc failed\n", thr);
>                 return -1;
>         }
>
> @@ -284,14 +287,14 @@ static int test_poll_queue(int thr, odp_buffer_pool_t msg_pool)
>
>         for (i = 0; i < QUEUE_ROUNDS; i++) {
>                 if (odp_queue_enq(queue, buf)) {
> -                       ODP_ERR("  [%i] Queue enqueue failed.\n", thr);
> +                       EXAMPLE_ERR("  [%i] Queue enqueue failed.\n", thr);
>                         return -1;
>                 }
>
>                 buf = odp_queue_deq(queue);
>
>                 if (!odp_buffer_is_valid(buf)) {
> -                       ODP_ERR("  [%i] Queue empty.\n", thr);
> +                       EXAMPLE_ERR("  [%i] Queue empty.\n", thr);
>                         return -1;
>                 }
>         }
> @@ -339,7 +342,7 @@ static int test_schedule_one_single(const char *str, int thr,
>                 buf = odp_schedule_one(&queue, ODP_SCHED_WAIT);
>
>                 if (odp_queue_enq(queue, buf)) {
> -                       ODP_ERR("  [%i] Queue enqueue failed.\n", thr);
> +                       EXAMPLE_ERR("  [%i] Queue enqueue failed.\n", thr);
>                         return -1;
>                 }
>         }
> @@ -399,7 +402,7 @@ static int test_schedule_one_many(const char *str, int thr,
>                 buf = odp_schedule_one(&queue, ODP_SCHED_WAIT);
>
>                 if (odp_queue_enq(queue, buf)) {
> -                       ODP_ERR("  [%i] Queue enqueue failed.\n", thr);
> +                       EXAMPLE_ERR("  [%i] Queue enqueue failed.\n", thr);
>                         return -1;
>                 }
>         }
> @@ -456,7 +459,7 @@ static int test_schedule_single(const char *str, int thr,
>                 buf = odp_schedule(&queue, ODP_SCHED_WAIT);
>
>                 if (odp_queue_enq(queue, buf)) {
> -                       ODP_ERR("  [%i] Queue enqueue failed.\n", thr);
> +                       EXAMPLE_ERR("  [%i] Queue enqueue failed.\n", thr);
>                         return -1;
>                 }
>         }
> @@ -475,7 +478,7 @@ static int test_schedule_single(const char *str, int thr,
>                 tot++;
>
>                 if (odp_queue_enq(queue, buf)) {
> -                       ODP_ERR("  [%i] Queue enqueue failed.\n", thr);
> +                       EXAMPLE_ERR("  [%i] Queue enqueue failed.\n", thr);
>                         return -1;
>                 }
>         }
> @@ -534,7 +537,7 @@ static int test_schedule_many(const char *str, int thr,
>                 buf = odp_schedule(&queue, ODP_SCHED_WAIT);
>
>                 if (odp_queue_enq(queue, buf)) {
> -                       ODP_ERR("  [%i] Queue enqueue failed.\n", thr);
> +                       EXAMPLE_ERR("  [%i] Queue enqueue failed.\n", thr);
>                         return -1;
>                 }
>         }
> @@ -553,7 +556,7 @@ static int test_schedule_many(const char *str, int thr,
>                 tot++;
>
>                 if (odp_queue_enq(queue, buf)) {
> -                       ODP_ERR("  [%i] Queue enqueue failed.\n", thr);
> +                       EXAMPLE_ERR("  [%i] Queue enqueue failed.\n", thr);
>                         return -1;
>                 }
>         }
> @@ -611,7 +614,8 @@ static int test_schedule_multi(const char *str, int thr,
>                 queue = odp_queue_lookup(name);
>
>                 if (queue == ODP_QUEUE_INVALID) {
> -                       ODP_ERR("  [%i] Queue %s lookup failed.\n", thr, name);
> +                       EXAMPLE_ERR("  [%i] Queue %s lookup failed.\n", thr,
> +                                   name);
>                         return -1;
>                 }
>
> @@ -619,13 +623,14 @@ static int test_schedule_multi(const char *str, int thr,
>                         buf[j] = odp_buffer_alloc(msg_pool);
>
>                         if (!odp_buffer_is_valid(buf[j])) {
> -                               ODP_ERR("  [%i] msg_pool alloc failed\n", thr);
> +                               EXAMPLE_ERR("  [%i] msg_pool alloc failed\n",
> +                                           thr);
>                                 return -1;
>                         }
>                 }
>
>                 if (odp_queue_enq_multi(queue, buf, MULTI_BUFS_MAX)) {
> -                       ODP_ERR("  [%i] Queue enqueue failed.\n", thr);
> +                       EXAMPLE_ERR("  [%i] Queue enqueue failed.\n", thr);
>                         return -1;
>                 }
>         }
> @@ -640,7 +645,7 @@ static int test_schedule_multi(const char *str, int thr,
>                 tot += num;
>
>                 if (odp_queue_enq_multi(queue, buf, num)) {
> -                       ODP_ERR("  [%i] Queue enqueue failed.\n", thr);
> +                       EXAMPLE_ERR("  [%i] Queue enqueue failed.\n", thr);
>                         return -1;
>                 }
>         }
> @@ -658,7 +663,7 @@ static int test_schedule_multi(const char *str, int thr,
>                 tot += num;
>
>                 if (odp_queue_enq_multi(queue, buf, num)) {
> -                       ODP_ERR("  [%i] Queue enqueue failed.\n", thr);
> +                       EXAMPLE_ERR("  [%i] Queue enqueue failed.\n", thr);
>                         return -1;
>                 }
>         }
> @@ -710,7 +715,7 @@ static void *run_thread(void *arg)
>         globals = odp_shm_addr(shm);
>
>         if (globals == NULL) {
> -               ODP_ERR("Shared mem lookup failed\n");
> +               EXAMPLE_ERR("Shared mem lookup failed\n");
>                 return NULL;
>         }
>
> @@ -730,7 +735,7 @@ static void *run_thread(void *arg)
>         msg_pool = odp_buffer_pool_lookup("msg_pool");
>
>         if (msg_pool == ODP_BUFFER_POOL_INVALID) {
> -               ODP_ERR("  [%i] msg_pool not found\n", thr);
> +               EXAMPLE_ERR("  [%i] msg_pool not found\n", thr);
>                 return NULL;
>         }
>
> @@ -830,7 +835,7 @@ static void test_time(void)
>         double err;
>
>         if (clock_gettime(CLOCK_MONOTONIC, &tp2)) {
> -               ODP_ERR("clock_gettime failed.\n");
> +               EXAMPLE_ERR("clock_gettime failed.\n");
>                 return;
>         }
>
> @@ -838,7 +843,7 @@ static void test_time(void)
>
>         do {
>                 if (clock_gettime(CLOCK_MONOTONIC, &tp1)) {
> -                       ODP_ERR("clock_gettime failed.\n");
> +                       EXAMPLE_ERR("clock_gettime failed.\n");
>                         return;
>                 }
>
> @@ -848,7 +853,7 @@ static void test_time(void)
>
>         do {
>                 if (clock_gettime(CLOCK_MONOTONIC, &tp2)) {
> -                       ODP_ERR("clock_gettime failed.\n");
> +                       EXAMPLE_ERR("clock_gettime failed.\n");
>                         return;
>                 }
>
> @@ -966,7 +971,7 @@ int main(int argc, char *argv[])
>
>         /* ODP global init */
>         if (odp_init_global(NULL, NULL)) {
> -               ODP_ERR("ODP global init failed.\n");
> +               EXAMPLE_ERR("ODP global init failed.\n");
>                 return -1;
>         }
>
> @@ -975,7 +980,7 @@ int main(int argc, char *argv[])
>          * setting up resources for worker threads.
>          */
>         if (odp_init_local()) {
> -               ODP_ERR("ODP global init failed.\n");
> +               EXAMPLE_ERR("ODP global init failed.\n");
>                 return -1;
>         }
>
> @@ -1023,7 +1028,7 @@ int main(int argc, char *argv[])
>         globals = odp_shm_addr(shm);
>
>         if (globals == NULL) {
> -               ODP_ERR("Shared memory reserve failed.\n");
> +               EXAMPLE_ERR("Shared memory reserve failed.\n");
>                 return -1;
>         }
>
> @@ -1038,7 +1043,7 @@ int main(int argc, char *argv[])
>         pool_base = odp_shm_addr(shm);
>
>         if (pool_base == NULL) {
> -               ODP_ERR("Shared memory reserve failed.\n");
> +               EXAMPLE_ERR("Shared memory reserve failed.\n");
>                 return -1;
>         }
>
> @@ -1047,7 +1052,7 @@ int main(int argc, char *argv[])
>                                       ODP_CACHE_LINE_SIZE, ODP_BUFFER_TYPE_RAW);
>
>         if (pool == ODP_BUFFER_POOL_INVALID) {
> -               ODP_ERR("Pool create failed.\n");
> +               EXAMPLE_ERR("Pool create failed.\n");
>                 return -1;
>         }
>
> @@ -1059,7 +1064,7 @@ int main(int argc, char *argv[])
>         queue = odp_queue_create("poll_queue", ODP_QUEUE_TYPE_POLL, NULL);
>
>         if (queue == ODP_QUEUE_INVALID) {
> -               ODP_ERR("Poll queue create failed.\n");
> +               EXAMPLE_ERR("Poll queue create failed.\n");
>                 return -1;
>         }
>
> @@ -1091,7 +1096,7 @@ int main(int argc, char *argv[])
>                                                  &param);
>
>                         if (queue == ODP_QUEUE_INVALID) {
> -                               ODP_ERR("Schedule queue create failed.\n");
> +                               EXAMPLE_ERR("Schedule queue create failed.\n");
>                                 return -1;
>                         }
>                 }
> @@ -1111,7 +1116,7 @@ int main(int argc, char *argv[])
>                                                 first_core);
>
>                 if (ret < 0) {
> -                       ODP_ERR("Fork workers failed %i\n", ret);
> +                       EXAMPLE_ERR("Fork workers failed %i\n", ret);
>                         return -1;
>                 }
>
> diff --git a/example/packet/Makefile.am b/example/packet/Makefile.am
> index 603a1ab..da5fc45 100644
> --- a/example/packet/Makefile.am
> +++ b/example/packet/Makefile.am
> @@ -2,5 +2,6 @@ include $(top_srcdir)/example/Makefile.inc
>
>  bin_PROGRAMS = odp_pktio
>  odp_pktio_LDFLAGS = $(AM_LDFLAGS) -static
> +odp_pktio_CFLAGS = $(AM_CFLAGS) -I../
>
>  dist_odp_pktio_SOURCES = odp_pktio.c
> diff --git a/example/packet/odp_pktio.c b/example/packet/odp_pktio.c
> index 2cf3f0d..3e08b34 100644
> --- a/example/packet/odp_pktio.c
> +++ b/example/packet/odp_pktio.c
> @@ -15,6 +15,8 @@
>  #include <getopt.h>
>  #include <unistd.h>
>
> +#include <example_debug.h>
> +
>  #include <odp.h>
>  #include <odph_linux.h>
>  #include <odph_packet.h>
> @@ -130,14 +132,14 @@ static void *pktio_queue_thread(void *arg)
>         /* Lookup the packet pool */
>         pkt_pool = odp_buffer_pool_lookup("packet_pool");
>         if (pkt_pool == ODP_BUFFER_POOL_INVALID || pkt_pool != thr_args->pool) {
> -               ODP_ERR("  [%02i] Error: pkt_pool not found\n", thr);
> +               EXAMPLE_ERR("  [%02i] Error: pkt_pool not found\n", thr);
>                 return NULL;
>         }
>
>         /* Open a packet IO instance for this thread */
>         pktio = odp_pktio_open(thr_args->pktio_dev, pkt_pool);
>         if (pktio == ODP_PKTIO_INVALID) {
> -               ODP_ERR("  [%02i] Error: pktio create failed\n", thr);
> +               EXAMPLE_ERR("  [%02i] Error: pktio create failed\n", thr);
>                 return NULL;
>         }
>
> @@ -153,13 +155,14 @@ static void *pktio_queue_thread(void *arg)
>
>         inq_def = odp_queue_create(inq_name, ODP_QUEUE_TYPE_PKTIN, &qparam);
>         if (inq_def == ODP_QUEUE_INVALID) {
> -               ODP_ERR("  [%02i] Error: pktio queue creation failed\n", thr);
> +               EXAMPLE_ERR("  [%02i] Error: pktio queue creation failed\n",
> +                           thr);
>                 return NULL;
>         }
>
>         ret = odp_pktio_inq_setdef(pktio, inq_def);
>         if (ret != 0) {
> -               ODP_ERR("  [%02i] Error: default input-Q setup\n", thr);
> +               EXAMPLE_ERR("  [%02i] Error: default input-Q setup\n", thr);
>                 return NULL;
>         }
>
> @@ -185,7 +188,7 @@ static void *pktio_queue_thread(void *arg)
>
>                 /* Drop packets with errors */
>                 if (odp_unlikely(drop_err_pkts(&pkt, 1) == 0)) {
> -                       ODP_ERR("Drop frame - err_cnt:%lu\n", ++err_cnt);
> +                       EXAMPLE_ERR("Drop frame - err_cnt:%lu\n", ++err_cnt);
>                         continue;
>                 }
>
> @@ -193,7 +196,8 @@ static void *pktio_queue_thread(void *arg)
>                 outq_def = odp_pktio_outq_getdef(pktio_tmp);
>
>                 if (outq_def == ODP_QUEUE_INVALID) {
> -                       ODP_ERR("  [%02i] Error: def output-Q query\n", thr);
> +                       EXAMPLE_ERR("  [%02i] Error: def output-Q query\n",
> +                                   thr);
>                         return NULL;
>                 }
>
> @@ -239,14 +243,14 @@ static void *pktio_ifburst_thread(void *arg)
>         /* Lookup the packet pool */
>         pkt_pool = odp_buffer_pool_lookup("packet_pool");
>         if (pkt_pool == ODP_BUFFER_POOL_INVALID || pkt_pool != thr_args->pool) {
> -               ODP_ERR("  [%02i] Error: pkt_pool not found\n", thr);
> +               EXAMPLE_ERR("  [%02i] Error: pkt_pool not found\n", thr);
>                 return NULL;
>         }
>
>         /* Open a packet IO instance for this thread */
>         pktio = odp_pktio_open(thr_args->pktio_dev, pkt_pool);
>         if (pktio == ODP_PKTIO_INVALID) {
> -               ODP_ERR("  [%02i] Error: pktio create failed.\n", thr);
> +               EXAMPLE_ERR("  [%02i] Error: pktio create failed.\n", thr);
>                 return NULL;
>         }
>
> @@ -266,8 +270,8 @@ static void *pktio_ifburst_thread(void *arg)
>                         }
>
>                         if (odp_unlikely(pkts_ok != pkts))
> -                               ODP_ERR("Dropped frames:%u - err_cnt:%lu\n",
> -                                       pkts-pkts_ok, ++err_cnt);
> +                               EXAMPLE_ERR("Dropped frames:%u - err_cnt:%lu\n",
> +                                           pkts-pkts_ok, ++err_cnt);
>
>                         /* Print packet counts every once in a while */
>                         tmp += pkts_ok;
> @@ -300,13 +304,13 @@ int main(int argc, char *argv[])
>
>         /* Init ODP before calling anything else */
>         if (odp_init_global(NULL, NULL)) {
> -               ODP_ERR("Error: ODP global init failed.\n");
> +               EXAMPLE_ERR("Error: ODP global init failed.\n");
>                 exit(EXIT_FAILURE);
>         }
>
>         /* Init this thread */
>         if (odp_init_local()) {
> -               ODP_ERR("Error: ODP local init failed.\n");
> +               EXAMPLE_ERR("Error: ODP local init failed.\n");
>                 exit(EXIT_FAILURE);
>         }
>
> @@ -316,7 +320,7 @@ int main(int argc, char *argv[])
>         args = odp_shm_addr(shm);
>
>         if (args == NULL) {
> -               ODP_ERR("Error: shared mem alloc failed.\n");
> +               EXAMPLE_ERR("Error: shared mem alloc failed.\n");
>                 exit(EXIT_FAILURE);
>         }
>         memset(args, 0, sizeof(*args));
> @@ -355,7 +359,7 @@ int main(int argc, char *argv[])
>         pool_base = odp_shm_addr(shm);
>
>         if (pool_base == NULL) {
> -               ODP_ERR("Error: packet pool mem alloc failed.\n");
> +               EXAMPLE_ERR("Error: packet pool mem alloc failed.\n");
>                 exit(EXIT_FAILURE);
>         }
>
> @@ -365,7 +369,7 @@ int main(int argc, char *argv[])
>                                       ODP_CACHE_LINE_SIZE,
>                                       ODP_BUFFER_TYPE_PACKET);
>         if (pool == ODP_BUFFER_POOL_INVALID) {
> -               ODP_ERR("Error: packet pool create failed.\n");
> +               EXAMPLE_ERR("Error: packet pool create failed.\n");
>                 exit(EXIT_FAILURE);
>         }
>         odp_buffer_pool_print(pool);
> diff --git a/example/timer/Makefile.am b/example/timer/Makefile.am
> index 6229f13..dffd4eb 100644
> --- a/example/timer/Makefile.am
> +++ b/example/timer/Makefile.am
> @@ -2,5 +2,6 @@ include $(top_srcdir)/example/Makefile.inc
>
>  bin_PROGRAMS = odp_timer_test
>  odp_timer_test_LDFLAGS = $(AM_LDFLAGS) -static
> +odp_timer_test_CFLAGS = $(AM_CFLAGS) -I../
>
>  dist_odp_timer_test_SOURCES = odp_timer_test.c
> diff --git a/example/timer/odp_timer_test.c b/example/timer/odp_timer_test.c
> index 78b2ae2..04b4d89 100644
> --- a/example/timer/odp_timer_test.c
> +++ b/example/timer/odp_timer_test.c
> @@ -13,6 +13,8 @@
>  #include <string.h>
>  #include <stdlib.h>
>
> +#include <example_debug.h>
> +
>  /* ODP main header */
>  #include <odp.h>
>
> @@ -55,25 +57,25 @@ static void test_abs_timeouts(int thr, test_args_t *args)
>         odp_buffer_t buf;
>         int num;
>
> -       ODP_DBG("  [%i] test_timeouts\n", thr);
> +       EXAMPLE_DBG("  [%i] test_timeouts\n", thr);
>
>         queue = odp_queue_lookup("timer_queue");
>
>         period_ns = args->period_us*ODP_TIME_USEC;
>         period    = odp_timer_ns_to_tick(test_timer, period_ns);
>
> -       ODP_DBG("  [%i] period %"PRIu64" ticks,  %"PRIu64" ns\n", thr,
> -               period, period_ns);
> +       EXAMPLE_DBG("  [%i] period %"PRIu64" ticks,  %"PRIu64" ns\n", thr,
> +                   period, period_ns);
>
>         tick = odp_timer_current_tick(test_timer);
>
> -       ODP_DBG("  [%i] current tick %"PRIu64"\n", thr, tick);
> +       EXAMPLE_DBG("  [%i] current tick %"PRIu64"\n", thr, tick);
>
>         tick += period;
>
>         if (odp_timer_absolute_tmo(test_timer, tick, queue, ODP_BUFFER_INVALID)
>             == ODP_TIMER_TMO_INVALID){
> -               ODP_DBG("Timeout request failed\n");
> +               EXAMPLE_DBG("Timeout request failed\n");
>                 return;
>         }
>
> @@ -87,7 +89,7 @@ static void test_abs_timeouts(int thr, test_args_t *args)
>                 tmo  = odp_timeout_from_buffer(buf);
>                 tick = odp_timeout_tick(tmo);
>
> -               ODP_DBG("  [%i] timeout, tick %"PRIu64"\n", thr, tick);
> +               EXAMPLE_DBG("  [%i] timeout, tick %"PRIu64"\n", thr, tick);
>
>                 odp_buffer_free(buf);
>
> @@ -131,7 +133,7 @@ static void *run_thread(void *ptr)
>         msg_pool = odp_buffer_pool_lookup("msg_pool");
>
>         if (msg_pool == ODP_BUFFER_POOL_INVALID) {
> -               ODP_ERR("  [%i] msg_pool not found\n", thr);
> +               EXAMPLE_ERR("  [%i] msg_pool not found\n", thr);
>                 return NULL;
>         }
>
> @@ -319,7 +321,7 @@ int main(int argc, char *argv[])
>                                       ODP_BUFFER_TYPE_TIMEOUT);
>
>         if (pool == ODP_BUFFER_POOL_INVALID) {
> -               ODP_ERR("Pool create failed.\n");
> +               EXAMPLE_ERR("Pool create failed.\n");
>                 return -1;
>         }
>
> @@ -334,7 +336,7 @@ int main(int argc, char *argv[])
>         queue = odp_queue_create("timer_queue", ODP_QUEUE_TYPE_SCHED, &param);
>
>         if (queue == ODP_QUEUE_INVALID) {
> -               ODP_ERR("Timer queue create failed.\n");
> +               EXAMPLE_ERR("Timer queue create failed.\n");
>                 return -1;
>         }
>
> @@ -344,7 +346,7 @@ int main(int argc, char *argv[])
>                                       args.max_us*ODP_TIME_USEC);
>
>         if (test_timer == ODP_TIMER_INVALID) {
> -               ODP_ERR("Timer create failed.\n");
> +               EXAMPLE_ERR("Timer create failed.\n");
>                 return -1;
>         }
>
> --
> 2.1.0
>
>
> _______________________________________________
> lng-odp mailing list
> lng-odp@lists.linaro.org
> http://lists.linaro.org/mailman/listinfo/lng-odp
Mike Holmes Nov. 12, 2014, 12:45 p.m. UTC | #2
On 11 November 2014 05:51, Ciprian Barbu <ciprian.barbu@linaro.org> wrote:
> On Fri, Nov 7, 2014 at 2:37 PM, Mike Holmes <mike.holmes@linaro.org> wrote:
>> Removing the calls to the ODP API error functions from applications
>> allows the functions to be moved into the ODP APIs internal interface.
>> Applications should consume ODP implementation error messages and not
>> use the library for its own logging needs.
>>
>> Signed-off-by: Mike Holmes <mike.holmes@linaro.org>
>> ---
>>  example/example_debug.h           | 88 +++++++++++++++++++++++++++++++++++++++
>>  example/generator/Makefile.am     |  1 +
>>  example/generator/odp_generator.c | 44 +++++++++++---------
>>  example/ipsec/Makefile.am         |  1 +
>>  example/ipsec/odp_ipsec.c         | 47 ++++++++++++---------
>>  example/ipsec/odp_ipsec_cache.c   |  4 +-
>>  example/ipsec/odp_ipsec_fwd_db.c  |  4 +-
>>  example/ipsec/odp_ipsec_loop_db.c |  4 +-
>>  example/ipsec/odp_ipsec_sa_db.c   |  4 +-
>>  example/ipsec/odp_ipsec_sp_db.c   |  4 +-
>>  example/ipsec/odp_ipsec_stream.c  |  9 ++--
>>  example/l2fwd/Makefile.am         |  1 +
>>  example/l2fwd/odp_l2fwd.c         | 47 +++++++++++----------
>>  example/odp_example/Makefile.am   |  1 +
>>  example/odp_example/odp_example.c | 75 +++++++++++++++++----------------
>>  example/packet/Makefile.am        |  1 +
>>  example/packet/odp_pktio.c        | 34 ++++++++-------
>>  example/timer/Makefile.am         |  1 +
>>  example/timer/odp_timer_test.c    | 22 +++++-----
>>  19 files changed, 262 insertions(+), 130 deletions(-)
>>  create mode 100644 example/example_debug.h
>>
>> diff --git a/example/example_debug.h b/example/example_debug.h
>> new file mode 100644
>> index 0000000..b83667c
>> --- /dev/null
>> +++ b/example/example_debug.h
>> @@ -0,0 +1,88 @@
>> +/* Copyright (c) 2014, Linaro Limited
>> + * All rights reserved.
>> + *
>> + * SPDX-License-Identifier:     BSD-3-Clause
>> + */
>> +/**
>> + * @file
>> + *
>> + * example debug
>> + */
>> +
>> +#ifndef EXAMPLE_DEBUG_H_
>> +#define EXAMPLE_DEBUG_H_
>> +
>> +#include <stdio.h>
>> +#include <stdlib.h>
>> +
>> +#ifdef __cplusplus
>> +extern "C" {
>> +#endif
>> +
>> +#ifndef EXAMPLE_DEBUG_PRINT
>> +#define EXAMPLE_DEBUG_PRINT 1
>> +#endif
>> +
>> +/**
>> + * log level.
>> + */
>> +typedef enum example_log_level {
>> +       EXAMPLE_LOG_DBG,
>> +       EXAMPLE_LOG_ERR,
>> +       EXAMPLE_LOG_ABORT
>> +} example_log_level_e;
>> +
>> +/**
>> + * default LOG macro.
>> + */
>> +#define EXAMPLE_LOG(level, fmt, ...) \
>
> The name of this macro doesn't sound right to me.
The include file is
> inside the example/ dir anyway, so I would rather see it named simply
> log.h or something like this. I know the reason for having it like
> this is because of the discussion we had about removing odp_debug.h
> from the API, but naming this example_debug.h is wrong in my opinion.
> It also makes for a long macro name, LOG("....") is much more elegant.
>

This name is long, but there will also be a TEST_LOG needed and I was
trying to distinguish them, if people are happy with one name in two
places I am ok with that.

> You should also send a patch in the same series to deal with
> odp_debug.h, for now it is still copied when you 'make install'. You
> need to remove it from include_HEADERS in
> platform/linux-generic/Makefile.am. Probably name it to
> odp_debug_internal.h, this way a platform implementer knows it will
> not be exposed to application.

Agree, cut from th  from the previous v1 patch pasted below

"The goal here is to allow the ODP_ERR etc to migrate to the
odp_debug_internal.h where only the implementation sees it.
This helps enforce the rule we settled on that the application needs
to see the ODP libs logging messages, but the application does not USE
ODP to do its own logging, it will have its own mechanism. ODP will
allow its output function to be replaced by an application specific
implementation of the output function using weak links.

The sequence of patches to achieve this is this:

This patch to remove the calls from examples
Remove the calls from  the tests
Move the definition of ODP_ERR etc into the local API header files.
Ensure weak linking allows the output to be re directed by the
application in a unit test"




>
>> +do { \
>> +       switch (level) { \
>> +       case EXAMPLE_LOG_ERR: \
>> +               fprintf(stderr, "%s:%d:%s():" fmt, __FILE__, \
>> +               __LINE__, __func__, ##__VA_ARGS__); \
>> +               break; \
>> +       case EXAMPLE_LOG_DBG: \
>> +               if (EXAMPLE_DEBUG_PRINT == 1) \
>> +                       fprintf(stderr, "%s:%d:%s():" fmt, __FILE__, \
>> +                       __LINE__, __func__, ##__VA_ARGS__); \
>> +               break; \
>> +       case EXAMPLE_LOG_ABORT: \
>> +               fprintf(stderr, "%s:%d:%s(): " fmt, __FILE__, \
>> +               __LINE__, __func__, ##__VA_ARGS__); \
>> +               abort(); \
>> +               break; \
>> +       default: \
>> +               fprintf(stderr, "Unknown LOG level"); \
>> +               break;\
>> +       } \
>> +} while (0)
>> +
>> +/**
>> + * Debug printing macro, which prints output when DEBUG flag is set.
>> + */
>> +#define EXAMPLE_DBG(fmt, ...) \
>> +               EXAMPLE_LOG(EXAMPLE_LOG_DBG, fmt, ##__VA_ARGS__)
>> +
>> +/**
>> + * Print output to stderr (file, line and function).
>> + */
>> +#define EXAMPLE_ERR(fmt, ...) \
>> +               EXAMPLE_LOG(EXAMPLE_LOG_ERR, fmt, ##__VA_ARGS__)
>> +
>> +/**
>> + * Print output to stderr (file, line and function),
>> + * then abort.
>> + */
>> +#define EXAMPLE_ABORT(fmt, ...) \
>> +               EXAMPLE_LOG(EXAMPLE_LOG_ABORT, fmt, ##__VA_ARGS__)
>> +
>> +/**
>> + * @}
>> + */
>> +
>> +#ifdef __cplusplus
>> +}
>> +#endif
>> +
>> +#endif
>> diff --git a/example/generator/Makefile.am b/example/generator/Makefile.am
>> index 5b3d55a..394985f 100644
>> --- a/example/generator/Makefile.am
>> +++ b/example/generator/Makefile.am
>> @@ -2,5 +2,6 @@ include $(top_srcdir)/example/Makefile.inc
>>
>>  bin_PROGRAMS = odp_generator
>>  odp_generator_LDFLAGS = $(AM_LDFLAGS) -static
>> +odp_generator_CFLAGS = $(AM_CFLAGS) -I../
>>
>>  dist_odp_generator_SOURCES = odp_generator.c
>> diff --git a/example/generator/odp_generator.c b/example/generator/odp_generator.c
>> index ffa5e62..e2e0ba4 100644
>> --- a/example/generator/odp_generator.c
>> +++ b/example/generator/odp_generator.c
>> @@ -16,6 +16,8 @@
>>  #include <unistd.h>
>>  #include <sys/time.h>
>>
>> +#include <example_debug.h>
>> +
>>  #include <odp.h>
>>
>>  #include <odph_linux.h>
>> @@ -55,7 +57,8 @@ typedef struct {
>>         int number;             /**< packets number to be sent */
>>         int payload;            /**< data len */
>>         int timeout;            /**< wait time */
>> -       int interval;           /**< wait interval ms between sending each packet */
>> +       int interval;           /**< wait interval ms between sending
>> +                                    each packet */
>>  } appl_args_t;
>>
>>  /**
>> @@ -303,13 +306,13 @@ static void *gen_send_thread(void *arg)
>>         /* Open a packet IO instance for this thread */
>>         pktio = odp_pktio_open(thr_args->pktio_dev, thr_args->pool);
>>         if (pktio == ODP_PKTIO_INVALID) {
>> -               ODP_ERR("  [%02i] Error: pktio create failed\n", thr);
>> +               EXAMPLE_ERR("  [%02i] Error: pktio create failed\n", thr);
>>                 return NULL;
>>         }
>>
>>         outq_def = odp_pktio_outq_getdef(pktio);
>>         if (outq_def == ODP_QUEUE_INVALID) {
>> -               ODP_ERR("  [%02i] Error: def output-Q query\n", thr);
>> +               EXAMPLE_ERR("  [%02i] Error: def output-Q query\n", thr);
>>                 return NULL;
>>         }
>>
>> @@ -318,7 +321,7 @@ static void *gen_send_thread(void *arg)
>>                 int err;
>>                 buf = odp_buffer_alloc(thr_args->pool);
>>                 if (!odp_buffer_is_valid(buf)) {
>> -                       ODP_ERR("  [%2i] alloc_single failed\n", thr);
>> +                       EXAMPLE_ERR("  [%2i] alloc_single failed\n", thr);
>>                         return NULL;
>>                 }
>>
>> @@ -329,7 +332,7 @@ static void *gen_send_thread(void *arg)
>>
>>                 err = odp_queue_enq(outq_def, buf);
>>                 if (err != 0) {
>> -                       ODP_ERR("  [%02i] send pkt err!\n", thr);
>> +                       EXAMPLE_ERR("  [%02i] send pkt err!\n", thr);
>>                         return NULL;
>>                 }
>>
>> @@ -463,7 +466,7 @@ static void *gen_recv_thread(void *arg)
>>         /* Open a packet IO instance for this thread */
>>         pktio = odp_pktio_open(thr_args->pktio_dev, thr_args->pool);
>>         if (pktio == ODP_PKTIO_INVALID) {
>> -               ODP_ERR("  [%02i] Error: pktio create failed\n", thr);
>> +               EXAMPLE_ERR("  [%02i] Error: pktio create failed\n", thr);
>>                 return NULL;
>>         }
>>
>> @@ -475,13 +478,14 @@ static void *gen_recv_thread(void *arg)
>>         inq_name[ODP_QUEUE_NAME_LEN - 1] = '\0';
>>         inq_def = odp_queue_create(inq_name, ODP_QUEUE_TYPE_PKTIN, &qparam);
>>         if (inq_def == ODP_QUEUE_INVALID) {
>> -               ODP_ERR("  [%02i] Error: pktio queue creation failed\n", thr);
>> +               EXAMPLE_ERR("  [%02i] Error: pktio queue creation failed\n",
>> +                           thr);
>>                 return NULL;
>>         }
>>
>>         ret = odp_pktio_inq_setdef(pktio, inq_def);
>>         if (ret != 0) {
>> -               ODP_ERR("  [%02i] Error: default input-Q setup\n", thr);
>> +               EXAMPLE_ERR("  [%02i] Error: default input-Q setup\n", thr);
>>                 return NULL;
>>         }
>>
>> @@ -520,12 +524,12 @@ int main(int argc, char *argv[])
>>
>>         /* Init ODP before calling anything else */
>>         if (odp_init_global(NULL, NULL)) {
>> -               ODP_ERR("Error: ODP global init failed.\n");
>> +               EXAMPLE_ERR("Error: ODP global init failed.\n");
>>                 exit(EXIT_FAILURE);
>>         }
>>
>>         if (odp_init_local()) {
>> -               ODP_ERR("Error: ODP local init failed.\n");
>> +               EXAMPLE_ERR("Error: ODP local init failed.\n");
>>                 exit(EXIT_FAILURE);
>>         }
>>
>> @@ -541,7 +545,7 @@ int main(int argc, char *argv[])
>>         args = odp_shm_addr(shm);
>>
>>         if (args == NULL) {
>> -               ODP_ERR("Error: shared mem alloc failed.\n");
>> +               EXAMPLE_ERR("Error: shared mem alloc failed.\n");
>>                 exit(EXIT_FAILURE);
>>         }
>>         memset(args, 0, sizeof(*args));
>> @@ -584,7 +588,7 @@ int main(int argc, char *argv[])
>>         pool_base = odp_shm_addr(shm);
>>
>>         if (pool_base == NULL) {
>> -               ODP_ERR("Error: packet pool mem alloc failed.\n");
>> +               EXAMPLE_ERR("Error: packet pool mem alloc failed.\n");
>>                 exit(EXIT_FAILURE);
>>         }
>>
>> @@ -594,7 +598,7 @@ int main(int argc, char *argv[])
>>                                       ODP_CACHE_LINE_SIZE,
>>                                       ODP_BUFFER_TYPE_PACKET);
>>         if (pool == ODP_BUFFER_POOL_INVALID) {
>> -               ODP_ERR("Error: packet pool create failed.\n");
>> +               EXAMPLE_ERR("Error: packet pool create failed.\n");
>>                 exit(EXIT_FAILURE);
>>         }
>>         odp_buffer_pool_print(pool);
>> @@ -636,7 +640,7 @@ int main(int argc, char *argv[])
>>                         } else if (args->appl.mode == APPL_MODE_RCV) {
>>                                 thr_run_func = gen_recv_thread;
>>                         } else {
>> -                               ODP_ERR("ERR MODE\n");
>> +                               EXAMPLE_ERR("ERR MODE\n");
>>                                 exit(EXIT_FAILURE);
>>                         }
>>                         /*
>> @@ -754,35 +758,35 @@ static void parse_args(int argc, char *argv[], appl_args_t *appl_args)
>>                         } else if (optarg[0] == 'r') {
>>                                 appl_args->mode = APPL_MODE_RCV;
>>                         } else {
>> -                               ODP_ERR("wrong mode!\n");
>> +                               EXAMPLE_ERR("wrong mode!\n");
>>                                 exit(EXIT_FAILURE);
>>                         }
>>                         break;
>>
>>                 case 'a':
>>                         if (scan_mac(optarg, &appl_args->srcmac) != 1) {
>> -                               ODP_ERR("wrong src mac:%s\n", optarg);
>> +                               EXAMPLE_ERR("wrong src mac:%s\n", optarg);
>>                                 exit(EXIT_FAILURE);
>>                         }
>>                         break;
>>
>>                 case 'b':
>>                         if (scan_mac(optarg, &appl_args->dstmac) != 1) {
>> -                               ODP_ERR("wrong dst mac:%s\n", optarg);
>> +                               EXAMPLE_ERR("wrong dst mac:%s\n", optarg);
>>                                 exit(EXIT_FAILURE);
>>                         }
>>                         break;
>>
>>                 case 'c':
>>                         if (scan_ip(optarg, &appl_args->srcip) != 1) {
>> -                               ODP_ERR("wrong src ip:%s\n", optarg);
>> +                               EXAMPLE_ERR("wrong src ip:%s\n", optarg);
>>                                 exit(EXIT_FAILURE);
>>                         }
>>                         break;
>>
>>                 case 'd':
>>                         if (scan_ip(optarg, &appl_args->dstip) != 1) {
>> -                               ODP_ERR("wrong dst ip:%s\n", optarg);
>> +                               EXAMPLE_ERR("wrong dst ip:%s\n", optarg);
>>                                 exit(EXIT_FAILURE);
>>                         }
>>                         break;
>> @@ -802,7 +806,7 @@ static void parse_args(int argc, char *argv[], appl_args_t *appl_args)
>>                 case 'i':
>>                         appl_args->interval = atoi(optarg);
>>                         if (appl_args->interval <= 200 && geteuid() != 0) {
>> -                               ODP_ERR("should be root user\n");
>> +                               EXAMPLE_ERR("should be root user\n");
>>                                 exit(EXIT_FAILURE);
>>                         }
>>                         break;
>> diff --git a/example/ipsec/Makefile.am b/example/ipsec/Makefile.am
>> index ac0949e..b4ef0cb 100644
>> --- a/example/ipsec/Makefile.am
>> +++ b/example/ipsec/Makefile.am
>> @@ -2,6 +2,7 @@ include $(top_srcdir)/example/Makefile.inc
>>
>>  bin_PROGRAMS = odp_ipsec
>>  odp_ipsec_LDFLAGS = $(AM_LDFLAGS) -static
>> +odp_ipsec_CFLAGS = $(AM_CFLAGS) -I../
>>
>>  dist_odp_ipsec_SOURCES = odp_ipsec.c \
>>                          odp_ipsec_sa_db.c \
>> diff --git a/example/ipsec/odp_ipsec.c b/example/ipsec/odp_ipsec.c
>> index da6c48e..709855c 100644
>> --- a/example/ipsec/odp_ipsec.c
>> +++ b/example/ipsec/odp_ipsec.c
>> @@ -15,6 +15,8 @@
>>  #include <getopt.h>
>>  #include <unistd.h>
>>
>> +#include <example_debug.h>
>> +
>>  #include <odp.h>
>>
>>  #include <odph_linux.h>
>> @@ -234,7 +236,7 @@ int query_mac_address(char *intf, uint8_t *src_mac)
>>         /* Get a socket descriptor */
>>         sd = socket(PF_PACKET, SOCK_RAW, htons(ETH_P_ALL));
>>         if (sd < 0) {
>> -               ODP_ERR("Error: socket() failed for %s\n", intf);
>> +               EXAMPLE_ERR("Error: socket() failed for %s\n", intf);
>>                 return -1;
>>         }
>>
>> @@ -243,7 +245,7 @@ int query_mac_address(char *intf, uint8_t *src_mac)
>>         snprintf(ifr.ifr_name, sizeof(ifr.ifr_name), "%s", intf);
>>         if (ioctl(sd, SIOCGIFHWADDR, &ifr) < 0) {
>>                 close(sd);
>> -               ODP_ERR("Error: ioctl() failed for %s\n", intf);
>> +               EXAMPLE_ERR("Error: ioctl() failed for %s\n", intf);
>>                 return -1;
>>         }
>>         memcpy(src_mac, ifr.ifr_hwaddr.sa_data, ODPH_ETHADDR_LEN);
>> @@ -382,7 +384,7 @@ void ipsec_init_pre(void)
>>                                    ODP_QUEUE_TYPE_SCHED,
>>                                    &qparam);
>>         if (ODP_QUEUE_INVALID == completionq) {
>> -               ODP_ERR("Error: completion queue creation failed\n");
>> +               EXAMPLE_ERR("Error: completion queue creation failed\n");
>>                 exit(EXIT_FAILURE);
>>         }
>>
>> @@ -394,7 +396,7 @@ void ipsec_init_pre(void)
>>                                ODP_QUEUE_TYPE_SCHED,
>>                                &qparam);
>>         if (ODP_QUEUE_INVALID == seqnumq) {
>> -               ODP_ERR("Error: sequence number queue creation failed\n");
>> +               EXAMPLE_ERR("Error: sequence number queue creation failed\n");
>>                 exit(EXIT_FAILURE);
>>         }
>>
>> @@ -411,7 +413,7 @@ void ipsec_init_pre(void)
>>                                           ODP_BUFFER_TYPE_PACKET);
>>
>>         if (ODP_BUFFER_POOL_INVALID == out_pool) {
>> -               ODP_ERR("Error: message pool create failed.\n");
>> +               EXAMPLE_ERR("Error: message pool create failed.\n");
>>                 exit(EXIT_FAILURE);
>>         }
>>
>> @@ -454,7 +456,8 @@ void ipsec_init_post(crypto_api_mode_e api_mode)
>>                                                      entry->input,
>>                                                      completionq,
>>                                                      out_pool)) {
>> -                               ODP_ERR("Error: IPSec cache entry failed.\n");
>> +                               EXAMPLE_ERR("Error: IPSec cache entry failed.\n"
>> +                                               );
>>                                 exit(EXIT_FAILURE);
>>                         }
>>                 } else {
>> @@ -487,7 +490,7 @@ void initialize_loop(char *intf)
>>         /* Derive loopback interface index */
>>         idx = loop_if_index(intf);
>>         if (idx < 0) {
>> -               ODP_ERR("Error: loopback \"%s\" invalid\n", intf);
>> +               EXAMPLE_ERR("Error: loopback \"%s\" invalid\n", intf);
>>                 exit(EXIT_FAILURE);
>>         }
>>
>> @@ -500,7 +503,8 @@ void initialize_loop(char *intf)
>>
>>         inq_def = QUEUE_CREATE(queue_name, ODP_QUEUE_TYPE_SCHED, &qparam);
>>         if (ODP_QUEUE_INVALID == inq_def) {
>> -               ODP_ERR("Error: input queue creation failed for %s\n", intf);
>> +               EXAMPLE_ERR("Error: input queue creation failed for %s\n",
>> +                           intf);
>>                 exit(EXIT_FAILURE);
>>         }
>>         /* Create output queue */
>> @@ -512,7 +516,8 @@ void initialize_loop(char *intf)
>>
>>         outq_def = QUEUE_CREATE(queue_name, ODP_QUEUE_TYPE_POLL, &qparam);
>>         if (ODP_QUEUE_INVALID == outq_def) {
>> -               ODP_ERR("Error: output queue creation failed for %s\n", intf);
>> +               EXAMPLE_ERR("Error: output queue creation failed for %s\n",
>> +                           intf);
>>                 exit(EXIT_FAILURE);
>>         }
>>
>> @@ -556,7 +561,7 @@ void initialize_intf(char *intf)
>>          */
>>         pktio = odp_pktio_open(intf, pkt_pool);
>>         if (ODP_PKTIO_INVALID == pktio) {
>> -               ODP_ERR("Error: pktio create failed for %s\n", intf);
>> +               EXAMPLE_ERR("Error: pktio create failed for %s\n", intf);
>>                 exit(EXIT_FAILURE);
>>         }
>>         outq_def = odp_pktio_outq_getdef(pktio);
>> @@ -573,13 +578,14 @@ void initialize_intf(char *intf)
>>
>>         inq_def = QUEUE_CREATE(inq_name, ODP_QUEUE_TYPE_PKTIN, &qparam);
>>         if (ODP_QUEUE_INVALID == inq_def) {
>> -               ODP_ERR("Error: pktio queue creation failed for %s\n", intf);
>> +               EXAMPLE_ERR("Error: pktio queue creation failed for %s\n",
>> +                           intf);
>>                 exit(EXIT_FAILURE);
>>         }
>>
>>         ret = odp_pktio_inq_setdef(pktio, inq_def);
>>         if (ret) {
>> -               ODP_ERR("Error: default input-Q setup for %s\n", intf);
>> +               EXAMPLE_ERR("Error: default input-Q setup for %s\n", intf);
>>                 exit(EXIT_FAILURE);
>>         }
>>
>> @@ -590,7 +596,8 @@ void initialize_intf(char *intf)
>>         ret = odp_pktio_get_mac_addr(pktio, src_mac);
>>  #endif
>>         if (ret) {
>> -               ODP_ERR("Error: failed during MAC address get for %s\n", intf);
>> +               EXAMPLE_ERR("Error: failed during MAC address get for %s\n",
>> +                           intf);
>>                 exit(EXIT_FAILURE);
>>         }
>>
>> @@ -1176,13 +1183,13 @@ main(int argc, char *argv[])
>>
>>         /* Init ODP before calling anything else */
>>         if (odp_init_global(NULL, NULL)) {
>> -               ODP_ERR("Error: ODP global init failed.\n");
>> +               EXAMPLE_ERR("Error: ODP global init failed.\n");
>>                 exit(EXIT_FAILURE);
>>         }
>>
>>         /* Init this thread */
>>         if (odp_init_local()) {
>> -               ODP_ERR("Error: ODP local init failed.\n");
>> +               EXAMPLE_ERR("Error: ODP local init failed.\n");
>>                 exit(EXIT_FAILURE);
>>         }
>>
>> @@ -1193,7 +1200,7 @@ main(int argc, char *argv[])
>>         args = odp_shm_addr(shm);
>>
>>         if (NULL == args) {
>> -               ODP_ERR("Error: shared mem alloc failed.\n");
>> +               EXAMPLE_ERR("Error: shared mem alloc failed.\n");
>>                 exit(EXIT_FAILURE);
>>         }
>>         memset(args, 0, sizeof(*args));
>> @@ -1238,7 +1245,7 @@ main(int argc, char *argv[])
>>         pool_base = odp_shm_addr(shm);
>>
>>         if (NULL == pool_base) {
>> -               ODP_ERR("Error: packet pool mem alloc failed.\n");
>> +               EXAMPLE_ERR("Error: packet pool mem alloc failed.\n");
>>                 exit(EXIT_FAILURE);
>>         }
>>
>> @@ -1248,7 +1255,7 @@ main(int argc, char *argv[])
>>                                           ODP_CACHE_LINE_SIZE,
>>                                           ODP_BUFFER_TYPE_PACKET);
>>         if (ODP_BUFFER_POOL_INVALID == pkt_pool) {
>> -               ODP_ERR("Error: packet pool create failed.\n");
>> +               EXAMPLE_ERR("Error: packet pool create failed.\n");
>>                 exit(EXIT_FAILURE);
>>         }
>>
>> @@ -1259,7 +1266,7 @@ main(int argc, char *argv[])
>>         pool_base = odp_shm_addr(shm);
>>
>>         if (NULL == pool_base) {
>> -               ODP_ERR("Error: context pool mem alloc failed.\n");
>> +               EXAMPLE_ERR("Error: context pool mem alloc failed.\n");
>>                 exit(EXIT_FAILURE);
>>         }
>>
>> @@ -1269,7 +1276,7 @@ main(int argc, char *argv[])
>>                                           ODP_CACHE_LINE_SIZE,
>>                                           ODP_BUFFER_TYPE_RAW);
>>         if (ODP_BUFFER_POOL_INVALID == ctx_pool) {
>> -               ODP_ERR("Error: context pool create failed.\n");
>> +               EXAMPLE_ERR("Error: context pool create failed.\n");
>>                 exit(EXIT_FAILURE);
>>         }
>>
>> diff --git a/example/ipsec/odp_ipsec_cache.c b/example/ipsec/odp_ipsec_cache.c
>> index 1397d77..fb53bb6 100644
>> --- a/example/ipsec/odp_ipsec_cache.c
>> +++ b/example/ipsec/odp_ipsec_cache.c
>> @@ -7,6 +7,8 @@
>>  #include <stdlib.h>
>>  #include <string.h>
>>
>> +#include <example_debug.h>
>> +
>>  #include <odp.h>
>>
>>  #include <odph_ipsec.h>
>> @@ -28,7 +30,7 @@ void init_ipsec_cache(void)
>>         ipsec_cache = odp_shm_addr(shm);
>>
>>         if (ipsec_cache == NULL) {
>> -               ODP_ERR("Error: shared mem alloc failed.\n");
>> +               EXAMPLE_ERR("Error: shared mem alloc failed.\n");
>>                 exit(EXIT_FAILURE);
>>         }
>>         memset(ipsec_cache, 0, sizeof(*ipsec_cache));
>> diff --git a/example/ipsec/odp_ipsec_fwd_db.c b/example/ipsec/odp_ipsec_fwd_db.c
>> index e067db9..4168420 100644
>> --- a/example/ipsec/odp_ipsec_fwd_db.c
>> +++ b/example/ipsec/odp_ipsec_fwd_db.c
>> @@ -7,6 +7,8 @@
>>  #include <stdlib.h>
>>  #include <string.h>
>>
>> +#include <example_debug.h>
>> +
>>  #include <odp.h>
>>
>>  #include <odp_ipsec_fwd_db.h>
>> @@ -26,7 +28,7 @@ void init_fwd_db(void)
>>         fwd_db = odp_shm_addr(shm);
>>
>>         if (fwd_db == NULL) {
>> -               ODP_ERR("Error: shared mem alloc failed.\n");
>> +               EXAMPLE_ERR("Error: shared mem alloc failed.\n");
>>                 exit(EXIT_FAILURE);
>>         }
>>         memset(fwd_db, 0, sizeof(*fwd_db));
>> diff --git a/example/ipsec/odp_ipsec_loop_db.c b/example/ipsec/odp_ipsec_loop_db.c
>> index af4590a..d213bb3 100644
>> --- a/example/ipsec/odp_ipsec_loop_db.c
>> +++ b/example/ipsec/odp_ipsec_loop_db.c
>> @@ -7,6 +7,8 @@
>>  #include <stdlib.h>
>>  #include <string.h>
>>
>> +#include <example_debug.h>
>> +
>>  #include <odp.h>
>>
>>  #include <odp_ipsec_loop_db.h>
>> @@ -26,7 +28,7 @@ void init_loopback_db(void)
>>         loopback_db = odp_shm_addr(shm);
>>
>>         if (loopback_db == NULL) {
>> -               ODP_ERR("Error: shared mem alloc failed.\n");
>> +               EXAMPLE_ERR("Error: shared mem alloc failed.\n");
>>                 exit(EXIT_FAILURE);
>>         }
>>         memset(loopback_db, 0, sizeof(*loopback_db));
>> diff --git a/example/ipsec/odp_ipsec_sa_db.c b/example/ipsec/odp_ipsec_sa_db.c
>> index e8679db..384c0ce 100644
>> --- a/example/ipsec/odp_ipsec_sa_db.c
>> +++ b/example/ipsec/odp_ipsec_sa_db.c
>> @@ -7,6 +7,8 @@
>>  #include <stdlib.h>
>>  #include <string.h>
>>
>> +#include <example_debug.h>
>> +
>>  #include <odp.h>
>>
>>  #include <odp_ipsec_sa_db.h>
>> @@ -26,7 +28,7 @@ void init_sa_db(void)
>>         sa_db = odp_shm_addr(shm);
>>
>>         if (sa_db == NULL) {
>> -               ODP_ERR("Error: shared mem alloc failed.\n");
>> +               EXAMPLE_ERR("Error: shared mem alloc failed.\n");
>>                 exit(EXIT_FAILURE);
>>         }
>>         memset(sa_db, 0, sizeof(*sa_db));
>> diff --git a/example/ipsec/odp_ipsec_sp_db.c b/example/ipsec/odp_ipsec_sp_db.c
>> index f288dfe..b0f4480 100644
>> --- a/example/ipsec/odp_ipsec_sp_db.c
>> +++ b/example/ipsec/odp_ipsec_sp_db.c
>> @@ -7,6 +7,8 @@
>>  #include <stdlib.h>
>>  #include <string.h>
>>
>> +#include <example_debug.h>
>> +
>>  #include <odp.h>
>>  #include <odp_align.h>
>>  #include <odp_crypto.h>
>> @@ -28,7 +30,7 @@ void init_sp_db(void)
>>         sp_db = odp_shm_addr(shm);
>>
>>         if (sp_db == NULL) {
>> -               ODP_ERR("Error: shared mem alloc failed.\n");
>> +               EXAMPLE_ERR("Error: shared mem alloc failed.\n");
>>                 exit(EXIT_FAILURE);
>>         }
>>         memset(sp_db, 0, sizeof(*sp_db));
>> diff --git a/example/ipsec/odp_ipsec_stream.c b/example/ipsec/odp_ipsec_stream.c
>> index fa9aba8..139d00e 100644
>> --- a/example/ipsec/odp_ipsec_stream.c
>> +++ b/example/ipsec/odp_ipsec_stream.c
>> @@ -12,6 +12,8 @@
>>  #include <openssl/hmac.h>
>>  #include <openssl/evp.h>
>>
>> +#include <example_debug.h>
>> +
>>  #include <odp.h>
>>
>>  #include <odph_packet.h>
>> @@ -56,7 +58,7 @@ void init_stream_db(void)
>>         stream_db = odp_shm_addr(shm);
>>
>>         if (stream_db == NULL) {
>> -               ODP_ERR("Error: shared mem alloc failed.\n");
>> +               EXAMPLE_ERR("Error: shared mem alloc failed.\n");
>>                 exit(EXIT_FAILURE);
>>         }
>>         memset(stream_db, 0, sizeof(*stream_db));
>> @@ -100,7 +102,8 @@ int create_stream_db_entry(char *input)
>>                 case 2:
>>                         entry->input.loop = loop_if_index(token);
>>                         if (entry->input.loop < 0) {
>> -                               ODP_ERR("Error: stream must have input loop\n");
>> +                               EXAMPLE_ERR("Error: stream must have input"
>> +                                           " loop\n");
>>                                 exit(EXIT_FAILURE);
>>                         }
>>                         break;
>> @@ -479,7 +482,7 @@ int create_stream_db_inputs(void)
>>         /* Lookup the packet pool */
>>         pkt_pool = odp_buffer_pool_lookup("packet_pool");
>>         if (pkt_pool == ODP_BUFFER_POOL_INVALID) {
>> -               ODP_ERR("Error: pkt_pool not found\n");
>> +               EXAMPLE_ERR("Error: pkt_pool not found\n");
>>                 exit(EXIT_FAILURE);
>>         }
>>
>> diff --git a/example/l2fwd/Makefile.am b/example/l2fwd/Makefile.am
>> index a83e757..d57a159 100644
>> --- a/example/l2fwd/Makefile.am
>> +++ b/example/l2fwd/Makefile.am
>> @@ -2,5 +2,6 @@ include $(top_srcdir)/example/Makefile.inc
>>
>>  bin_PROGRAMS = odp_l2fwd
>>  odp_l2fwd_LDFLAGS = $(AM_LDFLAGS) -static
>> +odp_l2fwd_CFLAGS = $(AM_CFLAGS) -I../
>>
>>  dist_odp_l2fwd_SOURCES = odp_l2fwd.c
>> diff --git a/example/l2fwd/odp_l2fwd.c b/example/l2fwd/odp_l2fwd.c
>> index 57037cd..ebac8c5 100644
>> --- a/example/l2fwd/odp_l2fwd.c
>> +++ b/example/l2fwd/odp_l2fwd.c
>> @@ -15,6 +15,8 @@
>>  #include <getopt.h>
>>  #include <unistd.h>
>>
>> +#include <example_debug.h>
>> +
>>  #include <odp.h>
>>  #include <odph_linux.h>
>>  #include <odph_packet.h>
>> @@ -128,7 +130,7 @@ static odp_pktio_t burst_mode_init_params(void *arg, odp_buffer_pool_t pool)
>>         /* Open a packet IO instance for this thread */
>>         pktio = odp_pktio_open(args->srcif, pool);
>>         if (pktio == ODP_PKTIO_INVALID)
>> -               ODP_ERR("  Error: pktio create failed");
>> +               EXAMPLE_ERR("  Error: pktio create failed");
>>
>>         return pktio;
>>  }
>> @@ -167,13 +169,13 @@ static odp_pktio_t queue_mode_init_params(void *arg, odp_buffer_pool_t pool)
>>
>>         inq_def = odp_queue_create(inq_name, ODP_QUEUE_TYPE_PKTIN, &qparam);
>>         if (inq_def == ODP_QUEUE_INVALID) {
>> -               ODP_ERR("  Error: pktio queue creation failed");
>> +               EXAMPLE_ERR("  Error: pktio queue creation failed");
>>                 return ODP_PKTIO_INVALID;
>>         }
>>
>>         ret = odp_pktio_inq_setdef(pktio, inq_def);
>>         if (ret != 0) {
>> -               ODP_ERR("  Error: default input-Q setup");
>> +               EXAMPLE_ERR("  Error: default input-Q setup");
>>                 return ODP_PKTIO_INVALID;
>>         }
>>
>> @@ -200,8 +202,8 @@ static void *pktio_queue_thread(void *arg)
>>         thr_args = arg;
>>
>>         if (thr_args->srcpktio == 0 || thr_args->dstpktio == 0) {
>> -               ODP_ERR("Invalid srcpktio:%d dstpktio:%d\n",
>> -                       thr_args->srcpktio, thr_args->dstpktio);
>> +               EXAMPLE_ERR("Invalid srcpktio:%d dstpktio:%d\n",
>> +                           thr_args->srcpktio, thr_args->dstpktio);
>>                 return NULL;
>>         }
>>         printf("[%02i] srcif:%s dstif:%s spktio:%02i dpktio:%02i QUEUE mode\n",
>> @@ -224,14 +226,15 @@ static void *pktio_queue_thread(void *arg)
>>                 pkt = odp_packet_from_buffer(buf);
>>                 /* Drop packets with errors */
>>                 if (odp_unlikely(drop_err_pkts(&pkt, 1) == 0)) {
>> -                       ODP_ERR("Drop frame - err_cnt:%lu\n", ++err_cnt);
>> +                       EXAMPLE_ERR("Drop frame - err_cnt:%lu\n", ++err_cnt);
>>                         continue;
>>                 }
>>
>>                 pktio_tmp = odp_pktio_get_input(pkt);
>>                 outq_def = odp_pktio_outq_getdef(dstpktio[pktio_tmp]);
>>                 if (outq_def == ODP_QUEUE_INVALID) {
>> -                       ODP_ERR("  [%02i] Error: def output-Q query\n", thr);
>> +                       EXAMPLE_ERR("  [%02i] Error: def output-Q query\n",
>> +                                   thr);
>>                         return NULL;
>>                 }
>>
>> @@ -267,8 +270,8 @@ static void *pktio_ifburst_thread(void *arg)
>>         thr_args = arg;
>>
>>         if (thr_args->srcpktio == 0 || thr_args->dstpktio == 0) {
>> -               ODP_ERR("Invalid srcpktio:%d dstpktio:%d\n",
>> -                       thr_args->srcpktio, thr_args->dstpktio);
>> +               EXAMPLE_ERR("Invalid srcpktio:%d dstpktio:%d\n",
>> +                           thr_args->srcpktio, thr_args->dstpktio);
>>                 return NULL;
>>         }
>>         printf("[%02i] srcif:%s dstif:%s spktio:%02i dpktio:%02i BURST mode\n",
>> @@ -286,8 +289,8 @@ static void *pktio_ifburst_thread(void *arg)
>>                                 odp_pktio_send(thr_args->dstpktio, pkt_tbl,
>>                                                pkts_ok);
>>                         if (odp_unlikely(pkts_ok != pkts))
>> -                               ODP_ERR("Dropped frames:%u - err_cnt:%lu\n",
>> -                                       pkts-pkts_ok, ++err_cnt);
>> +                               EXAMPLE_ERR("Dropped frames:%u - err_cnt:%lu\n",
>> +                                           pkts-pkts_ok, ++err_cnt);
>>
>>                         /* Print packet counts every once in a while */
>>                         tmp += pkts_ok;
>> @@ -320,13 +323,13 @@ int main(int argc, char *argv[])
>>
>>         /* Init ODP before calling anything else */
>>         if (odp_init_global(NULL, NULL)) {
>> -               ODP_ERR("Error: ODP global init failed.\n");
>> +               EXAMPLE_ERR("Error: ODP global init failed.\n");
>>                 exit(EXIT_FAILURE);
>>         }
>>
>>         /* Init this thread */
>>         if (odp_init_local()) {
>> -               ODP_ERR("Error: ODP local init failed.\n");
>> +               EXAMPLE_ERR("Error: ODP local init failed.\n");
>>                 exit(EXIT_FAILURE);
>>         }
>>
>> @@ -336,7 +339,7 @@ int main(int argc, char *argv[])
>>         gbl_args = odp_shm_addr(shm);
>>
>>         if (gbl_args == NULL) {
>> -               ODP_ERR("Error: shared mem alloc failed.\n");
>> +               EXAMPLE_ERR("Error: shared mem alloc failed.\n");
>>                 exit(EXIT_FAILURE);
>>         }
>>         memset(gbl_args, 0, sizeof(*gbl_args));
>> @@ -359,13 +362,13 @@ int main(int argc, char *argv[])
>>         printf("Num worker threads: %i\n", num_workers);
>>
>>         if (num_workers < gbl_args->appl.if_count) {
>> -               ODP_ERR("Error: core count %d is less than interface count\n",
>> -                       num_workers);
>> +               EXAMPLE_ERR("Error: core count %d is less than interface "
>> +                           "count\n", num_workers);
>>                 exit(EXIT_FAILURE);
>>         }
>>         if (gbl_args->appl.if_count % 2 != 0) {
>> -               ODP_ERR("Error: interface count %d is odd in fwd appl.\n",
>> -                       gbl_args->appl.if_count);
>> +               EXAMPLE_ERR("Error: interface count %d is odd in fwd appl.\n",
>> +                           gbl_args->appl.if_count);
>>                 exit(EXIT_FAILURE);
>>         }
>>         /*
>> @@ -385,7 +388,7 @@ int main(int argc, char *argv[])
>>         pool_base = odp_shm_addr(shm);
>>
>>         if (pool_base == NULL) {
>> -               ODP_ERR("Error: packet pool mem alloc failed.\n");
>> +               EXAMPLE_ERR("Error: packet pool mem alloc failed.\n");
>>                 exit(EXIT_FAILURE);
>>         }
>>
>> @@ -395,7 +398,7 @@ int main(int argc, char *argv[])
>>                                       ODP_CACHE_LINE_SIZE,
>>                                       ODP_BUFFER_TYPE_PACKET);
>>         if (pool == ODP_BUFFER_POOL_INVALID) {
>> -               ODP_ERR("Error: packet pool create failed.\n");
>> +               EXAMPLE_ERR("Error: packet pool create failed.\n");
>>                 exit(EXIT_FAILURE);
>>         }
>>         odp_buffer_pool_print(pool);
>> @@ -418,13 +421,13 @@ int main(int argc, char *argv[])
>>                 if (gbl_args->appl.mode == APPL_MODE_PKT_BURST) {
>>                         pktio = burst_mode_init_params(&gbl_args->thread[i], pool);
>>                         if (pktio == ODP_PKTIO_INVALID) {
>> -                               ODP_ERR("  for thread:%02i\n", i);
>> +                               EXAMPLE_ERR("  for thread:%02i\n", i);
>>                                 exit(EXIT_FAILURE);
>>                         }
>>                 } else { /* APPL_MODE_PKT_QUEUE */
>>                         pktio = queue_mode_init_params(&gbl_args->thread[i], pool);
>>                         if (pktio == ODP_PKTIO_INVALID) {
>> -                               ODP_ERR("  for thread:%02i\n", i);
>> +                               EXAMPLE_ERR("  for thread:%02i\n", i);
>>                                 exit(EXIT_FAILURE);
>>                         }
>>                 }
>> diff --git a/example/odp_example/Makefile.am b/example/odp_example/Makefile.am
>> index e6f23d0..95136e7 100644
>> --- a/example/odp_example/Makefile.am
>> +++ b/example/odp_example/Makefile.am
>> @@ -2,5 +2,6 @@ include $(top_srcdir)/example/Makefile.inc
>>
>>  bin_PROGRAMS = odp_example
>>  odp_example_LDFLAGS = $(AM_LDFLAGS) -static
>> +odp_example_CFLAGS = $(AM_CFLAGS) -I../
>>
>>  dist_odp_example_SOURCES = odp_example.c
>> diff --git a/example/odp_example/odp_example.c b/example/odp_example/odp_example.c
>> index 1ed4a0b..a674b77 100644
>> --- a/example/odp_example/odp_example.c
>> +++ b/example/odp_example/odp_example.c
>> @@ -13,6 +13,8 @@
>>  #include <string.h>
>>  #include <stdlib.h>
>>
>> +#include <example_debug.h>
>> +
>>  /* ODP main header */
>>  #include <odp.h>
>>
>> @@ -93,7 +95,7 @@ static int create_queue(int thr, odp_buffer_pool_t msg_pool, int prio)
>>         buf = odp_buffer_alloc(msg_pool);
>>
>>         if (!odp_buffer_is_valid(buf)) {
>> -               ODP_ERR("  [%i] msg_pool alloc failed\n", thr);
>> +               EXAMPLE_ERR("  [%i] msg_pool alloc failed\n", thr);
>>                 return -1;
>>         }
>>
>> @@ -103,12 +105,12 @@ static int create_queue(int thr, odp_buffer_pool_t msg_pool, int prio)
>>         queue = odp_queue_lookup(name);
>>
>>         if (queue == ODP_QUEUE_INVALID) {
>> -               ODP_ERR("  [%i] Queue %s lookup failed.\n", thr, name);
>> +               EXAMPLE_ERR("  [%i] Queue %s lookup failed.\n", thr, name);
>>                 return -1;
>>         }
>>
>>         if (odp_queue_enq(queue, buf)) {
>> -               ODP_ERR("  [%i] Queue enqueue failed.\n", thr);
>> +               EXAMPLE_ERR("  [%i] Queue enqueue failed.\n", thr);
>>                 return -1;
>>         }
>>
>> @@ -142,19 +144,20 @@ static int create_queues(int thr, odp_buffer_pool_t msg_pool, int prio)
>>                 queue = odp_queue_lookup(name);
>>
>>                 if (queue == ODP_QUEUE_INVALID) {
>> -                       ODP_ERR("  [%i] Queue %s lookup failed.\n", thr, name);
>> +                       EXAMPLE_ERR("  [%i] Queue %s lookup failed.\n", thr,
>> +                                   name);
>>                         return -1;
>>                 }
>>
>>                 buf = odp_buffer_alloc(msg_pool);
>>
>>                 if (!odp_buffer_is_valid(buf)) {
>> -                       ODP_ERR("  [%i] msg_pool alloc failed\n", thr);
>> +                       EXAMPLE_ERR("  [%i] msg_pool alloc failed\n", thr);
>>                         return -1;
>>                 }
>>
>>                 if (odp_queue_enq(queue, buf)) {
>> -                       ODP_ERR("  [%i] Queue enqueue failed.\n", thr);
>> +                       EXAMPLE_ERR("  [%i] Queue enqueue failed.\n", thr);
>>                         return -1;
>>                 }
>>         }
>> @@ -183,7 +186,7 @@ static int test_alloc_single(int thr, odp_buffer_pool_t pool)
>>                 temp_buf = odp_buffer_alloc(pool);
>>
>>                 if (!odp_buffer_is_valid(temp_buf)) {
>> -                       ODP_ERR("  [%i] alloc_single failed\n", thr);
>> +                       EXAMPLE_ERR("  [%i] alloc_single failed\n", thr);
>>                         return -1;
>>                 }
>>
>> @@ -221,7 +224,7 @@ static int test_alloc_multi(int thr, odp_buffer_pool_t pool)
>>                         temp_buf[j] = odp_buffer_alloc(pool);
>>
>>                         if (!odp_buffer_is_valid(temp_buf[j])) {
>> -                               ODP_ERR("  [%i] alloc_multi failed\n", thr);
>> +                               EXAMPLE_ERR("  [%i] alloc_multi failed\n", thr);
>>                                 return -1;
>>                         }
>>                 }
>> @@ -263,7 +266,7 @@ static int test_poll_queue(int thr, odp_buffer_pool_t msg_pool)
>>         buf = odp_buffer_alloc(msg_pool);
>>
>>         if (!odp_buffer_is_valid(buf)) {
>> -               ODP_ERR("  [%i] msg_pool alloc failed\n", thr);
>> +               EXAMPLE_ERR("  [%i] msg_pool alloc failed\n", thr);
>>                 return -1;
>>         }
>>
>> @@ -284,14 +287,14 @@ static int test_poll_queue(int thr, odp_buffer_pool_t msg_pool)
>>
>>         for (i = 0; i < QUEUE_ROUNDS; i++) {
>>                 if (odp_queue_enq(queue, buf)) {
>> -                       ODP_ERR("  [%i] Queue enqueue failed.\n", thr);
>> +                       EXAMPLE_ERR("  [%i] Queue enqueue failed.\n", thr);
>>                         return -1;
>>                 }
>>
>>                 buf = odp_queue_deq(queue);
>>
>>                 if (!odp_buffer_is_valid(buf)) {
>> -                       ODP_ERR("  [%i] Queue empty.\n", thr);
>> +                       EXAMPLE_ERR("  [%i] Queue empty.\n", thr);
>>                         return -1;
>>                 }
>>         }
>> @@ -339,7 +342,7 @@ static int test_schedule_one_single(const char *str, int thr,
>>                 buf = odp_schedule_one(&queue, ODP_SCHED_WAIT);
>>
>>                 if (odp_queue_enq(queue, buf)) {
>> -                       ODP_ERR("  [%i] Queue enqueue failed.\n", thr);
>> +                       EXAMPLE_ERR("  [%i] Queue enqueue failed.\n", thr);
>>                         return -1;
>>                 }
>>         }
>> @@ -399,7 +402,7 @@ static int test_schedule_one_many(const char *str, int thr,
>>                 buf = odp_schedule_one(&queue, ODP_SCHED_WAIT);
>>
>>                 if (odp_queue_enq(queue, buf)) {
>> -                       ODP_ERR("  [%i] Queue enqueue failed.\n", thr);
>> +                       EXAMPLE_ERR("  [%i] Queue enqueue failed.\n", thr);
>>                         return -1;
>>                 }
>>         }
>> @@ -456,7 +459,7 @@ static int test_schedule_single(const char *str, int thr,
>>                 buf = odp_schedule(&queue, ODP_SCHED_WAIT);
>>
>>                 if (odp_queue_enq(queue, buf)) {
>> -                       ODP_ERR("  [%i] Queue enqueue failed.\n", thr);
>> +                       EXAMPLE_ERR("  [%i] Queue enqueue failed.\n", thr);
>>                         return -1;
>>                 }
>>         }
>> @@ -475,7 +478,7 @@ static int test_schedule_single(const char *str, int thr,
>>                 tot++;
>>
>>                 if (odp_queue_enq(queue, buf)) {
>> -                       ODP_ERR("  [%i] Queue enqueue failed.\n", thr);
>> +                       EXAMPLE_ERR("  [%i] Queue enqueue failed.\n", thr);
>>                         return -1;
>>                 }
>>         }
>> @@ -534,7 +537,7 @@ static int test_schedule_many(const char *str, int thr,
>>                 buf = odp_schedule(&queue, ODP_SCHED_WAIT);
>>
>>                 if (odp_queue_enq(queue, buf)) {
>> -                       ODP_ERR("  [%i] Queue enqueue failed.\n", thr);
>> +                       EXAMPLE_ERR("  [%i] Queue enqueue failed.\n", thr);
>>                         return -1;
>>                 }
>>         }
>> @@ -553,7 +556,7 @@ static int test_schedule_many(const char *str, int thr,
>>                 tot++;
>>
>>                 if (odp_queue_enq(queue, buf)) {
>> -                       ODP_ERR("  [%i] Queue enqueue failed.\n", thr);
>> +                       EXAMPLE_ERR("  [%i] Queue enqueue failed.\n", thr);
>>                         return -1;
>>                 }
>>         }
>> @@ -611,7 +614,8 @@ static int test_schedule_multi(const char *str, int thr,
>>                 queue = odp_queue_lookup(name);
>>
>>                 if (queue == ODP_QUEUE_INVALID) {
>> -                       ODP_ERR("  [%i] Queue %s lookup failed.\n", thr, name);
>> +                       EXAMPLE_ERR("  [%i] Queue %s lookup failed.\n", thr,
>> +                                   name);
>>                         return -1;
>>                 }
>>
>> @@ -619,13 +623,14 @@ static int test_schedule_multi(const char *str, int thr,
>>                         buf[j] = odp_buffer_alloc(msg_pool);
>>
>>                         if (!odp_buffer_is_valid(buf[j])) {
>> -                               ODP_ERR("  [%i] msg_pool alloc failed\n", thr);
>> +                               EXAMPLE_ERR("  [%i] msg_pool alloc failed\n",
>> +                                           thr);
>>                                 return -1;
>>                         }
>>                 }
>>
>>                 if (odp_queue_enq_multi(queue, buf, MULTI_BUFS_MAX)) {
>> -                       ODP_ERR("  [%i] Queue enqueue failed.\n", thr);
>> +                       EXAMPLE_ERR("  [%i] Queue enqueue failed.\n", thr);
>>                         return -1;
>>                 }
>>         }
>> @@ -640,7 +645,7 @@ static int test_schedule_multi(const char *str, int thr,
>>                 tot += num;
>>
>>                 if (odp_queue_enq_multi(queue, buf, num)) {
>> -                       ODP_ERR("  [%i] Queue enqueue failed.\n", thr);
>> +                       EXAMPLE_ERR("  [%i] Queue enqueue failed.\n", thr);
>>                         return -1;
>>                 }
>>         }
>> @@ -658,7 +663,7 @@ static int test_schedule_multi(const char *str, int thr,
>>                 tot += num;
>>
>>                 if (odp_queue_enq_multi(queue, buf, num)) {
>> -                       ODP_ERR("  [%i] Queue enqueue failed.\n", thr);
>> +                       EXAMPLE_ERR("  [%i] Queue enqueue failed.\n", thr);
>>                         return -1;
>>                 }
>>         }
>> @@ -710,7 +715,7 @@ static void *run_thread(void *arg)
>>         globals = odp_shm_addr(shm);
>>
>>         if (globals == NULL) {
>> -               ODP_ERR("Shared mem lookup failed\n");
>> +               EXAMPLE_ERR("Shared mem lookup failed\n");
>>                 return NULL;
>>         }
>>
>> @@ -730,7 +735,7 @@ static void *run_thread(void *arg)
>>         msg_pool = odp_buffer_pool_lookup("msg_pool");
>>
>>         if (msg_pool == ODP_BUFFER_POOL_INVALID) {
>> -               ODP_ERR("  [%i] msg_pool not found\n", thr);
>> +               EXAMPLE_ERR("  [%i] msg_pool not found\n", thr);
>>                 return NULL;
>>         }
>>
>> @@ -830,7 +835,7 @@ static void test_time(void)
>>         double err;
>>
>>         if (clock_gettime(CLOCK_MONOTONIC, &tp2)) {
>> -               ODP_ERR("clock_gettime failed.\n");
>> +               EXAMPLE_ERR("clock_gettime failed.\n");
>>                 return;
>>         }
>>
>> @@ -838,7 +843,7 @@ static void test_time(void)
>>
>>         do {
>>                 if (clock_gettime(CLOCK_MONOTONIC, &tp1)) {
>> -                       ODP_ERR("clock_gettime failed.\n");
>> +                       EXAMPLE_ERR("clock_gettime failed.\n");
>>                         return;
>>                 }
>>
>> @@ -848,7 +853,7 @@ static void test_time(void)
>>
>>         do {
>>                 if (clock_gettime(CLOCK_MONOTONIC, &tp2)) {
>> -                       ODP_ERR("clock_gettime failed.\n");
>> +                       EXAMPLE_ERR("clock_gettime failed.\n");
>>                         return;
>>                 }
>>
>> @@ -966,7 +971,7 @@ int main(int argc, char *argv[])
>>
>>         /* ODP global init */
>>         if (odp_init_global(NULL, NULL)) {
>> -               ODP_ERR("ODP global init failed.\n");
>> +               EXAMPLE_ERR("ODP global init failed.\n");
>>                 return -1;
>>         }
>>
>> @@ -975,7 +980,7 @@ int main(int argc, char *argv[])
>>          * setting up resources for worker threads.
>>          */
>>         if (odp_init_local()) {
>> -               ODP_ERR("ODP global init failed.\n");
>> +               EXAMPLE_ERR("ODP global init failed.\n");
>>                 return -1;
>>         }
>>
>> @@ -1023,7 +1028,7 @@ int main(int argc, char *argv[])
>>         globals = odp_shm_addr(shm);
>>
>>         if (globals == NULL) {
>> -               ODP_ERR("Shared memory reserve failed.\n");
>> +               EXAMPLE_ERR("Shared memory reserve failed.\n");
>>                 return -1;
>>         }
>>
>> @@ -1038,7 +1043,7 @@ int main(int argc, char *argv[])
>>         pool_base = odp_shm_addr(shm);
>>
>>         if (pool_base == NULL) {
>> -               ODP_ERR("Shared memory reserve failed.\n");
>> +               EXAMPLE_ERR("Shared memory reserve failed.\n");
>>                 return -1;
>>         }
>>
>> @@ -1047,7 +1052,7 @@ int main(int argc, char *argv[])
>>                                       ODP_CACHE_LINE_SIZE, ODP_BUFFER_TYPE_RAW);
>>
>>         if (pool == ODP_BUFFER_POOL_INVALID) {
>> -               ODP_ERR("Pool create failed.\n");
>> +               EXAMPLE_ERR("Pool create failed.\n");
>>                 return -1;
>>         }
>>
>> @@ -1059,7 +1064,7 @@ int main(int argc, char *argv[])
>>         queue = odp_queue_create("poll_queue", ODP_QUEUE_TYPE_POLL, NULL);
>>
>>         if (queue == ODP_QUEUE_INVALID) {
>> -               ODP_ERR("Poll queue create failed.\n");
>> +               EXAMPLE_ERR("Poll queue create failed.\n");
>>                 return -1;
>>         }
>>
>> @@ -1091,7 +1096,7 @@ int main(int argc, char *argv[])
>>                                                  &param);
>>
>>                         if (queue == ODP_QUEUE_INVALID) {
>> -                               ODP_ERR("Schedule queue create failed.\n");
>> +                               EXAMPLE_ERR("Schedule queue create failed.\n");
>>                                 return -1;
>>                         }
>>                 }
>> @@ -1111,7 +1116,7 @@ int main(int argc, char *argv[])
>>                                                 first_core);
>>
>>                 if (ret < 0) {
>> -                       ODP_ERR("Fork workers failed %i\n", ret);
>> +                       EXAMPLE_ERR("Fork workers failed %i\n", ret);
>>                         return -1;
>>                 }
>>
>> diff --git a/example/packet/Makefile.am b/example/packet/Makefile.am
>> index 603a1ab..da5fc45 100644
>> --- a/example/packet/Makefile.am
>> +++ b/example/packet/Makefile.am
>> @@ -2,5 +2,6 @@ include $(top_srcdir)/example/Makefile.inc
>>
>>  bin_PROGRAMS = odp_pktio
>>  odp_pktio_LDFLAGS = $(AM_LDFLAGS) -static
>> +odp_pktio_CFLAGS = $(AM_CFLAGS) -I../
>>
>>  dist_odp_pktio_SOURCES = odp_pktio.c
>> diff --git a/example/packet/odp_pktio.c b/example/packet/odp_pktio.c
>> index 2cf3f0d..3e08b34 100644
>> --- a/example/packet/odp_pktio.c
>> +++ b/example/packet/odp_pktio.c
>> @@ -15,6 +15,8 @@
>>  #include <getopt.h>
>>  #include <unistd.h>
>>
>> +#include <example_debug.h>
>> +
>>  #include <odp.h>
>>  #include <odph_linux.h>
>>  #include <odph_packet.h>
>> @@ -130,14 +132,14 @@ static void *pktio_queue_thread(void *arg)
>>         /* Lookup the packet pool */
>>         pkt_pool = odp_buffer_pool_lookup("packet_pool");
>>         if (pkt_pool == ODP_BUFFER_POOL_INVALID || pkt_pool != thr_args->pool) {
>> -               ODP_ERR("  [%02i] Error: pkt_pool not found\n", thr);
>> +               EXAMPLE_ERR("  [%02i] Error: pkt_pool not found\n", thr);
>>                 return NULL;
>>         }
>>
>>         /* Open a packet IO instance for this thread */
>>         pktio = odp_pktio_open(thr_args->pktio_dev, pkt_pool);
>>         if (pktio == ODP_PKTIO_INVALID) {
>> -               ODP_ERR("  [%02i] Error: pktio create failed\n", thr);
>> +               EXAMPLE_ERR("  [%02i] Error: pktio create failed\n", thr);
>>                 return NULL;
>>         }
>>
>> @@ -153,13 +155,14 @@ static void *pktio_queue_thread(void *arg)
>>
>>         inq_def = odp_queue_create(inq_name, ODP_QUEUE_TYPE_PKTIN, &qparam);
>>         if (inq_def == ODP_QUEUE_INVALID) {
>> -               ODP_ERR("  [%02i] Error: pktio queue creation failed\n", thr);
>> +               EXAMPLE_ERR("  [%02i] Error: pktio queue creation failed\n",
>> +                           thr);
>>                 return NULL;
>>         }
>>
>>         ret = odp_pktio_inq_setdef(pktio, inq_def);
>>         if (ret != 0) {
>> -               ODP_ERR("  [%02i] Error: default input-Q setup\n", thr);
>> +               EXAMPLE_ERR("  [%02i] Error: default input-Q setup\n", thr);
>>                 return NULL;
>>         }
>>
>> @@ -185,7 +188,7 @@ static void *pktio_queue_thread(void *arg)
>>
>>                 /* Drop packets with errors */
>>                 if (odp_unlikely(drop_err_pkts(&pkt, 1) == 0)) {
>> -                       ODP_ERR("Drop frame - err_cnt:%lu\n", ++err_cnt);
>> +                       EXAMPLE_ERR("Drop frame - err_cnt:%lu\n", ++err_cnt);
>>                         continue;
>>                 }
>>
>> @@ -193,7 +196,8 @@ static void *pktio_queue_thread(void *arg)
>>                 outq_def = odp_pktio_outq_getdef(pktio_tmp);
>>
>>                 if (outq_def == ODP_QUEUE_INVALID) {
>> -                       ODP_ERR("  [%02i] Error: def output-Q query\n", thr);
>> +                       EXAMPLE_ERR("  [%02i] Error: def output-Q query\n",
>> +                                   thr);
>>                         return NULL;
>>                 }
>>
>> @@ -239,14 +243,14 @@ static void *pktio_ifburst_thread(void *arg)
>>         /* Lookup the packet pool */
>>         pkt_pool = odp_buffer_pool_lookup("packet_pool");
>>         if (pkt_pool == ODP_BUFFER_POOL_INVALID || pkt_pool != thr_args->pool) {
>> -               ODP_ERR("  [%02i] Error: pkt_pool not found\n", thr);
>> +               EXAMPLE_ERR("  [%02i] Error: pkt_pool not found\n", thr);
>>                 return NULL;
>>         }
>>
>>         /* Open a packet IO instance for this thread */
>>         pktio = odp_pktio_open(thr_args->pktio_dev, pkt_pool);
>>         if (pktio == ODP_PKTIO_INVALID) {
>> -               ODP_ERR("  [%02i] Error: pktio create failed.\n", thr);
>> +               EXAMPLE_ERR("  [%02i] Error: pktio create failed.\n", thr);
>>                 return NULL;
>>         }
>>
>> @@ -266,8 +270,8 @@ static void *pktio_ifburst_thread(void *arg)
>>                         }
>>
>>                         if (odp_unlikely(pkts_ok != pkts))
>> -                               ODP_ERR("Dropped frames:%u - err_cnt:%lu\n",
>> -                                       pkts-pkts_ok, ++err_cnt);
>> +                               EXAMPLE_ERR("Dropped frames:%u - err_cnt:%lu\n",
>> +                                           pkts-pkts_ok, ++err_cnt);
>>
>>                         /* Print packet counts every once in a while */
>>                         tmp += pkts_ok;
>> @@ -300,13 +304,13 @@ int main(int argc, char *argv[])
>>
>>         /* Init ODP before calling anything else */
>>         if (odp_init_global(NULL, NULL)) {
>> -               ODP_ERR("Error: ODP global init failed.\n");
>> +               EXAMPLE_ERR("Error: ODP global init failed.\n");
>>                 exit(EXIT_FAILURE);
>>         }
>>
>>         /* Init this thread */
>>         if (odp_init_local()) {
>> -               ODP_ERR("Error: ODP local init failed.\n");
>> +               EXAMPLE_ERR("Error: ODP local init failed.\n");
>>                 exit(EXIT_FAILURE);
>>         }
>>
>> @@ -316,7 +320,7 @@ int main(int argc, char *argv[])
>>         args = odp_shm_addr(shm);
>>
>>         if (args == NULL) {
>> -               ODP_ERR("Error: shared mem alloc failed.\n");
>> +               EXAMPLE_ERR("Error: shared mem alloc failed.\n");
>>                 exit(EXIT_FAILURE);
>>         }
>>         memset(args, 0, sizeof(*args));
>> @@ -355,7 +359,7 @@ int main(int argc, char *argv[])
>>         pool_base = odp_shm_addr(shm);
>>
>>         if (pool_base == NULL) {
>> -               ODP_ERR("Error: packet pool mem alloc failed.\n");
>> +               EXAMPLE_ERR("Error: packet pool mem alloc failed.\n");
>>                 exit(EXIT_FAILURE);
>>         }
>>
>> @@ -365,7 +369,7 @@ int main(int argc, char *argv[])
>>                                       ODP_CACHE_LINE_SIZE,
>>                                       ODP_BUFFER_TYPE_PACKET);
>>         if (pool == ODP_BUFFER_POOL_INVALID) {
>> -               ODP_ERR("Error: packet pool create failed.\n");
>> +               EXAMPLE_ERR("Error: packet pool create failed.\n");
>>                 exit(EXIT_FAILURE);
>>         }
>>         odp_buffer_pool_print(pool);
>> diff --git a/example/timer/Makefile.am b/example/timer/Makefile.am
>> index 6229f13..dffd4eb 100644
>> --- a/example/timer/Makefile.am
>> +++ b/example/timer/Makefile.am
>> @@ -2,5 +2,6 @@ include $(top_srcdir)/example/Makefile.inc
>>
>>  bin_PROGRAMS = odp_timer_test
>>  odp_timer_test_LDFLAGS = $(AM_LDFLAGS) -static
>> +odp_timer_test_CFLAGS = $(AM_CFLAGS) -I../
>>
>>  dist_odp_timer_test_SOURCES = odp_timer_test.c
>> diff --git a/example/timer/odp_timer_test.c b/example/timer/odp_timer_test.c
>> index 78b2ae2..04b4d89 100644
>> --- a/example/timer/odp_timer_test.c
>> +++ b/example/timer/odp_timer_test.c
>> @@ -13,6 +13,8 @@
>>  #include <string.h>
>>  #include <stdlib.h>
>>
>> +#include <example_debug.h>
>> +
>>  /* ODP main header */
>>  #include <odp.h>
>>
>> @@ -55,25 +57,25 @@ static void test_abs_timeouts(int thr, test_args_t *args)
>>         odp_buffer_t buf;
>>         int num;
>>
>> -       ODP_DBG("  [%i] test_timeouts\n", thr);
>> +       EXAMPLE_DBG("  [%i] test_timeouts\n", thr);
>>
>>         queue = odp_queue_lookup("timer_queue");
>>
>>         period_ns = args->period_us*ODP_TIME_USEC;
>>         period    = odp_timer_ns_to_tick(test_timer, period_ns);
>>
>> -       ODP_DBG("  [%i] period %"PRIu64" ticks,  %"PRIu64" ns\n", thr,
>> -               period, period_ns);
>> +       EXAMPLE_DBG("  [%i] period %"PRIu64" ticks,  %"PRIu64" ns\n", thr,
>> +                   period, period_ns);
>>
>>         tick = odp_timer_current_tick(test_timer);
>>
>> -       ODP_DBG("  [%i] current tick %"PRIu64"\n", thr, tick);
>> +       EXAMPLE_DBG("  [%i] current tick %"PRIu64"\n", thr, tick);
>>
>>         tick += period;
>>
>>         if (odp_timer_absolute_tmo(test_timer, tick, queue, ODP_BUFFER_INVALID)
>>             == ODP_TIMER_TMO_INVALID){
>> -               ODP_DBG("Timeout request failed\n");
>> +               EXAMPLE_DBG("Timeout request failed\n");
>>                 return;
>>         }
>>
>> @@ -87,7 +89,7 @@ static void test_abs_timeouts(int thr, test_args_t *args)
>>                 tmo  = odp_timeout_from_buffer(buf);
>>                 tick = odp_timeout_tick(tmo);
>>
>> -               ODP_DBG("  [%i] timeout, tick %"PRIu64"\n", thr, tick);
>> +               EXAMPLE_DBG("  [%i] timeout, tick %"PRIu64"\n", thr, tick);
>>
>>                 odp_buffer_free(buf);
>>
>> @@ -131,7 +133,7 @@ static void *run_thread(void *ptr)
>>         msg_pool = odp_buffer_pool_lookup("msg_pool");
>>
>>         if (msg_pool == ODP_BUFFER_POOL_INVALID) {
>> -               ODP_ERR("  [%i] msg_pool not found\n", thr);
>> +               EXAMPLE_ERR("  [%i] msg_pool not found\n", thr);
>>                 return NULL;
>>         }
>>
>> @@ -319,7 +321,7 @@ int main(int argc, char *argv[])
>>                                       ODP_BUFFER_TYPE_TIMEOUT);
>>
>>         if (pool == ODP_BUFFER_POOL_INVALID) {
>> -               ODP_ERR("Pool create failed.\n");
>> +               EXAMPLE_ERR("Pool create failed.\n");
>>                 return -1;
>>         }
>>
>> @@ -334,7 +336,7 @@ int main(int argc, char *argv[])
>>         queue = odp_queue_create("timer_queue", ODP_QUEUE_TYPE_SCHED, &param);
>>
>>         if (queue == ODP_QUEUE_INVALID) {
>> -               ODP_ERR("Timer queue create failed.\n");
>> +               EXAMPLE_ERR("Timer queue create failed.\n");
>>                 return -1;
>>         }
>>
>> @@ -344,7 +346,7 @@ int main(int argc, char *argv[])
>>                                       args.max_us*ODP_TIME_USEC);
>>
>>         if (test_timer == ODP_TIMER_INVALID) {
>> -               ODP_ERR("Timer create failed.\n");
>> +               EXAMPLE_ERR("Timer create failed.\n");
>>                 return -1;
>>         }
>>
>> --
>> 2.1.0
>>
>>
>> _______________________________________________
>> lng-odp mailing list
>> lng-odp@lists.linaro.org
>> http://lists.linaro.org/mailman/listinfo/lng-odp
diff mbox

Patch

diff --git a/example/example_debug.h b/example/example_debug.h
new file mode 100644
index 0000000..b83667c
--- /dev/null
+++ b/example/example_debug.h
@@ -0,0 +1,88 @@ 
+/* Copyright (c) 2014, Linaro Limited
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier:     BSD-3-Clause
+ */
+/**
+ * @file
+ *
+ * example debug
+ */
+
+#ifndef EXAMPLE_DEBUG_H_
+#define EXAMPLE_DEBUG_H_
+
+#include <stdio.h>
+#include <stdlib.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#ifndef EXAMPLE_DEBUG_PRINT
+#define EXAMPLE_DEBUG_PRINT 1
+#endif
+
+/**
+ * log level.
+ */
+typedef enum example_log_level {
+	EXAMPLE_LOG_DBG,
+	EXAMPLE_LOG_ERR,
+	EXAMPLE_LOG_ABORT
+} example_log_level_e;
+
+/**
+ * default LOG macro.
+ */
+#define EXAMPLE_LOG(level, fmt, ...) \
+do { \
+	switch (level) { \
+	case EXAMPLE_LOG_ERR: \
+		fprintf(stderr, "%s:%d:%s():" fmt, __FILE__, \
+		__LINE__, __func__, ##__VA_ARGS__); \
+		break; \
+	case EXAMPLE_LOG_DBG: \
+		if (EXAMPLE_DEBUG_PRINT == 1) \
+			fprintf(stderr, "%s:%d:%s():" fmt, __FILE__, \
+			__LINE__, __func__, ##__VA_ARGS__); \
+		break; \
+	case EXAMPLE_LOG_ABORT: \
+		fprintf(stderr, "%s:%d:%s(): " fmt, __FILE__, \
+		__LINE__, __func__, ##__VA_ARGS__); \
+		abort(); \
+		break; \
+	default: \
+		fprintf(stderr, "Unknown LOG level"); \
+		break;\
+	} \
+} while (0)
+
+/**
+ * Debug printing macro, which prints output when DEBUG flag is set.
+ */
+#define EXAMPLE_DBG(fmt, ...) \
+		EXAMPLE_LOG(EXAMPLE_LOG_DBG, fmt, ##__VA_ARGS__)
+
+/**
+ * Print output to stderr (file, line and function).
+ */
+#define EXAMPLE_ERR(fmt, ...) \
+		EXAMPLE_LOG(EXAMPLE_LOG_ERR, fmt, ##__VA_ARGS__)
+
+/**
+ * Print output to stderr (file, line and function),
+ * then abort.
+ */
+#define EXAMPLE_ABORT(fmt, ...) \
+		EXAMPLE_LOG(EXAMPLE_LOG_ABORT, fmt, ##__VA_ARGS__)
+
+/**
+ * @}
+ */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/example/generator/Makefile.am b/example/generator/Makefile.am
index 5b3d55a..394985f 100644
--- a/example/generator/Makefile.am
+++ b/example/generator/Makefile.am
@@ -2,5 +2,6 @@  include $(top_srcdir)/example/Makefile.inc
 
 bin_PROGRAMS = odp_generator
 odp_generator_LDFLAGS = $(AM_LDFLAGS) -static
+odp_generator_CFLAGS = $(AM_CFLAGS) -I../
 
 dist_odp_generator_SOURCES = odp_generator.c
diff --git a/example/generator/odp_generator.c b/example/generator/odp_generator.c
index ffa5e62..e2e0ba4 100644
--- a/example/generator/odp_generator.c
+++ b/example/generator/odp_generator.c
@@ -16,6 +16,8 @@ 
 #include <unistd.h>
 #include <sys/time.h>
 
+#include <example_debug.h>
+
 #include <odp.h>
 
 #include <odph_linux.h>
@@ -55,7 +57,8 @@  typedef struct {
 	int number;		/**< packets number to be sent */
 	int payload;		/**< data len */
 	int timeout;		/**< wait time */
-	int interval;		/**< wait interval ms between sending each packet */
+	int interval;		/**< wait interval ms between sending
+				     each packet */
 } appl_args_t;
 
 /**
@@ -303,13 +306,13 @@  static void *gen_send_thread(void *arg)
 	/* Open a packet IO instance for this thread */
 	pktio = odp_pktio_open(thr_args->pktio_dev, thr_args->pool);
 	if (pktio == ODP_PKTIO_INVALID) {
-		ODP_ERR("  [%02i] Error: pktio create failed\n", thr);
+		EXAMPLE_ERR("  [%02i] Error: pktio create failed\n", thr);
 		return NULL;
 	}
 
 	outq_def = odp_pktio_outq_getdef(pktio);
 	if (outq_def == ODP_QUEUE_INVALID) {
-		ODP_ERR("  [%02i] Error: def output-Q query\n", thr);
+		EXAMPLE_ERR("  [%02i] Error: def output-Q query\n", thr);
 		return NULL;
 	}
 
@@ -318,7 +321,7 @@  static void *gen_send_thread(void *arg)
 		int err;
 		buf = odp_buffer_alloc(thr_args->pool);
 		if (!odp_buffer_is_valid(buf)) {
-			ODP_ERR("  [%2i] alloc_single failed\n", thr);
+			EXAMPLE_ERR("  [%2i] alloc_single failed\n", thr);
 			return NULL;
 		}
 
@@ -329,7 +332,7 @@  static void *gen_send_thread(void *arg)
 
 		err = odp_queue_enq(outq_def, buf);
 		if (err != 0) {
-			ODP_ERR("  [%02i] send pkt err!\n", thr);
+			EXAMPLE_ERR("  [%02i] send pkt err!\n", thr);
 			return NULL;
 		}
 
@@ -463,7 +466,7 @@  static void *gen_recv_thread(void *arg)
 	/* Open a packet IO instance for this thread */
 	pktio = odp_pktio_open(thr_args->pktio_dev, thr_args->pool);
 	if (pktio == ODP_PKTIO_INVALID) {
-		ODP_ERR("  [%02i] Error: pktio create failed\n", thr);
+		EXAMPLE_ERR("  [%02i] Error: pktio create failed\n", thr);
 		return NULL;
 	}
 
@@ -475,13 +478,14 @@  static void *gen_recv_thread(void *arg)
 	inq_name[ODP_QUEUE_NAME_LEN - 1] = '\0';
 	inq_def = odp_queue_create(inq_name, ODP_QUEUE_TYPE_PKTIN, &qparam);
 	if (inq_def == ODP_QUEUE_INVALID) {
-		ODP_ERR("  [%02i] Error: pktio queue creation failed\n", thr);
+		EXAMPLE_ERR("  [%02i] Error: pktio queue creation failed\n",
+			    thr);
 		return NULL;
 	}
 
 	ret = odp_pktio_inq_setdef(pktio, inq_def);
 	if (ret != 0) {
-		ODP_ERR("  [%02i] Error: default input-Q setup\n", thr);
+		EXAMPLE_ERR("  [%02i] Error: default input-Q setup\n", thr);
 		return NULL;
 	}
 
@@ -520,12 +524,12 @@  int main(int argc, char *argv[])
 
 	/* Init ODP before calling anything else */
 	if (odp_init_global(NULL, NULL)) {
-		ODP_ERR("Error: ODP global init failed.\n");
+		EXAMPLE_ERR("Error: ODP global init failed.\n");
 		exit(EXIT_FAILURE);
 	}
 
 	if (odp_init_local()) {
-		ODP_ERR("Error: ODP local init failed.\n");
+		EXAMPLE_ERR("Error: ODP local init failed.\n");
 		exit(EXIT_FAILURE);
 	}
 
@@ -541,7 +545,7 @@  int main(int argc, char *argv[])
 	args = odp_shm_addr(shm);
 
 	if (args == NULL) {
-		ODP_ERR("Error: shared mem alloc failed.\n");
+		EXAMPLE_ERR("Error: shared mem alloc failed.\n");
 		exit(EXIT_FAILURE);
 	}
 	memset(args, 0, sizeof(*args));
@@ -584,7 +588,7 @@  int main(int argc, char *argv[])
 	pool_base = odp_shm_addr(shm);
 
 	if (pool_base == NULL) {
-		ODP_ERR("Error: packet pool mem alloc failed.\n");
+		EXAMPLE_ERR("Error: packet pool mem alloc failed.\n");
 		exit(EXIT_FAILURE);
 	}
 
@@ -594,7 +598,7 @@  int main(int argc, char *argv[])
 				      ODP_CACHE_LINE_SIZE,
 				      ODP_BUFFER_TYPE_PACKET);
 	if (pool == ODP_BUFFER_POOL_INVALID) {
-		ODP_ERR("Error: packet pool create failed.\n");
+		EXAMPLE_ERR("Error: packet pool create failed.\n");
 		exit(EXIT_FAILURE);
 	}
 	odp_buffer_pool_print(pool);
@@ -636,7 +640,7 @@  int main(int argc, char *argv[])
 			} else if (args->appl.mode == APPL_MODE_RCV) {
 				thr_run_func = gen_recv_thread;
 			} else {
-				ODP_ERR("ERR MODE\n");
+				EXAMPLE_ERR("ERR MODE\n");
 				exit(EXIT_FAILURE);
 			}
 			/*
@@ -754,35 +758,35 @@  static void parse_args(int argc, char *argv[], appl_args_t *appl_args)
 			} else if (optarg[0] == 'r') {
 				appl_args->mode = APPL_MODE_RCV;
 			} else {
-				ODP_ERR("wrong mode!\n");
+				EXAMPLE_ERR("wrong mode!\n");
 				exit(EXIT_FAILURE);
 			}
 			break;
 
 		case 'a':
 			if (scan_mac(optarg, &appl_args->srcmac) != 1) {
-				ODP_ERR("wrong src mac:%s\n", optarg);
+				EXAMPLE_ERR("wrong src mac:%s\n", optarg);
 				exit(EXIT_FAILURE);
 			}
 			break;
 
 		case 'b':
 			if (scan_mac(optarg, &appl_args->dstmac) != 1) {
-				ODP_ERR("wrong dst mac:%s\n", optarg);
+				EXAMPLE_ERR("wrong dst mac:%s\n", optarg);
 				exit(EXIT_FAILURE);
 			}
 			break;
 
 		case 'c':
 			if (scan_ip(optarg, &appl_args->srcip) != 1) {
-				ODP_ERR("wrong src ip:%s\n", optarg);
+				EXAMPLE_ERR("wrong src ip:%s\n", optarg);
 				exit(EXIT_FAILURE);
 			}
 			break;
 
 		case 'd':
 			if (scan_ip(optarg, &appl_args->dstip) != 1) {
-				ODP_ERR("wrong dst ip:%s\n", optarg);
+				EXAMPLE_ERR("wrong dst ip:%s\n", optarg);
 				exit(EXIT_FAILURE);
 			}
 			break;
@@ -802,7 +806,7 @@  static void parse_args(int argc, char *argv[], appl_args_t *appl_args)
 		case 'i':
 			appl_args->interval = atoi(optarg);
 			if (appl_args->interval <= 200 && geteuid() != 0) {
-				ODP_ERR("should be root user\n");
+				EXAMPLE_ERR("should be root user\n");
 				exit(EXIT_FAILURE);
 			}
 			break;
diff --git a/example/ipsec/Makefile.am b/example/ipsec/Makefile.am
index ac0949e..b4ef0cb 100644
--- a/example/ipsec/Makefile.am
+++ b/example/ipsec/Makefile.am
@@ -2,6 +2,7 @@  include $(top_srcdir)/example/Makefile.inc
 
 bin_PROGRAMS = odp_ipsec
 odp_ipsec_LDFLAGS = $(AM_LDFLAGS) -static
+odp_ipsec_CFLAGS = $(AM_CFLAGS) -I../
 
 dist_odp_ipsec_SOURCES = odp_ipsec.c \
 			 odp_ipsec_sa_db.c \
diff --git a/example/ipsec/odp_ipsec.c b/example/ipsec/odp_ipsec.c
index da6c48e..709855c 100644
--- a/example/ipsec/odp_ipsec.c
+++ b/example/ipsec/odp_ipsec.c
@@ -15,6 +15,8 @@ 
 #include <getopt.h>
 #include <unistd.h>
 
+#include <example_debug.h>
+
 #include <odp.h>
 
 #include <odph_linux.h>
@@ -234,7 +236,7 @@  int query_mac_address(char *intf, uint8_t *src_mac)
 	/* Get a socket descriptor */
 	sd = socket(PF_PACKET, SOCK_RAW, htons(ETH_P_ALL));
 	if (sd < 0) {
-		ODP_ERR("Error: socket() failed for %s\n", intf);
+		EXAMPLE_ERR("Error: socket() failed for %s\n", intf);
 		return -1;
 	}
 
@@ -243,7 +245,7 @@  int query_mac_address(char *intf, uint8_t *src_mac)
 	snprintf(ifr.ifr_name, sizeof(ifr.ifr_name), "%s", intf);
 	if (ioctl(sd, SIOCGIFHWADDR, &ifr) < 0) {
 		close(sd);
-		ODP_ERR("Error: ioctl() failed for %s\n", intf);
+		EXAMPLE_ERR("Error: ioctl() failed for %s\n", intf);
 		return -1;
 	}
 	memcpy(src_mac, ifr.ifr_hwaddr.sa_data, ODPH_ETHADDR_LEN);
@@ -382,7 +384,7 @@  void ipsec_init_pre(void)
 				   ODP_QUEUE_TYPE_SCHED,
 				   &qparam);
 	if (ODP_QUEUE_INVALID == completionq) {
-		ODP_ERR("Error: completion queue creation failed\n");
+		EXAMPLE_ERR("Error: completion queue creation failed\n");
 		exit(EXIT_FAILURE);
 	}
 
@@ -394,7 +396,7 @@  void ipsec_init_pre(void)
 			       ODP_QUEUE_TYPE_SCHED,
 			       &qparam);
 	if (ODP_QUEUE_INVALID == seqnumq) {
-		ODP_ERR("Error: sequence number queue creation failed\n");
+		EXAMPLE_ERR("Error: sequence number queue creation failed\n");
 		exit(EXIT_FAILURE);
 	}
 
@@ -411,7 +413,7 @@  void ipsec_init_pre(void)
 					  ODP_BUFFER_TYPE_PACKET);
 
 	if (ODP_BUFFER_POOL_INVALID == out_pool) {
-		ODP_ERR("Error: message pool create failed.\n");
+		EXAMPLE_ERR("Error: message pool create failed.\n");
 		exit(EXIT_FAILURE);
 	}
 
@@ -454,7 +456,8 @@  void ipsec_init_post(crypto_api_mode_e api_mode)
 						     entry->input,
 						     completionq,
 						     out_pool)) {
-				ODP_ERR("Error: IPSec cache entry failed.\n");
+				EXAMPLE_ERR("Error: IPSec cache entry failed.\n"
+						);
 				exit(EXIT_FAILURE);
 			}
 		} else {
@@ -487,7 +490,7 @@  void initialize_loop(char *intf)
 	/* Derive loopback interface index */
 	idx = loop_if_index(intf);
 	if (idx < 0) {
-		ODP_ERR("Error: loopback \"%s\" invalid\n", intf);
+		EXAMPLE_ERR("Error: loopback \"%s\" invalid\n", intf);
 		exit(EXIT_FAILURE);
 	}
 
@@ -500,7 +503,8 @@  void initialize_loop(char *intf)
 
 	inq_def = QUEUE_CREATE(queue_name, ODP_QUEUE_TYPE_SCHED, &qparam);
 	if (ODP_QUEUE_INVALID == inq_def) {
-		ODP_ERR("Error: input queue creation failed for %s\n", intf);
+		EXAMPLE_ERR("Error: input queue creation failed for %s\n",
+			    intf);
 		exit(EXIT_FAILURE);
 	}
 	/* Create output queue */
@@ -512,7 +516,8 @@  void initialize_loop(char *intf)
 
 	outq_def = QUEUE_CREATE(queue_name, ODP_QUEUE_TYPE_POLL, &qparam);
 	if (ODP_QUEUE_INVALID == outq_def) {
-		ODP_ERR("Error: output queue creation failed for %s\n", intf);
+		EXAMPLE_ERR("Error: output queue creation failed for %s\n",
+			    intf);
 		exit(EXIT_FAILURE);
 	}
 
@@ -556,7 +561,7 @@  void initialize_intf(char *intf)
 	 */
 	pktio = odp_pktio_open(intf, pkt_pool);
 	if (ODP_PKTIO_INVALID == pktio) {
-		ODP_ERR("Error: pktio create failed for %s\n", intf);
+		EXAMPLE_ERR("Error: pktio create failed for %s\n", intf);
 		exit(EXIT_FAILURE);
 	}
 	outq_def = odp_pktio_outq_getdef(pktio);
@@ -573,13 +578,14 @@  void initialize_intf(char *intf)
 
 	inq_def = QUEUE_CREATE(inq_name, ODP_QUEUE_TYPE_PKTIN, &qparam);
 	if (ODP_QUEUE_INVALID == inq_def) {
-		ODP_ERR("Error: pktio queue creation failed for %s\n", intf);
+		EXAMPLE_ERR("Error: pktio queue creation failed for %s\n",
+			    intf);
 		exit(EXIT_FAILURE);
 	}
 
 	ret = odp_pktio_inq_setdef(pktio, inq_def);
 	if (ret) {
-		ODP_ERR("Error: default input-Q setup for %s\n", intf);
+		EXAMPLE_ERR("Error: default input-Q setup for %s\n", intf);
 		exit(EXIT_FAILURE);
 	}
 
@@ -590,7 +596,8 @@  void initialize_intf(char *intf)
 	ret = odp_pktio_get_mac_addr(pktio, src_mac);
 #endif
 	if (ret) {
-		ODP_ERR("Error: failed during MAC address get for %s\n", intf);
+		EXAMPLE_ERR("Error: failed during MAC address get for %s\n",
+			    intf);
 		exit(EXIT_FAILURE);
 	}
 
@@ -1176,13 +1183,13 @@  main(int argc, char *argv[])
 
 	/* Init ODP before calling anything else */
 	if (odp_init_global(NULL, NULL)) {
-		ODP_ERR("Error: ODP global init failed.\n");
+		EXAMPLE_ERR("Error: ODP global init failed.\n");
 		exit(EXIT_FAILURE);
 	}
 
 	/* Init this thread */
 	if (odp_init_local()) {
-		ODP_ERR("Error: ODP local init failed.\n");
+		EXAMPLE_ERR("Error: ODP local init failed.\n");
 		exit(EXIT_FAILURE);
 	}
 
@@ -1193,7 +1200,7 @@  main(int argc, char *argv[])
 	args = odp_shm_addr(shm);
 
 	if (NULL == args) {
-		ODP_ERR("Error: shared mem alloc failed.\n");
+		EXAMPLE_ERR("Error: shared mem alloc failed.\n");
 		exit(EXIT_FAILURE);
 	}
 	memset(args, 0, sizeof(*args));
@@ -1238,7 +1245,7 @@  main(int argc, char *argv[])
 	pool_base = odp_shm_addr(shm);
 
 	if (NULL == pool_base) {
-		ODP_ERR("Error: packet pool mem alloc failed.\n");
+		EXAMPLE_ERR("Error: packet pool mem alloc failed.\n");
 		exit(EXIT_FAILURE);
 	}
 
@@ -1248,7 +1255,7 @@  main(int argc, char *argv[])
 					  ODP_CACHE_LINE_SIZE,
 					  ODP_BUFFER_TYPE_PACKET);
 	if (ODP_BUFFER_POOL_INVALID == pkt_pool) {
-		ODP_ERR("Error: packet pool create failed.\n");
+		EXAMPLE_ERR("Error: packet pool create failed.\n");
 		exit(EXIT_FAILURE);
 	}
 
@@ -1259,7 +1266,7 @@  main(int argc, char *argv[])
 	pool_base = odp_shm_addr(shm);
 
 	if (NULL == pool_base) {
-		ODP_ERR("Error: context pool mem alloc failed.\n");
+		EXAMPLE_ERR("Error: context pool mem alloc failed.\n");
 		exit(EXIT_FAILURE);
 	}
 
@@ -1269,7 +1276,7 @@  main(int argc, char *argv[])
 					  ODP_CACHE_LINE_SIZE,
 					  ODP_BUFFER_TYPE_RAW);
 	if (ODP_BUFFER_POOL_INVALID == ctx_pool) {
-		ODP_ERR("Error: context pool create failed.\n");
+		EXAMPLE_ERR("Error: context pool create failed.\n");
 		exit(EXIT_FAILURE);
 	}
 
diff --git a/example/ipsec/odp_ipsec_cache.c b/example/ipsec/odp_ipsec_cache.c
index 1397d77..fb53bb6 100644
--- a/example/ipsec/odp_ipsec_cache.c
+++ b/example/ipsec/odp_ipsec_cache.c
@@ -7,6 +7,8 @@ 
 #include <stdlib.h>
 #include <string.h>
 
+#include <example_debug.h>
+
 #include <odp.h>
 
 #include <odph_ipsec.h>
@@ -28,7 +30,7 @@  void init_ipsec_cache(void)
 	ipsec_cache = odp_shm_addr(shm);
 
 	if (ipsec_cache == NULL) {
-		ODP_ERR("Error: shared mem alloc failed.\n");
+		EXAMPLE_ERR("Error: shared mem alloc failed.\n");
 		exit(EXIT_FAILURE);
 	}
 	memset(ipsec_cache, 0, sizeof(*ipsec_cache));
diff --git a/example/ipsec/odp_ipsec_fwd_db.c b/example/ipsec/odp_ipsec_fwd_db.c
index e067db9..4168420 100644
--- a/example/ipsec/odp_ipsec_fwd_db.c
+++ b/example/ipsec/odp_ipsec_fwd_db.c
@@ -7,6 +7,8 @@ 
 #include <stdlib.h>
 #include <string.h>
 
+#include <example_debug.h>
+
 #include <odp.h>
 
 #include <odp_ipsec_fwd_db.h>
@@ -26,7 +28,7 @@  void init_fwd_db(void)
 	fwd_db = odp_shm_addr(shm);
 
 	if (fwd_db == NULL) {
-		ODP_ERR("Error: shared mem alloc failed.\n");
+		EXAMPLE_ERR("Error: shared mem alloc failed.\n");
 		exit(EXIT_FAILURE);
 	}
 	memset(fwd_db, 0, sizeof(*fwd_db));
diff --git a/example/ipsec/odp_ipsec_loop_db.c b/example/ipsec/odp_ipsec_loop_db.c
index af4590a..d213bb3 100644
--- a/example/ipsec/odp_ipsec_loop_db.c
+++ b/example/ipsec/odp_ipsec_loop_db.c
@@ -7,6 +7,8 @@ 
 #include <stdlib.h>
 #include <string.h>
 
+#include <example_debug.h>
+
 #include <odp.h>
 
 #include <odp_ipsec_loop_db.h>
@@ -26,7 +28,7 @@  void init_loopback_db(void)
 	loopback_db = odp_shm_addr(shm);
 
 	if (loopback_db == NULL) {
-		ODP_ERR("Error: shared mem alloc failed.\n");
+		EXAMPLE_ERR("Error: shared mem alloc failed.\n");
 		exit(EXIT_FAILURE);
 	}
 	memset(loopback_db, 0, sizeof(*loopback_db));
diff --git a/example/ipsec/odp_ipsec_sa_db.c b/example/ipsec/odp_ipsec_sa_db.c
index e8679db..384c0ce 100644
--- a/example/ipsec/odp_ipsec_sa_db.c
+++ b/example/ipsec/odp_ipsec_sa_db.c
@@ -7,6 +7,8 @@ 
 #include <stdlib.h>
 #include <string.h>
 
+#include <example_debug.h>
+
 #include <odp.h>
 
 #include <odp_ipsec_sa_db.h>
@@ -26,7 +28,7 @@  void init_sa_db(void)
 	sa_db = odp_shm_addr(shm);
 
 	if (sa_db == NULL) {
-		ODP_ERR("Error: shared mem alloc failed.\n");
+		EXAMPLE_ERR("Error: shared mem alloc failed.\n");
 		exit(EXIT_FAILURE);
 	}
 	memset(sa_db, 0, sizeof(*sa_db));
diff --git a/example/ipsec/odp_ipsec_sp_db.c b/example/ipsec/odp_ipsec_sp_db.c
index f288dfe..b0f4480 100644
--- a/example/ipsec/odp_ipsec_sp_db.c
+++ b/example/ipsec/odp_ipsec_sp_db.c
@@ -7,6 +7,8 @@ 
 #include <stdlib.h>
 #include <string.h>
 
+#include <example_debug.h>
+
 #include <odp.h>
 #include <odp_align.h>
 #include <odp_crypto.h>
@@ -28,7 +30,7 @@  void init_sp_db(void)
 	sp_db = odp_shm_addr(shm);
 
 	if (sp_db == NULL) {
-		ODP_ERR("Error: shared mem alloc failed.\n");
+		EXAMPLE_ERR("Error: shared mem alloc failed.\n");
 		exit(EXIT_FAILURE);
 	}
 	memset(sp_db, 0, sizeof(*sp_db));
diff --git a/example/ipsec/odp_ipsec_stream.c b/example/ipsec/odp_ipsec_stream.c
index fa9aba8..139d00e 100644
--- a/example/ipsec/odp_ipsec_stream.c
+++ b/example/ipsec/odp_ipsec_stream.c
@@ -12,6 +12,8 @@ 
 #include <openssl/hmac.h>
 #include <openssl/evp.h>
 
+#include <example_debug.h>
+
 #include <odp.h>
 
 #include <odph_packet.h>
@@ -56,7 +58,7 @@  void init_stream_db(void)
 	stream_db = odp_shm_addr(shm);
 
 	if (stream_db == NULL) {
-		ODP_ERR("Error: shared mem alloc failed.\n");
+		EXAMPLE_ERR("Error: shared mem alloc failed.\n");
 		exit(EXIT_FAILURE);
 	}
 	memset(stream_db, 0, sizeof(*stream_db));
@@ -100,7 +102,8 @@  int create_stream_db_entry(char *input)
 		case 2:
 			entry->input.loop = loop_if_index(token);
 			if (entry->input.loop < 0) {
-				ODP_ERR("Error: stream must have input loop\n");
+				EXAMPLE_ERR("Error: stream must have input"
+					    " loop\n");
 				exit(EXIT_FAILURE);
 			}
 			break;
@@ -479,7 +482,7 @@  int create_stream_db_inputs(void)
 	/* Lookup the packet pool */
 	pkt_pool = odp_buffer_pool_lookup("packet_pool");
 	if (pkt_pool == ODP_BUFFER_POOL_INVALID) {
-		ODP_ERR("Error: pkt_pool not found\n");
+		EXAMPLE_ERR("Error: pkt_pool not found\n");
 		exit(EXIT_FAILURE);
 	}
 
diff --git a/example/l2fwd/Makefile.am b/example/l2fwd/Makefile.am
index a83e757..d57a159 100644
--- a/example/l2fwd/Makefile.am
+++ b/example/l2fwd/Makefile.am
@@ -2,5 +2,6 @@  include $(top_srcdir)/example/Makefile.inc
 
 bin_PROGRAMS = odp_l2fwd
 odp_l2fwd_LDFLAGS = $(AM_LDFLAGS) -static
+odp_l2fwd_CFLAGS = $(AM_CFLAGS) -I../
 
 dist_odp_l2fwd_SOURCES = odp_l2fwd.c
diff --git a/example/l2fwd/odp_l2fwd.c b/example/l2fwd/odp_l2fwd.c
index 57037cd..ebac8c5 100644
--- a/example/l2fwd/odp_l2fwd.c
+++ b/example/l2fwd/odp_l2fwd.c
@@ -15,6 +15,8 @@ 
 #include <getopt.h>
 #include <unistd.h>
 
+#include <example_debug.h>
+
 #include <odp.h>
 #include <odph_linux.h>
 #include <odph_packet.h>
@@ -128,7 +130,7 @@  static odp_pktio_t burst_mode_init_params(void *arg, odp_buffer_pool_t pool)
 	/* Open a packet IO instance for this thread */
 	pktio = odp_pktio_open(args->srcif, pool);
 	if (pktio == ODP_PKTIO_INVALID)
-		ODP_ERR("  Error: pktio create failed");
+		EXAMPLE_ERR("  Error: pktio create failed");
 
 	return pktio;
 }
@@ -167,13 +169,13 @@  static odp_pktio_t queue_mode_init_params(void *arg, odp_buffer_pool_t pool)
 
 	inq_def = odp_queue_create(inq_name, ODP_QUEUE_TYPE_PKTIN, &qparam);
 	if (inq_def == ODP_QUEUE_INVALID) {
-		ODP_ERR("  Error: pktio queue creation failed");
+		EXAMPLE_ERR("  Error: pktio queue creation failed");
 		return ODP_PKTIO_INVALID;
 	}
 
 	ret = odp_pktio_inq_setdef(pktio, inq_def);
 	if (ret != 0) {
-		ODP_ERR("  Error: default input-Q setup");
+		EXAMPLE_ERR("  Error: default input-Q setup");
 		return ODP_PKTIO_INVALID;
 	}
 
@@ -200,8 +202,8 @@  static void *pktio_queue_thread(void *arg)
 	thr_args = arg;
 
 	if (thr_args->srcpktio == 0 || thr_args->dstpktio == 0) {
-		ODP_ERR("Invalid srcpktio:%d dstpktio:%d\n",
-			thr_args->srcpktio, thr_args->dstpktio);
+		EXAMPLE_ERR("Invalid srcpktio:%d dstpktio:%d\n",
+			    thr_args->srcpktio, thr_args->dstpktio);
 		return NULL;
 	}
 	printf("[%02i] srcif:%s dstif:%s spktio:%02i dpktio:%02i QUEUE mode\n",
@@ -224,14 +226,15 @@  static void *pktio_queue_thread(void *arg)
 		pkt = odp_packet_from_buffer(buf);
 		/* Drop packets with errors */
 		if (odp_unlikely(drop_err_pkts(&pkt, 1) == 0)) {
-			ODP_ERR("Drop frame - err_cnt:%lu\n", ++err_cnt);
+			EXAMPLE_ERR("Drop frame - err_cnt:%lu\n", ++err_cnt);
 			continue;
 		}
 
 		pktio_tmp = odp_pktio_get_input(pkt);
 		outq_def = odp_pktio_outq_getdef(dstpktio[pktio_tmp]);
 		if (outq_def == ODP_QUEUE_INVALID) {
-			ODP_ERR("  [%02i] Error: def output-Q query\n", thr);
+			EXAMPLE_ERR("  [%02i] Error: def output-Q query\n",
+				    thr);
 			return NULL;
 		}
 
@@ -267,8 +270,8 @@  static void *pktio_ifburst_thread(void *arg)
 	thr_args = arg;
 
 	if (thr_args->srcpktio == 0 || thr_args->dstpktio == 0) {
-		ODP_ERR("Invalid srcpktio:%d dstpktio:%d\n",
-			thr_args->srcpktio, thr_args->dstpktio);
+		EXAMPLE_ERR("Invalid srcpktio:%d dstpktio:%d\n",
+			    thr_args->srcpktio, thr_args->dstpktio);
 		return NULL;
 	}
 	printf("[%02i] srcif:%s dstif:%s spktio:%02i dpktio:%02i BURST mode\n",
@@ -286,8 +289,8 @@  static void *pktio_ifburst_thread(void *arg)
 				odp_pktio_send(thr_args->dstpktio, pkt_tbl,
 					       pkts_ok);
 			if (odp_unlikely(pkts_ok != pkts))
-				ODP_ERR("Dropped frames:%u - err_cnt:%lu\n",
-					pkts-pkts_ok, ++err_cnt);
+				EXAMPLE_ERR("Dropped frames:%u - err_cnt:%lu\n",
+					    pkts-pkts_ok, ++err_cnt);
 
 			/* Print packet counts every once in a while */
 			tmp += pkts_ok;
@@ -320,13 +323,13 @@  int main(int argc, char *argv[])
 
 	/* Init ODP before calling anything else */
 	if (odp_init_global(NULL, NULL)) {
-		ODP_ERR("Error: ODP global init failed.\n");
+		EXAMPLE_ERR("Error: ODP global init failed.\n");
 		exit(EXIT_FAILURE);
 	}
 
 	/* Init this thread */
 	if (odp_init_local()) {
-		ODP_ERR("Error: ODP local init failed.\n");
+		EXAMPLE_ERR("Error: ODP local init failed.\n");
 		exit(EXIT_FAILURE);
 	}
 
@@ -336,7 +339,7 @@  int main(int argc, char *argv[])
 	gbl_args = odp_shm_addr(shm);
 
 	if (gbl_args == NULL) {
-		ODP_ERR("Error: shared mem alloc failed.\n");
+		EXAMPLE_ERR("Error: shared mem alloc failed.\n");
 		exit(EXIT_FAILURE);
 	}
 	memset(gbl_args, 0, sizeof(*gbl_args));
@@ -359,13 +362,13 @@  int main(int argc, char *argv[])
 	printf("Num worker threads: %i\n", num_workers);
 
 	if (num_workers < gbl_args->appl.if_count) {
-		ODP_ERR("Error: core count %d is less than interface count\n",
-			num_workers);
+		EXAMPLE_ERR("Error: core count %d is less than interface "
+			    "count\n", num_workers);
 		exit(EXIT_FAILURE);
 	}
 	if (gbl_args->appl.if_count % 2 != 0) {
-		ODP_ERR("Error: interface count %d is odd in fwd appl.\n",
-			gbl_args->appl.if_count);
+		EXAMPLE_ERR("Error: interface count %d is odd in fwd appl.\n",
+			    gbl_args->appl.if_count);
 		exit(EXIT_FAILURE);
 	}
 	/*
@@ -385,7 +388,7 @@  int main(int argc, char *argv[])
 	pool_base = odp_shm_addr(shm);
 
 	if (pool_base == NULL) {
-		ODP_ERR("Error: packet pool mem alloc failed.\n");
+		EXAMPLE_ERR("Error: packet pool mem alloc failed.\n");
 		exit(EXIT_FAILURE);
 	}
 
@@ -395,7 +398,7 @@  int main(int argc, char *argv[])
 				      ODP_CACHE_LINE_SIZE,
 				      ODP_BUFFER_TYPE_PACKET);
 	if (pool == ODP_BUFFER_POOL_INVALID) {
-		ODP_ERR("Error: packet pool create failed.\n");
+		EXAMPLE_ERR("Error: packet pool create failed.\n");
 		exit(EXIT_FAILURE);
 	}
 	odp_buffer_pool_print(pool);
@@ -418,13 +421,13 @@  int main(int argc, char *argv[])
 		if (gbl_args->appl.mode == APPL_MODE_PKT_BURST) {
 			pktio = burst_mode_init_params(&gbl_args->thread[i], pool);
 			if (pktio == ODP_PKTIO_INVALID) {
-				ODP_ERR("  for thread:%02i\n", i);
+				EXAMPLE_ERR("  for thread:%02i\n", i);
 				exit(EXIT_FAILURE);
 			}
 		} else { /* APPL_MODE_PKT_QUEUE */
 			pktio = queue_mode_init_params(&gbl_args->thread[i], pool);
 			if (pktio == ODP_PKTIO_INVALID) {
-				ODP_ERR("  for thread:%02i\n", i);
+				EXAMPLE_ERR("  for thread:%02i\n", i);
 				exit(EXIT_FAILURE);
 			}
 		}
diff --git a/example/odp_example/Makefile.am b/example/odp_example/Makefile.am
index e6f23d0..95136e7 100644
--- a/example/odp_example/Makefile.am
+++ b/example/odp_example/Makefile.am
@@ -2,5 +2,6 @@  include $(top_srcdir)/example/Makefile.inc
 
 bin_PROGRAMS = odp_example
 odp_example_LDFLAGS = $(AM_LDFLAGS) -static
+odp_example_CFLAGS = $(AM_CFLAGS) -I../
 
 dist_odp_example_SOURCES = odp_example.c
diff --git a/example/odp_example/odp_example.c b/example/odp_example/odp_example.c
index 1ed4a0b..a674b77 100644
--- a/example/odp_example/odp_example.c
+++ b/example/odp_example/odp_example.c
@@ -13,6 +13,8 @@ 
 #include <string.h>
 #include <stdlib.h>
 
+#include <example_debug.h>
+
 /* ODP main header */
 #include <odp.h>
 
@@ -93,7 +95,7 @@  static int create_queue(int thr, odp_buffer_pool_t msg_pool, int prio)
 	buf = odp_buffer_alloc(msg_pool);
 
 	if (!odp_buffer_is_valid(buf)) {
-		ODP_ERR("  [%i] msg_pool alloc failed\n", thr);
+		EXAMPLE_ERR("  [%i] msg_pool alloc failed\n", thr);
 		return -1;
 	}
 
@@ -103,12 +105,12 @@  static int create_queue(int thr, odp_buffer_pool_t msg_pool, int prio)
 	queue = odp_queue_lookup(name);
 
 	if (queue == ODP_QUEUE_INVALID) {
-		ODP_ERR("  [%i] Queue %s lookup failed.\n", thr, name);
+		EXAMPLE_ERR("  [%i] Queue %s lookup failed.\n", thr, name);
 		return -1;
 	}
 
 	if (odp_queue_enq(queue, buf)) {
-		ODP_ERR("  [%i] Queue enqueue failed.\n", thr);
+		EXAMPLE_ERR("  [%i] Queue enqueue failed.\n", thr);
 		return -1;
 	}
 
@@ -142,19 +144,20 @@  static int create_queues(int thr, odp_buffer_pool_t msg_pool, int prio)
 		queue = odp_queue_lookup(name);
 
 		if (queue == ODP_QUEUE_INVALID) {
-			ODP_ERR("  [%i] Queue %s lookup failed.\n", thr, name);
+			EXAMPLE_ERR("  [%i] Queue %s lookup failed.\n", thr,
+				    name);
 			return -1;
 		}
 
 		buf = odp_buffer_alloc(msg_pool);
 
 		if (!odp_buffer_is_valid(buf)) {
-			ODP_ERR("  [%i] msg_pool alloc failed\n", thr);
+			EXAMPLE_ERR("  [%i] msg_pool alloc failed\n", thr);
 			return -1;
 		}
 
 		if (odp_queue_enq(queue, buf)) {
-			ODP_ERR("  [%i] Queue enqueue failed.\n", thr);
+			EXAMPLE_ERR("  [%i] Queue enqueue failed.\n", thr);
 			return -1;
 		}
 	}
@@ -183,7 +186,7 @@  static int test_alloc_single(int thr, odp_buffer_pool_t pool)
 		temp_buf = odp_buffer_alloc(pool);
 
 		if (!odp_buffer_is_valid(temp_buf)) {
-			ODP_ERR("  [%i] alloc_single failed\n", thr);
+			EXAMPLE_ERR("  [%i] alloc_single failed\n", thr);
 			return -1;
 		}
 
@@ -221,7 +224,7 @@  static int test_alloc_multi(int thr, odp_buffer_pool_t pool)
 			temp_buf[j] = odp_buffer_alloc(pool);
 
 			if (!odp_buffer_is_valid(temp_buf[j])) {
-				ODP_ERR("  [%i] alloc_multi failed\n", thr);
+				EXAMPLE_ERR("  [%i] alloc_multi failed\n", thr);
 				return -1;
 			}
 		}
@@ -263,7 +266,7 @@  static int test_poll_queue(int thr, odp_buffer_pool_t msg_pool)
 	buf = odp_buffer_alloc(msg_pool);
 
 	if (!odp_buffer_is_valid(buf)) {
-		ODP_ERR("  [%i] msg_pool alloc failed\n", thr);
+		EXAMPLE_ERR("  [%i] msg_pool alloc failed\n", thr);
 		return -1;
 	}
 
@@ -284,14 +287,14 @@  static int test_poll_queue(int thr, odp_buffer_pool_t msg_pool)
 
 	for (i = 0; i < QUEUE_ROUNDS; i++) {
 		if (odp_queue_enq(queue, buf)) {
-			ODP_ERR("  [%i] Queue enqueue failed.\n", thr);
+			EXAMPLE_ERR("  [%i] Queue enqueue failed.\n", thr);
 			return -1;
 		}
 
 		buf = odp_queue_deq(queue);
 
 		if (!odp_buffer_is_valid(buf)) {
-			ODP_ERR("  [%i] Queue empty.\n", thr);
+			EXAMPLE_ERR("  [%i] Queue empty.\n", thr);
 			return -1;
 		}
 	}
@@ -339,7 +342,7 @@  static int test_schedule_one_single(const char *str, int thr,
 		buf = odp_schedule_one(&queue, ODP_SCHED_WAIT);
 
 		if (odp_queue_enq(queue, buf)) {
-			ODP_ERR("  [%i] Queue enqueue failed.\n", thr);
+			EXAMPLE_ERR("  [%i] Queue enqueue failed.\n", thr);
 			return -1;
 		}
 	}
@@ -399,7 +402,7 @@  static int test_schedule_one_many(const char *str, int thr,
 		buf = odp_schedule_one(&queue, ODP_SCHED_WAIT);
 
 		if (odp_queue_enq(queue, buf)) {
-			ODP_ERR("  [%i] Queue enqueue failed.\n", thr);
+			EXAMPLE_ERR("  [%i] Queue enqueue failed.\n", thr);
 			return -1;
 		}
 	}
@@ -456,7 +459,7 @@  static int test_schedule_single(const char *str, int thr,
 		buf = odp_schedule(&queue, ODP_SCHED_WAIT);
 
 		if (odp_queue_enq(queue, buf)) {
-			ODP_ERR("  [%i] Queue enqueue failed.\n", thr);
+			EXAMPLE_ERR("  [%i] Queue enqueue failed.\n", thr);
 			return -1;
 		}
 	}
@@ -475,7 +478,7 @@  static int test_schedule_single(const char *str, int thr,
 		tot++;
 
 		if (odp_queue_enq(queue, buf)) {
-			ODP_ERR("  [%i] Queue enqueue failed.\n", thr);
+			EXAMPLE_ERR("  [%i] Queue enqueue failed.\n", thr);
 			return -1;
 		}
 	}
@@ -534,7 +537,7 @@  static int test_schedule_many(const char *str, int thr,
 		buf = odp_schedule(&queue, ODP_SCHED_WAIT);
 
 		if (odp_queue_enq(queue, buf)) {
-			ODP_ERR("  [%i] Queue enqueue failed.\n", thr);
+			EXAMPLE_ERR("  [%i] Queue enqueue failed.\n", thr);
 			return -1;
 		}
 	}
@@ -553,7 +556,7 @@  static int test_schedule_many(const char *str, int thr,
 		tot++;
 
 		if (odp_queue_enq(queue, buf)) {
-			ODP_ERR("  [%i] Queue enqueue failed.\n", thr);
+			EXAMPLE_ERR("  [%i] Queue enqueue failed.\n", thr);
 			return -1;
 		}
 	}
@@ -611,7 +614,8 @@  static int test_schedule_multi(const char *str, int thr,
 		queue = odp_queue_lookup(name);
 
 		if (queue == ODP_QUEUE_INVALID) {
-			ODP_ERR("  [%i] Queue %s lookup failed.\n", thr, name);
+			EXAMPLE_ERR("  [%i] Queue %s lookup failed.\n", thr,
+				    name);
 			return -1;
 		}
 
@@ -619,13 +623,14 @@  static int test_schedule_multi(const char *str, int thr,
 			buf[j] = odp_buffer_alloc(msg_pool);
 
 			if (!odp_buffer_is_valid(buf[j])) {
-				ODP_ERR("  [%i] msg_pool alloc failed\n", thr);
+				EXAMPLE_ERR("  [%i] msg_pool alloc failed\n",
+					    thr);
 				return -1;
 			}
 		}
 
 		if (odp_queue_enq_multi(queue, buf, MULTI_BUFS_MAX)) {
-			ODP_ERR("  [%i] Queue enqueue failed.\n", thr);
+			EXAMPLE_ERR("  [%i] Queue enqueue failed.\n", thr);
 			return -1;
 		}
 	}
@@ -640,7 +645,7 @@  static int test_schedule_multi(const char *str, int thr,
 		tot += num;
 
 		if (odp_queue_enq_multi(queue, buf, num)) {
-			ODP_ERR("  [%i] Queue enqueue failed.\n", thr);
+			EXAMPLE_ERR("  [%i] Queue enqueue failed.\n", thr);
 			return -1;
 		}
 	}
@@ -658,7 +663,7 @@  static int test_schedule_multi(const char *str, int thr,
 		tot += num;
 
 		if (odp_queue_enq_multi(queue, buf, num)) {
-			ODP_ERR("  [%i] Queue enqueue failed.\n", thr);
+			EXAMPLE_ERR("  [%i] Queue enqueue failed.\n", thr);
 			return -1;
 		}
 	}
@@ -710,7 +715,7 @@  static void *run_thread(void *arg)
 	globals = odp_shm_addr(shm);
 
 	if (globals == NULL) {
-		ODP_ERR("Shared mem lookup failed\n");
+		EXAMPLE_ERR("Shared mem lookup failed\n");
 		return NULL;
 	}
 
@@ -730,7 +735,7 @@  static void *run_thread(void *arg)
 	msg_pool = odp_buffer_pool_lookup("msg_pool");
 
 	if (msg_pool == ODP_BUFFER_POOL_INVALID) {
-		ODP_ERR("  [%i] msg_pool not found\n", thr);
+		EXAMPLE_ERR("  [%i] msg_pool not found\n", thr);
 		return NULL;
 	}
 
@@ -830,7 +835,7 @@  static void test_time(void)
 	double err;
 
 	if (clock_gettime(CLOCK_MONOTONIC, &tp2)) {
-		ODP_ERR("clock_gettime failed.\n");
+		EXAMPLE_ERR("clock_gettime failed.\n");
 		return;
 	}
 
@@ -838,7 +843,7 @@  static void test_time(void)
 
 	do {
 		if (clock_gettime(CLOCK_MONOTONIC, &tp1)) {
-			ODP_ERR("clock_gettime failed.\n");
+			EXAMPLE_ERR("clock_gettime failed.\n");
 			return;
 		}
 
@@ -848,7 +853,7 @@  static void test_time(void)
 
 	do {
 		if (clock_gettime(CLOCK_MONOTONIC, &tp2)) {
-			ODP_ERR("clock_gettime failed.\n");
+			EXAMPLE_ERR("clock_gettime failed.\n");
 			return;
 		}
 
@@ -966,7 +971,7 @@  int main(int argc, char *argv[])
 
 	/* ODP global init */
 	if (odp_init_global(NULL, NULL)) {
-		ODP_ERR("ODP global init failed.\n");
+		EXAMPLE_ERR("ODP global init failed.\n");
 		return -1;
 	}
 
@@ -975,7 +980,7 @@  int main(int argc, char *argv[])
 	 * setting up resources for worker threads.
 	 */
 	if (odp_init_local()) {
-		ODP_ERR("ODP global init failed.\n");
+		EXAMPLE_ERR("ODP global init failed.\n");
 		return -1;
 	}
 
@@ -1023,7 +1028,7 @@  int main(int argc, char *argv[])
 	globals = odp_shm_addr(shm);
 
 	if (globals == NULL) {
-		ODP_ERR("Shared memory reserve failed.\n");
+		EXAMPLE_ERR("Shared memory reserve failed.\n");
 		return -1;
 	}
 
@@ -1038,7 +1043,7 @@  int main(int argc, char *argv[])
 	pool_base = odp_shm_addr(shm);
 
 	if (pool_base == NULL) {
-		ODP_ERR("Shared memory reserve failed.\n");
+		EXAMPLE_ERR("Shared memory reserve failed.\n");
 		return -1;
 	}
 
@@ -1047,7 +1052,7 @@  int main(int argc, char *argv[])
 				      ODP_CACHE_LINE_SIZE, ODP_BUFFER_TYPE_RAW);
 
 	if (pool == ODP_BUFFER_POOL_INVALID) {
-		ODP_ERR("Pool create failed.\n");
+		EXAMPLE_ERR("Pool create failed.\n");
 		return -1;
 	}
 
@@ -1059,7 +1064,7 @@  int main(int argc, char *argv[])
 	queue = odp_queue_create("poll_queue", ODP_QUEUE_TYPE_POLL, NULL);
 
 	if (queue == ODP_QUEUE_INVALID) {
-		ODP_ERR("Poll queue create failed.\n");
+		EXAMPLE_ERR("Poll queue create failed.\n");
 		return -1;
 	}
 
@@ -1091,7 +1096,7 @@  int main(int argc, char *argv[])
 						 &param);
 
 			if (queue == ODP_QUEUE_INVALID) {
-				ODP_ERR("Schedule queue create failed.\n");
+				EXAMPLE_ERR("Schedule queue create failed.\n");
 				return -1;
 			}
 		}
@@ -1111,7 +1116,7 @@  int main(int argc, char *argv[])
 						first_core);
 
 		if (ret < 0) {
-			ODP_ERR("Fork workers failed %i\n", ret);
+			EXAMPLE_ERR("Fork workers failed %i\n", ret);
 			return -1;
 		}
 
diff --git a/example/packet/Makefile.am b/example/packet/Makefile.am
index 603a1ab..da5fc45 100644
--- a/example/packet/Makefile.am
+++ b/example/packet/Makefile.am
@@ -2,5 +2,6 @@  include $(top_srcdir)/example/Makefile.inc
 
 bin_PROGRAMS = odp_pktio
 odp_pktio_LDFLAGS = $(AM_LDFLAGS) -static
+odp_pktio_CFLAGS = $(AM_CFLAGS) -I../
 
 dist_odp_pktio_SOURCES = odp_pktio.c
diff --git a/example/packet/odp_pktio.c b/example/packet/odp_pktio.c
index 2cf3f0d..3e08b34 100644
--- a/example/packet/odp_pktio.c
+++ b/example/packet/odp_pktio.c
@@ -15,6 +15,8 @@ 
 #include <getopt.h>
 #include <unistd.h>
 
+#include <example_debug.h>
+
 #include <odp.h>
 #include <odph_linux.h>
 #include <odph_packet.h>
@@ -130,14 +132,14 @@  static void *pktio_queue_thread(void *arg)
 	/* Lookup the packet pool */
 	pkt_pool = odp_buffer_pool_lookup("packet_pool");
 	if (pkt_pool == ODP_BUFFER_POOL_INVALID || pkt_pool != thr_args->pool) {
-		ODP_ERR("  [%02i] Error: pkt_pool not found\n", thr);
+		EXAMPLE_ERR("  [%02i] Error: pkt_pool not found\n", thr);
 		return NULL;
 	}
 
 	/* Open a packet IO instance for this thread */
 	pktio = odp_pktio_open(thr_args->pktio_dev, pkt_pool);
 	if (pktio == ODP_PKTIO_INVALID) {
-		ODP_ERR("  [%02i] Error: pktio create failed\n", thr);
+		EXAMPLE_ERR("  [%02i] Error: pktio create failed\n", thr);
 		return NULL;
 	}
 
@@ -153,13 +155,14 @@  static void *pktio_queue_thread(void *arg)
 
 	inq_def = odp_queue_create(inq_name, ODP_QUEUE_TYPE_PKTIN, &qparam);
 	if (inq_def == ODP_QUEUE_INVALID) {
-		ODP_ERR("  [%02i] Error: pktio queue creation failed\n", thr);
+		EXAMPLE_ERR("  [%02i] Error: pktio queue creation failed\n",
+			    thr);
 		return NULL;
 	}
 
 	ret = odp_pktio_inq_setdef(pktio, inq_def);
 	if (ret != 0) {
-		ODP_ERR("  [%02i] Error: default input-Q setup\n", thr);
+		EXAMPLE_ERR("  [%02i] Error: default input-Q setup\n", thr);
 		return NULL;
 	}
 
@@ -185,7 +188,7 @@  static void *pktio_queue_thread(void *arg)
 
 		/* Drop packets with errors */
 		if (odp_unlikely(drop_err_pkts(&pkt, 1) == 0)) {
-			ODP_ERR("Drop frame - err_cnt:%lu\n", ++err_cnt);
+			EXAMPLE_ERR("Drop frame - err_cnt:%lu\n", ++err_cnt);
 			continue;
 		}
 
@@ -193,7 +196,8 @@  static void *pktio_queue_thread(void *arg)
 		outq_def = odp_pktio_outq_getdef(pktio_tmp);
 
 		if (outq_def == ODP_QUEUE_INVALID) {
-			ODP_ERR("  [%02i] Error: def output-Q query\n", thr);
+			EXAMPLE_ERR("  [%02i] Error: def output-Q query\n",
+				    thr);
 			return NULL;
 		}
 
@@ -239,14 +243,14 @@  static void *pktio_ifburst_thread(void *arg)
 	/* Lookup the packet pool */
 	pkt_pool = odp_buffer_pool_lookup("packet_pool");
 	if (pkt_pool == ODP_BUFFER_POOL_INVALID || pkt_pool != thr_args->pool) {
-		ODP_ERR("  [%02i] Error: pkt_pool not found\n", thr);
+		EXAMPLE_ERR("  [%02i] Error: pkt_pool not found\n", thr);
 		return NULL;
 	}
 
 	/* Open a packet IO instance for this thread */
 	pktio = odp_pktio_open(thr_args->pktio_dev, pkt_pool);
 	if (pktio == ODP_PKTIO_INVALID) {
-		ODP_ERR("  [%02i] Error: pktio create failed.\n", thr);
+		EXAMPLE_ERR("  [%02i] Error: pktio create failed.\n", thr);
 		return NULL;
 	}
 
@@ -266,8 +270,8 @@  static void *pktio_ifburst_thread(void *arg)
 			}
 
 			if (odp_unlikely(pkts_ok != pkts))
-				ODP_ERR("Dropped frames:%u - err_cnt:%lu\n",
-					pkts-pkts_ok, ++err_cnt);
+				EXAMPLE_ERR("Dropped frames:%u - err_cnt:%lu\n",
+					    pkts-pkts_ok, ++err_cnt);
 
 			/* Print packet counts every once in a while */
 			tmp += pkts_ok;
@@ -300,13 +304,13 @@  int main(int argc, char *argv[])
 
 	/* Init ODP before calling anything else */
 	if (odp_init_global(NULL, NULL)) {
-		ODP_ERR("Error: ODP global init failed.\n");
+		EXAMPLE_ERR("Error: ODP global init failed.\n");
 		exit(EXIT_FAILURE);
 	}
 
 	/* Init this thread */
 	if (odp_init_local()) {
-		ODP_ERR("Error: ODP local init failed.\n");
+		EXAMPLE_ERR("Error: ODP local init failed.\n");
 		exit(EXIT_FAILURE);
 	}
 
@@ -316,7 +320,7 @@  int main(int argc, char *argv[])
 	args = odp_shm_addr(shm);
 
 	if (args == NULL) {
-		ODP_ERR("Error: shared mem alloc failed.\n");
+		EXAMPLE_ERR("Error: shared mem alloc failed.\n");
 		exit(EXIT_FAILURE);
 	}
 	memset(args, 0, sizeof(*args));
@@ -355,7 +359,7 @@  int main(int argc, char *argv[])
 	pool_base = odp_shm_addr(shm);
 
 	if (pool_base == NULL) {
-		ODP_ERR("Error: packet pool mem alloc failed.\n");
+		EXAMPLE_ERR("Error: packet pool mem alloc failed.\n");
 		exit(EXIT_FAILURE);
 	}
 
@@ -365,7 +369,7 @@  int main(int argc, char *argv[])
 				      ODP_CACHE_LINE_SIZE,
 				      ODP_BUFFER_TYPE_PACKET);
 	if (pool == ODP_BUFFER_POOL_INVALID) {
-		ODP_ERR("Error: packet pool create failed.\n");
+		EXAMPLE_ERR("Error: packet pool create failed.\n");
 		exit(EXIT_FAILURE);
 	}
 	odp_buffer_pool_print(pool);
diff --git a/example/timer/Makefile.am b/example/timer/Makefile.am
index 6229f13..dffd4eb 100644
--- a/example/timer/Makefile.am
+++ b/example/timer/Makefile.am
@@ -2,5 +2,6 @@  include $(top_srcdir)/example/Makefile.inc
 
 bin_PROGRAMS = odp_timer_test
 odp_timer_test_LDFLAGS = $(AM_LDFLAGS) -static
+odp_timer_test_CFLAGS = $(AM_CFLAGS) -I../
 
 dist_odp_timer_test_SOURCES = odp_timer_test.c
diff --git a/example/timer/odp_timer_test.c b/example/timer/odp_timer_test.c
index 78b2ae2..04b4d89 100644
--- a/example/timer/odp_timer_test.c
+++ b/example/timer/odp_timer_test.c
@@ -13,6 +13,8 @@ 
 #include <string.h>
 #include <stdlib.h>
 
+#include <example_debug.h>
+
 /* ODP main header */
 #include <odp.h>
 
@@ -55,25 +57,25 @@  static void test_abs_timeouts(int thr, test_args_t *args)
 	odp_buffer_t buf;
 	int num;
 
-	ODP_DBG("  [%i] test_timeouts\n", thr);
+	EXAMPLE_DBG("  [%i] test_timeouts\n", thr);
 
 	queue = odp_queue_lookup("timer_queue");
 
 	period_ns = args->period_us*ODP_TIME_USEC;
 	period    = odp_timer_ns_to_tick(test_timer, period_ns);
 
-	ODP_DBG("  [%i] period %"PRIu64" ticks,  %"PRIu64" ns\n", thr,
-		period, period_ns);
+	EXAMPLE_DBG("  [%i] period %"PRIu64" ticks,  %"PRIu64" ns\n", thr,
+		    period, period_ns);
 
 	tick = odp_timer_current_tick(test_timer);
 
-	ODP_DBG("  [%i] current tick %"PRIu64"\n", thr, tick);
+	EXAMPLE_DBG("  [%i] current tick %"PRIu64"\n", thr, tick);
 
 	tick += period;
 
 	if (odp_timer_absolute_tmo(test_timer, tick, queue, ODP_BUFFER_INVALID)
 	    == ODP_TIMER_TMO_INVALID){
-		ODP_DBG("Timeout request failed\n");
+		EXAMPLE_DBG("Timeout request failed\n");
 		return;
 	}
 
@@ -87,7 +89,7 @@  static void test_abs_timeouts(int thr, test_args_t *args)
 		tmo  = odp_timeout_from_buffer(buf);
 		tick = odp_timeout_tick(tmo);
 
-		ODP_DBG("  [%i] timeout, tick %"PRIu64"\n", thr, tick);
+		EXAMPLE_DBG("  [%i] timeout, tick %"PRIu64"\n", thr, tick);
 
 		odp_buffer_free(buf);
 
@@ -131,7 +133,7 @@  static void *run_thread(void *ptr)
 	msg_pool = odp_buffer_pool_lookup("msg_pool");
 
 	if (msg_pool == ODP_BUFFER_POOL_INVALID) {
-		ODP_ERR("  [%i] msg_pool not found\n", thr);
+		EXAMPLE_ERR("  [%i] msg_pool not found\n", thr);
 		return NULL;
 	}
 
@@ -319,7 +321,7 @@  int main(int argc, char *argv[])
 				      ODP_BUFFER_TYPE_TIMEOUT);
 
 	if (pool == ODP_BUFFER_POOL_INVALID) {
-		ODP_ERR("Pool create failed.\n");
+		EXAMPLE_ERR("Pool create failed.\n");
 		return -1;
 	}
 
@@ -334,7 +336,7 @@  int main(int argc, char *argv[])
 	queue = odp_queue_create("timer_queue", ODP_QUEUE_TYPE_SCHED, &param);
 
 	if (queue == ODP_QUEUE_INVALID) {
-		ODP_ERR("Timer queue create failed.\n");
+		EXAMPLE_ERR("Timer queue create failed.\n");
 		return -1;
 	}
 
@@ -344,7 +346,7 @@  int main(int argc, char *argv[])
 				      args.max_us*ODP_TIME_USEC);
 
 	if (test_timer == ODP_TIMER_INVALID) {
-		ODP_ERR("Timer create failed.\n");
+		EXAMPLE_ERR("Timer create failed.\n");
 		return -1;
 	}