In the same context as removing ODP_DBG from examples so I like it this way:

On Sat, Nov 15, 2014 at 6:19 PM, Mike Holmes <[email protected]> wrote:
> Free the tests of their dependence on the ODP logging functions.
> This enables the migration of the ODP logging functions from the ODP public 
> API
> to the ODP internal API.
>
> Signed-off-by: Mike Holmes <[email protected]>

Reviewed-by: Ciprian Barbu <[email protected]>

> ---
>
>  test/api_test/Makefile.am       |  6 +++
>  test/api_test/odp_atomic_test.c | 10 ++---
>  test/api_test/odp_common.c      |  3 +-
>  test/api_test/odp_ring_test.c   | 62 ++++++++++++++---------------
>  test/api_test/odp_shm_test.c    |  3 +-
>  test/api_test/odp_timer_ping.c  | 27 +++++++------
>  test/test_debug.h               | 88 
> +++++++++++++++++++++++++++++++++++++++++
>  7 files changed, 148 insertions(+), 51 deletions(-)
>  create mode 100644 test/test_debug.h
>
> diff --git a/test/api_test/Makefile.am b/test/api_test/Makefile.am
> index 5104454..bad7132 100644
> --- a/test/api_test/Makefile.am
> +++ b/test/api_test/Makefile.am
> @@ -1,6 +1,12 @@
>  include $(top_srcdir)/test/Makefile.inc
>
>  bin_PROGRAMS = odp_atomic odp_shm odp_ring odp_timer_ping
> +
> +odp_atomic_CFLAGS = $(AM_CFLAGS) -I $(top_srcdir)/test
> +odp_shm_CFLAGS = $(AM_CFLAGS) -I $(top_srcdir)/test
> +odp_ring_CFLAGS = $(AM_CFLAGS) -I $(top_srcdir)/test
> +odp_timer_ping_CFLAGS = $(AM_CFLAGS) -I $(top_srcdir)/test
> +
>  odp_atomic_LDFLAGS = $(AM_LDFLAGS) -static
>  odp_shm_LDFLAGS = $(AM_LDFLAGS) -static
>  odp_ring_LDFLAGS = $(AM_LDFLAGS) -static
> diff --git a/test/api_test/odp_atomic_test.c b/test/api_test/odp_atomic_test.c
> index 3ca7674..f07c962 100644
> --- a/test/api_test/odp_atomic_test.c
> +++ b/test/api_test/odp_atomic_test.c
> @@ -6,9 +6,9 @@
>
>  #include <string.h>
>  #include <sys/time.h>
> -#include <odp_debug.h>
>  #include <odp_common.h>
>  #include <odp_atomic_test.h>
> +#include <test_debug.h>
>
>  static odp_atomic_u32_t a32u;
>  static odp_atomic_u64_t a64u;
> @@ -166,12 +166,12 @@ void test_atomic_store(void)
>  int test_atomic_validate(void)
>  {
>         if (odp_atomic_load_u32(&a32u) != U32_INIT_VAL) {
> -               ODP_ERR("Atomic u32 usual functions failed\n");
> +               LOG_ERR("Atomic u32 usual functions failed\n");
>                 return -1;
>         }
>
>         if (odp_atomic_load_u64(&a64u) != U64_INIT_VAL) {
> -               ODP_ERR("Atomic u64 usual functions failed\n");
> +               LOG_ERR("Atomic u64 usual functions failed\n");
>                 return -1;
>         }
>
> @@ -247,7 +247,7 @@ int main(int argc, char *argv[])
>                         sscanf(argv[++i], "%d", &pthrdnum);
>                         break;
>                 default:
> -                       ODP_ERR("Invalid option %c\n", c);
> +                       LOG_ERR("Invalid option %c\n", c);
>                         usage();
>                         goto err_exit;
>                 }
> @@ -273,7 +273,7 @@ int main(int argc, char *argv[])
>         if ((test_type > 0) && (test_type < TEST_MAX)) {
>                 printf("%s\n", test_name[test_type]);
>         } else {
> -               ODP_ERR("Invalid test case [%d]\n", test_type);
> +               LOG_ERR("Invalid test case [%d]\n", test_type);
>                 usage();
>                 goto err_exit;
>         }
> diff --git a/test/api_test/odp_common.c b/test/api_test/odp_common.c
> index ed1fc97..329d4d4 100644
> --- a/test/api_test/odp_common.c
> +++ b/test/api_test/odp_common.c
> @@ -16,6 +16,7 @@
>  #include <odp_common.h>
>  #include <odp_atomic_test.h>
>  #include <odp_shm_test.h>
> +#include <test_debug.h>
>
>
>  /* Globals */
> @@ -57,7 +58,7 @@ int odp_test_global_init(void)
>         memset(thread_tbl, 0, sizeof(thread_tbl));
>
>         if (odp_init_global(NULL, NULL)) {
> -               ODP_ERR("ODP global init failed.\n");
> +               LOG_ERR("ODP global init failed.\n");
>                 return -1;
>         }
>
> diff --git a/test/api_test/odp_ring_test.c b/test/api_test/odp_ring_test.c
> index eb1f301..a55a0cd 100644
> --- a/test/api_test/odp_ring_test.c
> +++ b/test/api_test/odp_ring_test.c
> @@ -48,9 +48,9 @@
>  #include <stdio.h>
>  #include <string.h>
>  #include <odp.h>
> -#include <odp_debug.h>
>  #include <odp_common.h>
>  #include <odph_ring.h>
> +#include <test_debug.h>
>
>  #define RING_SIZE 4096
>  #define MAX_BULK 32
> @@ -66,7 +66,7 @@ static int test_ring_basic(odph_ring_t *r)
>         /* alloc dummy object pointers */
>         src = malloc(RING_SIZE*2*sizeof(void *));
>         if (src == NULL) {
> -               ODP_ERR("failed to allocate test ring src memory\n");
> +               LOG_ERR("failed to allocate test ring src memory\n");
>                 goto fail;
>         }
>         for (i = 0; i < RING_SIZE*2; i++)
> @@ -77,7 +77,7 @@ static int test_ring_basic(odph_ring_t *r)
>         /* alloc some room for copied objects */
>         dst = malloc(RING_SIZE*2*sizeof(void *));
>         if (dst == NULL) {
> -               ODP_ERR("failed to allocate test ring dst memory\n");
> +               LOG_ERR("failed to allocate test ring dst memory\n");
>                 goto fail;
>         }
>
> @@ -89,7 +89,7 @@ static int test_ring_basic(odph_ring_t *r)
>         ret = odph_ring_sp_enqueue_burst(r, cur_src, 1);
>         cur_src += 1;
>         if ((ret & ODPH_RING_SZ_MASK) != 1) {
> -               ODP_ERR("sp_enq for 1 obj failed\n");
> +               LOG_ERR("sp_enq for 1 obj failed\n");
>                 goto fail;
>         }
>
> @@ -97,14 +97,14 @@ static int test_ring_basic(odph_ring_t *r)
>         ret = odph_ring_sp_enqueue_burst(r, cur_src, 2);
>         cur_src += 2;
>         if ((ret & ODPH_RING_SZ_MASK) != 2) {
> -               ODP_ERR("sp_enq for 2 obj failed\n");
> +               LOG_ERR("sp_enq for 2 obj failed\n");
>                 goto fail;
>         }
>
>         printf("enqueue MAX_BULK objs\n");
>         ret = odph_ring_sp_enqueue_burst(r, cur_src, MAX_BULK);
>         if ((ret & ODPH_RING_SZ_MASK) != MAX_BULK) {
> -               ODP_ERR("sp_enq for %d obj failed\n", MAX_BULK);
> +               LOG_ERR("sp_enq for %d obj failed\n", MAX_BULK);
>                 goto fail;
>         }
>
> @@ -112,7 +112,7 @@ static int test_ring_basic(odph_ring_t *r)
>         ret = odph_ring_sc_dequeue_burst(r, cur_dst, 1);
>         cur_dst += 1;
>         if ((ret & ODPH_RING_SZ_MASK) != 1) {
> -               ODP_ERR("sc_deq for 1 obj failed\n");
> +               LOG_ERR("sc_deq for 1 obj failed\n");
>                 goto fail;
>         }
>
> @@ -120,7 +120,7 @@ static int test_ring_basic(odph_ring_t *r)
>         ret = odph_ring_sc_dequeue_burst(r, cur_dst, 2);
>         cur_dst += 2;
>         if ((ret & ODPH_RING_SZ_MASK) != 2) {
> -               ODP_ERR("sc_deq for 2 obj failed\n");
> +               LOG_ERR("sc_deq for 2 obj failed\n");
>                 goto fail;
>         }
>
> @@ -128,13 +128,13 @@ static int test_ring_basic(odph_ring_t *r)
>         ret = odph_ring_sc_dequeue_burst(r, cur_dst, MAX_BULK);
>         cur_dst += MAX_BULK;
>         if ((ret & ODPH_RING_SZ_MASK) != MAX_BULK) {
> -               ODP_ERR("sc_deq for %d obj failed\n", MAX_BULK);
> +               LOG_ERR("sc_deq for %d obj failed\n", MAX_BULK);
>                 goto fail;
>         }
>
>         /* check data */
>         if (memcmp(src, dst, cur_dst - dst)) {
> -               ODP_ERR("data after dequeue is not the same\n");
> +               LOG_ERR("data after dequeue is not the same\n");
>                 goto fail;
>         }
>
> @@ -147,46 +147,46 @@ static int test_ring_basic(odph_ring_t *r)
>         ret = odph_ring_mp_enqueue_bulk(r, cur_src, 1);
>         cur_src += 1;
>         if (ret != 0) {
> -               ODP_ERR("mp_enq for 1 obj failed\n");
> +               LOG_ERR("mp_enq for 1 obj failed\n");
>                 goto fail;
>         }
>         printf("enqueue 2 objs\n");
>         ret = odph_ring_mp_enqueue_bulk(r, cur_src, 2);
>         cur_src += 2;
>         if (ret != 0) {
> -               ODP_ERR("mp_enq for 2 obj failed\n");
> +               LOG_ERR("mp_enq for 2 obj failed\n");
>                 goto fail;
>         }
>         printf("enqueue MAX_BULK objs\n");
>         ret = odph_ring_mp_enqueue_bulk(r, cur_src, MAX_BULK);
>         if (ret != 0) {
> -               ODP_ERR("mp_enq for %d obj failed\n", MAX_BULK);
> +               LOG_ERR("mp_enq for %d obj failed\n", MAX_BULK);
>                 goto fail;
>         }
>         printf("dequeue 1 obj\n");
>         ret = odph_ring_mc_dequeue_bulk(r, cur_dst, 1);
>         cur_dst += 1;
>         if (ret != 0) {
> -               ODP_ERR("mc_deq for 1 obj failed\n");
> +               LOG_ERR("mc_deq for 1 obj failed\n");
>                 goto fail;
>         }
>         printf("dequeue 2 objs\n");
>         ret = odph_ring_mc_dequeue_bulk(r, cur_dst, 2);
>         cur_dst += 2;
>         if (ret != 0) {
> -               ODP_ERR("mc_deq for 2 obj failed\n");
> +               LOG_ERR("mc_deq for 2 obj failed\n");
>                 goto fail;
>         }
>         printf("dequeue MAX_BULK objs\n");
>         ret = odph_ring_mc_dequeue_bulk(r, cur_dst, MAX_BULK);
>         cur_dst += MAX_BULK;
>         if (ret != 0) {
> -               ODP_ERR("mc_deq for %d obj failed\n", MAX_BULK);
> +               LOG_ERR("mc_deq for %d obj failed\n", MAX_BULK);
>                 goto fail;
>         }
>         /* check data */
>         if (memcmp(src, dst, cur_dst - dst)) {
> -               ODP_ERR("data after dequeue is not the same\n");
> +               LOG_ERR("data after dequeue is not the same\n");
>                 goto fail;
>         }
>
> @@ -200,30 +200,30 @@ static int test_ring_basic(odph_ring_t *r)
>         ret = odph_ring_mp_enqueue_bulk(r, cur_src, num_elems);
>         cur_src += num_elems;
>         if (ret != 0) {
> -               ODP_ERR("Cannot enqueue\n");
> +               LOG_ERR("Cannot enqueue\n");
>                 goto fail;
>         }
>         ret = odph_ring_mp_enqueue_bulk(r, cur_src, num_elems);
>         if (ret != -EDQUOT) {
> -               ODP_ERR("Watermark not exceeded\n");
> +               LOG_ERR("Watermark not exceeded\n");
>                 goto fail;
>         }
>         ret = odph_ring_mc_dequeue_bulk(r, cur_dst, num_elems);
>         cur_dst += num_elems;
>         if (ret != 0) {
> -               ODP_ERR("Cannot dequeue\n");
> +               LOG_ERR("Cannot dequeue\n");
>                 goto fail;
>         }
>         ret = odph_ring_mc_dequeue_bulk(r, cur_dst, num_elems);
>         cur_dst += num_elems;
>         if (ret != 0) {
> -               ODP_ERR("Cannot dequeue2\n");
> +               LOG_ERR("Cannot dequeue2\n");
>                 goto fail;
>         }
>
>         /* check data */
>         if (memcmp(src, dst, cur_dst - dst)) {
> -               ODP_ERR("data after dequeue is not the same\n");
> +               LOG_ERR("data after dequeue is not the same\n");
>                 goto fail;
>         }
>
> @@ -253,7 +253,7 @@ static int producer_fn(void)
>         /* alloc dummy object pointers */
>         src = malloc(MAX_BULK*2*sizeof(void *));
>         if (src == NULL) {
> -               ODP_ERR("failed to allocate producer memory.\n");
> +               LOG_ERR("failed to allocate producer memory.\n");
>                 return -1;
>         }
>         for (i = 0; i < MAX_BULK; i++)
> @@ -277,7 +277,7 @@ static int consumer_fn(void)
>         /* alloc dummy object pointers */
>         src = malloc(MAX_BULK*2*sizeof(void *));
>         if (src == NULL) {
> -               ODP_ERR("failed to allocate consumer memory.\n");
> +               LOG_ERR("failed to allocate consumer memory.\n");
>                 return -1;
>         }
>
> @@ -340,7 +340,7 @@ static void test_ring_stress(stress_type_t type)
>         case one_deq_rest_enq:
>         case one_enq_rest_deq:/*TBD*/
>         default:
> -               ODP_ERR("Invalid stress type or test case yet not 
> supported\n");
> +               LOG_ERR("Invalid stress type or test case yet not 
> supported\n");
>         }
>  }
>
> @@ -371,20 +371,20 @@ static void *test_ring(void *arg)
>                                     0 /* not used, alignement
>                                          taken care inside func : todo */);
>                 if (r == NULL) {
> -                       ODP_ERR("ring create failed\n");
> +                       LOG_ERR("ring create failed\n");
>                         result = -1;
>                         break;
>                 }
>                 /* lookup ring from its name */
>                 if (odph_ring_lookup(ring_name) != r) {
> -                       ODP_ERR("ring lookup failed\n");
> +                       LOG_ERR("ring lookup failed\n");
>                         result = -1;
>                         break;
>                 }
>
>                 /* basic operations */
>                 if (test_ring_basic(r) < 0) {
> -                       ODP_ERR("ring basic enqueue/dequeu ops failed\n");
> +                       LOG_ERR("ring basic enqueue/dequeu ops failed\n");
>                         result = -1;
>                 }
>
> @@ -401,7 +401,7 @@ static void *test_ring(void *arg)
>                 break;
>
>         default:
> -               ODP_ERR("Invalid test case [%d]\n", parg->thrdarg.testcase);
> +               LOG_ERR("Invalid test case [%d]\n", parg->thrdarg.testcase);
>                 result = -1;
>                 break;
>         }
> @@ -447,12 +447,12 @@ int main(int argc ODP_UNUSED, char *argv[] ODP_UNUSED)
>                                 0 /* not used, alignement
>                                  taken care inside func : todo */);
>         if (r_stress == NULL) {
> -               ODP_ERR("ring create failed\n");
> +               LOG_ERR("ring create failed\n");
>                 goto fail;
>         }
>         /* lookup ring from its name */
>         if (odph_ring_lookup(ring_name) != r_stress) {
> -               ODP_ERR("ring lookup failed\n");
> +               LOG_ERR("ring lookup failed\n");
>                 goto fail;
>         }
>  #endif
> diff --git a/test/api_test/odp_shm_test.c b/test/api_test/odp_shm_test.c
> index 6208e78..5cfde7d 100644
> --- a/test/api_test/odp_shm_test.c
> +++ b/test/api_test/odp_shm_test.c
> @@ -14,6 +14,7 @@
>  #include <odp.h>
>  #include <odp_common.h>
>  #include <odp_shm_test.h>
> +#include <test_debug.h>
>
>  static void *run_thread(void *arg)
>  {
> @@ -32,7 +33,7 @@ static void *run_thread(void *arg)
>                 printf("  [%i] shared data at %p\n", thr, test_shared_data);
>                 break;
>         default:
> -               ODP_ERR("Invalid test case [%d]\n", parg->testcase);
> +               LOG_ERR("Invalid test case [%d]\n", parg->testcase);
>         }
>         fflush(stdout);
>
> diff --git a/test/api_test/odp_timer_ping.c b/test/api_test/odp_timer_ping.c
> index 65e3834..7704181 100644
> --- a/test/api_test/odp_timer_ping.c
> +++ b/test/api_test/odp_timer_ping.c
> @@ -37,6 +37,7 @@
>  #include <odp_timer.h>
>  #include <odph_linux.h>
>  #include <odph_chksum.h>
> +#include <test_debug.h>
>
>  #define MSG_POOL_SIZE         (4*1024*1024)
>  #define BUF_SIZE               8
> @@ -98,7 +99,7 @@ static int listen_to_pingack(void)
>
>         sd = socket(PF_INET, SOCK_RAW, proto->p_proto);
>         if (sd < 0) {
> -               ODP_ERR("Listener socket open failed\n");
> +               LOG_ERR("Listener socket open failed\n");
>                 err = -1;
>                 goto err;
>         }
> @@ -116,7 +117,7 @@ static int listen_to_pingack(void)
>                         ODP_DBG(" Rx timeout msg cnt [%d]\n", i);
>                         err = -1;
>                 } else if (res == -1) {
> -                       ODP_ERR("recvfrom error");
> +                       LOG_ERR("recvfrom error");
>                         err = -1;
>                         goto err;
>                 } else {
> @@ -130,7 +131,7 @@ static int listen_to_pingack(void)
>                                 /* pkt rxvd therefore cancel the timeout */
>                                 if (odp_timer_cancel_tmo(test_timer_ping,
>                                                          test_ping_tmo) != 0) 
> {
> -                                       ODP_ERR("cancel_tmo failed ..exiting 
> listner thread\n");
> +                                       LOG_ERR("cancel_tmo failed ..exiting 
> listner thread\n");
>                                         /* avoid exiting from here even if tmo
>                                          * failed for current ping,
>                                          * allow subsequent ping_rx request */
> @@ -166,17 +167,17 @@ static int send_ping_request(struct sockaddr_in *addr)
>
>         sd = socket(PF_INET, SOCK_RAW, proto->p_proto);
>         if (sd < 0) {
> -               ODP_ERR("Sender socket open failed\n");
> +               LOG_ERR("Sender socket open failed\n");
>                 return -1;
>         }
>
>         if (setsockopt(sd, SOL_IP, IP_TTL, &val, sizeof(val)) != 0) {
> -               ODP_ERR("Error setting TTL option\n");
> +               LOG_ERR("Error setting TTL option\n");
>                 err = -1;
>                 goto err;
>         }
>         if (fcntl(sd, F_SETFL, O_NONBLOCK) != 0) {
> -               ODP_ERR("Request for nonblocking I/O failed\n");
> +               LOG_ERR("Request for nonblocking I/O failed\n");
>                 err = -1;
>                 goto err;
>         }
> @@ -201,7 +202,7 @@ static int send_ping_request(struct sockaddr_in *addr)
>                 /* txmit the pkt */
>                 if (sendto(sd, &pckt, sizeof(pckt), 0,
>                            (struct sockaddr *)addr, sizeof(*addr)) <= 0) {
> -                       ODP_ERR("sendto operation failed msg_cnt 
> [%d]..exiting sender thread\n", i);
> +                       LOG_ERR("sendto operation failed msg_cnt 
> [%d]..exiting sender thread\n", i);
>                         err = -1;
>                         goto err;
>                 }
> @@ -258,7 +259,7 @@ static void *send_ping(void *arg)
>                         parg->result = -1;
>                 break;
>         default:
> -               ODP_ERR("Invalid test case [%d]\n", parg->thrdarg.testcase);
> +               LOG_ERR("Invalid test case [%d]\n", parg->thrdarg.testcase);
>         }
>
>         fflush(stdout);
> @@ -281,7 +282,7 @@ static void *rx_ping(void *arg)
>                         parg->result = -1;
>                 break;
>         default:
> -               ODP_ERR("Invalid test case [%d]\n", parg->thrdarg.testcase);
> +               LOG_ERR("Invalid test case [%d]\n", parg->thrdarg.testcase);
>         }
>
>         fflush(stdout);
> @@ -294,7 +295,7 @@ static int ping_init(int count, char *name[])
>  {
>         struct hostent *hname;
>         if (count != 2) {
> -               ODP_ERR("usage: %s <hostaddr>\n", name[0]);
> +               LOG_ERR("usage: %s <hostaddr>\n", name[0]);
>                 return -1;
>         }
>
> @@ -342,7 +343,7 @@ int main(int argc ODP_UNUSED, char *argv[] ODP_UNUSED)
>                                       ODP_CACHE_LINE_SIZE,
>                                       ODP_BUFFER_TYPE_RAW);
>         if (pool == ODP_BUFFER_POOL_INVALID) {
> -               ODP_ERR("Pool create failed.\n");
> +               LOG_ERR("Pool create failed.\n");
>                 return -1;
>         }
>
> @@ -353,7 +354,7 @@ int main(int argc ODP_UNUSED, char *argv[] ODP_UNUSED)
>                                  NULL);
>
>         if (queue == ODP_QUEUE_INVALID) {
> -               ODP_ERR("Timer queue create failed.\n");
> +               LOG_ERR("Timer queue create failed.\n");
>                 return -1;
>         }
>
> @@ -363,7 +364,7 @@ int main(int argc ODP_UNUSED, char *argv[] ODP_UNUSED)
>                                            MAXUS*ODP_TIME_USEC);
>
>         if (test_timer_ping == ODP_TIMER_INVALID) {
> -               ODP_ERR("Timer create failed.\n");
> +               LOG_ERR("Timer create failed.\n");
>                 return -1;
>         }
>
> diff --git a/test/test_debug.h b/test/test_debug.h
> new file mode 100644
> index 0000000..35e21d9
> --- /dev/null
> +++ b/test/test_debug.h
> @@ -0,0 +1,88 @@
> +/* Copyright (c) 2014, Linaro Limited
> + * All rights reserved.
> + *
> + * SPDX-License-Identifier:     BSD-3-Clause
> + */
> +/**
> + * @file
> + *
> + * example debug
> + */
> +
> +#ifndef TEST_DEBUG_H_
> +#define TEST_DEBUG_H_
> +
> +#include <stdio.h>
> +#include <stdlib.h>
> +
> +#ifdef __cplusplus
> +extern "C" {
> +#endif
> +
> +#ifndef TEST_DEBUG_PRINT
> +#define TEST_DEBUG_PRINT 1
> +#endif
> +
> +/**
> + * log level.
> + */
> +typedef enum example_log_level {
> +       TEST_LOG_DBG,
> +       TEST_LOG_ERR,
> +       TEST_LOG_ABORT
> +} example_log_level_e;
> +
> +/**
> + * default LOG macro.
> + */
> +#define TEST_LOG(level, fmt, ...) \
> +do { \
> +       switch (level) { \
> +       case TEST_LOG_ERR: \
> +               fprintf(stderr, "%s:%d:%s():" fmt, __FILE__, \
> +               __LINE__, __func__, ##__VA_ARGS__); \
> +               break; \
> +       case TEST_LOG_DBG: \
> +               if (TEST_DEBUG_PRINT == 1) \
> +                       fprintf(stderr, "%s:%d:%s():" fmt, __FILE__, \
> +                       __LINE__, __func__, ##__VA_ARGS__); \
> +               break; \
> +       case TEST_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 LOG_DBG(fmt, ...) \
> +               TEST_LOG(TEST_LOG_DBG, fmt, ##__VA_ARGS__)
> +
> +/**
> + * Print output to stderr (file, line and function).
> + */
> +#define LOG_ERR(fmt, ...) \
> +               TEST_LOG(TEST_LOG_ERR, fmt, ##__VA_ARGS__)
> +
> +/**
> + * Print output to stderr (file, line and function),
> + * then abort.
> + */
> +#define LOG_ABORT(fmt, ...) \
> +               TEST_LOG(TEST_LOG_ABORT, fmt, ##__VA_ARGS__)
> +
> +/**
> + * @}
> + */
> +
> +#ifdef __cplusplus
> +}
> +#endif
> +
> +#endif
> --
> 2.1.0
>
>
> _______________________________________________
> lng-odp mailing list
> [email protected]
> http://lists.linaro.org/mailman/listinfo/lng-odp

_______________________________________________
lng-odp mailing list
[email protected]
http://lists.linaro.org/mailman/listinfo/lng-odp

Reply via email to