Path: blob/main/system/lib/libc/emscripten_fiber.c
6162 views
// Copyright 2022 The Emscripten Authors. All rights reserved.1// Emscripten is available under two separate licenses, the MIT license and the2// University of Illinois/NCSA Open Source License. Both these licenses can be3// found in the LICENSE file.45#include <emscripten/fiber.h>6#include <emscripten/stack.h>78void emscripten_fiber_init(9emscripten_fiber_t *fiber,10em_arg_callback_func entry_func,11void *entry_func_arg,12void *c_stack,13size_t c_stack_size,14void *asyncify_stack,15size_t asyncify_stack_size16) {17char *c_stack_base = (char*)c_stack + c_stack_size;18fiber->stack_base = c_stack_base;19fiber->stack_limit = c_stack;20fiber->stack_ptr = c_stack_base;21fiber->entry = entry_func;22fiber->user_data = entry_func_arg;23fiber->asyncify_data.stack_ptr = asyncify_stack;24fiber->asyncify_data.stack_limit = (char*)asyncify_stack + asyncify_stack_size;25}2627void emscripten_fiber_init_from_current_context(28emscripten_fiber_t *fiber,29void *asyncify_stack,30size_t asyncify_stack_size31) {32fiber->stack_base = (void*)emscripten_stack_get_base();33fiber->stack_limit = (void*)emscripten_stack_get_end();34fiber->entry = NULL;35fiber->asyncify_data.stack_ptr = asyncify_stack;36fiber->asyncify_data.stack_limit = (char*)asyncify_stack + asyncify_stack_size;37}383940