diff options
Diffstat (limited to 'thread_none.c')
-rw-r--r-- | thread_none.c | 89 |
1 files changed, 70 insertions, 19 deletions
diff --git a/thread_none.c b/thread_none.c index 24e8e45e10..38730df7ba 100644 --- a/thread_none.c +++ b/thread_none.c @@ -15,7 +15,9 @@ #include <time.h> -#define DEBUG_OUT() (void)(0); +#if defined(__wasm__) && !defined(__EMSCRIPTEN__) +# include "wasm/machine.h" +#endif #define TIME_QUANTUM_MSEC (100) #define TIME_QUANTUM_USEC (TIME_QUANTUM_MSEC * 1000) @@ -23,29 +25,33 @@ // Do nothing for GVL static void -gvl_acquire(rb_global_vm_lock_t *gvl, rb_thread_t *th) +thread_sched_to_running(struct rb_thread_sched *sched, rb_thread_t *th) { } static void -gvl_release(rb_global_vm_lock_t *gvl) +thread_sched_to_waiting(struct rb_thread_sched *sched, rb_thread_t *th) { } +#define thread_sched_to_dead thread_sched_to_waiting + static void -gvl_yield(rb_global_vm_lock_t *gvl, rb_thread_t *th) +thread_sched_yield(struct rb_thread_sched *sched, rb_thread_t *th) { } void -rb_gvl_init(rb_global_vm_lock_t *gvl) +rb_thread_sched_init(struct rb_thread_sched *sched, bool atfork) { } +#if 0 static void -gvl_destroy(rb_global_vm_lock_t *gvl) +rb_thread_sched_destroy(struct rb_thread_sched *sched) { } +#endif // Do nothing for mutex guard void @@ -124,26 +130,23 @@ ruby_thread_set_native(rb_thread_t *th) } void -Init_native_thread(rb_thread_t *th) +Init_native_thread(rb_thread_t *main_th) { // no TLS setup and no thread id setup - ruby_thread_set_native(th); - fill_thread_id_str(th); -} - -static void -native_thread_destroy(rb_thread_t *th) -{ + ruby_thread_set_native(main_th); } void -ruby_init_stack(volatile VALUE *addr) +ruby_mn_threads_params(void) { } static int -native_thread_init_stack(rb_thread_t *th) +native_thread_init_stack(rb_thread_t *th, void *local_in_parent_frame) { +#if defined(__wasm__) && !defined(__EMSCRIPTEN__) + th->ec->machine.stack_start = (VALUE *)rb_wasm_stack_get_base(); +#endif return 0; // success } @@ -270,9 +273,57 @@ native_fd_select(int n, rb_fdset_t *readfds, rb_fdset_t *writefds, rb_fdset_t *e return rb_fd_select(n, readfds, writefds, exceptfds, timeout); } -static VALUE -rb_thread_start_unblock_thread(void) +static bool +th_has_dedicated_nt(const rb_thread_t *th) +{ + return true; +} + +void +rb_add_running_thread(rb_thread_t *th){ + // do nothing +} + +void +rb_del_running_thread(rb_thread_t *th) +{ + // do nothing +} + +void +rb_threadptr_sched_free(rb_thread_t *th) +{ + // do nothing +} + +void +rb_ractor_sched_barrier_start(rb_vm_t *vm, rb_ractor_t *cr) +{ + // do nothing +} + +void +rb_ractor_sched_barrier_join(rb_vm_t *vm, rb_ractor_t *cr) +{ + // do nothing +} + +void +rb_threadptr_remove(rb_thread_t *th) +{ + // do nothing +} + +void +rb_thread_sched_mark_zombies(rb_vm_t *vm) { - return Qfalse; + // do nothing } + +bool +rb_thread_lock_native_thread(void) +{ + return false; +} + #endif /* THREAD_SYSTEM_DEPENDENT_IMPLEMENTATION */ |