summary refs log tree commit diff
path: root/src/rt/rust_builtin.cpp
diff options
context:
space:
mode:
authorEric Holk <eric.holk@gmail.com>2012-05-23 14:53:44 -0700
committerEric Holk <eric.holk@gmail.com>2012-05-23 14:58:16 -0700
commit6fa1a084f7714023c4594ec7a857359824dc3253 (patch)
tree86bff507755a6b1aa41a17017e3edac1337610dc /src/rt/rust_builtin.cpp
parent9773a22119bf416a1c53d0ee30f6a127c7e274e1 (diff)
downloadrust-6fa1a084f7714023c4594ec7a857359824dc3253.tar.gz
rust-6fa1a084f7714023c4594ec7a857359824dc3253.zip
A shareable atomically reference counted pointer wrapper.
Needs more tests to ensure safety, and probably some more work on usability too.
Diffstat (limited to 'src/rt/rust_builtin.cpp')
-rw-r--r--src/rt/rust_builtin.cpp10
1 files changed, 10 insertions, 0 deletions
diff --git a/src/rt/rust_builtin.cpp b/src/rt/rust_builtin.cpp
index 939e9621989..97fbcf4953d 100644
--- a/src/rt/rust_builtin.cpp
+++ b/src/rt/rust_builtin.cpp
@@ -816,6 +816,16 @@ rust_compare_and_swap_ptr(intptr_t *address,
     return sync::compare_and_swap(address, oldval, newval);
 }
 
+extern "C" CDECL intptr_t
+rust_atomic_increment(intptr_t *address) {
+    return sync::increment(address);
+}
+
+extern "C" CDECL intptr_t
+rust_atomic_decrement(intptr_t *address) {
+    return sync::decrement(address);
+}
+
 extern "C" CDECL void
 rust_task_weaken(rust_port_id chan) {
     rust_task *task = rust_get_current_task();