diff options
| author | Eric Holk <eric.holk@gmail.com> | 2012-05-23 14:53:44 -0700 |
|---|---|---|
| committer | Eric Holk <eric.holk@gmail.com> | 2012-05-23 14:58:16 -0700 |
| commit | 6fa1a084f7714023c4594ec7a857359824dc3253 (patch) | |
| tree | 86bff507755a6b1aa41a17017e3edac1337610dc /src/rt/rust_builtin.cpp | |
| parent | 9773a22119bf416a1c53d0ee30f6a127c7e274e1 (diff) | |
| download | rust-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.cpp | 10 |
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(); |
