Index: c-user/interrupt_manager.rst
===================================================================
--- c-user/interrupt_manager.rst	(revision e9b193a5fab73847b4736b840ae27f5b93cf86c7)
+++ c-user/interrupt_manager.rst	(revision eecec5f9d8cbc78c42f2065a39cad2c2d58a5836)
@@ -495,12 +495,14 @@
 
         void rtems_interrupt_lock_initialize(
-            rtems_interrupt_lock *lock
-        );
-
-DIRECTIVE STATUS CODES:
-    NONE
-
-DESCRIPTION:
-    Initializes an interrupt lock.
+            rtems_interrupt_lock *lock,
+            const char           *name
+        );
+
+DIRECTIVE STATUS CODES:
+    NONE
+
+DESCRIPTION:
+    Initializes an interrupt lock.  The name must be persistent throughout the
+    lifetime of the lock.
 
 NOTES:
@@ -521,6 +523,6 @@
 
         void rtems_interrupt_lock_acquire(
-            rtems_interrupt_lock *lock,
-            rtems_interrupt_level level
+            rtems_interrupt_lock         *lock,
+            rtems_interrupt_lock_context *lock_context
         );
 
@@ -533,4 +535,10 @@
 
 NOTES:
+    A separate lock context must be provided for each acquire/release pair, for
+    example an automatic variable.
+
+    An attempt to recursively acquire the lock may result in an infinite loop
+    with interrupts disabled.
+
     This directive will not cause the calling thread to be preempted.  This
     directive can be used in thread and interrupt context.
@@ -550,6 +558,6 @@
 
         void rtems_interrupt_lock_release(
-            rtems_interrupt_lock *lock,
-            rtems_interrupt_level level
+            rtems_interrupt_lock         *lock,
+            rtems_interrupt_lock_context *lock_context
         );
 
@@ -562,4 +570,7 @@
 
 NOTES:
+    The lock context must be the one used to acquire the lock, otherwise the
+    result is unpredictable.
+
     This directive will not cause the calling thread to be preempted.  This
     directive can be used in thread and interrupt context.
@@ -579,6 +590,6 @@
 
         void rtems_interrupt_lock_acquire_isr(
-            rtems_interrupt_lock *lock,
-            rtems_interrupt_level level
+            rtems_interrupt_lock         *lock,
+            rtems_interrupt_lock_context *lock_context
         );
 
@@ -589,4 +600,13 @@
     The interrupt status will remain unchanged.  On SMP configurations this
     directive acquires a SMP lock.
+
+NOTES:
+    A separate lock context must be provided for each acquire/release pair, for
+    example an automatic variable.
+
+    An attempt to recursively acquire the lock may result in an infinite loop.
+
+    This directive is intended for device drivers and should be called from the
+    corresponding interrupt service routine.
 
     In case the corresponding interrupt service routine can be interrupted by
@@ -594,8 +614,4 @@
     protected by this lock, then the result is unpredictable.
 
-NOTES:
-    This directive should be called from the corresponding interrupt service
-    routine.
-
 .. raw:: latex
 
@@ -612,19 +628,21 @@
 
         void rtems_interrupt_lock_release_isr(
-            rtems_interrupt_lock *lock,
-            rtems_interrupt_level level
-        );
-
-DIRECTIVE STATUS CODES:
-    NONE
-
-DESCRIPTION:
-
-    The interrupt status will remain unchanged.  On SMP configurations this
-    directive releases a SMP lock.
-
-NOTES:
-    This directive should be called from the corresponding interrupt service
-    routine.
+            rtems_interrupt_lock         *lock,
+            rtems_interrupt_lock_context *lock_context
+        );
+
+DIRECTIVE STATUS CODES:
+    NONE
+
+DESCRIPTION:
+    The interrupt status will remain unchanged.  In SMP configurations, this
+    directive releases an SMP lock.
+
+NOTES:
+    The lock context must be the one used to acquire the lock, otherwise the
+    result is unpredictable.
+
+    This directive is intended for device drivers and should be called from the
+    corresponding interrupt service routine.
 
 .. raw:: latex
