bionic_globals.h revision fe9d0ed6cb10d5403e54d2dd12628a0ec345ae6e
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_GLOBALS_H 2993c0f5ee00d1357247fda333c9d49c8673c9c83bJosh Gao#define _PRIVATE_BIONIC_GLOBALS_H 3093c0f5ee00d1357247fda333c9d49c8673c9c83bJosh Gao 3193c0f5ee00d1357247fda333c9d49c8673c9c83bJosh Gao#include <sys/cdefs.h> 3293c0f5ee00d1357247fda333c9d49c8673c9c83bJosh Gao#include "private/bionic_vdso.h" 3393c0f5ee00d1357247fda333c9d49c8673c9c83bJosh Gao#include "private/WriteProtected.h" 3493c0f5ee00d1357247fda333c9d49c8673c9c83bJosh Gao 3593c0f5ee00d1357247fda333c9d49c8673c9c83bJosh Gaostruct libc_globals { 3693c0f5ee00d1357247fda333c9d49c8673c9c83bJosh Gao vdso_entry vdso[VDSO_END]; 37fe9d0ed6cb10d5403e54d2dd12628a0ec345ae6eJosh Gao long setjmp_cookie; 3893c0f5ee00d1357247fda333c9d49c8673c9c83bJosh Gao}; 3993c0f5ee00d1357247fda333c9d49c8673c9c83bJosh Gao 4093c0f5ee00d1357247fda333c9d49c8673c9c83bJosh Gao__LIBC_HIDDEN__ extern WriteProtected<libc_globals> __libc_globals; 4193c0f5ee00d1357247fda333c9d49c8673c9c83bJosh Gao 4293c0f5ee00d1357247fda333c9d49c8673c9c83bJosh Gaoclass KernelArgumentBlock; 4393c0f5ee00d1357247fda333c9d49c8673c9c83bJosh Gao__LIBC_HIDDEN__ void __libc_init_vdso(libc_globals* globals, 4493c0f5ee00d1357247fda333c9d49c8673c9c83bJosh Gao KernelArgumentBlock& args); 45fe9d0ed6cb10d5403e54d2dd12628a0ec345ae6eJosh Gao__LIBC_HIDDEN__ void __libc_init_setjmp_cookie(libc_globals* globals, 46fe9d0ed6cb10d5403e54d2dd12628a0ec345ae6eJosh Gao KernelArgumentBlock& args); 4793c0f5ee00d1357247fda333c9d49c8673c9c83bJosh Gao 4893c0f5ee00d1357247fda333c9d49c8673c9c83bJosh Gao#endif 49