Home | History | Annotate | Download | only in public
      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