diff options
| author | Eric Holk <eholk@mozilla.com> | 2011-08-08 18:09:42 -0700 |
|---|---|---|
| committer | Eric Holk <eholk@mozilla.com> | 2011-08-15 09:26:51 -0700 |
| commit | 04af99ecb0dee1cb3df0032f7e7ba08ffc6c5bd4 (patch) | |
| tree | 7fdf9e23831a55a67f110565e907260b70421704 /src/rt/rust_task.cpp | |
| parent | a21ebb2f5ec5f158c3a2bbbccb76980624b1815f (diff) | |
| download | rust-04af99ecb0dee1cb3df0032f7e7ba08ffc6c5bd4.tar.gz rust-04af99ecb0dee1cb3df0032f7e7ba08ffc6c5bd4.zip | |
First step towards port handles.
Diffstat (limited to 'src/rt/rust_task.cpp')
| -rw-r--r-- | src/rt/rust_task.cpp | 23 |
1 files changed, 21 insertions, 2 deletions
diff --git a/src/rt/rust_task.cpp b/src/rt/rust_task.cpp index fbee8896590..26ffcb307a5 100644 --- a/src/rt/rust_task.cpp +++ b/src/rt/rust_task.cpp @@ -75,6 +75,7 @@ rust_task::rust_task(rust_scheduler *sched, rust_task_list *state, cond_name("none"), supervisor(spawner), list_index(-1), + next_port_id(0), rendezvous_ptr(0), running_on(-1), pinned_on(-1), @@ -105,8 +106,6 @@ rust_task::~rust_task() del_stk(this, stk); } -extern "C" void rust_new_exit_task_glue(); - struct spawn_args { rust_task *task; uintptr_t a3; @@ -495,6 +494,26 @@ void rust_task::on_wakeup(rust_task::wakeup_callback *callback) { _on_wakeup = callback; } +rust_port_id rust_task::register_port(rust_port *port) { + scoped_lock with(lock); + + rust_port_id id = next_port_id++; + port_table.put(id, port); + return id; +} + +void rust_task::release_port(rust_port_id id) { + scoped_lock with(lock); + port_table.remove(id); +} + +rust_port *rust_task::get_port_by_id(rust_port_id id) { + scoped_lock with(lock); + rust_port *port = NULL; + port_table.get(id, &port); + return port; +} + // // Local Variables: // mode: C++ |
