diff options
Diffstat (limited to 'src/rt')
| -rw-r--r-- | src/rt/rust_builtin.cpp | 5 | ||||
| -rw-r--r-- | src/rt/rust_task.h | 1 | ||||
| -rw-r--r-- | src/rt/rustrt.def.in | 1 |
3 files changed, 7 insertions, 0 deletions
diff --git a/src/rt/rust_builtin.cpp b/src/rt/rust_builtin.cpp index 3c6cc9d9245..a2bbaf80c0a 100644 --- a/src/rt/rust_builtin.cpp +++ b/src/rt/rust_builtin.cpp @@ -544,6 +544,11 @@ rust_get_stack_segment() { return rust_get_current_task()->stk; } +extern "C" CDECL stk_seg * +rust_get_c_stack() { + return rust_get_current_task()->get_c_stack(); +} + extern "C" CDECL void start_task(rust_task *target, fn_env_pair *f) { target->start(f->f, f->env, NULL); diff --git a/src/rt/rust_task.h b/src/rt/rust_task.h index 00d20fefc0e..a529db7d317 100644 --- a/src/rt/rust_task.h +++ b/src/rt/rust_task.h @@ -367,6 +367,7 @@ public: void call_on_c_stack(void *args, void *fn_ptr); void call_on_rust_stack(void *args, void *fn_ptr); bool have_c_stack() { return c_stack != NULL; } + stk_seg *get_c_stack() { return c_stack; } rust_task_state get_state() { return state; } rust_cond *get_cond() { return cond; } diff --git a/src/rt/rustrt.def.in b/src/rt/rustrt.def.in index 73dbe661d3f..b7ca28d5960 100644 --- a/src/rt/rustrt.def.in +++ b/src/rt/rustrt.def.in @@ -48,6 +48,7 @@ rust_task_yield rust_task_is_unwinding rust_get_task rust_get_stack_segment +rust_get_c_stack rust_log_str start_task vec_reserve_shared_actual |
