193c0f5ee00d1357247fda333c9d49c8673c9c83bJosh Gao/* 293c0f5ee00d1357247fda333c9d49c8673c9c83bJosh Gao * Copyright (C) 2015 The Android Open Source Project 393c0f5ee00d1357247fda333c9d49c8673c9c83bJosh Gao * All rights reserved. 493c0f5ee00d1357247fda333c9d49c8673c9c83bJosh Gao * 593c0f5ee00d1357247fda333c9d49c8673c9c83bJosh Gao * Redistribution and use in source and binary forms, with or without 693c0f5ee00d1357247fda333c9d49c8673c9c83bJosh Gao * modification, are permitted provided that the following conditions 793c0f5ee00d1357247fda333c9d49c8673c9c83bJosh Gao * are met: 893c0f5ee00d1357247fda333c9d49c8673c9c83bJosh Gao * * Redistributions of source code must retain the above copyright 993c0f5ee00d1357247fda333c9d49c8673c9c83bJosh Gao * notice, this list of conditions and the following disclaimer. 1093c0f5ee00d1357247fda333c9d49c8673c9c83bJosh Gao * * Redistributions in binary form must reproduce the above copyright 1193c0f5ee00d1357247fda333c9d49c8673c9c83bJosh Gao * notice, this list of conditions and the following disclaimer in 1293c0f5ee00d1357247fda333c9d49c8673c9c83bJosh Gao * the documentation and/or other materials provided with the 1393c0f5ee00d1357247fda333c9d49c8673c9c83bJosh Gao * distribution. 1493c0f5ee00d1357247fda333c9d49c8673c9c83bJosh Gao * 1593c0f5ee00d1357247fda333c9d49c8673c9c83bJosh Gao * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 1693c0f5ee00d1357247fda333c9d49c8673c9c83bJosh Gao * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 1793c0f5ee00d1357247fda333c9d49c8673c9c83bJosh Gao * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS 1893c0f5ee00d1357247fda333c9d49c8673c9c83bJosh Gao * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 1993c0f5ee00d1357247fda333c9d49c8673c9c83bJosh Gao * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, 2093c0f5ee00d1357247fda333c9d49c8673c9c83bJosh Gao * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, 2193c0f5ee00d1357247fda333c9d49c8673c9c83bJosh Gao * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS 2293c0f5ee00d1357247fda333c9d49c8673c9c83bJosh Gao * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED 2393c0f5ee00d1357247fda333c9d49c8673c9c83bJosh Gao * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 2493c0f5ee00d1357247fda333c9d49c8673c9c83bJosh Gao * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT 2593c0f5ee00d1357247fda333c9d49c8673c9c83bJosh Gao * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 2693c0f5ee00d1357247fda333c9d49c8673c9c83bJosh Gao * SUCH DAMAGE. 2793c0f5ee00d1357247fda333c9d49c8673c9c83bJosh Gao */ 2893c0f5ee00d1357247fda333c9d49c8673c9c83bJosh Gao#ifndef _PRIVATE_BIONIC_VDSO_H 2993c0f5ee00d1357247fda333c9d49c8673c9c83bJosh Gao#define _PRIVATE_BIONIC_VDSO_H 3093c0f5ee00d1357247fda333c9d49c8673c9c83bJosh Gao 3193c0f5ee00d1357247fda333c9d49c8673c9c83bJosh Gao#include <time.h> 3293c0f5ee00d1357247fda333c9d49c8673c9c83bJosh Gao 3393c0f5ee00d1357247fda333c9d49c8673c9c83bJosh Gao#if defined(__aarch64__) 3493c0f5ee00d1357247fda333c9d49c8673c9c83bJosh Gao#define VDSO_CLOCK_GETTIME_SYMBOL "__kernel_clock_gettime" 3593c0f5ee00d1357247fda333c9d49c8673c9c83bJosh Gao#define VDSO_GETTIMEOFDAY_SYMBOL "__kernel_gettimeofday" 3693c0f5ee00d1357247fda333c9d49c8673c9c83bJosh Gao#elif defined(__x86_64__) || defined(__i386__) 3793c0f5ee00d1357247fda333c9d49c8673c9c83bJosh Gao#define VDSO_CLOCK_GETTIME_SYMBOL "__vdso_clock_gettime" 3893c0f5ee00d1357247fda333c9d49c8673c9c83bJosh Gao#define VDSO_GETTIMEOFDAY_SYMBOL "__vdso_gettimeofday" 3993c0f5ee00d1357247fda333c9d49c8673c9c83bJosh Gao#endif 4093c0f5ee00d1357247fda333c9d49c8673c9c83bJosh Gao 4193c0f5ee00d1357247fda333c9d49c8673c9c83bJosh Gaoextern "C" int __clock_gettime(int, timespec*); 4293c0f5ee00d1357247fda333c9d49c8673c9c83bJosh Gaoextern "C" int __gettimeofday(timeval*, struct timezone*); 4393c0f5ee00d1357247fda333c9d49c8673c9c83bJosh Gao 4493c0f5ee00d1357247fda333c9d49c8673c9c83bJosh Gaostruct vdso_entry { 4593c0f5ee00d1357247fda333c9d49c8673c9c83bJosh Gao const char* name; 4693c0f5ee00d1357247fda333c9d49c8673c9c83bJosh Gao void* fn; 4793c0f5ee00d1357247fda333c9d49c8673c9c83bJosh Gao}; 4893c0f5ee00d1357247fda333c9d49c8673c9c83bJosh Gao 4993c0f5ee00d1357247fda333c9d49c8673c9c83bJosh Gaoenum { 5093c0f5ee00d1357247fda333c9d49c8673c9c83bJosh Gao VDSO_CLOCK_GETTIME = 0, 5193c0f5ee00d1357247fda333c9d49c8673c9c83bJosh Gao VDSO_GETTIMEOFDAY, 5293c0f5ee00d1357247fda333c9d49c8673c9c83bJosh Gao VDSO_END 5393c0f5ee00d1357247fda333c9d49c8673c9c83bJosh Gao}; 5493c0f5ee00d1357247fda333c9d49c8673c9c83bJosh Gao 5593c0f5ee00d1357247fda333c9d49c8673c9c83bJosh Gao#endif // _PRIVATE_BIONIC_VDSO_H 56