File: emscripten_thread_init.c

package info (click to toggle)
emscripten 3.1.69%2Bdfsg-4
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 121,872 kB
  • sloc: ansic: 636,110; cpp: 425,974; javascript: 78,401; python: 58,404; sh: 49,154; pascal: 5,237; makefile: 3,365; asm: 2,415; lisp: 1,869
file content (31 lines) | stat: -rw-r--r-- 1,141 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
/*
 * Copyright 2021 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.
 */
#include <pthread.h>
#include "emscripten/threading.h"
#include "threading_internal.h"
#include "pthread_impl.h"

void _emscripten_thread_init(pthread_t ptr,
                             int is_main,
                             int is_runtime,
                             int can_block,
                             int default_stacksize,
                             int start_profiling) {
  __set_thread_state(ptr, is_main, is_runtime, can_block);
  // Set `__default_stacksize` just once when the main runtime thread is
  // started.  The value of `DEFAULT_PTHREAD_STACK_SIZE` is passed in here as
  // `default_stacksize`.
  if (is_runtime && default_stacksize) {
    __default_stacksize = default_stacksize;
  }
#ifndef NDEBUG
  if (start_profiling) {
    _emscripten_thread_profiler_enable();
  }
  emscripten_set_current_thread_status(EM_THREAD_STATUS_RUNNING);
#endif
}