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