diff options
| author | Zack Corr <zack@z0w0.me> | 2013-02-09 19:19:31 +1000 |
|---|---|---|
| committer | Zack Corr <zack@z0w0.me> | 2013-02-09 19:19:31 +1000 |
| commit | ebd20b7944c3b427a90e89d3b4a9e43926336eb8 (patch) | |
| tree | f09f4e4139ff0a5b6199e6bd6c9a77970c4fc7d5 | |
| parent | 0c2b4edff5009ff4d2330723d9acbc85af4b12ab (diff) | |
| download | rust-ebd20b7944c3b427a90e89d3b4a9e43926336eb8.tar.gz rust-ebd20b7944c3b427a90e89d3b4a9e43926336eb8.zip | |
Rename dec/inc_weak_task_count to inc/dec_live_count and remove register_task/unregister_task. Closes #4768
| -rw-r--r-- | src/libcore/private/weak_task.rs | 12 | ||||
| -rw-r--r-- | src/rt/rust_builtin.cpp | 8 | ||||
| -rw-r--r-- | src/rt/rust_kernel.cpp | 37 | ||||
| -rw-r--r-- | src/rt/rust_kernel.h | 6 | ||||
| -rw-r--r-- | src/rt/rust_scheduler.cpp | 4 | ||||
| -rw-r--r-- | src/rt/rustrt.def.in | 4 |
6 files changed, 26 insertions, 45 deletions
diff --git a/src/libcore/private/weak_task.rs b/src/libcore/private/weak_task.rs index 9d57cd5a466..1002fdb0c8c 100644 --- a/src/libcore/private/weak_task.rs +++ b/src/libcore/private/weak_task.rs @@ -40,12 +40,12 @@ pub unsafe fn weaken_task(f: &fn(Port<ShutdownMsg>)) { let task = get_task_id(); // Expect the weak task service to be alive assert service.try_send(RegisterWeakTask(task, shutdown_chan)); - unsafe { rust_inc_weak_task_count(); } + unsafe { rust_inc_kernel_live_count(); } do fn&() { let shutdown_port = swap_unwrap(&mut *shutdown_port); f(shutdown_port) }.finally || { - unsafe { rust_dec_weak_task_count(); } + unsafe { rust_dec_kernel_live_count(); } // Service my have already exited service.send(UnregisterWeakTask(task)); } @@ -78,11 +78,11 @@ fn create_global_service() -> ~WeakTaskService { let port = swap_unwrap(&mut *port); // The weak task service is itself a weak task debug!("weakening the weak service task"); - unsafe { rust_inc_weak_task_count(); } + unsafe { rust_inc_kernel_live_count(); } run_weak_task_service(port); }.finally { debug!("unweakening the weak service task"); - unsafe { rust_dec_weak_task_count(); } + unsafe { rust_dec_kernel_live_count(); } } } @@ -126,8 +126,8 @@ fn run_weak_task_service(port: Port<ServiceMsg>) { } extern { - unsafe fn rust_inc_weak_task_count(); - unsafe fn rust_dec_weak_task_count(); + unsafe fn rust_inc_kernel_live_count(); + unsafe fn rust_dec_kernel_live_count(); } #[test] diff --git a/src/rt/rust_builtin.cpp b/src/rt/rust_builtin.cpp index 32f2c4ebde2..df54e47770b 100644 --- a/src/rt/rust_builtin.cpp +++ b/src/rt/rust_builtin.cpp @@ -945,15 +945,15 @@ rust_get_global_data_ptr() { } extern "C" void -rust_inc_weak_task_count() { +rust_inc_kernel_live_count() { rust_task *task = rust_get_current_task(); - task->kernel->inc_weak_task_count(); + task->kernel->inc_live_count(); } extern "C" void -rust_dec_weak_task_count() { +rust_dec_kernel_live_count() { rust_task *task = rust_get_current_task(); - task->kernel->dec_weak_task_count(); + task->kernel->dec_live_count(); } // diff --git a/src/rt/rust_kernel.cpp b/src/rt/rust_kernel.cpp index e0494c9300b..6b7a8241416 100644 --- a/src/rt/rust_kernel.cpp +++ b/src/rt/rust_kernel.cpp @@ -291,13 +291,21 @@ rust_kernel::set_exit_status(int code) { } void -rust_kernel::register_task() { - KLOG_("Registering task"); +rust_kernel::inc_live_count() { uintptr_t new_non_weak_tasks = sync::increment(non_weak_tasks); KLOG_("New non-weak tasks %" PRIdPTR, new_non_weak_tasks); } void +rust_kernel::dec_live_count() { + uintptr_t new_non_weak_tasks = sync::decrement(non_weak_tasks); + KLOG_("New non-weak tasks %" PRIdPTR, new_non_weak_tasks); + if (new_non_weak_tasks == 0) { + begin_shutdown(); + } +} + +void rust_kernel::allow_scheduler_exit() { scoped_lock with(sched_lock); @@ -316,31 +324,6 @@ rust_kernel::allow_scheduler_exit() { } void -rust_kernel::unregister_task() { - KLOG_("Unregistering task"); - uintptr_t new_non_weak_tasks = sync::decrement(non_weak_tasks); - KLOG_("New non-weak tasks %" PRIdPTR, new_non_weak_tasks); - if (new_non_weak_tasks == 0) { - begin_shutdown(); - } -} - -void -rust_kernel::inc_weak_task_count() { - uintptr_t new_non_weak_tasks = sync::decrement(non_weak_tasks); - KLOG_("New non-weak tasks %" PRIdPTR, new_non_weak_tasks); - if (new_non_weak_tasks == 0) { - begin_shutdown(); - } -} - -void -rust_kernel::dec_weak_task_count() { - uintptr_t new_non_weak_tasks = sync::increment(non_weak_tasks); - KLOG_("New non-weak tasks %" PRIdPTR, new_non_weak_tasks); -} - -void rust_kernel::begin_shutdown() { { scoped_lock with(sched_lock); diff --git a/src/rt/rust_kernel.h b/src/rt/rust_kernel.h index 11af02dace4..01ebf5ab57b 100644 --- a/src/rt/rust_kernel.h +++ b/src/rt/rust_kernel.h @@ -160,10 +160,8 @@ public: rust_sched_id main_sched_id() { return main_scheduler; } rust_sched_id osmain_sched_id() { return osmain_scheduler; } - void register_task(); - void unregister_task(); - void inc_weak_task_count(); - void dec_weak_task_count(); + void inc_live_count(); + void dec_live_count(); void register_exit_function(spawn_fn runner, fn_env_pair *f); }; diff --git a/src/rt/rust_scheduler.cpp b/src/rt/rust_scheduler.cpp index 22dae047e55..e3a5d9db91f 100644 --- a/src/rt/rust_scheduler.cpp +++ b/src/rt/rust_scheduler.cpp @@ -123,7 +123,7 @@ rust_scheduler::create_task(rust_task *spawner, const char *name) { cur_thread = (thread_no + 1) % max_num_threads; } KLOG(kernel, kern, "Creating task %s, on thread %d.", name, thread_no); - kernel->register_task(); + kernel->inc_live_count(); rust_sched_launcher *thread = threads[thread_no]; return thread->get_loop()->create_task(spawner, name); } @@ -138,7 +138,7 @@ rust_scheduler::release_task() { need_exit = true; } } - kernel->unregister_task(); + kernel->dec_live_count(); if (need_exit) { exit(); } diff --git a/src/rt/rustrt.def.in b/src/rt/rustrt.def.in index 9076670392a..7ab07df0bfe 100644 --- a/src/rt/rustrt.def.in +++ b/src/rt/rustrt.def.in @@ -189,6 +189,6 @@ rust_raw_thread_start rust_raw_thread_join_delete rust_register_exit_function rust_get_global_data_ptr -rust_inc_weak_task_count -rust_dec_weak_task_count +rust_inc_kernel_live_count +rust_dec_kernel_live_count rust_get_exchange_count_ptr |
