| Age | Commit message (Collapse) | Author | Lines |
|
|
|
|
|
It turns out that there's only ever a single channel per port these days,
and it always has the same lifetime as the port, so we don't need a list or a
complex association protocol.
|
|
|
|
new chan and port system, started on a networking module for the standard library.
|
|
channel lifecycle bugs.
|
|
|
|
|
|
|
|
This lets us un-XFAIL task-comm-10.rs.
|
|
We're trying to get closer to doing correct move semantics for channel
operations. This involves a lot of cleanup (such as removing the
unused sched parameter from rust_vec constructor) and making
circular_buffer kernel_owned.
Added tagging for memory allocations. This means we give a string tag
to everything we allocate. If we leak something and TRACK_ALLOCATIONS
is enabled, then it's much easier now to tell exactly what is leaking.
|
|
|
|
Ports and channels have been moved to the kernel pool, since they've
been known to outlive their associated task. This probably isn't the
right thing to do, the life cycle needs fixed instead.
Some refactorying in memory_region.cpp. Added a helper function to
increment and decrement the allocation counter. This makes it easier
to switch between atomic and non-atomic increments. Using atomic
increments for now, although this still does not fix the problem.
|
|
If the channel is associated with a port then the destructor will assert.
Additionally, destruction of the object is not always appropriate. This brings
the deref() method into sync with the behavior of generated rust code which
only invokes destroy() once the reference count goes to 0.
|
|
This lets native code more easily destroy channels since directly deleting a
channel is not always the right way to destroy it.
|
|
This will allow us to more easily clone channels from native code.
|
|
domains can only talk to other domains via handles, and with the help of the rust_kernel.
|
|
zero. This should only happen in the Rust code and not in the drop glue, or on the unwind path. This change allows the task owning the channel to block on a flush and delete its own channel. This change also cleans up some code around rust_port and rust_chan.
|
|
system use it (and proxies) instead of existing token scheme.
|
|
|
|
communication. Channels now buffer on the sending side, and no longer require blocking when sending. Lots of other refactoring and bug fixes.
|
|
|