1 /* 2 * Copyright 2014 The Chromium Authors. All rights reserved. 3 * Use of this source code is governed by a BSD-style license that can be 4 * found in the LICENSE file. 5 */ 6 7 #ifndef PPAPI_NACL_IRT_PUBLIC_IRT_PPAPI_H_ 8 #define PPAPI_NACL_IRT_PUBLIC_IRT_PPAPI_H_ 9 10 #include <stddef.h> 11 12 #include "ppapi/c/ppp.h" 13 14 struct PP_StartFunctions { 15 int32_t (*PPP_InitializeModule)(PP_Module module_id, 16 PPB_GetInterface get_browser_interface); 17 void (*PPP_ShutdownModule)(void); 18 const void* (*PPP_GetInterface)(const char* interface_name); 19 }; 20 21 struct PP_ThreadFunctions { 22 /* 23 * This is a cut-down version of pthread_create()/pthread_join(). 24 * We omit thread creation attributes and the thread's return value. 25 * 26 * We use uintptr_t as the thread ID type because pthread_t is not 27 * part of the stable ABI; a user thread library might choose an 28 * arbitrary size for its own pthread_t. 29 */ 30 int (*thread_create)(uintptr_t* tid, 31 void (*func)(void* thread_argument), 32 void* thread_argument); 33 int (*thread_join)(uintptr_t tid); 34 }; 35 36 #define NACL_IRT_PPAPIHOOK_v0_1 "nacl-irt-ppapihook-0.1" 37 struct nacl_irt_ppapihook { 38 int (*ppapi_start)(const struct PP_StartFunctions*); 39 void (*ppapi_register_thread_creator)(const struct PP_ThreadFunctions*); 40 }; 41 42 #endif // PPAPI_NACL_IRT_PUBLIC_IRT_PPAPI_H_ 43