1e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti/* Copyright (c) 2011, The Linux Foundation. All rights reserved.
2e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti *
3e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti * Redistribution and use in source and binary forms, with or without
4e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti * modification, are permitted provided that the following conditions are
5e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti * met:
6e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti *     * Redistributions of source code must retain the above copyright
7e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti *       notice, this list of conditions and the following disclaimer.
8e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti *     * Redistributions in binary form must reproduce the above
9e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti *       copyright notice, this list of conditions and the following
10e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti *       disclaimer in the documentation and/or other materials provided
11e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti *       with the distribution.
12e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti *     * Neither the name of The Linux Foundation nor the names of its
13e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti *       contributors may be used to endorse or promote products derived
14e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti *       from this software without specific prior written permission.
15e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti *
16e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
17e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
18e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
19e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti * ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
20e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
21e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
22e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
23e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
24e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
25e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
26e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti */
28e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
29e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti#ifndef DEBUG_H
30e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti#define DEBUG_H
31e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
32e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti#include <stdio.h>
33e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
34e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti#define LOG_TAG "LocSvc_rpc"
35e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti#include <utils/Log.h>
36e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
37e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti#define PRINT(x...) do {                                    \
38e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        fprintf(stdout, "%s(%d) ", __FUNCTION__, __LINE__); \
39e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        fprintf(stdout, ##x);                               \
40e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        ALOGD(x);                               \
41e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    } while(0)
42e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
43e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti#ifdef DEBUG
44e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti#define D PRINT
45e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti#else
46e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti#define D(x...) do { } while(0)
47e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti#endif
48e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
49e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti#ifdef VERBOSE
50e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti#define V PRINT
51e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti#else
52e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti#define V(x...) do { } while(0)
53e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti#endif
54e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
55e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti#define E(x...) do {                                        \
56e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        fprintf(stderr, "%s(%d) ", __FUNCTION__, __LINE__); \
57e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        fprintf(stderr, ##x);                               \
58e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        ALOGE(x);                                            \
59e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    } while(0)
60e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
61e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti#define FAILIF(cond, msg...) do {                                              \
62e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        if (__builtin_expect (cond, 0)) {                                      \
63e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti            fprintf(stderr, "%s:%s:(%d): ", __FILE__, __FUNCTION__, __LINE__); \
64e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti            fprintf(stderr, ##msg);                                            \
65e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti            ALOGE(##msg);                                                       \
66e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti        }                                                                      \
67e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti    } while(0)
68e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
69e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti#endif/*DEBUG_H*/
70