1e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti/* Copyright (c) 2013, 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 __PLATFORM_LIB_MACROS_H__
30e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti#define __PLATFORM_LIB_MACROS_H__
31e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
32e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti#include <sys/time.h>
33e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
34e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti#define TS_PRINTF(format, x...)                                \
35e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti{                                                              \
36e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti  struct timeval tv;                                           \
37e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti  struct timezone tz;                                          \
38e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti  int hh, mm, ss;                                              \
39e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti  gettimeofday(&tv, &tz);                                      \
40e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti  hh = tv.tv_sec/3600%24;                                      \
41e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti  mm = (tv.tv_sec%3600)/60;                                    \
42e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti  ss = tv.tv_sec%60;                                           \
43e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti  fprintf(stdout,"%02d:%02d:%02d.%06ld]" format "\n", hh, mm, ss, tv.tv_usec,##x);    \
44e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti}
45e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
46e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
47e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti#ifdef USE_GLIB
48e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
49e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti#define strlcat g_strlcat
50e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti#define strlcpy g_strlcpy
51e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
52e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti#define ALOGE(format, x...) TS_PRINTF("E/%s (%d): " format , LOG_TAG, getpid(), ##x)
53e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti#define ALOGW(format, x...) TS_PRINTF("W/%s (%d): " format , LOG_TAG, getpid(), ##x)
54e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti#define ALOGI(format, x...) TS_PRINTF("I/%s (%d): " format , LOG_TAG, getpid(), ##x)
55e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti#define ALOGD(format, x...) TS_PRINTF("D/%s (%d): " format , LOG_TAG, getpid(), ##x)
56e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti#define ALOGV(format, x...) TS_PRINTF("V/%s (%d): " format , LOG_TAG, getpid(), ##x)
57e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
58e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti#define GETTID_PLATFORM_LIB_ABSTRACTION (syscall(SYS_gettid))
59e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
60e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti#define LOC_EXT_CREATE_THREAD_CB_PLATFORM_LIB_ABSTRACTION createPthread
61e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti#define ELAPSED_MILLIS_SINCE_BOOT_PLATFORM_LIB_ABSTRACTION (elapsedMillisSinceBoot())
62e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
63e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
64e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti#else
65e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
66e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti#ifdef __cplusplus
67e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletiextern "C" {
68e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti#endif
69e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuletipid_t gettid(void);
70e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
71e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti#ifdef __cplusplus
72e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti}
73e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti#endif
74e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
75e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti#define GETTID_PLATFORM_LIB_ABSTRACTION (gettid())
76e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti#define LOC_EXT_CREATE_THREAD_CB_PLATFORM_LIB_ABSTRACTION android::AndroidRuntime::createJavaThread
77e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti#define ELAPSED_MILLIS_SINCE_BOOT_PLATFORM_LIB_ABSTRACTION  (android::elapsedRealtime())
78e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
79e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti#endif
80e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti
81e7c98642e1e156ea6cde1238cd0006f669cfb696Uday Kishore Pasupuleti#endif
82