Change "Memory Barriers" to "Optimization Barriers".
authorBen Pfaff <blp@cs.stanford.edu>
Tue, 26 Sep 2006 14:59:41 +0000 (14:59 +0000)
committerBen Pfaff <blp@cs.stanford.edu>
Tue, 26 Sep 2006 14:59:41 +0000 (14:59 +0000)
Thanks to Joshua Haberman for pointing out the issue.

doc/reference.texi
doc/threads.texi
src/threads/synch.h
ta-advice/HW1

index 9b02d5a0b52027f2c6567a09c200159c5022fa24..2bfbac986ff13c326ee03cf85aafc11f1265fd6b 100644 (file)
@@ -552,7 +552,7 @@ synchronization primitives to help out.
 * Semaphores::                  
 * Locks::                       
 * Monitors::                    
-* Memory Barriers::             
+* Optimization Barriers::             
 @end menu
 
 @node Disabling Interrupts
@@ -844,8 +844,8 @@ char get (void) @{
 @}
 @end example
 
-@node Memory Barriers
-@subsection Memory Barriers
+@node Optimization Barriers
+@subsection Optimization Barriers
 
 @c We should try to come up with a better example.
 @c Perhaps something with a linked list?
@@ -912,11 +912,11 @@ and restricts its latitude for optimization.  However, the semantics of
 @samp{volatile} are not well-defined, so it is not a good general
 solution.
 
-Usually, the best solution is to use a compiler feature called a
-@dfn{memory barrier}, a special statement that prevents the compiler
-from reordering memory operations across the barrier.  In Pintos,
-@file{threads/synch.h} defines the @code{barrier()} macro as a memory
-barrier.  Here's how we would use a memory barrier to fix this code:
+Usually, the best solution is to use a compiler feature called an
+@dfn{optimization barrier}, a special statement that prevents the compiler
+from reordering operations across the barrier.  In Pintos,
+@file{threads/synch.h} defines the @code{barrier()} macro as an optimization
+barrier.  Here's how we would use a optimization barrier to fix this code:
 
 @example
 timer_put_char = 'x';
@@ -925,7 +925,7 @@ timer_do_put = true;
 @end example
 
 The compiler also treats invocation of any function defined externally,
-that is, in another source file, as a limited form of a memory barrier.
+that is, in another source file, as a limited form of a optimization barrier.
 Specifically, the compiler assumes that any externally defined function
 may access any statically or dynamically allocated data and any local
 variable whose address is taken.  This often means that explicit
@@ -933,7 +933,7 @@ barriers can be omitted, and, indeed, this is why the base Pintos code
 does not need any barriers.
 
 A function defined in the same source file, or in a header included by
-the source file, cannot be relied upon as a memory barrier.
+the source file, cannot be relied upon as a optimization barrier.
 This applies even to invocation of a function before its
 definition, because the compiler may read and parse the entire source
 file before performing optimization.
index cbcda160631b2c918c23d9d81e9ce4277a10be23..ac28ba86830da78c8431fd400edd164c5d959b94 100644 (file)
@@ -40,7 +40,7 @@ The first step is to read and understand the code for the initial thread
 system.
 Pintos already implements thread creation and thread completion,
 a simple scheduler to switch between threads, and synchronization
-primitives (semaphores, locks, condition variables, and memory
+primitives (semaphores, locks, condition variables, and optimization
 barriers).
 
 Some of this code might seem slightly mysterious.  If
@@ -170,7 +170,7 @@ Infrastructure}, for more information.
 @item synch.c
 @itemx synch.h
 Basic synchronization primitives: semaphores, locks, condition
-variables, and memory barriers.  You will need to use these for
+variables, and optimization barriers.  You will need to use these for
 synchronization in all
 four projects.  @xref{Synchronization}, for more information.
 
index 53a5ee488cf07c83f68a7b136bc6506136180ac9..6b8f550e8798f6b9b916cf15ce8ec72861e283a8 100644 (file)
@@ -41,10 +41,10 @@ void cond_wait (struct condition *, struct lock *);
 void cond_signal (struct condition *, struct lock *);
 void cond_broadcast (struct condition *, struct lock *);
 
-/* Memory barrier.
+/* Optimization barrier.
 
-   The compiler will not reorder operations that access memory
-   across a memory barrier. */
+   The compiler will not reorder operations across an
+   optimization barrier. */
 #define barrier() asm volatile ("")
 
 #endif /* threads/synch.h */
index 99b59e10c886205690d7d5f1e9ca3af3421762c8..1783dd0133e8157c8b975521de4c94470bb5e676 100644 (file)
@@ -36,8 +36,8 @@ at the appropriate time.  Details that distinguish solutions include:
        - Synchronization: Most solutions manipulate the list with
           interrupts disabled to protect against the interrupt
           handler.  Other solutions are possible but most of them are
-          incorrect--watch out for missing memory barriers (see the
-          Memory Barriers section in the reference guide) or bad
+          incorrect--watch out for missing optimization barriers (see the
+          Optimization Barriers section in the reference guide) or bad
           assumptions of atomicity when there is none.
 
           In most solutions only the list insertion (typically a