summary refs log tree commit diff
path: root/src/rt/sync
AgeCommit message (Collapse)AuthorLines
2013-01-17Add a license check to tidy. #4018Brian Anderson-2/+0
2012-12-10Add license boilerplate to more files.Graydon Hoare-0/+40
2012-12-03Update license, add license boilerplate to most files. Remainder will follow.Graydon Hoare-0/+30
2012-09-29rt: Check the results of pthread callsBrian Anderson-6/+6
The stage0 compiler is not working on an x86_64 debian wheezy instance and it looks like maye pthread_create is failing
2012-07-12Comments only: TODOs to FIXME in the runtimeTim Chevalier-1/+2
2012-06-25rt: Remove lock_free_queue. Unused. Issue #2701Brian Anderson-266/+0
2012-06-21Tag all remaining FIXMEs with bugs. Install rule in tidy script to enforce this.Graydon Hoare-4/+5
2012-04-03Refactor includes structure, getting rid of rust_internal.hJon Morton-4/+8
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-04-01Merge remote-tracking branch 'brson/mainthread'Brian Anderson-3/+79
Conflicts: src/rt/rust_sched_loop.cpp src/rt/rust_shape.cpp src/rt/rust_task.cpp
2012-03-31rt: Fix whitespaceBrian Anderson-1/+2
2012-03-31rt: Make rust_sched_launcher hide it's thread implementationBrian Anderson-3/+1
2012-03-31Revert "rt: Remove lock_held_by_current_thread"Brian Anderson-0/+78
Adds back the ability to make assertions about locks, but only under the --enable-debug configuration This reverts commit b247de64583e2ab527088813ba9192824554e801. Conflicts: src/rt/rust_sched_loop.cpp
2012-03-28Tidy up multiple declarations and STDC_FOO_MACROS guards in headers.Graydon Hoare-4/+4
2012-03-18rt: Remove lock_held_by_current_threadBrian Anderson-31/+0
2012-03-13rt: Remove an incorrect assert in lock_and_signalBrian Anderson-1/+0
This assert doesn't hold because it isn't made while holding the lock
2012-03-05rt: Fix the atomic get_ref_count method to avoid racesBrian Anderson-0/+10
2012-02-19rt: Add some lock_and_signal assertionsChris Peterson-0/+5
Assert that locks are not reentered on the same thread, unlocked by a different thread, or deleted while locked.
2012-02-19rt: Initialize Windows CRITICAL_SECTION with non-zero spin countChris Peterson-1/+12
If a CRITICAL_SECTION is not initialized with a spin count, it will default to 0, even on multi-processor systems. MSDN suggests using 4000. On single-processor systems, the spin count parameter is ignored and the critical section's spin count defaults to 0. For Windows >= Vista, extra debug info is allocated for CRITICAL_SECTIONs but not released in a timely manner. Consider using InitializeCriticalSectionEx(CRITICAL_SECTION_NO_DEBUG_INFO).
2012-02-19rt: Delete Windows CRITICAL_SECTION in dtorChris Peterson-0/+1
2012-02-10rt: Use 100k stacks for scheduler threadsBrian Anderson-4/+14
2012-02-09rt: Detach pthreads before exitingBrian Anderson-2/+15
Joinable pthreads need to be either joined or detached and we no longer join with the scheduler threads.
2012-02-09rt: Remove sync::yield and sync::sleepBrian Anderson-22/+0
2012-02-09rt: Move rust_thread to its own filesBrian Anderson-63/+69
2012-02-08rt: Remove is_running flag from rust_thread. UnusedBrian Anderson-12/+1
2012-02-02rt: Change the win32 event object to an auto-reset eventBrian Anderson-1/+1
The way I read the docs, having this be a manual reset event means that after the first time it's signalled it stays that way until reset, and we never, ever reset it.
2012-02-02rt: Remove lock_and_signal::signal_allBrian Anderson-17/+0
2012-02-02rt: Remove lock_and_signal::timed_waitBrian Anderson-36/+2
2012-02-01rt: Fix lock_held_by_current_threadBrian Anderson-8/+12
This simplifies the check for thread ownership by removing the _locked flag and just comparing against the thread ID of the last thread to take the lock. If the running thread took the lock _holding_thread will be equal to pthread_self(); if _holding_thread is some other value then the running thread does not have the lock. Setting a pthread_t to 0 like this is not portable but should work on every platform we are likely to care about for the near future.
2012-02-01rt: Remove unused variable from lock_and_signalBrian Anderson-5/+1
2011-08-03timeout_in_ns was renamed to timeout_in_ms.Erick Tryzelaar-1/+1
2011-08-03Sleep for a nonzero amount of time on Windows.Eric Holk-3/+3
2011-07-28Updating to work on Windows.Eric Holk-1/+2
2011-07-28Adding upcalls to to ref() and deref() tasks. This is the first step towards ↵Eric Holk-1/+1
atomic reference counting of tasks.
2011-07-28Made task threads wait instead of sleep, so they can be woken up. This ↵Eric Holk-5/+34
appears to give us much better parallel performance. Also, commented out one more unsafe log and updated rust_kernel.cpp to compile under g++
2011-07-28Per-thread scheduling. Closes #682.Eric Holk-1/+1
Tasks are spawned on a random thread. Currently they stay there, but we should add task migration and load balancing in the future. This should drammatically improve our task performance benchmarks.
2011-07-13Prohibit trailing whitespace under 'tidy' script. Clean up all caught cases.Graydon Hoare-5/+5
2011-07-13Remove 'Nop.' comments, add emacs lines, remove obsolete file.Graydon Hoare-3/+0
2011-07-13Attempt to correct buggy win32 timer code (causing tinderbox failures).Graydon Hoare-28/+33
2011-07-07Work on debugging race conditions.Eric Holk-0/+21
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-07-06Removed what seems to be the last of the calls to rand(). Closes #582.Eric Holk-5/+0
2011-06-30Added a nanosecond timer to time.rs, support for some floating point casts, ↵Eric Holk-6/+12
and a commandline-driven mode for pfib.rs
2011-06-27A little tidying in rt.Graydon Hoare-1/+1
2011-06-27Implementation mising features in lock_and_signal for Win32. Also lowered ↵Eric Holk-5/+6
the minimum stack size to get the pfib benchmark to run without exhausting its address space on Windows.
2011-06-27Conservatively serialize nearly all upcalls. Successfuly ran make check with ↵Eric Holk-1/+3
RUST_THREADS=8, so we're probably fairly safe now. In the future we can relax the synchronization to get better performance.
2011-06-27Basic multithreading support. The infinite loops test successfully maxes out ↵Eric Holk-0/+37
the CPU.
2011-06-13This is the mega-ucontext commit. It replaces the task switching mechanism ↵Eric Holk-10/+10
with a new one inspired by ucontext. It works under Linux, OS X and Windows, and is Valgrind clean on Linux and OS X (provided the runtime is built with gcc). This commit also moves yield and join to the standard library, as requested in #42. Join is currently a no-op though.
2011-06-09Remove executable bit from lock_and_signal.cpp.Erick Tryzelaar-0/+0
2011-04-08add FIXME related to the -fno-strict-aliasing workaroundMarijn Haverbeke-0/+2
2010-10-20Add a virtual destructor to rust_thread in sync.h, to quiet the compilerPatrick Walton-0/+2
2010-09-16Fixed deadlock caused by the message pump not being notified of new message ↵Michael Bebenita-1/+1
sends.