about summary refs log tree commit diff
path: root/src/rt/rust_port.h
AgeCommit message (Collapse)AuthorLines
2013-02-01rt: Remove portsBrian Anderson-64/+0
2012-12-10Add license boilerplate to more files.Graydon Hoare-0/+10
2012-04-03Refactor includes structure, getting rid of rust_internal.hJon Morton-1/+2
Many changes to code structure are included: - removed TIME_SLICE_IN_MS - removed sychronized_indexed_list - removed region_owned - kernel_owned move to kernel.h, task_owned moved to task.h - global configs moved to rust_globals.h - changed #pragma once to standard guard in rust_upcall.h - got rid of memory.h
2012-03-06rt: Change the rust_port refcounting scheme to avoid racesBrian Anderson-7/+9
Hopefully...
2012-03-05rt: Properly block tasks while waiting for port detachBrian Anderson-2/+12
2012-03-05rt: Make rust_port_detach less contentiousBrian Anderson-1/+3
It still utterly dominates some benchmarks with busy waiting, but at least it doesn't create lock contention while doing so.
2012-03-05rt: Move receive code into rust_portBrian Anderson-1/+1
2012-02-16rt: Add rust_port_select functionBrian Anderson-0/+2
2011-11-16Disconnect ports before draining them. Issue #1155Brian Anderson-0/+1
2011-11-13Drop enqueued elements when a port is destructed. Closes #1155Brian Anderson-0/+1
2011-11-11rt: Make rust_port's ref counting non-atomicBrian Anderson-1/+1
Now that the task lock must be held there's no need for atomicity
2011-11-11rt: Remove rust_chanBrian Anderson-2/+2
2011-11-10rt: Move rust_chan::send to rust_port::sendBrian Anderson-0/+1
2011-11-10rt: Remove rust_token. UnusedBrian Anderson-1/+0
2011-11-10rt: Simplify channel-port associationBrian Anderson-1/+0
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.
2011-08-15Port ID-based channels.Eric Holk-2/+1
2011-08-15First step towards port handles.Eric Holk-1/+4
2011-08-05Atomic ref counting for chans.Eric Holk-3/+0
2011-07-29Removing proxies and message queues.Eric Holk-2/+3
2011-07-13Fix compile-command lines in rt.Graydon Hoare-1/+1
2011-07-07Work on debugging race conditions.Eric Holk-1/+4
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.
2011-06-27Conservatively serialize nearly all upcalls. Successfuly ran make check with ↵Eric Holk-2/+0
RUST_THREADS=8, so we're probably fairly safe now. In the future we can relax the synchronization to get better performance.
2011-06-27Added some locking to ports to prevent the case where two threads ↵Eric Holk-0/+2
simultaneously wake up a task blocked on a certain port.
2010-08-09Synthesize a flush_chan upcall right before a channel's ref_count drops to ↵Michael Bebenita-0/+1
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.
2010-08-09Some pretty printing in the runtime.Michael Bebenita-0/+1
2010-07-28Move ports out into their own file, add data_message and make communication ↵Michael Bebenita-0/+31
system use it (and proxies) instead of existing token scheme.