| /* | |
| * Copyright 2019 The Emscripten Authors. All rights reserved. | |
| * Emscripten is available under two separate licenses, the MIT license and the | |
| * University of Illinois/NCSA Open Source License. Both these licenses can be | |
| * found in the LICENSE file. | |
| */ | |
| extern "C" { | |
| typedef struct asyncify_data_s { | |
| void *stack_ptr; /** Current position in the Asyncify stack (*not* the C stack) */ | |
| void *stack_limit; /** Where the Asyncify stack ends. */ | |
| int rewind_id; /** Interned ID of the rewind entry point; opaque to application. */ | |
| } asyncify_data_t; | |
| typedef struct emscripten_fiber_s { | |
| void *stack_base; /** Where the C stack starts (NOTE: grows down). */ | |
| void *stack_limit; /** Where the C stack ends. */ | |
| void *stack_ptr; /** Current position in the C stack. */ | |
| em_arg_callback_func entry; /** Function to call when resuming this context. If NULL, asyncify_data is used to rewind the call stack. */ | |
| void *user_data; /** Opaque pointer, passed as-is to the entry function. */ | |
| asyncify_data_t asyncify_data; | |
| } emscripten_fiber_t; | |
| void emscripten_fiber_init( | |
| emscripten_fiber_t * _Nonnull fiber, | |
| em_arg_callback_func entry_func, | |
| void *entry_func_arg, | |
| void * _Nonnull c_stack, | |
| size_t c_stack_size, | |
| void * _Nonnull asyncify_stack, | |
| size_t asyncify_stack_size | |
| ); | |
| void emscripten_fiber_init_from_current_context( | |
| emscripten_fiber_t * _Nonnull fiber, | |
| void * _Nonnull asyncify_stack, | |
| size_t asyncify_stack_size | |
| ); | |
| void emscripten_fiber_swap( | |
| emscripten_fiber_t * _Nonnull old_fiber, | |
| emscripten_fiber_t * _Nonnull new_fibe | |
| ); | |
| } | |